【发布时间】:2020-06-08 08:55:44
【问题描述】:
我希望在 aws 上使用 kubernetes 部署一个 dockerized 服务。为此,我使用了最近发布的带有 AWS Fargate 功能的 AWS EKS。服务的 docker 镜像存储在 github 上的私有包中。
为了部署我的服务,我使用了一个包含密钥、部署和服务的 kubernetes 清单文件。
在 minikube 上使用 kubectl 本地部署时,部署 pod 成功从私有 github 包中拉取镜像。我成功复现了访问私有 dockerhub 注册表的过程。
然后我将 kubectl 配置为连接到我的 eks 集群。 当应用清单文件时,当从 dockerhub 拉取表单 github 包时它工作正常时,部署 pod 会出现 ImagePullBackOff 状态。清单文件的区别如下:
为 github 包生成秘密:
kubectl create secret docker-registry mySecret --dry-run=true --docker-server=https://docker.pkg.github.com --docker-username=myGithubUsername --docker-password=myGithubAccessToken -o yaml
为 dockerhub 生成秘密:
kubectl create secret docker-registry mySecret --dry-run=true --docker-server=https://index.docker.io/v1/ --docker-username=myDockerhubUsername --docker-password=myDockerhubPassword -o yaml
部署规范参考如下:
spec:
containers:
# when pulling from github packages
- image: docker.pkg.github.com/myGithubUsername/myRepo/myPackage:tag
# when pulling from dockerhub
- image: myDockerhubUsername/repository:tag
...
imagePullSecrets:
- name: mySecret
尝试特别是使用 github 包我尝试使用 AWS Secrets Manager。
我创建了一个秘密“mySecret”如下:
{
"username" : "myGithubUsername",
"password" : "myGithubAccessToken"
}
然后我创建了一个访问此密钥的策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"secretsmanager:GetSecretValue"
],
"Resource": [
"arn:aws:secretsmanager:eu-west-1:myAWSAccountId:secret:mySecret"
]
}
]
}
然后,我将策略附加到我的 eks 集群的集群 IAM 角色和其 fargate 配置文件“fp-default”中引用的 Pod 执行角色。我只在默认的 kubernetes 命名空间中工作。 我的秘密和集群都在 eu-west-1 区域。
不过,我在部署时得到了 ImagePullBackOff 状态。
我很难找到将 AWS Fargate 与 AWS EKS 结合使用来解决此问题的任何方法,并且希望对此有所了解:)
编辑:对问题进行了编辑,以便更清楚地表明该问题主要与使用 github 包作为注册表提供程序有关。
【问题讨论】:
标签: amazon-web-services docker kubernetes aws-fargate amazon-eks