当前位置: 首页 > 知识库问答 >
问题:

Kubernetes GKE上的外部机密,权限错误

明星剑
2023-03-14

我和赫尔姆一起在GKE上安装库伯内特斯外部秘密。

  • GKE: 1.16.15-gke.6000 on Asia-northeast1
  • 舵手应用6.2.0版本
  • 使用工作负载标识作为文档写入

对于工作负载标识,我绑定为下面命令的服务号(my-intices-sa@$PROJECT.iam.gserviceaccount.com)具有秘书anager.admin角色,这对于使用谷歌秘密管理器似乎是必要的

GCloud iam service-帐户add-iam-state-绑定-角色角色/iam.workload标识用户-成员”service帐户:$CLUSTER_PROJECT.svc.id.goog[$SECRETS_NAMESPACE/kubernetes-外部-秘密]”my-秘密-sa@$PROJECT.iam.gserviceaccount.com

工作负载标识看起来设置正确,因为在GKE上的pod中检查服务帐户会显示正确的服务帐户

https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity#enable_workload_identity_on_a_new_cluster

在集群中创建一个pod,并在其中检查auth。它显示了我的秘密sa@$项目。国际机械师协会。gserviceaccount。com

$kubectl run-it--image google/cloud sdk:slim--serviceaccount ksa name--namespace k8s namespace workload身份测试

gCloud授权列表

但即使创建externalsecret,externalsecret也会显示错误

错误,7权限被拒绝:权限“secretmanager”。版本。“资源”项目/项目id/机密/我的gsm机密名称/版本/最新版本的访问被“拒绝”(或者它可能不存在)。

秘密my-gsm-秘密-名称本身存在于秘书管理器中,因此它不应该“不存在”。此外,权限必须由工作负载标识正确设置。

这是我定义的外部秘密。

apiVersion: kubernetes-client.io/v1
kind: ExternalSecret
metadata:
  name: gcp-secrets-manager-example    # name of the k8s external secret and the k8s secret
spec:
  backendType: gcpSecretsManager
  projectId: my-gsm-secret-project
  data:
    - key: my-gsm-secret-name     # name of the GCP secret
      name: my-kubernetes-secret-name   # key name in the k8s secret
      version: latest    # version of the GCP secret
      property: value      # name of the field in the GCP secret

以前有人有过类似的问题吗?非常感谢。

  1. 创建一个带有工作负载池的集群

$gcloud container clusters创建集群--区域asia-Northest1--节点位置asia-Northest1-a--节点数量1--可抢占--工作负载池=我的项目。svc。古格

创建服务帐户

####################################################################################################################################

$kubectl annotate serviceaccount
——命名空间默认值
ksa
iam。gke。io/gcp服务账户=我的秘密-sa@my-项目。国际机械师协会。gserviceaccount。通用域名格式

$helm安装我的发布外部机密/kubernetes外部机密

apiVersion: kubernetes-client.io/v1
kind: ExternalSecret
metadata:
  name: gcp-secrets-manager-example    # name of the k8s external secret and the k8s secret
spec:
  backendType: gcpSecretsManager
  projectId: my-gsm-secret-project
  data:
    - key: my-gsm-secret-name     # name of the GCP secret
      name: my-kubernetes-secret-name   # key name in the k8s secret
      version: latest    # version of the GCP secret
      property: value      # name of the field in the GCP secret

$kubectl apply-f外部秘密。亚马尔

共有1个答案

夹谷宜民
2023-03-14

我注意到我使用了不同的kubernetes服务号。

在安装helm时,创建了新的kubernetes服务号my-释放-kubernetes-外部-秘密,服务/pods必须在此服务号上工作。

所以我应该绑定我发布的kubernetes external secrets

现在,它运行良好。

谢谢你@matt_j@norbjd

 类似资料:
  • 有什么建议吗?它不工作在模拟器或当我在我的手机上运行它。

  • 在Android OS 4.0上运行我的应用程序并请求权限时,我遇到问题: 我总是接到电话 使用ActivityCompat检查权限。checkSelfPermission总是返回。 通过使用system dialog请求权限,它在OS 6.0上运行良好。Android操作系统4。除4.0之外,始终授予许可。OS 4.0其他权限(摄像头、日历、联系人、电话)运行正常,但导致此问题的。 也许是操作系

  • 此处为完整stacktrace StackTrace:org.apache.jasper.servlet.jspServletWrapper.handleJSPException(jspServletWrapper.java:568)org.apache.jasper.servlet.jspServlet.service(jspServletWrapper.service(jspServletWr

  • 我已经试了好几个小时了,似乎遇到了麻烦。如有任何建议/帮助,将不胜感激。 目标:我想授权express rest api(前客户端id:“我的rest api”)跨映射到客户端范围的各种HTTP方法(示例:“创建”/“读取”/“更新”/“删除”)路由(示例资源:“WeatherForecast”)。我想通过策略控制这些权限(例如,如果满足策略“仅管理组”(用户属于管理组),则将授予“Read-We

  • 在这一点上我得到了警告: 如何让它保存文件?当我在Eclipse上创建它时,这是可行的,但是现在我更新并移到了Android Studio中,它似乎坏了一些东西。

  • 我正在尝试在实时服务器上加载我的项目。 这些是规格 PHP版本5.6服务器:Windows 存储供应商引导/缓存 但它一直给我以下流错误: 致命错误:无法打开未捕获的异常“UnexpectedValueException”,消息为“流或文件”C:\inetpub\wwwroot\websites\mysite\storage/logs/laravel.log“无法打开流:权限被拒绝”,在C:\in