
Atenção: o serviço de Kubernetes da AWS não é gratuito, portanto ao executar o hands-on abaixo você terá cobrança de alguns centavos de dólar na sua conta da AWS de acordo com a precificação do EKS na AWS. Lembre-se de deletar o cluster ao final do hands-on para evitar cobranças indesejadas. Use a seção de remoção no final do doc.
Setup do Cluster no AWS Elastic Kubernetes Services (EKS)
Crie um usuário chamado eksuser com privilegio de Admin e se autentique com ele
YAML
Copiar
aws configure
Instale a ferramenta CLI eksctl
Shell
Copiar
curl –silent –location “https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz” | tar xz -C /tmp sudo cp /tmp/eksctl /usr/bin eksctl version
Instale a ferramenta CLI kubectl
Shell
Copiar
curl -o kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.18.9/2020-11-02/bin/linux/amd64/kubectl chmod +x ./kubectl mkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$PATH:$HOME/bin echo ‘export PATH=$PATH:$HOME/bin’ >> ~/.bashrc kubectl version –short –client
Crie um EKS Cluster
Shell
Copiar
eksctl create cluster \ –name clouddica \ –region us-east-1 \ –nodegroup-name standard-workers \ –node-type t3.medium \ –nodes 1 \ –with-oidc \ –managed
Conecte-se ao cluster EKS usando a configuração do kubectl
Shell
Copiar
aws eks update-kubeconfig –name clouddica
Verifique a conectividade do Cluster
Shell
Copiar
kubectl get svc kubectl get nodes
6. Crie uma Role & Service Account para fornecer aos pods acesso aos serviços usados pela aplicação (DynamoDB, Bedrock, etc).
Shell
Copiar
eksctl create iamserviceaccount \ –cluster=clouddica \ –name=clouddica-pod-execution-role \ –role-name CloudDicaPodExecutionRole \ –attach-policy-arn=arn:aws:iam::aws:policy/AdministratorAccess\ –region us-east-1 \ –approve

OBS: No exemplo acima, foram usados privilégios de Admin para facilitar fins educacionais. Lembre-se sempre de seguir o princípio do mínimo privilégio em ambientes de produção
Deployment do Backend no Kubernetes
Crie um Repositório ECR para o Backend e suba a imagem Docker para o mesmo
Shell
Copiar
<Siga os passos do ECR>
Crie um arquivo de deployment do Kubernetes (YAML) para o Backend
YAML
Copiar
cd challenge-day2/backend nano clouddica-backend.yaml
YAML
Copiar
apiVersion: apps/v1 kind: Deployment metadata: name: clouddica-backend-app spec: replicas: 1 selector: matchLabels: app: clouddica-backend-app template: metadata: labels: app: clouddica-backend-app spec: serviceAccountName: clouddica-pod-execution-role containers: – name: clouddica-backend-app image: public.ecr.aws/l4c0j8h9/clouddica-backend:latest env: – name: PORT value: “5000” – name: AWS_REGION value: “us-east-1” – name: BEDROCK_AGENT_ID value: “xxxxxx” – name: BEDROCK_AGENT_ALIAS_ID value: “xxxx” – name: OPENAI_API_KEY value: “xxxxxx” – name: OPENAI_ASSISTANT_ID value: “xxxx” — apiVersion: v1 kind: Service metadata: name: clouddica-backend-app-service spec: type: LoadBalancer selector: app: clouddica-backend-app ports: – protocol: TCP port: 5000 targetPort: 5000
Realize o deployment do Backend no Kubernetes
YAML
Copiar
kubectl apply -f clouddica-backend.yaml
Acompanhe o status dos objetos sendo criados e obtenha o IP público gerado para a API
YAML
Copiar
kubectl get pods kubectl get deployment kubectl get service
Deployment do Frontend no Kubernetes
Preparação
Altere o arquivo .env do Frontend para apontar para a URL da API criada dentro do Kubernetes obtida pela comando kubectl get service
YAML
Copiar
cd ../challenge-day2/frontend nano .env
Conteúdo do .env:
Plain Text
Copiar
VITE_API_BASE_URL=http://<sua_url_kubernetes_api>:5000/api
Crie um Repositório ECR para o Frontend e suba a imagem Docker para o mesmo
Shell
Copiar
<Siga os passos do ECR>
Crie um arquivo de deployment do Kubernetes (YAML) para o Frontend
YAML
Copiar
cd challenge-day2/frontend nano clouddica-frontend.yaml
YAML
Copiar
apiVersion: apps/v1 kind: Deployment metadata: name: clouddica-frontend-app spec: replicas: 1 selector: matchLabels: app: clouddica-frontend-app template: metadata: labels: app: clouddica-frontend-app spec: serviceAccountName: clouddica-pod-execution-role containers: – name: clouddica-frontend-app image: public.ecr.aws/l4c0j8h9/clouddica-frontend:latest — apiVersion: v1 kind: Service metadata: name: clouddica-frontend-app-service spec: type: LoadBalancer selector: app: clouddica-frontend-app ports: – protocol: TCP port: 5001 targetPort: 5001
Realize o deployment do Frontend no Kubernetes
YAML
Copiar
kubectl apply -f clouddica-frontend.yaml
Acompanhe o status dos objetos sendo criados e obtenha o IP público gerado para a API
YAML
Copiar
kubectl get pods kubectl get deployment kubectl get service
Remoção
Ao final do hands-on, delete todos os recursos:
YAML
Copiar
kubectl delete service clouddica-frontend-app-service kubectl delete deployment clouddica-frontend-app kubectl delete service clouddica-backend-app-service kubectl delete deployment clouddica-backend-app eksctl delete cluster –name clouddica –region us-east-1
0 comentário