你在正确的轨道上。gcp服务帐户可以在gke中用于pods,以向gcp资源分配权限。
创建帐户:
cloud iam service-accounts create ${SERVICE_ACCOUNT_NAME}
将IAM权限添加到服务帐户:
gcloud projects add-iam-policy-binding ${PROJECT_ID} \
--member="serviceAccount:${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com" \
--role='roles/${ROLE_ID}'
为服务帐户生成json文件:
gcloud iam service-accounts keys create \
--iam-account "${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com" \
service-account.json
用这个json创建一个秘密:
kubectl create secret generic echo --from-file service-account.json
使用该机密为应用程序创建部署:
apiVersion: apps/v1
kind: Deployment
metadata:
name: echo
spec:
replicas: 1
selector:
matchLabels:
app: echo
template:
metadata:
name: echo
spec:
containers:
- name: echo
image: "gcr.io/hightowerlabs/echo"
env:
- name: "GOOGLE_APPLICATION_CREDENTIALS"
value: "/var/run/secret/cloud.google.com/service-account.json"
- name: "PROJECT_ID"
valueFrom:
configMapKeyRef:
name: echo
key: project-id
- name: "TOPIC"
value: "echo"
volumeMounts:
- name: "service-account"
mountPath: "/var/run/secret/cloud.google.com"
volumes:
- name: "service-account"
secret:
secretName: "echo"
如果要对不同的部署使用不同的权限,则需要创建一些具有不同权限的gcp服务帐户,为它们生成json令牌,并根据计划将它们分配给部署。pods将根据挂载的服务帐户进行访问,而不是为分配给节点的帐户提供服务。
有关详细信息,可以查看以下链接: