As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Este tutorial ajuda você a criar uma ação de implantação CodePipeline que implanta seu código em um cluster que você configurou no Amazon EKS.
A ação EKS oferece suporte a clusters EKS públicos e privados. Clusters privados são do tipo recomendado pelo EKS; no entanto, ambos os tipos são compatíveis.
nota
Como parte da criação de um pipeline no console, um bucket de artefatos S3 será usado CodePipeline por for artefacts. (Este bucket não é o mesmo utilizado para uma ação de origem do S3.) Se o bucket de artefatos do S3 estiver em uma conta diferente da conta do seu pipeline, certifique-se de que o bucket de artefatos do S3 Contas da AWS seja de propriedade de quem é seguro e confiável.
nota
Essa ação usa CodeBuild computação CodePipeline gerenciada para executar comandos em um ambiente de compilação. A execução da ação Comandos incorrerá em cobranças separadas no AWS CodeBuild.
nota
A ação de EKS
implantação está disponível somente para pipelines do tipo V2.
Pré-requisitos
Para você usar este tutorial para criar seu pipeline de CD, alguns recursos precisam estar em operação. Veja aqui estão os itens que você precisa para começar:
nota
Todos esses recursos devem ser criados na mesma AWS região.
-
Um repositório de controle de origem (este tutorial usa GitHub) onde você adicionará um
deployment.yaml
arquivo de amostra. -
Você deve usar uma função CodePipeline de serviço existente que você atualizará com as permissões para essa ação usando Etapa 3: atualizar a política CodePipeline de função de serviço no IAM abaixo. As permissões necessárias são baseadas no tipo de cluster que você cria. Para obter mais informações, consulte Permissões de política de perfil de serviço.
-
Uma imagem de trabalho e uma tag de repositório que você enviou para o ECR ou para o seu repositório de imagens.
Assim que você atender a esses pré-requisitos, poderá continuar com o tutorial e criar seu pipeline de CD.
Etapa 1: (opcional) criar um cluster no Amazon EKS
Você pode escolher criar um cluster EKS com um endpoint público ou privado.
Nas etapas a seguir, você cria um cluster público ou privado no EKS. Essa etapa é opcional se você já tiver criado seu cluster.
Crie um cluster público no Amazon EKS
Nesta etapa, você cria um cluster no EKS.
Crie um cluster público
-
Abra o console EKS e escolha Criar cluster.
-
Em Nome, nomeie seu cluster. Escolha Próximo.
-
Escolha Criar.
Crie um cluster privado no Amazon EKS
Caso você opte por criar um cluster com um endpoint privado, certifique-se de conectar somente as sub-redes privadas e certifique-se de que elas tenham conexão com a Internet.
Siga as próximas cinco subetapas para criar um cluster com um endpoint privado.
Crie uma VPC no console
-
Abra o console da VPC e escolha Create VPC.
-
Em Configurações da VPC, escolha VPC e mais.
-
Escolha criar uma sub-rede pública e quatro privadas. Escolha Criar VPC.
-
Na página de sub-redes, escolha Privado.
Determine as sub-redes privadas em sua VPC
-
Navegue até sua VPC e escolha a ID da VPC para abrir a página de detalhes da VPC.
-
Na página de detalhes da VPC, escolha a guia Mapa de recursos.
-
Veja o diagrama e anote suas sub-redes privadas. As sub-redes são exibidas com rótulos para indicar o status público ou privado, e cada sub-rede é mapeada para uma tabela de rotas.
Observe que um cluster privado terá todas as sub-redes privadas.
-
Crie uma sub-rede pública para hospedar o gateway NAT. Só é possível anexar um gateway da Internet a uma VPC de cada vez.
Crie um gateway NAT na sub-rede pública
-
Na sub-rede pública, crie um gateway NAT. Navegue até o console da VPC e escolha Gateways da Internet. Escolha Criar gateway da Internet.
-
Em Nome, insira um nome para seu gateway de internet. Escolha Criar gateway da Internet.
Atualize a tabela de rotas da sub-rede privada para direcionar o tráfego para o gateway NAT.
Adicione o gateway NAT às suas tabelas de rotas para suas sub-redes privadas
-
Navegue até o console da VPC e escolha Sub-redes.
-
Para cada sub-rede privada, escolha-a e, em seguida, escolha a tabela de rotas dessa sub-rede na página de detalhes, Escolha Editar tabela de rotas.
-
Atualize a tabela de rotas da sub-rede privada para direcionar o tráfego da Internet para o gateway NAT. Selecione Adicionar rota. Escolha o gateway NAT entre as opções a serem adicionadas. Escolha o gateway de internet que você criou.
-
Para a sub-rede pública, crie uma tabela de rotas personalizada. Verifique se a lista de controle de acesso à rede (ACL) da sua sub-rede pública permite tráfego de entrada da sub-rede privada.
-
Escolha Salvar alterações.
Nesta etapa, você cria um cluster no EKS.
Crie um cluster privado
-
Abra o console EKS e escolha Criar cluster.
-
Em Nome, nomeie seu cluster. Escolha Próximo.
-
Especifique sua VPC e outras informações de configuração. Escolha Criar.
Seu cluster EKS pode ser público ou privado. Essa etapa é para clusters que têm SOMENTE um endpoint privado. Certifique-se de que, se seu cluster for privado.
Etapa 2: configurar seu cluster privado no Amazon EKS
Essa etapa é aplicável somente se você tiver criado um cluster privado. Essa etapa é para clusters que têm SOMENTE um endpoint privado.
Configure seu cluster
-
Anexe sub-redes privadas somente no cluster EKS na guia Rede. Anexe as sub-redes privadas capturadas na seção Determinar as sub-redes privadas em sua VPC, abaixo. Etapa 1: (opcional) criar um cluster no Amazon EKS
-
Certifique-se de que as sub-redes privadas tenham acesso à Internet, pois CodePipeline armazena e recupera artefatos do bucket de artefatos do S3 para seu pipeline.
Etapa 3: atualizar a política CodePipeline de função de serviço no IAM
Nesta etapa, você atualizará uma função de CodePipeline serviço existente, por exemplocp-service-role
, com as permissões exigidas CodePipeline para se conectar ao seu cluster. Se você não tiver uma função existente, crie uma nova.
Atualize sua função CodePipeline de serviço com as etapas a seguir.
Para atualizar sua política CodePipeline de função de serviço
-
Abra o console do IAM em https://console.aws.amazon.com/iam/
). -
No painel do console, escolha Roles (Funções).
-
Procure sua função CodePipeline de serviço, como
cp-service-role
. -
Adicione uma nova política em linha.
-
No editor de políticas, digite o seguinte.
-
Para um cluster público, adicione as seguintes permissões.
{ "Statement": [ { "Sid": "EksClusterPolicy", "Effect": "Allow", "Action": "eks:DescribeCluster", "Resource": "arn:aws:eks:us-east-1:
ACCOUNT-ID
:cluster/my-cluster" }, { "Sid": "EksVpcClusterPolicy", "Effect": "Allow", "Action": [ "ec2:DescribeDhcpOptions", "ec2:DescribeNetworkInterfaces", "ec2:DescribeRouteTables", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "ec2:DescribeVpcs" ], "Resource": [ "*" ] } ], "Version": "2012-10-17" } -
Para um cluster privado, adicione as seguintes permissões. Os clusters privados exigirão permissões adicionais para sua VPC, se aplicável.
{ "Statement": [ { "Sid": "EksClusterPolicy", "Effect": "Allow", "Action": "eks:DescribeCluster", "Resource": "arn:aws:eks:us-east-1:
ACCOUNT-ID
:cluster/my-cluster" }, { "Sid": "EksVpcClusterPolicy", "Effect": "Allow", "Action": [ "ec2:DescribeDhcpOptions", "ec2:DescribeNetworkInterfaces", "ec2:DescribeRouteTables", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "ec2:DescribeVpcs" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": "ec2:CreateNetworkInterface", "Resource": "*", "Condition": { "StringEqualsIfExists": { "ec2:Subnet": [ "arn:aws:ec2:us-east-1:ACCOUNT-ID
:subnet/subnet-03ebd65daeEXAMPLE", "arn:aws:ec2:us-east-1:ACCOUNT-ID
:subnet/subnet-0e377f6036EXAMPLE", "arn:aws:ec2:us-east-1:ACCOUNT-ID
:subnet/subnet-0db658ba1cEXAMPLE", "arn:aws:ec2:us-east-1:ACCOUNT-ID
:subnet/subnet-0db658ba1cEXAMPLE" ] } } }, { "Effect": "Allow", "Action": "ec2:CreateNetworkInterfacePermission", "Resource": "*", "Condition": { "ArnEquals": { "ec2:Subnet": [ "arn:aws:ec2:us-east-1:ACCOUNT-ID
:subnet/subnet-03ebd65daeEXAMPLE", "arn:aws:ec2:us-east-1:ACCOUNT-ID
:subnet/subnet-0e377f6036EXAMPLE", "arn:aws:ec2:us-east-1:ACCOUNT-ID
:subnet/subnet-0db658ba1cEXAMPLE", "arn:aws:ec2:us-east-1:ACCOUNT-ID
:subnet/subnet-0db658ba1cEXAMPLE" ] } } }, { "Effect": "Allow", "Action": "ec2:DeleteNetworkInterface", "Resource": "*", "Condition": { "StringEqualsIfExists": { "ec2:Subnet": [ "arn:aws:ec2:us-east-1:ACCOUNT-ID
:subnet/subnet-03ebd65daeEXAMPLE", "arn:aws:ec2:us-east-1:ACCOUNT-ID
:subnet/subnet-0e377f6036EXAMPLE", "arn:aws:ec2:us-east-1:ACCOUNT-ID
:subnet/subnet-0db658ba1cEXAMPLE", "arn:aws:ec2:us-east-1:ACCOUNT-ID
:subnet/subnet-0db658ba1cEXAMPLE" ] } } } ], "Version": "2012-10-17" }
-
-
Escolha Atualizar política.
Etapa 4: criar uma entrada de acesso para a função CodePipeline de serviço
Nesta etapa, você cria uma entrada de acesso em seu cluster que adicionará a função de CodePipeline serviço que você atualizou na Etapa 3, junto com uma política de acesso gerenciado.
-
Abra o console EKS e navegue até seu cluster.
-
Escolha a guia Acesso.
-
Em Entradas de acesso do IAM, escolha Criar entrada de acesso.
-
No ARN principal do IAM, insira a função que você acabou de atualizar para a ação, como.
cp-service-role
Escolha Próximo. -
Na página Etapa 2: Adicionar política de acesso, em Nome da política, escolha a política gerenciada para acesso, como
AmazonEKSClusterAdminPolicy
. Escolha Add policy. Escolha Próximo.nota
Essa é a política que a CodePipeline ação usa para falar com o Kubernetes. Como prática recomendada, para reduzir o escopo das permissões em sua política com o mínimo de privilégios em vez da política administrativa, anexe uma política personalizada.
-
Na página de revisão, escolha Criar.
Etapa 5: criar um repositório de origem e adicionar os arquivos de helm chart
configuração
Nesta etapa, você cria um arquivo de configuração apropriado para sua ação (arquivos de manifesto do Kubernetes ou gráfico do Helm) e armazena o arquivo de configuração no seu repositório de origem. Use o arquivo apropriado para sua configuração. Para obter mais informações, consulte https://kubernetes.
-
Para o Kubernetes, use um arquivo de manifesto.
-
Para Helm, use uma carta Helm.
-
Crie ou use um GitHub repositório existente.
-
Crie uma nova estrutura em seu repositório para seus arquivos de gráfico do helm, conforme mostrado no exemplo abaixo.
mychart |-- Chart.yaml |-- charts |-- templates | |-- NOTES.txt | |-- _helpers.tpl | |-- deployment.yaml | |-- ingress.yaml | `-- service.yaml `-- values.yaml
-
Adicione o arquivo ao nível raiz do seu repositório.
Etapa 6: criar seu funil
Use o CodePipeline assistente para criar seus estágios de funil e conectar seu repositório de origem.
Para criar o pipeline
Abra o CodePipeline console em https://console.aws.amazon.com/codepipeline/
. -
Na página Welcome (Bem-vindo), Getting started (Conceitos básicos) ou Pipelines, selecione Create pipeline (Criar pipeline).
-
Na página Etapa 1: Escolher opção de criação, em Opções de criação, selecione a opção Criar pipeline personalizado. Escolha Próximo.
-
Em Etapa 2: Escolher as configurações do pipeline, em Nome do pipeline, insira
MyEKSPipeline
. -
CodePipeline fornece tubulações do tipo V1 e V2, que diferem em características e preço. O tipo V2 é o único tipo que você pode escolher no console. Para ter mais informações, consulte Pipeline types. Para obter informações sobre preços de CodePipeline, consulte Preços
. -
Em Função de serviço, escolha a função de serviço que você atualizou na Etapa 3.
-
Deixe as configurações em Advanced settings (Configurações avançadas) como padrão e escolha Next (Próximo).
-
Na página Etapa 3: Adicionar estágio de origem, em Provedor de origem, escolha criar uma conexão com seu GitHub repositório.
-
Na página Etapa 4: Adicionar estágio de construção, escolha Ignorar.
-
Na página Etapa 5: Adicionar estágio de implantação, escolha Amazon EKS.
-
Em Tipo de configuração de implantação, escolha Helm.
-
Em Localização do gráfico do Helm, insira o nome da versão, como
my-release
. Para a localização do gráfico do Helm, insira o caminho para seus arquivos do gráfico do Helm, como.mychart
-
Escolha Próximo.
-
-
Na página Step 6: Review, revise a configuração do pipeline e escolha Create pipeline para criá-lo.
-
Depois que o pipeline for executado com êxito, escolha Exibir detalhes para ver os registros da ação e ver a saída da ação.