2

使用 skaffold 进行本地开发时,将 GCP 凭证获取到 k8s pod 的标准方法是什么?

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

4

2 回答 2

2

如果您将 Skaffold 与 Minikube 集群一起使用,那么您可以使用他们的gcp-auth插件来执行此操作,此处详细描述。

于 2020-08-25T05:14:54.937 回答
1

当我以前使用 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>

所以你可以在安装了Minikubegcloud 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. 我们可以使用此处提供的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命令,因为我们能够在本地机器上执行它们。

于 2020-07-30T20:51:56.830 回答