8 google-cloud-platform kubernetes google-kubernetes-engine
今天是我第一天玩GCR和GKE.如果我的问题听起来很幼稚,那么道歉.
所以我在GCR中创建了一个新的注册表.这是私人的.使用此 文档,我使用该命令获取了Access Token
gcloud auth print-access-token
#<MY-ACCESS_TOKEN>
Run Code Online (Sandbox Code Playgroud)
我知道我的用户名是 oauth2accesstoken
我尝试时在我的本地笔记本电脑上
docker login https://eu.gcr.io/v2
Username: oauth2accesstoken
Password: <MY-ACCESS_TOKEN>
Run Code Online (Sandbox Code Playgroud)
我明白了:
Login Successful
Run Code Online (Sandbox Code Playgroud)
所以现在是时候docker-registry在Kubernetes 创造一个秘密了.
我运行以下命令:
kubectl create secret docker-registry eu-gcr-io-registry --docker-server='https://eu.gcr.io/v2' --docker-username='oauth2accesstoken' --docker-password='<MY-ACCESS_TOKEN>' --docker-email='<MY_EMAIL>'
Run Code Online (Sandbox Code Playgroud)
然后我的Pod定义如下:
apiVersion: v1
kind: Pod
metadata:
name: my-app
spec:
containers:
- name: my-app
image: eu.gcr.io/<my-gcp-project>/<repo>/<my-app>:latest
ports:
- containerPort: 8090
imagePullSecrets:
- name: eu-gcr-io-registry
Run Code Online (Sandbox Code Playgroud)
但是当我旋转吊舱时,我得到了错误:
Warning Failed 4m (x4 over 6m) kubelet, node-3 Failed to pull image "eu.gcr.io/<my-gcp-project>/<repo>/<my-app>:latest": rpc error: code = Unknown desc = Error response from daemon: unauthorized: You don't have the needed permissions to perform this operation, and you may have invalid credentials. To authenticate your request, follow the steps in: https://cloud.google.com/container-registry/docs/advanced-authentication
Run Code Online (Sandbox Code Playgroud)
我验证了我的秘密检查YAML文件,并做了base64 --decode上.dockerconfigjson,它是正确的.
那我错过了什么?
Ahm*_*gle 14
如果您的GKE集群和GCR注册表位于同一项目中:您不需要配置身份验证.GKE集群被授权从没有配置的同一项目中的私有GCR注册表中提取.(很可能你就是这个!)
如果您的GKE群集和GCR注册表位于不同的GCP项目中:请按照以下说明为您的GKE群集提供"服务帐户"访问权限,以便在您的GCR群集中读取私有映像:https://cloud.google.com/container-registry/文档/访问控制#granting_users_and_other_projects_access_to_a_registry
简而言之,这可以通过以下方式完成:
gsutil iam ch serviceAccount:[PROJECT_NUMBER]-compute@developer.gserviceaccount.com:objectViewer gs://[BUCKET_NAME]
Run Code Online (Sandbox Code Playgroud)
[BUCKET_NAME]存储GCR图像的GCS存储区在哪里(如artifacts.[PROJECT-ID].appspot.com),[PROJECT_NUMBER]是托管GKE集群的数字 GCP项目ID.
| 归档时间: |
|
| 查看次数: |
3936 次 |
| 最近记录: |