The text that follows provides the essential information you'll need to create a Kubernetes cluster in AWS using kops. This appendix contains a few sub-chapters from The DevOps 2.3 Toolkit: Kubernetes (https://amzn.to/2GvzDjy). Please refer to it for more detailed information.
You're reading from The DevOps 2.4 Toolkit
Preparing for the cluster setup
We'll continue using the specifications from the vfarcic/k8s-specs repository, so the first thing we'll do is to go inside the directory where we cloned it, and pull the latest version.
1 cd k8s-specs
2 3 git pull
I will assume that you already have an AWS account. If that's not the case, please head over to Amazon Web Services (https://aws.amazon.com/) and sign-up.
The first thing we should do is get the AWS credentials.
Please open Amazon EC2 Console (https://console.aws.amazon.com/ec2/v2/home), click on your name from...
Creating a Kubernetes cluster in AWS
We'll start by deciding the name of our soon to be created cluster. We'll choose to call it devops23.k8s.local. The latter part of the name (.k8s.local) is mandatory if we do not have a DNS at hand. It's a naming convention kops uses to decide whether to create a gossip-based cluster or to rely on a publicly available domain. If this would be a "real" production cluster, you would probably have a DNS for it. However, since I cannot be sure whether you do have one for the exercises in this book, we'll play it safe, and proceed with the gossip mode.
We'll store the name into an environment variable so that it is easily accessible.
1 export NAME=devops23.k8s.local
When we create the cluster, kops will store its state in a location we're about to configure. If you used Terraform, you'll notice...
Installing Ingress and Tiller (server side Helm)
To install Ingress, please execute the commands that follow.
1 kubectl create \ 2 -f https://raw.githubusercontent.com/kubernetes/kops/master/
addons/ingress-nginx/v1.6.0.yaml
3 4 kubectl -n kube-ingress \ 5 rollout status \ 6 deployment ingress-nginx
Destroying the cluster
The appendix is almost finished, and we do not need the cluster anymore. We want to destroy it as soon as possible. There's no good reason to keep it running when we're not using it. But, before we proceed with the destructive actions, we'll create a file that will hold all the environment variables we used in this chapter. That will help us the next time we want to recreate the cluster.
1 echo "export AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID 2 export AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY 3 export AWS_DEFAULT_REGION=$AWS_DEFAULT_REGION 4 export ZONES=$ZONES 5 export NAME=$NAME" \ 6 >kops
We echoed the variables with the values into the kops file, and now we can delete the cluster.
1 kops delete cluster \ 2 --name $NAME \ 3 --yes
The output is as follows.
... Deleted kubectl config for...