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

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á.

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 requer um arquivo de manifesto do Kubernetes CodePipeline usado 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 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 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 gráficos helm no formato.tgz armazenados em um bucket do S3, você pode fazer isso configurando o Bucket/Key S3 como sua 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 ECRBuild AndPublish ação que cria uma imagem ECR com${codepipeline.PipelineExecutionId}, e a ação EKS pode usar essa imagem usando ${codepipeline.PipelineExecutionId} como valor da variável de ambiente.

Variáveis de saída

EKSClusterNome

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.

  • EC2 ações: Quando CodePipeline executada, as permissões da EC2 instância de ação são necessárias. Observe que essa não é a mesma função de EC2 instância exigida quando você cria seu cluster 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: ao CodePipeline executar a ação, as permissões do cluster 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.

    • ex: DescribeCluster

  • Ações de fluxo de log: ao CodePipeline executar a ação, CodePipeline cria um grupo de registros usando o nome do pipeline da seguinte forma. 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.

    • troncos: CreateLogGroup

    • troncos: CreateLogStream

    • troncos: 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 registros computacionais no console 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 de função de serviço do seu pipeline, você configura suas permissões de cluster adicionando a função de CodePipeline serviço como uma entrada de acesso para seu 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 a função CodePipeline de serviço.

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.