正在开发 AWS CodePipeline,用于构建容器并将其部署到 EKS 集群。
AWS CodePipeline 似乎不支持“仅 ECS”对 EKS 的部署操作。我尝试探索其他选项,例如使用 lambda 函数,我找到了以下在 lambda 中运行 kubectl 命令的示例
https://github.com/tmuskal/lambda-kubectl https://github.com/tmuskal/lambda-kubectl
尽管如此,EKS 使用 aws-iam-authenticator 来为 kubeconfig 生成令牌。但不确定它如何适合 lambda 上下文。
任何有关主题的建议将不胜感激。
AWS 不支持 EKS 的部署操作。但是,可以通过使用代码管道和代码构建来实现,使EKS集群能够持续构建和部署。需要设置一些 IAM 角色和权限,以允许 codebuild 运行 kubectl 并部署在 eks 集群上。
-
需要创建一个角色(kubernetes_deployment),该角色有权允许 EKS 代表您管理集群。
-
附加到 kubernetes_deployment 角色的权限
AmazonEKSClusterPolicy
AmazonEKSServicePolicy
内联策略如下
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "eks:DescribeCluster",
"Resource": "*"
}
]
}
-
在您的 aws 参考中创建代码构建请参阅此构建规范 https://github.com/rnzsgh/eks-workshop-sample-api-service-go
-
确保 codebuild 中使用的服务角色应具有 sts:assume kubernetes_deployment 角色的权限,该角色有权管理 eks 集群
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::
<accountno>:role/kubernetes_deployment"
}
]
}
-
更新 kubernetes_deployment 角色的信任关系以允许 codebuild 服务角色使用
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<account>:role/service-role/codebuild-service-role",
"Service": "eks.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
-
将 kubernetes_deployment 角色设置为 eks 集群中的授权
- rolearn: arn:aws:iam::<account>:role/kubernetes_deployment
username: kubernetes_deployment
groups:
- system:masters
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)