- Download and install kops/terraform/kubectl/helm
- Setup AWS credential
$ export AWS_ACCESS_KEY_ID="anaccesskey"
$ export AWS_SECRET_ACCESS_KEY="asecretkey"
- Generate terraform setup and cluster specs
kops create cluster --zones=us-west-2a --state=s3://prefix-k8s-dshmelev-net-state-store --name=k8s.dshmelev.net --kubernetes-version=1.7.3 --out=tf --target=terraform
- Review changes and deploy cluster:
$ cd tf
$ terraform plan
$ terraform apply
- Configure local kubectl
$ kops export kubecfg
- Wait for apply DNS changes
$ nslookup api.k8s.dshmelev.net
- Check cluster setup
$ kubectl cluster-info
- Install helm tiller
$ helm init
- Edit charts
charts/external-dns/values.yaml: controller.domain
charts/kube-lego/values.yaml: config.LEGO_EMAIL
charts/teamcity/values.yaml: ingress.hosts; ingress.tls.hosts
- Deploy charts
$ helm install charts/nginx-ingress --namespace kube-system
$ helm install charts/kube-lego --namespace kube-system
$ helm install charts/nginx-ingress --namespace kube-system
$ helm install charts/teamcity --namespace teamcity
- Wait for apply pods and DNS changes
...
- Profit. Go to ingress http address