-
Notifications
You must be signed in to change notification settings - Fork 252
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Dev cluster from cloudops way #1005
Conversation
bf9d709
to
70012a1
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looking good!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Right now AZURE_ACCOUNT, FORCE_SSL, TRUST_PROXY, PULSE_HOSTNAME, PULSE_NAMESPACE, PULSE_VHOST, TASKCLUSTER_ROOT_URL are all specified explicitly for each service.
I think these are all global values that could live at the top-level like dockerImage does. Would that be feasible to implement? As it currently stands you have to duplicate those values a lot.
(Tangentially, related to AZURE_ACCOUNT, https://bugzilla.mozilla.org/show_bug.cgi?id=1566610)
Ok, this is now "entirely working". Some services don't run due to small config details that we still need to set up. I have faith that we can track these down in short order -- I am just tired of doing the tracking so hopefully someone can help me there. There's also some quite manual hacks in the dev cluster deployment stuff. Hopefully someone who understands these services better than I can will help un-hack. Other than that (and the fact that helm3 doesn't do updates correctly yet) I think this is actually usable! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A bunch of pretty minor comments here, but this is looking good and I'm excited to use it.
Thanks for adopting my suggestions. I took another look and still don't see any obvious problems with us using this. I did a brief test rendering the k8s templates for github using the helm templates from this PR and it worked fine. 🚢 |
eb58207
to
1a167bf
Compare
Ok, I have an entirely working dev deployment from this now! I'm going to update the heroku configs and land this first thing tomorrow. |
HEADS UP: This changes the name of the azure account env var (among other things) in most services. updated heroku before landing!
This takes the new way of doing things with helm and brings into the tc repo development flow a bit more.
yarn generate
builds a bunch of helm templatessome stuff with the dockerfile I think I'll undoadd the generated stuff to the gitattributes list of things to hideHey look, it Works ™️ https://taskcluster.imbstack.com/
I still need to fill out 90% of the variables for services other than auth, but at least auth responds to ping and the ui shows up.
Heads up to @djmitche @owlishDeveloper @edunham @sciurus. Thanks to the cloudops folks, we could never have gotten this correctly without your guidance.
Things TODO:
helm
stuff inyarn
scripts a bit more correct. It fails to update properly sometimes at the moment (ANSWER: Helm3 currently has a bug where upgrades don't work. For the shared dev cluster we can either wait for helm3 to fix itself or securely install helm2)yarn dev:init
that creates a config file for you with many of the per-service fields filled out such as rabbitmq passwords and such. The actual work of creating things would either be done by the script or perhaps terraform.Optionally get this working with minikube. I think the only thing we'd need is to make two ingress files and only apply one inhelm
depending on some sort of variableThis is a huge diff but a lot of it is autogenerated so you can mostly ignore it. Things of interest:
infrastructure/k8s/values.schema.json
: helm 3 supports a schema file for input values natively!Right now the schema I've generated is a bit easy-going because our underlying configs don't do a good job of indicating that a config option is optional. I'd like to start where we are now and then tighten over time.user-config-example.yaml
: This probably needs a new name, but it is a list of every option you can pass into a taskcluster instance. At some point this should grow descriptions.