Referencia de la acción de implementación de EKS de Amazon Elastic Kubernetes Service - AWS CodePipeline

Referencia de la acción de implementación de EKS de Amazon Elastic Kubernetes Service

Puede usar la acción EKSDeploy para implementar un servicio de Amazon EKS. La implementación requiere un archivo de manifiesto de Kubernetes que CodePipeline usa para implementar la imagen.

Antes de crear la canalización, debe haber creado los recursos de Amazon ECS y haber almacenado la imagen en su repositorio de imágenes. Opcionalmente, puede proporcionar información de VPC para su clúster.

importante

Esta acción utiliza la computación de CodeBuild administrada por CodePipeline para ejecutar comandos en un entorno de compilación. Si ejecuta la acción de Comandos, se le cobrarán cargos por separado en AWS CodeBuild.

nota

La acción de implementación de EKS solo está disponible para canalizaciones de tipo V2.

La acción de EKS admite clústeres de EKS públicos y privados. Los clústeres privados son el tipo recomendado por EKS, pero se admiten ambos.

La acción de EKS es compatible con las acciones en varias cuentas. Para agregar una acción de EKS en varias cuentas, agregue actionRoleArn en su cuenta de destino en la declaración de la acción.

Tipo de acción

  • Categoría: Deploy

  • Propietario: : AWS

  • Proveedor: EKS

  • Versión: 1

Parámetros de configuración

ClusterName

Obligatorio: sí

El clúster de Amazon EKS en Amazon EKS.

Opciones en Helm

Las siguientes opciones están disponibles cuando Helm es la herramienta de implementación seleccionada.

HelmReleaseName

Obligatorio: sí (solo para el tipo Helm)

El nombre de la versión de la implementación.

HelmChartLocation

Obligatorio: sí (solo para el tipo Helm)

La ubicación del gráfico para la implementación.

HelmValuesFiles

Obligatorio: no (opcional solo para el tipo Helm)

Para anular los archivos de valores de Helm, introduzca los archivos de valores de Helm separados por comas en la ubicación del gráfico de Helm.

Opciones en Kubectl

Las siguientes opciones están disponibles cuando Kubectl es la herramienta de implementación seleccionada.

ManifestFiles

Obligatorio: sí (solo para el tipo Kubectl)

El nombre del archivo de manifiesto, el archivo de texto que describe el nombre del contenedor del servicio y la imagen y la etiqueta. Este archivo se usa para parametrizar el URI de la imagen y otra información. Puede usar una variable de entorno para este propósito.

Este archivo se almacena en el repositorio de origen de la canalización.

Espacio de nombres

Obligatorio: no

El espacio de nombres de Kubernetes que se utilizará en los comandos kubectl o helm.

Subredes

Obligatorio: no

Las subredes de VPC para el clúster. Forman parte de la misma VPC que está conectada al clúster. También puede proporcionar subredes que aún no estén conectadas al clúster y especificarlas aquí.

SecurityGroupIds

Obligatorio: no

Los grupos de seguridad de la VPC del clúster. Forman parte de la misma VPC que está conectada al clúster. También puede proporcionar grupos de seguridad que aún no estén conectados al clúster y especificarlos aquí.

Artefactos de entrada

  • Número de artefactos: 1

  • Descripción: la acción busca el archivo de manifiesto de Kubernetes o gráfico de Helm en el repositorio de archivos de origen para la canalización. Si desea utilizar gráficos de Helm en formato .tgz almacenados en un bucket de S3, puede hacerlo configurando el bucket o la clave de S3 como acción de origen. Por ejemplo, la clave de objeto proporcionada sería my-chart-0.1.0.tgz.

Artefactos de salida

  • Número de artefactos: 0

  • Descripción: los artefactos de salida no se aplican a este tipo de acción.

Variables de entorno

Se usa para reemplazar variables, como los repositorios de imágenes o las etiquetas de imágenes, en los archivos de manifiesto o en los archivos de valores de gráficos de Helm.

Clave

La clave de un par de variables de entorno de clave-valor, como $IMAGE_TAG.

Valor

El valor del par clave-valor, como v1.0. El valor se puede parametrizar con variables de salida de acciones o variables de canalización. Por ejemplo, la canalización puede tener una acción ECRBuildAndPublish que cree una imagen de ECR con ${codepipeline.PipelineExecutionId} y la acción de EKS puede usar esta imagen con ${codepipeline.PipelineExecutionId} como valor de la variable de entorno.

Variables de salida

EKSClusterName

El clúster de Amazon EKS en Amazon EKS.

Permisos para las políticas de roles de servicio

Para ejecutar esta acción, los siguientes permisos deben estar disponibles en la política de rol de servicio de la canalización.

  • Acciones de EC2: cuando CodePipeline ejecuta la acción, se requieren permisos de instancia de EC2. Tenga en cuenta que no es lo mismo que el rol de instancia de EC2 que se requiere al crear el clúster de EKS.

    Si utiliza un rol de servicio existente, para utilizar esta acción tendrá que agregar los siguientes permisos para el rol de servicio.

    • ec2:CreateNetworkInterface

    • ec2:DescribeDhcpOptions

    • ec2:DescribeNetworkInterfaces

    • ec2:DeleteNetworkInterface

    • ec2:DescribeSubnets

    • ec2:DescribeSecurityGroups

    • ec2:DescribeVpcs

  • Acciones de EKS: cuando CodePipeline ejecuta la acción, se requieren permisos de clúster de EKS. Tenga en cuenta que no es lo mismo que el rol de clúster de EKS de IAM que se requiere al crear el clúster de EKS.

    Si utiliza un rol de servicio existente, para utilizar esta acción tendrá que agregar el siguiente permiso para el rol de servicio.

    • eks:DescribeCluster

  • Acciones de flujo de registro: cuando CodePipeline ejecuta la acción, CodePipeline crea un grupo de registro con el nombre de la canalización de la siguiente manera. Esto permite reducir los permisos para registrar los recursos mediante el nombre de la canalización.

    /aws/codepipeline/MyPipelineName

    Si utiliza un rol de servicio existente, para utilizar esta acción tendrá que agregar los siguientes permisos para el rol de servicio.

    • logs:CreateLogGroup

    • logs:CreateLogStream

    • logs:PutLogEvents

En la declaración de la política de rol de servicio, limite los permisos al nivel de recurso, como se muestra en el siguiente ejemplo.

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 ver los registros en la consola mediante la página del cuadro de diálogo de detalles de la acción, se debe agregar el permiso para ver los registros al rol de la consola. Para obtener más información, consulte el ejemplo de política de permisos para consolas en Permisos necesarios para ver los registros de computación en la consola de CodePipeline.

Agregación del rol de servicio como entrada de acceso al clúster

Una vez que los permisos estén disponibles en la política de rol de servicio de la canalización, debe configurar los permisos del clúster agregando el rol de servicio de CodePipeline como entrada de acceso para el clúster.

También puede usar un rol de acción que tenga los permisos actualizados. Para obtener más información, consulte el tutorial de ejemplo en Paso 4: creación de una entrada de acceso para el rol de servicio de CodePipeline.

Declaración de acciones

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" } ] },

Los recursos relacionados siguientes pueden serle de ayuda cuando trabaje con esta acción.