生成kubecconfig文件并为google cloud进行身份验证



我有一个Kubernetes集群。在我的集群中有一个Django应用程序,它需要连接到我在GKE上的Kubernetes集群。在我的Django启动时(在我的Dockerfile中),我使用以下命令与Google Cloud进行身份验证:

gcloud auth activate-service-account $GKE_SERVICE_ACCOUNT_NAME --key-file=$GOOGLE_APPLICATION_CREDENTIALS
gcloud config set project $GKE_PROJECT_NAME
gcloud container clusters get-credentials $GKE_CLUSTER_NAME --zone $GKE_ZONE

我不确定是否每次Django容器启动时我都需要这样做,我不确定我是否理解如何对Google Cloud进行身份验证。我是否可以生成kubecconfig文件,将其存储在安全的地方,并一直使用它,而不是进行身份验证?换句话说,kubecconfig文件是否足以连接到我的GKE集群?

如果您的服务运行在您想要连接的GKE集群中的Pod中,请使用Kubernetes服务帐户进行身份验证。

  1. 创建一个Kubernetes服务帐户并将其附加到您的Pod。如果您的Pod已经有Kubernetes服务帐户,您可以跳过此步骤。

  2. 使用Kubernetes RBAC授予Kubernetes服务帐户正确的权限。

下面的示例授予editprod中的权限名称空间:

kubectl create rolebinding yourserviceaccount 
--clusterrole=edit 
--serviceaccount=yournamespace:yourserviceaccount
--namespace=prod
  1. 在运行时,当您的服务调用kubectl时,它会自动接收您配置的凭据。

您还可以将凭据存储为秘密并将其挂载到pod上,以便它可以从那里读取它们

要在工作负载中使用Secret,您可以指定引用Secret值的环境变量,或者挂载包含Secret的卷。

您可以使用命令行或YAML文件创建Secret。

下面是一个使用命令行 的示例
kubectl create secret SECRET_TYPE SECRET_NAME DATA

SECRET_TYPE:Secret类型,它可以是下列之一:

  • generic:从本地文件、目录或文字值创建Secret
  • docker-registry:创建dockercfgSecret用于Docker注册表。用于对Docker注册表进行身份验证。
  • tls:从给定的公钥/私钥对创建TLS秘密。公钥/私钥对必须已经存在。公钥证书必须是。pem编码,并且与给定的私钥匹配。

对于大多数秘密,您使用generic类型。

SECRET_NAME:您正在创建的Secret的名称。

DATA:要添加到Secret中的数据,可以是下列任意一种:

  • 包含一个或多个配置文件的目录的路径,使用--from-file--from-env-file标志表示。
  • 键值对,每个都使用--from-literal标志指定。

如果您需要更多关于kubectl create的信息,您可以查看参考文档

相关内容

  • 没有找到相关文章

最新更新