使用 skaffold 进行本地开发时,将 GCP 凭证获取到 k8s pod 的标准方法是什么?
当我以前使用 docker compose 和 aws 时,很容易将 ~/.aws 文件夹卷挂载到容器中,并且一切正常。skaffold 和 gcp 是否有等效的解决方案?
使用 skaffold 进行本地开发时,将 GCP 凭证获取到 k8s pod 的标准方法是什么?
当我以前使用 docker compose 和 aws 时,很容易将 ~/.aws 文件夹卷挂载到容器中,并且一切正常。skaffold 和 gcp 是否有等效的解决方案?
如果您将 Skaffold 与 Minikube 集群一起使用,那么您可以使用他们的gcp-auth
插件来执行此操作,此处详细描述。
当我以前使用 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
命令,因为我们能够在本地机器上执行它们。