I have an app and I need to put it somewhere. So what are my options ? A better question would be what are my requirements.
- Deploy when I commit code to the master branch.
- Notify me along the way so i know where my code is even when i’m away from my computer
- Zero management, total automation.
Tech for this experiment is:
- Github – for the code and management of branches
- Travis CI – for build and testing of the code + deployment
- Docker – to store the docker images to be deployed
- Kubenetes – to define a deployment architecture.
- Kops – Helper to deploy production grade environment.
- AWS – to host the architecture.
- Slack – for notifications from all of the above so we know what is happening when.
So in the infrastructure we want is the following (stolen from Kris Nova ) :
Our application can then be deployed on this infrastructure from Travis as and when we push code to Github.
Long story short let Kris Nova introduce you to the concepts and to get something built and deployed. After that have a look through Igor Cicimov’s links which expand the options.
DNS was a bit of a headache but after letting AWS Route 53 host my domain things became much easier. In addition to the default kops build of the K8s environment also added:
- External DNS
- Kube-Slack
References
- https://kubernetes.io/docs/concepts/
- https://github.com/kubernetes/kops/tree/master/docs
- https://www.nivenly.com/kops-1-5-1/
- https://github.com/kris-nova/kops-demo
- https://icicimov.github.io/blog/virtualization/Kubernetes-Cluster-in-AWS-with-Kops/
- https://brosinski.com/post/kubernetes-on-aws-with-kops/
- https://ryaneschinger.com/blog/kubernetes-aws-vpc-kops-terraform/
- https://caveofcode.com/2017/03/continuous-delivery-to-kubernetes-with-travis-ci/
- https://github.com/nathancashmore/config/tree/master/infrastructure
- https://github.com/nathancashmore/kube-slack