Setup Kubernetes na AWS usando KOPS - acorreiaveras/kops_steps GitHub Wiki
Requisitos
- AWS Ubuntu Instance (Habilitar AWS CLI)
- Domínio Route 53
- S3 Bucket
Configurações AWS
- Criar role - Criar um role de comunicação entre a instância EC2 e o bucket S3
Habilitar as seguintes permissões para o IAM
AmazonEC2FullAccess
AmazonRoute53FullAccess
AmazonS3FullAccess
AmazonVPCFullAccess
IAMFullAccess
Instalar Kubectl
Instalar na instância Ubuntu
curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl
Instalar KOPS
curl -LO https://github.com/kubernetes/kops/releases/download/$(curl -s https://api.github.com/repos/kubernetes/kops/releases/latest | grep tag_name | cut -d '"' -f 4)/kops-linux-amd64
chmod +x kops-linux-amd64
sudo mv kops-linux-amd64 /usr/local/bin/kops
Criar um Bucket S3
Onde os arquivos de configuração do cluster serão salvos
aws s3 mb s3://kops.0secops.com
export KOPS_STATE_STORE=s3://kops.0secops.com
Configurar Route 53
https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-routing-traffic-for-subdomains.html
Criar um Kubernetes Cluster
Gerar chaves para autenticação ssh-keygen
Definir os parâmetros para criação do cluster
kops create cluster
--name cluster.kops.0secops.com
--node-size t2.small
--master-size t2.medium
--zones us-west-1c
--state s3://kops.0secops.com
--dns-zone kops.0secops.com
--yes
Para verificar o cluster
kops validate cluster
Obter os nodes criados
kubectl get nodes
Kubernetes UI
Para instalar o dashboard
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml
Lembrando que, o dashboard apenas é suportado em versões > 1.8
Para atualizar o cluster
kops edit cluster $NAME
# Defina KubernetesVersion com a versão desejada (e.g. v1.3.5)
kops update cluster $NAME --yes
kops rolling-update cluster $NAME --yes
Obter credenciais para acessar o dashboard
kubectl config view
*Usuário padrão: admin
Obter token de acesso ao dashboard
kops get secrets admin --type secret -oplaintext
Deploy container Nginx
kubectl run sample-nginx --image=nginx --replicas=2 --port=80
kubectl get pods
kubectl get deployments
Para criar um load balancer entre os dois containers
kubectl expose deployment sample-nginx --port=80 --type=LoadBalancer
kubectl get services -o wide