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

使用Kubernetes引擎GKE Google Cloud的Spring boot Cloud SQL

阎安邦
2023-03-14

我创建了一个spring boot项目,它与云SQL(MySQL)连接。我已经在google cloud(cloudrun)中部署了这一功能,目前正在使用中。

现在,我正在尝试在kubernates enigne GKE中部署Spring boot应用程序的相同容器映像,我预计这将与mysql云sql实例连接。但是,我在应用程序POD日志中收到以下错误。

     "method" : "google.cloud.sql.v1beta4.SqlInstancesService.CreateEphemeral"
      "service" : "sqladmin.googleapis.com",
    "metadata" : {
    "domain" : "googleapis.com",
    "reason" : "ACCESS_TOKEN_SCOPE_INSUFFICIENT",
    "@type" : "type.googleapis.com/google.rpc.ErrorInfo",
  "details" : [ {
  "status" : "PERMISSION_DENIED",
  "message" : "Request had insufficient authentication scopes.",
  } ],
    "reason" : "insufficientPermissions"
    "message" : "Insufficient Permission",
    "domain" : "global",
  "errors" : [ {
  "code" : 403,

Failed to create ephemeral certificate for the Cloud SQL instance.

请帮忙。。。解决方案是什么

共有1个答案

於炯
2023-03-14

不确定如何传递服务号文件,但您可以使用库伯内特斯秘密传递它,或者使用服务帐户并将其附加到部署。

kubectl create secret generic google-application-credentials --from-file=./application-credentials.json

附加秘密的部署卷

volumes:
- name: google-application-credentials-volume
  secret:
    secretName: google-application-credentials
    items:
    - key: application-credentials.json # default name created by the create secret from-file command
      path: application-credentials.json

在小路上安装秘密

spec:
  containers:
  - name: my-service
    volumeMounts:
    - name: google-application-credentials-volume
      mountPath: /etc/gcp
      readOnly: true

最后,您可以传递指向该文件和cred的环境变量

spec:
  containers:
  - name: my-service
    env:
    - name: GOOGLE_APPLICATION_CREDENTIALS
      value: /etc/gcp/application-credentials.json

确保您的服务帐户具有足够的角色来更新云SQL。

 类似资料:
  • 我正在使用谷歌库伯内特斯引擎部署一些需要连接到本地数据库的应用程序。为了做到这一点,我配置了一个虚拟专用网隧道并创建了一个VPC。 然后,我创建了一个使用该VPC的GKE集群(1个节点),我可以通过连接到该节点并尝试ping DB服务器来确认DB是可访问的 然而,如果我尝试从Pod做同样的事情,我就无法连接。 我错过了什么?

  • 我无法在docker容器中使用Python Firebase Admin SDK,特别是在Google Kubernetes引擎(GKE)上。相同的容器在云运行时没有问题。我相信问题在于权限,但我已经被卡住了。任何帮助都将不胜感激! 下面是flask应用程序的概要。这三条路径都在Cloud Run上运行,前两条在GKE上运行,第三条失败。 带容器的回购(需要您自己的firebase项目):http

  • 我在google Kubernetes引擎上配置入口。我是ingress的新手,但据我所知,ingress可以服务于不同的负载平衡器,不同的LBs应该进行不同的配置。 我从GKE上的一个简单入口配置开始: 它工作得很好,所以我有两种不同的NodePort服务web np和etcd np。但现在我需要用一些重写规则扩展这个逻辑,以便指向服务1的请求将被重定向到另一个np服务,但在服务1之前。html

  • 问题内容: 我们想使用一个应用引擎灵活的过程来更新我们的ElasticSearch索引,该索引位于Google Kubernetes Engine上。我们需要通过一个http地址连接到ElasticSearch。推荐的方法是什么?我们不想将群集公开给外部网络,因为我们前面没有身份验证。 我看过这样的帖子,但是自问/答以来的两年中,k8和AE都发生了很大变化。 谢谢你的帮助! 问题答案: 您链接到的

  • null ReplicaSet,Service,Ingress创建成功,nodeport可以从公有IP地址访问,Ingress无不良。 副本集: 服务: 主机文件: C:\kube>kubectl描述入口 C:\kube>curl http://kubia.example.com C:\kube>kubectl exec-it kubia-lrt9x bash root@kubia-lrt9x:/