Kubernetes 如何将服务帐户连接到gke部署/服务,就像您可以连接ECS服务一样?
我来自美国焊接学会(AWS),不知道如何使用gcp实现这一点。之前我问了一个关于服务账户的更一般的问题,这是针对gke的 在AWS中,我可以创建ECS服务角色。我将策略附加到该角色,以便为其提供所需的访问权限。然后我将角色附加到ECS服务。因此,我可以将多个服务部署到同一个ECS群集,并在不使用静态密钥、不传递秘密的情况下为它们提供不同的访问权限 我如何使用gke实现这一点?如何将gcp iam服务帐户附加到gke部署/服务等?您可以在部署yaml中使用注释来附加服务帐户吗Kubernetes 如何将服务帐户连接到gke部署/服务,就像您可以连接ECS服务一样?,kubernetes,google-cloud-platform,amazon-ecs,google-kubernetes-engine,google-cloud-iam,Kubernetes,Google Cloud Platform,Amazon Ecs,Google Kubernetes Engine,Google Cloud Iam,我来自美国焊接学会(AWS),不知道如何使用gcp实现这一点。之前我问了一个关于服务账户的更一般的问题,这是针对gke的 在AWS中,我可以创建ECS服务角色。我将策略附加到该角色,以便为其提供所需的访问权限。然后我将角色附加到ECS服务。因此,我可以将多个服务部署到同一个ECS群集,并在不使用静态密钥、不传递秘密的情况下为它们提供不同的访问权限 我如何使用gke实现这一点?如何将gcp iam服务帐户附加到gke部署/服务等?您可以在部署yaml中使用注释来附加服务帐户吗 我希望在同一个gke
我希望在同一个gke群集上使用不同的服务帐户隐式地进行多个部署和服务(不使用密钥)简介: Google Cloud Kubernetes集群由计算引擎VM实例组成。创建集群时,每个VM实例都会附加一个默认服务帐户。这些凭据存储在实例元数据中,可以通过使用默认应用程序
Client()
实例化(应用程序默认凭据)或指定凭据位置来访问
ADC凭据搜索:
from google.cloud import storage
client = storage.Client()
或者仅从元数据:
from google.auth import compute_engine
from google.cloud import storage
credentials = compute_engine.Credentials()
client = storage.Client(credentials=credentials, project=project)
[更新]
我不想推广糟糕的安全做法。应在安全生产Kubernetes群集上阻止上述技术
机密文件存储在Kubernetes中。然后,您将装载包含该机密(凭据)的卷。然后,容器中运行的应用程序在创建Google应用程序客户端(如访问云存储)时需要加载凭据
此命令将下载的凭据文件作为名为服务帐户凭据的机密存储到Kubernetes机密卷中。Kubernetes中的凭证文件名为key.json
。凭据是从名为`/secrets/credentials.json的Google云下载的文件中加载的
kubectl create secret generic service-account-credentials --from-file=key.json=/secrets/credentials.json
在部署文件中添加以下内容以装载卷
spec:
volumes:
- name: google-cloud-key
secret:
secretName: service-account-credentials
...
containers:
volumeMounts:
- name: google-cloud-key
mountPath: /var/secrets/google
在容器内部,凭证从/var/secrets/google/key.json
Python示例:
from google.cloud import storage
client = storage.Client.from_service_account_json('/var/secrets/google/key.json')
本文档提供有关Kubernetes服务帐户凭据的逐步详细信息
确定,因此无法隐式引用它们。我必须为每个服务帐户生成一个密钥,将其作为k8s机密上传,装入k8s机密卷,在我的应用程序代码中明确引用它-正确吗?基本上是的,这是官方方式。在容器内(或在VM实例中),您不能按名称引用凭据(AWS STS),您需要实际的凭据文件/OAuth访问令牌。Google Kubernetes容器没有独立的元数据服务器-这意味着元数据服务器是VM实例的一部分,在容器级别上没有隔离。不在这个问题的范围之内,但是您知道AWS上的eks是否支持ECS服务之类的服务角色吗?或者eks与gke的工作原理相同?AWS也是有限的,但也有选择。看看Kube2IAM。这可能也是谷歌K8s的一个想法。这并不难实现。谷歌是Kubernetes之父,因此AWS不能偏离K8s核心太远,否则更新和第三方支持将是一个问题。然而,AWS确实倾向于更快地推出安全功能,这是我喜欢的。