我正處于 kubernetes 的學習階段,并且能夠設定部署、服務等。但是我一直在如何管理機密方面陷入困境。
語境
我正在將 GKE 用于 Kubernetes 集群
我正在使用掌舵圖來管理所有部署操作
我創建了一個可以訪問谷歌云存盤的谷歌服務帳戶。
我的應用程式使用 helm 創建部署和服務,但是,我如何管理以自動方式創建的 google 服務帳戶憑據,例如
我不想像這樣手動創建秘密 -
kubectl create secret generic pubsub-key --from-file=key.json=PATH-TO-KEY-FILE.json我想通過 helm 來完成,因為明天如果我移動到另一個 k8s 集群,那么我必須再次手動創建無論如何,是否可以將我的掌舵圖推送到 repos,而不必擔心將我的秘密暴露為普通物件。
除此之外,任何其他指南和最佳實踐都會非常有幫助。
uj5u.com熱心網友回復:
我不想像這樣手動創建秘密 - kubectl create secret generic pubsub-key --from-file=key.json=PATH-TO-KEY-FILE.json ,我想通過 helm 來做,因為明天說如果我移動到另一個 k8s 集群然后我再次手動完成
您可以為 helm創建秘密模板,這將在 helm 運行時為您創建秘密。
您掌舵將找到service account.json并基于此創建秘密。
例如service-account.yaml
{{- $all := . -}}
{{ range $name, $secret := .Values.serviceAccountSecrets }}
apiVersion: v1
kind: Secret
metadata:
name: {{ $name }}
labels:
app: {{ $name }}
chart: {{ template "atlantis.chart" $all }}
component: service-account-secret
heritage: {{ $all.Release.Service }}
release: {{ $all.Release.Name }}
data:
service-account.json: {{ $secret }}
---
{{ end }}
值.yaml
serviceAccountSecrets:
# credentials: <json file as base64 encoded string>
# credentials-staging: <json file as base64 encoded string>
或者,您可以使用此 GCP 服務帳戶控制器為您創建Serviceaccount和密鑰。
https://github.com/kiwigrid/gcp-serviceaccount-controller
無論如何,是否可以將我的掌舵圖推送到 repos,而不必擔心將我的秘密暴露為普通物件。
對于提交問題,您可以使用該.helmignore檔案。
閱讀更多資訊:https : //helm.sh/docs/chart_template_guide/helm_ignore_file/
所以在 GIT 里面,你只需要提交values.yamlnot values-dev.yaml,values-stag.yaml
uj5u.com熱心網友回復:
秘密管理是一個復雜的話題,有很多可能的方法,比如在 GCP 中使用秘密管理器。
但是,對于在 GKE 中管理 Google 服務帳戶憑據的特定問題,推薦的方法是使用Workload Identity。
這樣,您甚至不必創建密鑰。您必須激活 Workload Identity 并為 Kubernetes 服務帳戶到 GCP 服務帳戶創建映射。設定完成后,您只需使用 Workload Identity 將 Deployment 的 Kubernetes 服務帳戶設定為該帳戶即可。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/373469.html
標籤:Kubernetes 谷歌云平台 google-kubernetes-engine kubernetes-helm
