0Pricing
AWS Solutions Architect · Aula

Perfis do Fargate para pods sem servidor

Execute pods do Kubernetes no Fargate sem gerenciar nós EC2, configure perfis do Fargate e entenda suas restrições de namespace.

Perfis do Fargate para pods sem servidor é uma aula grátis de AWS Solutions Architect no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de AWS Solutions Architect, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de AWS Solutions Architect inclui 4 aulas no total.

O que são perfis do Fargate?

AWS Fargate para EKS permite executar pods do Kubernetes sem provisionar ou gerenciar nós do EC2. Em vez de pensar em tipos de instância e grupos de nós, você define um perfil do Fargate que informa ao EKS quais pods devem ser executados no Fargate, com base no namespace e em seletores de rótulos opcionais. A AWS provisiona automaticamente a quantidade adequada de capacidade computacional para cada pod e a encerra quando o pod é interrompido.

Configuração do perfil do Fargate

Um perfil do Fargate é associado a um cluster do EKS e contém um ou mais seletores — cada seletor especifica um namespace e pares opcionais de chave e valor de rótulos do Kubernetes. Um pod precisa corresponder a pelo menos um seletor para ser agendado no Fargate. O perfil também especifica a função de execução do pod (uma função do IAM) e as sub-redes privadas que o Fargate deve usar para iniciar os pods.

# Create a Fargate profile for the 'production' namespace
aws eks create-fargate-profile \
  --cluster-name my-cluster \
  --fargate-profile-name production-profile \
  --pod-execution-role-arn arn:aws:iam::111122223333:role/EKSFargatePodExecutionRole \
  --subnets subnet-aaa subnet-bbb \
  --selectors '[{"namespace":"production"},{"namespace":"staging","labels":{"fargate":"true"}}]'

Função de execução do pod

A função de execução do pod é uma função do IAM que o EKS assume quando o Fargate obtém imagens de contêiner e envia logs de pods para o CloudWatch. Ela precisa incluir a política gerenciada pela AWS AmazonEKSFargatePodExecutionRolePolicy. Sem essa função, os pods agendados no Fargate não conseguirão iniciar, pois o Fargate não poderá se autenticar no ECR nem gravar no CloudWatch Logs.

# Create the pod execution role trust policy
cat fargate-trust-policy.json
# {
#   "Version": "2012-10-17",
#   "Statement": [{
#     "Effect": "Allow",
#     "Principal": {"Service": "eks-fargate-pods.amazonaws.com"},
#     "Action": "sts:AssumeRole"
#   }]
# }

aws iam attach-role-policy \
  --role-name EKSFargatePodExecutionRole \
  --policy-arn arn:aws:iam::aws:policy/AmazonEKSFargatePodExecutionRolePolicy

Restrições de namespace no Fargate

O Fargate impõe restrições importantes de namespace. O namespace kube-system não pode ser usado pela maioria dos perfis do Fargate, pois pods do sistema, como o kube-proxy, são executados nele. Uma exceção é o CoreDNS: a AWS fornece um processo guiado para aplicar um patch à implantação do CoreDNS e remover a anotação eks.amazonaws.com/compute-type: ec2, permitindo sua execução no Fargate. Os pods em namespaces excluídos continuarão sem agendamento se nenhum nó do EC2 estiver disponível.

# Patch CoreDNS to allow Fargate scheduling
kubectl patch deployment coredns \
  -n kube-system \
  --type json \
  -p '[{"op":"remove","path":"/spec/template/metadata/annotations/eks.amazonaws.com~1compute-type"}]'

# Restart CoreDNS to apply the patch
kubectl rollout restart deployment coredns -n kube-system

Dimensionamento de recursos dos pods do Fargate

O Fargate aloca recursos computacionais com base nas solicitações de CPU e memória definidas na especificação do pod. Ele arredonda os valores para a combinação de vCPU/memória compatível mais próxima do Fargate (por exemplo, de 0,25 vCPU / 0,5 GB até 16 vCPU / 120 GB). Você paga apenas pelos recursos alocados por segundo enquanto o pod está em execução. Sempre defina solicitações de recursos precisas — solicitar menos do que o necessário causa encerramentos por falta de memória; solicitar mais aumenta o custo.

# Pod spec with explicit resource requests and limits
apiVersion: v1
kind: Pod
metadata:
  name: api-pod
  namespace: production
spec:
  containers:
  - name: api
    image: 111122223333.dkr.ecr.us-east-1.amazonaws.com/my-api:latest
    resources:
      requests:
        cpu: '500m'
        memory: '1Gi'
      limits:
        cpu: '1'
        memory: '2Gi'

Grupos de nós do Fargate e do EC2: compensações

O Fargate elimina o gerenciamento de nós, mas tem algumas limitações: não oferece DaemonSets (pois não há nós persistentes nos quais agendá-los), não permite contêineres privilegiados e oferece suporte limitado a determinados tipos de armazenamento. Os grupos de nós do EC2 oferecem suporte a GPUs, kernels personalizados e cargas de trabalho com estado que usam unidades NVMe locais. Um padrão comum é executar serviços sem estado no Fargate e cargas de trabalho com estado ou que usam GPU em grupos de nós dedicados do EC2 dentro do mesmo cluster do EKS.

Rede do Fargate e grupos de segurança

Cada pod do Fargate recebe sua própria interface de rede elástica (ENI) e um IP privado da sub-rede especificada no perfil. Isso permite aplicar um grupo de segurança exclusivo a cada pod usando o recurso Security Groups for Pods. Os pods do Fargate oferecem suporte a todas as regras padrão de grupos de segurança da VPC, proporcionando um controle detalhado do tráfego de entrada e saída no nível de cada pod — uma importante vantagem de segurança em relação aos grupos de segurança compartilhados no nível do nó.

# Assign a security group to a pod via annotation
apiVersion: v1
kind: Pod
metadata:
  name: secure-api
  namespace: production
  annotations:
    vpc.amazonaws.com/pod-eni: 'true'
spec:
  securityGroups:
    groupIds:
    - sg-0abc1234def56789a
  containers:
  - name: api
    image: 111122223333.dkr.ecr.us-east-1.amazonaws.com/secure-api:v2

Envio de logs do Fargate para o CloudWatch

Os pods do Fargate enviam logs para o Amazon CloudWatch Logs usando o roteador de logs integrado Fluent Bit. Você configura o logging criando um ConfigMap chamado aws-logging no namespace aws-observability. A função de execução do pod precisa ter permissão para criar grupos de logs e gravar eventos de log. Os logs são organizados em grupos de logs do CloudWatch por cluster e namespace, facilitando a agregação centralizada de logs sem executar um agente de logs separado.

# ConfigMap to enable Fargate logging
apiVersion: v1
kind: ConfigMap
metadata:
  name: aws-logging
  namespace: aws-observability
data:
  flb_log_cw: 'true'
  output.conf: |
    [OUTPUT]
        Name cloudwatch_logs
        Match *
        region us-east-1
        log_group_name /aws/eks/my-cluster/fargate
        log_stream_prefix fargate-
        auto_create_group true

Horizontal Pod Autoscaler no Fargate

O Fargate oferece suporte ao Horizontal Pod Autoscaler (HPA) do Kubernetes. Quando o HPA aumenta o número de réplicas, o Fargate provisiona automaticamente novas microVMs, sem que você precise ajustar o tamanho de nenhum grupo de nós. Isso proporciona uma experiência verdadeiramente sem servidor de escalabilidade automática: o HPA controla a quantidade de pods, e o Fargate gerencia a capacidade computacional de forma elástica. Você ainda precisa ter o Metrics Server implantado no cluster para que o HPA leia o uso de CPU e memória.

# Deploy Metrics Server (required for HPA)
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml

# Create an HPA for a Fargate-scheduled deployment
kubectl autoscale deployment my-api \
  --namespace production \
  --cpu-percent=60 \
  --min=2 \
  --max=20

Modelo de preços do Fargate

Você paga pelo consumo de vCPU-segundo e GB-segundo no Fargate, com um mínimo de 1 minuto por pod. Não há custos no nível do nó, cobranças por capacidade reservada nem custos de aplicação de patches na AMI ou no OS. Normalmente, o Fargate é mais caro por unidade de capacidade computacional do que instâncias sob demanda do EC2 dimensionadas corretamente, mas o custo total de propriedade costuma ser menor quando se considera o tempo de engenharia economizado no gerenciamento de nós, na aplicação de patches e nas decisões de escalabilidade.

Limitações comuns do Fargate que você deve conhecer

Principais limitações do Fargate para a prova SAA-C03: não oferece suporte a DaemonSet (os pods não podem ser colocados em cada nó porque não há nós persistentes), não permite contêineres privilegiados, não oferece o modo hostNetwork, e o armazenamento efêmero é limitado a 20 GB por pod (podendo ser expandido para 200 GB com uma configuração). O armazenamento persistente em bloco com EBS não é compatível — use EFS para armazenamento persistente compartilhado de arquivos com pods do Fargate.

# Mount EFS in a Fargate pod (EBS is NOT supported on Fargate)
apiVersion: v1
kind: Pod
metadata:
  name: efs-pod
  namespace: production
spec:
  volumes:
  - name: efs-storage
    persistentVolumeClaim:
      claimName: efs-pvc
  containers:
  - name: app
    image: my-image:latest
    volumeMounts:
    - name: efs-storage
      mountPath: /data

Verificação rápida

Teste sua compreensão dos conceitos do AWS Solutions Architect (SAA-C03) desta lição.

Recapitulação da lição

Nesta lição, você aprendeu que: os perfis do Fargate usam seletores de namespace e rótulos para agendar pods sem servidor; a função de execução do pod concede ao Fargate permissão para obter imagens e gravar logs; e o Fargate não oferece suporte a DaemonSets nem a EBS — use EFS para armazenamento persistente. A seguir, exploraremos a rede do EKS com o plug-in VPC CNI e o AWS Load Balancer Controller.

Perguntas Frequentes

A aula “Perfis do Fargate para pods sem servidor” é grátis?

Sim — o texto completo de “Perfis do Fargate para pods sem servidor” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de AWS Solutions Architect, atualize para CoddyKit PRO. O curso de AWS Solutions Architect inclui 4 aulas no total.

O que vou aprender em “Perfis do Fargate para pods sem servidor”?

Execute pods do Kubernetes no Fargate sem gerenciar nós EC2, configure perfis do Fargate e entenda suas restrições de namespace. Você pratica AWS Solutions Architect com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar AWS Solutions Architect?

Nenhuma experiência prévia é necessária. AWS Solutions Architect no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “Perfis do Fargate para pods sem servidor”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de AWS Solutions Architect?

Sim. Cada aula de AWS Solutions Architect inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Plano de controle e nós de trabalho do EKS
  2. Perfis do Fargate para pods sem servidor
  3. Rede do EKS: VPC CNI e balanceamento de carga
  4. Funções do IAM para contas de serviço (IRSA)
← Voltar para AWS Solutions Architect