本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
亚马逊 Elastic Kubernetes Service 部署操作参EKS
考
您可以使用EKSDeploy
操作来部署 Amazon EKS 服务。部署需要一个 CodePipeline 用于部署镜像的 Kubernetes 清单文件。
在创建管道之前,您必须已经创建 Amazon EKS 资源并将图像存储在您的图像存储库中。或者,您可以为您的集群提供 VPC 信息。
重要
此操作使用 CodePipeline 托管 CodeBuild 计算在构建环境中运行命令。运行 Commands 操作将在 Amazon CodeBuild中产生单独的费用。
注意
EKS
部署操作仅适用于 V2 类型的管道。
EKS 操作同时支持公共和私有 EKS 集群。私有集群是 EKS 推荐的类型;但是,两种类型都支持。
跨账户操作支持 EKS 操作。要添加跨账户 EKS 操作,请在操作声明中actionRoleArn
从目标账户中添加。
操作类型
-
类别:
Deploy
-
拥有者:
AWS
-
提供方:
EKS
-
版本:
1
配置参数
- ClusterName
-
必需:是
亚马逊 EKS 中的亚马逊 EKS 集群。
- Helm 下的选项
-
当选定部署工具为 Helm 时,以下是可用的选项。
- HelmReleaseName
-
必填项:是(仅头盔类型为必填项)
您的部署的版本名称。
- HelmChartLocation
-
必填项:是(仅头盔类型为必填项)
部署的图表位置。
- HelmValuesFiles
-
必填项:否(仅适用于头盔类型可选)
部署的图表位置。
- Kubectl 下的选项
-
当选用 Kubectl 部署工具时,以下是可用的选项。
- ManifestFiles
-
必填项:是(仅适用于 Kubectl 类型,则为必填项)
清单文件的名称、描述服务容器名称的文本文件以及图像和标签。您可以使用此文件来参数化图像 URI 和其他信息。您可以为此使用环境变量。
您可以将此文件存储在管道的源存储库中。
- 命名空间
-
必需:否
要在或命令中使用的 kubernetes 命名空间。
kubectl
helm
- 子网
-
必需:否
您的集群 VPC 的子网。它们属于连接到您的集群的同一 VPC。您还可以提供尚未连接到您的集群的子网,并在此处进行指定。
- SecurityGroupIds
-
必需:否
您的集群 VPC 的安全组。它们属于连接到您的集群的同一 VPC。您还可以提供尚未连接到您的集群的安全组,并在此处进行指定。
输入构件
-
构件数:
1
-
描述:该操作在管道的源文件存储库中查找 Kubernetes 清单文件或 Helm 图表)。
操作需要已推送到您的映像存储库的现有映像。由于图像映射是由清单文件提供的,因此该操作不要求将 Amazon ECR 源作为源操作包含在管道中。
输出构件
-
构件数:
0
-
描述:输出构件不适用于此操作类型。
环境变量
- 键
-
键值环境变量对中的键,例如。
Name
- 值
-
键值对的值,例如。
Production
可以使用管道操作的输出变量或管道变量来参数化该值。如果存在相应的 $Key,则会在清单文件中替换此值。
输出变量
- EKSCluster名称
-
亚马逊 EKS 中的亚马逊 EKS 集群。
服务角色策略权限
要运行此操作,您的管道的服务角色策略中必须提供以下权限。
-
EC2 actions: CodePipeline 运行时需要操作 EC2实例权限。请注意,这与创建 EKS 集群时所需的 EC2实例角色不同。
如果您使用的是现有的服务角色,则要使用此操作,则需要为该服务角色添加以下权限。
-
ec2: CreateNetworkInterface
-
ec2: DescribeDhcpOptions
-
ec2: DescribeNetworkInterfaces
-
ec2: DeleteNetworkInterface
-
ec2: DescribeSubnets
-
ec2: DescribeSecurityGroups
-
ec2: DescribeVpcs
-
-
EKS 操作: CodePipeline 运行操作时,需要 EKS 集群权限。请注意,这与创建 EKS 集群时所需的 IAM EKS 集群角色不同。
如果您使用的是现有的服务角色,则要使用此操作,则需要为该服务角色添加以下权限。
-
谢克斯:DescribeCluster
-
-
日志流操作: CodePipeline 运行操作时,使用管道名称 CodePipeline 创建日志组,如下所示。这样就可以使用管道名称缩小日志资源的权限范围。
/aws/codepipeline/
MyPipelineName
如果您使用的是现有的服务角色,则要使用此操作,则需要为该服务角色添加以下权限。
-
日志:CreateLogGroup
-
日志:CreateLogStream
-
日志:PutLogEvents
-
在服务角色策略声明中,将权限范围缩小到资源级别,如以下示例所示。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "eks:DescribeCluster" ], "Resource": "arn:aws:eks:*:
YOUR_AWS_ACCOUNT_ID
: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:*:YOUR_AWS_ACCOUNT_ID
:log-group:/aws/codepipeline/YOUR_PIPELINE_NAME
","arn:aws:logs:*:YOUR_AWS_ACCOUNT_ID
:log-group:/aws/codepipeline/YOUR_PIPELINE_NAME
:*"] }, ] }
要在控制台中使用操作详细信息对话框页面查看日志,必须在控制台角色中添加查看日志的权限。有关更多信息,请参阅在 CodePipeline 控制台中查看计算日志所需的权限中的控制台权限策略示例。
将服务角色添加为集群的访问入口
在管道的服务角色策略中提供权限后,您可以通过将 CodePipeline 服务角色添加为集群的访问条目来配置集群权限。
您也可以使用具有更新权限的操作角色。有关更多信息,请参阅中的教程示例步骤 4:为 CodePipeline 服务角色创建访问条目。
操作声明
另请参阅
下列相关资源在您使用此操作的过程中会有所帮助。
-
有关演示如何创建 EKS 集群的教程和教程:使用以下方法部署到 Amazon EKS CodePipeline用于向管道添加操作的 Kubernetes 清单文件,请参阅。