As a Sysadmin I want to migrate my services from DockerCloud to Kubernetes-based hosting so that datahub.io continues working when DockerCloud is shut down on May 21st
Acceptance Criteria
[x] Able to run the docker image <our/org> (datahq)
[x] able to switch to testing environment (which also connects to cluster)
[x] Able to run kubectl commands on the cluster
Goal: convert stackfile to something we can "just run" ...
Questions
What is Kubernetes: Ans: container orchestration and management
How does it relate to Docker: docker is a container format, kubernetes is a way of managing sets of containers
kubernetes competes with docker swarm / stackfile
What are K8S hosting options? Ans: Google Cloud Platform
Do we have a spreadsheet comparison of these? NOT ATMOT ATM
How do you do config: Ans: using Charts and Helm - Defined set of yaml files in a specific way
Docs?? / Example
How do you do routing / open a port??
How do you autobuild new docker instances
How do you have staging auto build staging and production need manual build
Current system
Each app builds and pushes to docker hub / or other docker registry [or set this up in docker hub]
Finally commits to auto-updated files of deploy repo
deploy repo of some kind: every time it has a commit it repushes to k8s (depending on some logic)
helm: manages this config
Plan
[ ] Install tooling and document this in repo README
[ ] Choose a kubernetes cloud engine
[ ] Test one container
[ ] Work out we store common config
[ ] Convert our stackfile
[ ] make modifications e.g. haproxy => traefik.io
ACTIONS
[ ] Write back to Ori thanking him and saying we are going to use his excellent code but go for the whole thing i.e. ... (and close the PR)
[ ] find all budgetkey references and decide what to do (delete / replace)
[ ] create a list of 'to do laters'
[ ] boot up the google account for datahq (for kubernetes) GCE - Google Container Engine
[ ] Set up billing, permissions, access to users
[ ] Think about testing and production (different projects? same project?)
[ ] Create charts and values for all our 8 services
[ ] Set up an ingress controller for kubernetes
[ ] Configure kubernetes ingress #152
Analysis
Travis for automation
for each service, grab the needed file and build the image into the Travis
pushes the image to docker-hub
tags with commit ID
finally updates values.auto-updated.yaml
with specific commit ID
Deploys new configuration via helm (happens into budgekeys/kubernetes-k8 repo/travis)
Use docker DockerFile for local development (Take a look at the README)
minikube is local environment in openbudget repo
For load bearing, reverse proxying and ingress try using traefik for starters https://docs.traefik.io/ since the general consensus online is that it is simpler. If it proves infeasible, try using nginx which is more popular but also more complex
As a Sysadmin I want to migrate my services from DockerCloud to Kubernetes-based hosting so that datahub.io continues working when DockerCloud is shut down on May 21st
Acceptance Criteria
Goal: convert stackfile to something we can "just run" ...
Questions
Current system
Plan
ACTIONS
Tasks
Analysis