【问题标题】:GCP credentials with skaffold for local development用于本地开发的带有 skaffold 的 GCP 证书
【发布时间】:2020-08-25 13:14:54
【问题描述】:

在使用 skaffold 进行本地开发时,将 GCP 凭据导入 k8s pod 的标准方法是什么?

当我以前使用 docker compose 和 aws 时,很容易将 ~/.aws 文件夹卷挂载到容器中,并且一切正常。 skaffold 和 gcp 是否有等效的解决方案?

【问题讨论】:

  • 据我了解,您希望能够使用 cloud sdk 或通过本地部署的 @987654321 中的 GCP API 以任何其他方式进行通信@by skaffold,对吗?
  • 正确,我希望我在本地运行的 GCP API 代码在本地 skaffold 部署的 pod 上具有相同的权限。我现在正在做的是将服务帐户文件放在项目的根目录中并将其复制到 Dockerfile 中,这对其他开发人员来说意味着手动步骤,这并不理想。
  • 嘿,你找到答案了吗?
  • 我能想到的最好办法是创建一个服务帐户 JSON 并将其复制到 dockerfile 中,并将 GOOGLE_APPLICATION_CREDENTIALS env var 设置为指向它。

标签: kubernetes google-cloud-platform skaffold


【解决方案1】:

如果您将 Skaffold 与 Minikube 集群一起使用,那么您可以使用他们的 gcp-auth 插件,它正是这样做的,详细描述了 here

【讨论】:

    【解决方案2】:

    当我之前使用 docker compose 和 aws 时,它很容易卷 将 ~/.aws 文件夹安装到容器中,一切正常。 skaffold 和 gcp 是否有等效的解决方案?

    您没有提到您在本地部署了什么样的 kubernetes 集群,但如果您使用 Minikube,它实际上可以通过非常相似的方式实现。

    假设您已经通过运行在本地初始化了您的 Cloud SDK

    gcloud auth login
    gcloud container clusters get-credentials <cluster name> --zone <zone> --project <project name>
    gcloud config set project <project name>
    

    这样您就可以在安装了 Minikube 的本地计算机上运行 gcloud commands。您可以轻松地将此访问权限委托给由 Skakffold 或在 Minikube 上手动创建的 Pods

    您只需按如下方式启动您的 Minikube

    minikube start --mount=true --mount-string="$HOME/.config/gcloud/:/home/docker/.config/gcloud/"
    

    为了简单起见,我将本地 Cloud SDK 配置目录挂载到 Minikube 主机中,并用作挂载点 /home/docker/.config/gcloud/

    一旦它在 Minikube 主机 VM 上可用,就可以轻松地挂载到任何 Pod 中。我们可以使用here 提供的 Cloud SDK docker 镜像之一或任何其他预装 Cloud SDK 的镜像。

    用于测试的示例Pod 可能如下所示:

    apiVersion: v1
    kind: Pod 
    metadata:
      name: cloud-sdk-pod
    spec:
      containers:
      - image: google/cloud-sdk:alpine
        command: ['sh', '-c', 'sleep 3600']
        name: cloud-sdk-container
        volumeMounts:
        - mountPath: /root/.config/gcloud
          name: gcloud-volume
      volumes:
      - name: gcloud-volume
        hostPath:
          # directory location on host
          path: /home/docker/.config/gcloud
          # this field is optional
          type: Directory
    

    通过运行连接到Pod后:

    kubectl exec -ti cloud-sdk-pod -- /bin/bash
    

    我们将能够执行任何gcloud 命令,因为我们能够在本地机器上执行它们。

    【讨论】:

    • 我会在您的谷歌云 API 调用中将 &lt;project name&gt; 更改为 &lt;project id&gt;
    猜你喜欢
    • 2011-11-22
    • 2021-07-17
    • 1970-01-01
    • 2021-07-17
    • 1970-01-01
    • 1970-01-01
    • 2013-01-16
    • 2022-07-29
    • 2017-05-03
    相关资源
    最近更新 更多