Referência da ação de implantação EKS do Amazon Elastic Container Service - AWS CodePipeline

Referência da ação de implantação EKS do Amazon Elastic Container Service

Você pode usar a ação EKSDeploy para implantar um serviço do Amazon EKS. A implantação exige um arquivo de manifesto do Kubernetes usado pelo CodePipeline para implantar a imagem.

Antes de criar o pipeline, você também já deve ter criado os recursos do Amazon EKS e armazenado a imagem no repositório de imagens. Você também pode fornecer as informações do VPC para o cluster.

Importante

Essa ação usa a computação do CodeBuild gerenciada pelo CodePipeline 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 implantação EKS só está disponível para pipelines do tipo V2.

A ação do EKS dá suporte a clusters do EKS públicos e privados. Os clusters privados são do tipo recomendado pelo EKS. No entanto, ambos os tipos são compatíveis.

A ação do EKS é compatível com ações entre contas. Para adicionar uma ação do EKS entre contas, adicione actionRoleArn da conta de destino na declaração de ação.

Tipo de ação

  • Categoria: Deploy

  • Proprietário: AWS

  • Fornecedor: EKS

  • Versão: 1

Parâmetros de configuração

ClusterName

Obrigatório: Sim

O cluster do Amazon EKS no Amazon EKS.

Opções no Helm

Estas serão as opções disponíveis quando o Helm for a ferramenta de implantação selecionada.

HelmReleaseName

Obrigatório: sim (obrigatório apenas para o tipo Helm)

O nome da versão da implantação.

HelmChartLocation

Obrigatório: sim (obrigatório apenas para o tipo Helm)

A localização do gráfico da implantação.

HelmValuesFiles

Obrigatório: não (opcional apenas para o tipo Helm)

Para substituir os arquivos de valores do Helm, insira os arquivos de valores do Helm separados por vírgula no local do chart do Helm.

Opções em Kubectl

Estas serão as opções disponíveis quando o Kubectl for a ferramenta de implantação selecionada.

ManifestFiles

Obrigatório: sim (obrigatório apenas para o tipo Kubectl)

O nome do arquivo de manifesto, o arquivo de texto que descreve o nome de contêiner, a imagem e a tag do serviço. Você usa esse arquivo para parametrizar o URI da imagem e outras informações. Você pode usar uma variável de ambiente com essa finalidade.

Você armazena esse arquivo no repositório de origem do pipeline.

Namespace

Obrigatório: Não

O namespace kubernetes a ser usado em comandos kubectl ou helm.

Sub-redes

Obrigatório: Não

As sub-redes da VPC do cluster. Elas fazem parte da mesma VPC conectada ao cluster. Você também pode fornecer sub-redes ainda não conectadas ao cluster e especificá-las aqui.

SecurityGroupIds

Obrigatório: Não

Os grupos de segurança da VPC do cluster. Elas fazem parte da mesma VPC conectada ao cluster. Você também pode fornecer grupos de segurança ainda não conectados ao cluster e especificá-los aqui.

Input artifacts (Artefatos de entrada)

  • Número de artefatos: 1

  • Descrição: a ação procura o arquivo de manifesto do Kubernetes ou o chart do Helm no repositório de arquivos de origem do pipeline. Se quiser usar charts do Helm em formato .tgz armazenados em um bucket do S3, você poderá fazer isso configurando o bucket/chave do S3 como a ação de origem. Por exemplo, a chave do objeto fornecida seria my-chart-0.1.0.tgz.

Artefatos de saída

  • Número de artefatos: 0

  • Descrição: os artefatos de saída não se aplicam a esse tipo de ação.

Variáveis de ambiente

Usado para substituir variáveis como repositórios de imagens ou tags de imagem em arquivos de manifesto ou arquivos de valores do chart do Helm.

Chave

A chave em um par de variáveis do ambiente chave-valor, como $IMAGE_TAG.

Valor

O valor do par chave-valor, como v1.0. O valor pode ser parametrizado com variáveis de saída a partir de ações ou variáveis do pipeline. Por exemplo, o pipeline pode ter uma ação ECRBuildAndPublish que cria uma imagem do ECR com ${codepipeline.PipelineExecutionId}, e a ação do EKS pode utilizar essa imagem usando ${codepipeline.PipelineExecutionId} como o valor da variável de ambiente.

Variáveis de saída

EKSClusterName

O cluster do Amazon EKS no Amazon EKS.

Permissões de política de perfil de serviço

Para executar essa ação, as permissões a seguir devem estar disponíveis na política do perfil de serviço do pipeline.

  • Ações do EC2: quando o CodePipeline executa a ação, as permissões da instância do EC2 são necessárias. Não se trata da mesma função da instância do EC2 necessária quando você cria o cluster do EKS.

    Se estiver usando um perfil de serviço existente, para usar essa ação, você precisará adicionar as permissões a seguir para o perfil de serviço.

    • ec2:CreateNetworkInterface

    • ec2:DescribeDhcpOptions

    • ec2:DescribeNetworkInterfaces

    • ec2:DeleteNetworkInterface

    • ec2:DescribeSubnets

    • ec2:DescribeSecurityGroups

    • ec2:DescribeVpcs

  • Ações do EKS: quando o CodePipeline executa a ação, as permissões do cluster do EKS são necessárias. Não se trata da mesma função do cluster do EKS do IAM necessária quando você cria o cluster do EKS.

    Se estiver usando um perfil de serviço existente, para usar essa ação, você precisará adicionar a permissão a seguir para o perfil de serviço.

    • eks:DescribeCluster

  • Ações do fluxo de logs: quando o CodePipeline executa a ação, o CodePipeline cria um grupo de logs usando o nome do pipeline conforme mostrado a seguir. Isso permite reduzir as permissões para os recursos de log usando o nome do pipeline.

    /aws/codepipeline/MyPipelineName

    Se estiver usando um perfil de serviço existente, para usar essa ação, você precisará adicionar as permissões a seguir para o perfil de serviço.

    • logs:CreateLogGroup

    • logs:CreateLogStream

    • logs:PutLogEvents

Na declaração da política do perfil de serviço, reduza o escopo das permissões até o nível de recurso conforme mostrado no exemplo a seguir.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "eks:DescribeCluster" ], "Resource": "arn:aws:eks:*:111122223333:cluster/YOUR_CLUSTER_NAME" }, { "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface", "ec2:CreateNetworkInterfacePermission", "ec2:DescribeDhcpOptions", "ec2:DescribeNetworkInterfaces", "ec2:DeleteNetworkInterface", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "ec2:DescribeVpcs", "ec2:DescribeRouteTables" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:CreateLogGroup", "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:*:111122223333:log-group:/aws/codepipeline/YOUR_PIPELINE_NAME", "arn:aws:logs:*:111122223333:log-group:/aws/codepipeline/YOUR_PIPELINE_NAME:*" ] } ] }

Para visualizar logs no console usando a página de diálogo de detalhes da ação, a permissão para visualizar logs deve ser adicionada ao perfil do console. Para ter mais informações, consulte o exemplo de política de permissões do console em Permissões necessárias para visualizar logs de computação no console do CodePipeline.

Adição do perfil de serviço como uma entrada de acesso para o cluster

Depois que as permissões estiverem disponíveis na política do perfil de serviço do pipeline, você vai configurar as permissões do cluster adicionando o perfil de serviço do CodePipeline como uma entrada de acesso para o cluster.

Você também pode usar uma função de ação que tenha as permissões atualizadas. Para obter mais informações, consulte o exemplo do tutorial em Etapa 4: Criar uma entrada de acesso para o perfil de serviço do CodePipeline.

Declaração de ação

YAML
Name: DeployEKS ActionTypeId: Category: Deploy Owner: AWS Provider: EKS Version: '1' RunOrder: 2 Configuration: ClusterName: my-eks-cluster ManifestFiles: ManifestFile.json OutputArtifacts: [] InputArtifacts: - Name: SourceArtifact
JSON
{ "Name": "DeployECS", "ActionTypeId": { "Category": "Deploy", "Owner": "AWS", "Provider": "EKS", "Version": "1" }, "RunOrder": 2, "Configuration": { "ClusterName": "my-eks-cluster", "ManifestFiles": "ManifestFile.json" }, "OutputArtifacts": [], "InputArtifacts": [ { "Name": "SourceArtifact" } ] },

Os recursos relacionados a seguir podem ajudar você à medida que trabalha com esta ação.