使用 registry-creds 插件为 AWS 弹性容器注册表配置凭据
概述
minikube registry-creds 插件 使开发人员能够设置凭据,以便从其 minikube 集群内部从 AWS ECR 拉取镜像。
该插件会自动刷新 default
命名空间中 default
服务帐户的服务帐户令牌。
前提条件
- 一个正常工作的 minikube 集群
- 您想要使用的 AWS ECR 中的容器镜像
- 可用于拉取上述镜像的 AWS 访问密钥
- 托管注册表的帐户的 AWS 帐号
配置并启用 registry-creds 插件
配置 registry-creds 插件
使用以下命令配置 minikube registry-creds 插件
注意:在本教程中,我们将仅关注 AWS ECR。
minikube addons configure registry-creds
按照提示输入 y
表示 AWS ECR。提供所需的信息。它应该如下所示 -
$ minikube addons configure registry-creds
Do you want to enable AWS Elastic Container Registry? [y/n]: y
-- Enter AWS Access Key ID: <put_access_key_here>
-- Enter AWS Secret Access Key: <put_secret_access_key_here>
-- (Optional) Enter AWS Session Token:
-- Enter AWS Region: us-west-2
-- Enter 12 digit AWS Account ID (Comma separated list): <account_number>
-- (Optional) Enter ARN of AWS role to assume:
Do you want to enable Google Container Registry? [y/n]: n
Do you want to enable Docker Registry? [y/n]: n
Do you want to enable Azure Container Registry? [y/n]: n
✅ registry-creds was successfully configured
启用 registry-creds 插件
使用以下命令启用 minikube registry-creds 插件
minikube addons enable registry-creds
该插件将在除 kube-system
之外的每个命名空间中创建可用于 pod 上 imagePullSecrets
的密钥。它还会更新每个命名空间中的 default
服务帐户以使用这些 imagePullSecrets
,这意味着在 kube-system
命名空间之外创建的任何没有明确服务帐户(default
除外)的 pod 将自动使用镜像拉取密钥。
创建一个使用 AWS ECR 中镜像的部署
本教程将使用已上传到 AWS ECR 中存储库的原始 alpine 镜像。
让我们使用此 alpine 部署,该部署设置为使用来自 ECR 的 alpine 镜像。确保使用有效的 URI 更新 image
字段。
alpine-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: alpine-deployment
labels:
app: alpine
spec:
replicas: 1
selector:
matchLabels:
app: alpine
template:
metadata:
labels:
app: alpine
spec:
containers:
- name: alpine
image: <<aws_account_number>>.dkr.ecr.<<aws_region>>.amazonaws.com/alpine:latest
command: ['sh', '-c', 'echo Container is Running ; sleep 3600']
创建一个名为 alpine-deployment.yaml
的文件,并将上面的内容粘贴进去。请务必将«aws_account_number»和«aws_region»替换为您的实际帐号和 aws 区域。然后使用以下命令创建 alpine 部署
kubectl apply -f alpine-deployment.yaml
测试您的部署
描述 pod 并验证镜像拉取是否成功
kubectl describe pods << alpine-deployment-pod-name >>
您应该会看到类似这样的事件
Successfully pulled image "<<account_number>>.dkr.ecr.<<aws_region>>.amazonaws.com/alpine:latest"
如果您没有看到该事件,请查看故障排除部分。
回顾
在上面的教程中,我们配置了 registry-creds
插件以刷新 AWS ECR 的凭据,以便我们可以将私有容器镜像拉取到我们的 minikube 集群上。我们最终创建了一个使用私有 AWS ECR 存储库中镜像的部署。
故障排除
- 通过运行
kubectl get secrets
检查在default
命名空间中是否有一个名为awsecr-cred
的密钥。 - 检查镜像路径是否有效。
- 使用
minikube addons list
检查是否已启用 registry-creds 插件。 - 如果您使用的是自定义服务帐户,请检查是否在工作负载或相关服务帐户上指定了
imagePullSecrets
。