精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

K8S實戰指南:結合ArgoCD使用SOPS管理 Kubernetes部署中的Secrets

開發 前端
本文將詳細介紹一種優雅的解決方案:利用 SOPS (Secrets OPerationS) 對 Helm Chart 中的 values 文件進行加密,并結合一個自定義的 Init 容器,實現與 ArgoCD 的無縫集成,整個過程無需為 ArgoCD 安裝任何額外插件。

https://medium.com/@stylishavocado/managing-sops-secrets-for-kubernetes-deployments-ft-argocd-84fff20d882d 

在現代化的 Kubernetes GitOps 工作流中,如何安全、高效地管理敏感信息(如密碼、API 密鑰等)是一個核心挑戰。將明文 Secrets 存儲在 Git 倉庫中是絕對不可取的,而傳統的 Secrets 管理方式又可能與自動化的部署流程脫節。

本文將詳細介紹一種優雅的解決方案:利用 SOPS (Secrets OPerationS) 對 Helm Chart 中的 values 文件進行加密,并結合一個自定義的 Init 容器,實現與 ArgoCD 的無縫集成,整個過程無需為 ArgoCD 安裝任何額外插件。

核心架構概覽

該方案的核心思想是在應用 Pod 啟動前,通過一個臨時的 InitContainer動態解密并創建 Kubernetes Secrets。

? SOPS 加密文件: 將包含敏感數據的 values.yaml文件(例如 secret-values.yaml)使用 SOPS 和 Age (或 PGP) 進行加密。加密后的文件可以安全地提交到 Git 倉庫。

? Helm Chart: 一個標準的 Helm Chart,但經過特殊設計,能夠接收加密文件和相關配置。

? 解密 Init 容器 (The "Magic Container"): 這是一個自定義的 Docker 鏡像,其中打包了 SOPS和 kubectl兩個關鍵工具以及一個解密腳本。它作為 InitContainer在主應用容器之前運行。

? 解密密鑰: 用于解密的私鑰(如 Age key)被預先存儲在目標命名空間的一個標準 Kubernetes Secret 中。

? RBAC 權限: Chart 中包含一個 ServiceAccount、Role和 RoleBinding,授予 Init 容器足夠的權限(主要是創建和管理 Secret對象)來執行解密和創建操作。

工作流程揭秘

1. 部署觸發: 開發者通過 ArgoCD 發起部署。ArgoCD 從 Git 倉庫拉取 Helm Chart 和相關的配置文件。

2. 傳遞加密文件: ArgoCD 使用 Helm 的 --set-file參數,將 SOPS 加密后的文件內容傳遞給 Helm Chart。這個加密內容被臨時存儲在一個名為 <chart-name>-encrypted-secret的 Secret 中。

3. Init 容器啟動: 當應用的 Pod 開始創建時,解密 InitContainer首先啟動。

4. 解密與創建:

? InitContainer從 <chart-name>-age-keysSecret 中讀取解密私鑰。

? 它再讀取 <chart-name>-encrypted-secret中的加密數據。

? 利用內置的 SOPS 工具和私鑰,在容器內解密數據。

? 最后,使用內置的 kubectl工具,將解密后的明文數據動態創建一個新的、標準的 Kubernetes Secret,例如 <chart-name>-secret。

5. 主容器啟動: InitContainer成功退出后,主應用容器啟動。此時,它可以像往常一樣掛載和使用剛剛由 Init 容器創建的 <chart-name>-secret。

實戰指南:具體步驟與代碼

以下我們將通過一個具體場景,演示如何從零開始配置和部署。

1. 前提準備 (Prerequisites)

確保你已安裝并配置好以下工具:

? SOPS

? Helm

? kubectl

? Docker

? ArgoCD

2. 生成加密密鑰 (Age)

首先,我們使用 age生成一對公私鑰。私鑰將用于解密。

# 生成一個名為 age-key.txt 的密鑰文件
age-keygen -o age-key.txt

注意: age-key.txt包含了你的私鑰,絕對不能將其提交到 Git 倉庫。請務必將其添加到 .gitignore文件中。

3. 準備并加密敏感數據文件

創建一個用于存放敏感信息的文件,例如 secret-values.yaml:

# secret-values.yaml
data: "some secret you want to protect"
another_secret: "password123"

然后,使用 SOPS 和之前生成的公鑰(可以從 age-key.txt文件中查看,以 age1開頭)來加密此文件。

# 使用 -e (encrypt) 參數進行加密
# --age 后面跟你的公鑰
sops --encrypt --age 'age1...' secret-values.yaml > secret-values.enc.yaml

現在你可以安全地將 secret-values.enc.yaml提交到 Git。

4. 在 Kubernetes 中創建解密密鑰 Secret

將 age-key.txt的全部內容存入一個 Kubernetes Secret 中。這個 Secret 需要和你的應用部署在同一個 namespace。

# age-key-secret.yaml
apiVersion:v1
kind:Secret
metadata:
# Secret 名稱需遵循 <chart-name>-age-keys 的格式
# 如果你的 chart 最終叫 myapp,這里就是 myapp-age-keys
name:myapp-age-keys
namespace:your-app-namespace# 替換成你的命名空間
type:Opaque
stringData:
# 鍵名必須是 age-key.txt
age-key.txt: |
    # Created: 2024-08-09T10:00:00Z
    # public key: age1...
    AGE-SECRET-KEY-1... # 從 age-key.txt 文件粘貼全部內容

應用它:kubectl apply -f age-key-secret.yaml

5. 配置 Helm Chart 和 ArgoCD

在你的 Helm Chart 的 values.yaml(或一個自定義的 custom-values.yaml) 文件中,配置 initContainer和其他參數。

# values.yaml

# 使用 nameOverride 來統一所有資源的名稱前綴
nameOverride:"myapp"

# 主應用的配置...
image:
repository:nginx
tag:latest

# 解密 Init Container 的配置
initContainer:
image:mrupnikm/olm-chart-sops-decryption:latest# 使用作者提供的或自建的鏡像
k8s_args:"-n your-app-namespace"# 指定操作的命名空間
encrypted_secret:
    # 如果使用 age,只需提供一個非空值即可
    age:"x"

# 這個字段留空,ArgoCD 會通過 fileParameters 填充它
extraSecretFile: ""

在你的 ArgoCD Application argo.yaml中,你需要使用 helm.fileParameters來指定加密文件。

# argo.yaml
apiVersion:argoproj.io/v1alpha1
kind:Application
metadata:
name:my-web-app
namespace:argocd
spec:
project:default
source:
    repoURL:'https://github.com/your/repo.git'# 你的 Git 倉庫地址
    targetRevision:HEAD
    path:'path/to/your/helm-chart'# Helm Chart 所在的路徑
    helm:
      valueFiles:
        -values.yaml
      # 關鍵部分:使用 fileParameters 將加密文件內容傳遞給 --set-file
      fileParameters:
        -name:extraSecretFile# 對應 values.yaml 中的 extraSecretFile
          path:secret-values.enc.yaml# 加密文件在 Git 倉庫中的路徑
destination:
    server:'https://kubernetes.default.svc'
    namespace:your-app-namespace# 應用部署的目標命名空間
syncPolicy:
    automated:
      prune:true
      selfHeal: true

6. 部署應用

最后,將 ArgoCD 應用清單提交到集群:

argocd app create -f argo.yaml

ArgoCD 將會自動同步應用,執行上述工作流,最終你的應用將能成功掛載并使用解密后的 Secret。

總結與思考

本文介紹的方法巧妙地利用了 Kubernetes 的 InitContainer和 Helm 的 --set-file特性,構建了一個無需 ArgoCD 插件即可自動化處理 SOPS 加密文件的 GitOps 流程。

? 優點:

原生兼容: 無需為 ArgoCD 安裝或配置任何插件,降低了維護復雜性。

安全: 敏感信息以加密形式存儲在 Git 中,符合 GitOps 最佳實踐。

靈活: 可以通過修改 InitContainer中的腳本來適應不同的 Secret 結構或解密邏輯。

? 注意事項:

部署完成后,手動創建的解密密鑰 Secret (myapp-age-keys) 不受 ArgoCD 管理,如果項目清理,需要手動刪除。

該方案引入了一個自定義的 InitContainer鏡像,需要確保該鏡像的來源可靠并進行妥善維護。

總而言之,這并非管理 Kubernetes Secrets 的唯一方案(其他方案如 External Secrets Operator, HashiCorp Vault 等也十分優秀),但它為特定場景——尤其是追求環境簡潔、希望避免引入過多外部依賴的團隊——提供了一個極具參考價值的、輕量級的實現范本。

責任編輯:武曉燕 來源: 云原生SRE
相關推薦

2022-08-04 08:00:54

安全管理服務器

2023-09-06 08:12:04

k8s云原生

2023-11-06 07:16:22

WasmK8s模塊

2020-07-17 17:17:16

Kubernetes宕機Spring Clou

2022-09-05 08:26:29

Kubernetes標簽

2023-02-27 07:40:00

2022-01-21 09:45:42

Mozilla SOKubernetesLinux

2024-06-12 13:21:06

2023-09-11 14:21:00

2025-02-18 00:00:00

2024-06-26 00:22:35

2023-08-29 10:27:32

2023-09-15 08:00:20

Ingress網關Istio

2022-09-05 14:45:56

前端K8S

2022-01-22 21:38:19

K8SRedisRedis clus

2022-11-06 21:31:11

云原生Sentinel集群模式

2023-03-01 07:42:12

HBase編排部署數據

2022-10-10 12:54:00

Flink運維

2024-02-01 09:48:17

2023-11-06 01:17:25

主機容器選項
點贊
收藏

51CTO技術棧公眾號

偷偷要91色婷婷| 国产精品12区| 国产一区av在线| www.com黄色片| 18视频在线观看网站| 成年人午夜久久久| 国产精品va在线播放我和闺蜜| 99热这里只有精品4| 国产精品超碰| 欧美日韩国产123区| 成人区一区二区| 国产毛片av在线| 国产成人鲁色资源国产91色综| 57pao精品| 免费成人深夜夜行网站| 秋霞在线一区| 91.com视频| 欧美性久久久久| 国产精品扒开做爽爽爽的视频| 成人免费高清在线观看| 国产精品久久一区| 日韩熟女精品一区二区三区| 婷婷亚洲最大| 国产午夜精品美女视频明星a级| 女王人厕视频2ⅴk| 99re66热这里只有精品4| 亚洲一区视频在线| 一区二区国产日产| 亚州精品国产精品乱码不99按摩| 国产一区二区三区高清播放| 国产精品69久久久久| 国产一卡二卡在线| 国产精品久久| 久久精品影视伊人网| www.中文字幕av| 精品按摩偷拍| 精品国产乱码91久久久久久网站| 在线观看日本www| 欧美黑粗硬大| 在线视频观看一区| 欧美视频第一区| 丁香花在线观看完整版电影| 亚洲青青青在线视频| 色一情一区二区三区四区| 日韩在线免费看| 91丝袜呻吟高潮美腿白嫩在线观看| av成人免费观看| 国产suv一区二区| 激情图片小说一区| 国产日韩在线一区| 中文字幕av在线免费观看| 亚洲在线成人| 欧美一级视频免费在线观看| 免费在线不卡视频| 亚洲综合国产| 日韩男女性生活视频| 波多野结衣视频网站| 国产精品日韩欧美一区| 欧美中文字幕视频| 四虎成人在线观看| 久久亚洲国产精品一区二区| 国产a级全部精品| 波多野结衣影片| 奇米综合一区二区三区精品视频| 国产精品久久久久av免费| 在线中文字幕网站| 国产一区二区三区日韩| 亚洲一区美女视频在线观看免费| 性中国古装videossex| 高清国产一区二区三区| 韩国精品一区二区三区六区色诱| 天天干,夜夜操| 国产欧美一区二区三区沐欲| 先锋影音一区二区三区| 韩国av网站在线| 亚洲国产综合色| www黄色av| 88xx成人网| 91精品啪在线观看国产60岁| 中文写幕一区二区三区免费观成熟| 岛国成人av| 亚洲欧美日韩一区在线| 999精品久久久| 亚洲午夜伦理| 日韩av片永久免费网站| 国产一区二区三区视频免费观看| 国产成人在线视频网站| 久久精品国产美女| eeuss影院在线观看| 亚洲欧美激情视频在线观看一区二区三区 | 日韩中文字幕一区二区| 国产精品久久麻豆| 午夜精品123| 天堂网在线免费观看| 超碰成人97| 中文字幕精品av| 国产三级国产精品国产国在线观看| 亚洲一级黄色| 国产日韩在线播放| 三级在线视频| 亚洲精品国产精华液| 99久久久无码国产精品6| 91精品网站在线观看| 日韩精品免费一线在线观看| 小嫩苞一区二区三区| 亚洲永久免费| 99热在线国产| 国产成人天天5g影院在线观看| 亚洲精品菠萝久久久久久久| 亚洲综合在线网站| 老司机成人在线| 久久天天躁日日躁| 无码人妻精品一区二区蜜桃色欲 | 狠狠久久五月精品中文字幕| 亚洲涩涩在线观看| 亚洲区小说区| 欧美国产日本在线| 国产精品一级视频| 国产欧美一区二区三区沐欲 | 日韩电影毛片| 日韩亚洲欧美中文三级| 丁香花五月婷婷| 中文国产一区| 成人片在线免费看| 国产不卡在线| 欧美日韩国产小视频在线观看| 四虎永久免费影院| 亚洲电影成人| 91热福利电影| 嫩草在线视频| 欧美日韩精品综合在线| 蜜臀久久99精品久久久久久| 国产日韩亚洲欧美精品| 国产欧美日韩综合一区在线观看| gogo在线观看| 欧美一区二区大片| 久久人妻无码aⅴ毛片a片app | 福利在线观看| 色哟哟国产精品免费观看| 性囗交免费视频观看| 激情自拍一区| 99国精产品一二二线| 69xxx在线| 日韩免费一区二区三区在线播放| 精品无码一区二区三区蜜臀| 精品一区中文字幕| 夜夜爽99久久国产综合精品女不卡 | 黄色免费网站在线| 欧美人与z0zoxxxx视频| 免费精品在线视频| 国模大尺度一区二区三区| 香蕉视频在线网址| 国产成人免费av一区二区午夜 | 蜜桃91精品入口| 久久影院午夜精品| 亚洲欧美国产另类| 一级做a爰片久久毛片| 久久精品在这里| 亚洲综合色在线观看| 日韩综合网站| 亚洲最大福利网站| heyzo中文字幕在线| 亚洲黄一区二区| 久草手机在线视频| 国产片一区二区三区| 91精品999| 夜间精品视频| 国内一区在线| 中韩乱幕日产无线码一区| 日韩一区在线视频| 亚洲精品18p| 欧美日韩国产影院| 午夜影院黄色片| 国内不卡的二区三区中文字幕| 日韩精品一区二区免费| 美女少妇全过程你懂的久久| 国产精品欧美一区二区| 超碰在线观看免费版| 亚洲成年人在线| 亚洲成人第一网站| 亚洲人成在线观看一区二区| 北京富婆泄欲对白| 日本美女视频一区二区| 亚洲av首页在线| 台湾佬综合网| 成人性生交xxxxx网站| 国产理论在线| 日韩在线观看网站| 免费av一级片| 欧美色图天堂网| 日本特黄一级片| 国产精品久久久久影视| 亚洲av无码专区在线播放中文| 另类激情亚洲| 国产一二三区在线播放| 国产探花一区二区| 国产精品久久久久久久久久直播| 欧美在线va视频| 国内精品模特av私拍在线观看| av网站在线免费播放| 亚洲国产高清福利视频| 国产又大又黄的视频| 欧美性猛交xxxx免费看| 九九热最新地址| 国产日韩欧美亚洲| 亚洲久久久久久| 国产一区二区三区久久久| 国产又黄又猛视频| 国产一在线精品一区在线观看| 日韩电影大全在线观看| 成人动态视频| 96成人在线视频| 欧美日韩伦理一区二区| 日本aⅴ大伊香蕉精品视频| 午夜成年人在线免费视频| 在线看日韩欧美| 欧美日韩在线精品一区二区三区激情综 | 欧美激情视频给我| 无遮挡的视频在线观看 | 青青草原综合久久大伊人精品优势| 51xx午夜影福利| 99久久久久久中文字幕一区| 欧美另类一区| 奇米影视777在线欧美电影观看| 97av自拍| 伊人久久大香线蕉av超碰| 成人在线国产精品| 欧美特黄色片| 国产精品嫩草影院一区二区| 色尼玛亚洲综合影院| 136fldh精品导航福利| 999福利在线视频| 欧美激情一区二区三级高清视频| av毛片在线播放| 久久中文字幕在线| 思思99re6国产在线播放| 国产一区二区三区直播精品电影| 国产中文字幕在线视频| 亚洲精选一区二区| 欧美色图另类| 亚洲图片欧美日产| 高清日韩av电影| 中文字幕精品网| 日本在线视频观看| 色哟哟网站入口亚洲精品| 97最新国自产拍视频在线完整在线看| 亚洲午夜色婷婷在线| 国产精品秘入口| 在线视频欧美日韩精品| 2021av在线| www.欧美免费| 18av在线视频| 欧美激情国产日韩精品一区18| 四季久久免费一区二区三区四区| 欧美成人精品一区| 深夜国产在线播放| 久久久久一本一区二区青青蜜月 | 婷婷综合五月天| 久久久久久久久影院| 色综合久久天天| 中文字幕第三页| 欧美一区二区三区系列电影| 亚洲精品国产片| 日韩成人小视频| 国产69精品久久app免费版| 三级精品视频久久久久| 最新黄网在线观看| 国内成人精品一区| 久久91导航| 成人美女av在线直播| 亚洲精品黑牛一区二区三区| 国产精品一国产精品最新章节| 亚洲区小说区图片区qvod| 亚洲国产精品久久久久久女王| 久久激情电影| www.激情网| 免费久久99精品国产自在现线| 亚洲精品久久久中文字幕| 国产精品一区二区久激情瑜伽| 亚洲一级Av无码毛片久久精品| 久久综合久久综合亚洲| 人人艹在线视频| 亚洲电影第三页| 国产精品无码一区| 日韩精品一区国产麻豆| 青青色在线视频| 日韩一区二区久久久| h片在线观看视频免费| 国产精品一区二区久久精品| 福利片在线一区二区| 午夜精品美女久久久久av福利| 国产专区一区| 国产精品人人爽人人爽| 福利电影一区二区| 91麻豆制片厂| 精品久久久久久久久久| 国产精品爽爽久久久久久| 亚洲国产精品热久久| 黄色网址免费在线观看| 日本在线观看天堂男亚洲| 欧美视频二区欧美影视| 日本精品免费| 亚洲免费黄色| 国产人妻精品久久久久野外| 久久久久久久久97黄色工厂| 青娱乐国产在线| 欧美日韩一卡二卡三卡| 日本一区高清| 欧美激情在线播放| 天天综合在线观看| 欧美另类一区| 国产视频久久| www.四虎在线| 亚洲精品久久久久久国产精华液| 一级片在线免费播放| 日韩精品一区二区视频| 男女在线视频| 亚洲影院污污.| 日韩久久视频| 日韩av播放器| 久久天天做天天爱综合色| 日本熟妇成熟毛茸茸| 欧美一级理论片| 久久久久久国产精品免费无遮挡| 国产成人精品免高潮在线观看| 欧美三级午夜理伦三级小说| www.av蜜桃| 国v精品久久久网| 免费一级片在线观看| 在线播放中文一区| 天堂地址在线www| 国产精品久久久久久久久久免费| 婷婷综合福利| 免费看的黄色大片| 97se亚洲国产综合自在线不卡| 久草视频手机在线观看| 日韩精品自拍偷拍| 丝袜在线观看| 国产精华一区| 亚洲黄色高清| 波多野结衣视频播放| 天天操天天干天天综合网| 秋霞网一区二区| 亚洲2020天天堂在线观看| 美腿丝袜亚洲图片| 久久国产精品视频在线观看| 不卡欧美aaaaa| 国产成人愉拍精品久久| 亚洲精品成人久久久| 筱崎爱全乳无删减在线观看| 玛丽玛丽电影原版免费观看1977| 蜜桃伊人久久| 日韩视频在线观看免费视频| 欧美日韩你懂得| 成人在线观看免费网站| 91在线在线观看| 亚洲精品资源| 中文字幕高清视频| 欧美性大战xxxxx久久久| 色哟哟免费在线观看| 亚洲自拍偷拍第一页| 亚洲国产日韩在线| 欧美狂猛xxxxx乱大交3| 欧美在线制服丝袜| 免费黄网站在线播放| 97超级碰碰| 亚洲综合电影一区二区三区| 欧美黄色一级生活片| 欧美丰满嫩嫩电影| www欧美xxxx| 蜜桃av噜噜一区二区三| 精品一区二区三区蜜桃| 国产一级在线视频| 亚洲欧美国内爽妇网| 四虎国产精品免费久久| 久久久久久久久久伊人| 91丨九色丨蝌蚪丨老版| 91女人18毛片水多国产| 久久久亚洲网站| 日韩av久操| 国产视频精品视频| 色噜噜久久综合| 超碰在线免费播放| 欧美日韩国产三区| 国产一区二区三区日韩| 欧美激情黑白配| 欧美老少做受xxxx高潮| 杨幂一区二区三区免费看视频| 亚洲美女性囗交| 欧美日韩国产在线看| 国产网站在线免费观看| 久久精品国产精品青草色艺 | 无遮挡的视频在线观看| 国产精品午夜av在线| 老司机精品视频导航| 免费毛片一区二区三区| 久久精品99久久久久久久久| 婷婷国产精品| 少妇性l交大片7724com| 在线免费观看不卡av|