我正在尝试从Google中的中提取一个私有映像,它是在一个使用kubectl的不同Google项目中运行的kubernetes集群中运行的。
kubernetes version 1.20.15-gke.1000 kubernetes的服务帐户已被授予artifactregistry.reader和storageobject.viewer权限,因为映像位于与kubernetes服务帐户不同的项目中。
我将下面的yaml应用于kubectl命令。
库贝克尔应用-f proxy_with_workload_identity.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: test-app
spec:
selector:
matchLabels:
app: app-project
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
type: RollingUpdate
template:
metadata:
labels:
app: app-project
spec:
containers:
- env:
- name: DB_USER
valueFrom:
secretKeyRef:
key: username
name: db-credentials
- name: DB_PASS
valueFrom:
secretKeyRef:
key: password
name: db-credentials
- name: DB_NAME
value: postgres
image: "us-central1-docker.pkg.dev/myproject/docker-repo/test-app:v1"
name: app-project
ports:
- containerPort: 9376
protocol: TCP
- command:
- /cloud_sql_proxy
- "-instances=demo-dev:us-central1:1-sql-1=tcp:5432"
image: "gcr.io/cloudsql-docker/gce-proxy:latest"
name: cloud-sql-proxy
resources:
requests:
cpu: 200m
memory: 32Mi
securityContext:
runAsNonRoot: true
serviceAccountName: testapp云-sql-代理映像正在被提取,容器正在运行,但是私有存储库中的映像没有被提取"us-central1-docker.pkg.dev/myproject/docker-repo/test-app:v1“。
当我检查吊舱时,会发现以下错误:
发布于 2022-05-26 12:31:59
似乎您需要在同一个命名空间中添加一个拉秘密(似乎您使用的是默认名称空间)。
命令:
kubectl create secret docker-registry <your secret name like myregistry-docker-secret> --docker-server=<your-registry-server like us-central1-docker.pkg.dev> --docker-username=<your registry username> --docker-password=<your registry password> --docker-email=<your-email>参考文献:https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
那么你的舱单应该看起来像
.....
spec:
imagePullSecrets:
- name: <your secret name like myregistry-docker-secret>
containers:
- env:
......https://devops.stackexchange.com/questions/15814
复制相似问题