Git Product home page Git Product logo

tuber's People

Contributors

caelra avatar dbennett-freshly avatar dependabot[bot] avatar goreleaserbot avatar hbbb avatar jefferson-faseler avatar jkminneti avatar llparse avatar mxygem avatar quinn avatar quinn-freshly avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

tuber's Issues

Can possibly migrate without deploying

If you're silly and merge migrations (or anything that prereleasers handle) at the same time as invalid yamls (or otherwise a failed deploy), prerelease will run but the deploy will not.

this kills the rails app

todo: wtf how does heroku get around this

Better Logging

  • Does everything need to log to sderr?
  • Log Levels
  • Always use zap, stop using the builtin logger
  • Use context?

portforward command

kubectl port-forward -n someapp `kubectl get pods -n someapp -o jsonpath="{.items[0].metadata.name}"` 8080:8080

ill have none of that

Custom secrets and configmaps

Right now, an end user can control anything about their namespace through .tuber's. Custom resources, extra resources, whatever. Except for secrets and configmaps.

Secrets and configmaps and their data shouldn't be committed to code, but we should be able to tear down and recreate a tuberapp entirely from 1 - the resources tuber creates, and 2 - the resources in .tuber.

How do we do this? Not sure.

Get Tuber running on Staging

Outstanding issues (that we know of):

  • response from container registry does not contain Docker-Content-Digest header
  • Add better error handling and logging around that ^
  • Add Sentry env vars to cluster
  • Add new subscription for staging tuber
  • Add env var for subscription name in both staging and eng-internal

gcr requests error output

mostly the 404 on pulling the latest image - it tells you it 404'd, but it's unclear that the actual issue is that the build cant be found

Configure Cluster

  • Create tuber-apps kubernetes secret
  • Read credentials.json file into tuber-secrets

Maybe Terraform?

  • Grant service account permissions from the given cluster to the freshly-docker project
    • Pub/Sub Subscriber
    • Container Registry Reader

Some ideas for naming
tuber install <cluster-name>
tuber configure <cluster-name>
tuber setup <cluster-name>

Add confirmation step to write commands

any command that alters anything on the cluster should have a confirmation.
any command that reads data and does not alter anything should not require confirmation.

print context name to STDERR.

Tuber Init Command

Tuberize an app

  • Create .tuber directory in project root
  • Create deployment.yaml
  • Create service.yaml

pull credentials from cluster

๐ŸŽ‰ jordan got his way

this would open the door to apps install resulting in a deployed app. or otherwise, using deploy like ever.

creds are used only for gcr, k8s rolebindings would still be in play

Exec command

Tentative plan:
Add exec.yaml, a blank pod with no command - then

  1. Exec applies it, but interpolates in a randomized name
  2. Waits for success
  3. Once successful, kubectl exec's with whatever command you passed in

except that won't work, WIP

add gateway

This has changed quite a bit, now that we know what we're doing with istio.

I think this is now "add cluster setup" commands - such that once you have a fresh cluster, tuber can istio-ify.

Is that best done through giving tuber access to istio-system, and tuberizing the tuber-farm? Or.. what else?

Rollback on errors

On errors during setup, created resources should be deleted
create definitely

Tuber `apps` command

  • Add (adds app to the tuber-apps config map, doesn't do anything else)
  • Remove
  • Create
  • List

Wait on status, on release

It's a goroutine already, we might as well add a wait for the success of a release.

If the new pods enter crashloop, or otherwise don't run successfully, we should know about it.

Hopefully we can query on the revision, not on created pods, though.

Config Get/Set/List Commands

Is there any other configuration that an app would need to read/write to besides env vars? If not, we can drop the env argument in the below command suggestions.

tubectl config set env NAME=VALUE
tubectl config get env NAME
tubectl config list env

Debating on the fact that people even need to know that configs are stored as Kubernetes secrets as opposed to plain config maps. It seems reasonable to group all of these commands under the name config.

Support Specifying Cluster `-c --cluster|context`

Require a cluster or context flag to specify which cluster to operate on. It's similar to Heroku's -a --app flag.

Poor mans version of this is to add a confirm step before running any commands that modify the state of the cluster

Encrypted Credentials in Source Control

Add encrypt and decrypt justfile definitions.

Something like this:

encrypt:
	cd {{ invocation_directory() }}; ../bin/encrypt credentials.json

decrypt:
	cd {{ invocation_directory() }}; ../bin/decrypt credentials.json.enc

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.