In this project, we're going to deploy AWS EKS, 2xEC2 instances (It will be the K8S workers), helm/tiller, Kubernetes Dashboard and create two users (1x admin and 1x user just for the default namespace).
You can run the initial Bash script, it will look for dependencies (terraform, helm, etc) and you can choose between Deploy and Destroy.
Example:
./deploy_eks_stack.sh 2019-07-14 19:07:24 Checking for dependencies What action you want to execute? 1) Deploy 2) Destroy Default: Deploy -> 1 or
./deploy_eks_stack.sh Deploy 2019-07-14 20:31:40 Checking for dependencies 2019-07-14 20:31:40 Starting to deploy the AWS EKS stack By default, this automation will create two users. One is mlozano-admin (Cluster admin) and another mlozano-user (For default namespace).
To get the token, you can run this command.
my_user=mlozano kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | awk '/'"${my_user}"'/ { rc = 1; print $1 }; END { exit !rc }' || echo "${my_user}")The dashboard is configured to be "public" (Allowed just for few external IPs) and with HTTP over TLS.
Run this command to get the external address.
kubectl -n kube-system get serviceThe output will be something like this
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kube-dns ClusterIP <CLUSTER_IP> <none> 53/UDP,53/TCP 166m k8s-dashboard LoadBalancer <CLUSTER_IP> <MY_LoadBalancer>.<REGION>.elb.amazonaws.com 8080:32225/TCP 7m22s tiller-deploy ClusterIP <CLUSTER_IP> <none> 44134/TCP 55m The URL structre is
https://<MY_LoadBalancer>.<REGION>.elb.amazonaws.com:8080/