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

Categorias: Tecnologia

0 comentário

Deixe uma resposta

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.