精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

国产精品66部| 午夜电影亚洲| 6080日韩午夜伦伦午夜伦| 强伦女教师2:伦理在线观看| 亚洲成人久久精品| 久久亚洲美女| 欧美精品在线第一页| 久久久久麻豆v国产精华液好用吗| av女在线播放| 久久青草欧美一区二区三区| 国产在线高清精品| 久久久久久久黄色片| 日韩中文字幕高清在线观看| 日韩精品一区二区三区四区| 福利在线小视频| 国自产拍在线网站网址视频| 国产精品一卡二卡在线观看| 欧美资源在线观看| 91日韩中文字幕| 欧美猛男同性videos| 日韩精品一区二区三区视频播放| 2022亚洲天堂| 黄页在线观看免费| 国产精品久久久久久户外露出| 国产精品国产精品国产专区不卡| 中文字幕一区二区人妻痴汉电车| 亚洲激情女人| 久久国产精品免费视频| 日本二区在线观看| 超碰97久久| 884aa四虎影成人精品一区| 一本大道熟女人妻中文字幕在线 | 黄色一级片播放| a黄色片在线观看| 国产精品全国免费观看高清 | 国产欧美日韩亚洲精品| 天天综合天天干| 激情久久久久久| 欧美成人h版在线观看| 国产一二三av| 成人a'v在线播放| 亚洲欧美中文另类| 97人妻精品一区二区三区免| 91麻豆精品激情在线观看最新| 在线播放欧美女士性生活| 九色porny91| 大胆人体一区二区| 色综合天天综合网国产成人综合天| 久久99久久99精品| 精精国产xxxx视频在线中文版| 亚洲人成精品久久久久| 中文字幕在线亚洲精品| 91在线观看| 中文子幕无线码一区tr| 四虎永久在线精品免费一区二区| 六十路在线观看| 久久老女人爱爱| 欧美在线日韩精品| 国产在线一二| 国产清纯白嫩初高生在线观看91 | 一本色道a无线码一区v| 99精品人妻少妇一区二区| 中日韩脚交footjobhd| 黄色一区二区在线| 免费毛片小视频| 91av亚洲| 欧美日韩一区二区三区四区| 日韩中文字幕a| 国产精品xnxxcom| 日韩精品一区二区三区四区视频 | 欧美激情18p| 国产极品在线播放| 亚洲一区激情| 国产精品高潮粉嫩av| 亚洲熟妇av乱码在线观看| 精品一二三四区| 波多野结衣精品久久| 日韩中文字幕综合| 久久久久99精品一区| 亚洲一区二区三区乱码| av在线播放国产| 午夜精品视频一区| 国产a级片免费观看| 亚洲三级电影| 亚洲第一精品电影| 成人国产精品久久久网站| 99精品视频精品精品视频| 欧美人与物videos| 婷婷激情五月网| 久久国产福利国产秒拍| 国产精品日本一区二区| 毛片免费在线观看| 亚洲免费资源在线播放| 欧美 日韩 激情| 国产精品久久久久久久久免费高清 | 欧美亚洲免费电影| 中文字幕日本人妻久久久免费 | 秋霞国产午夜精品免费视频| 91久久久久久久久久| 黄色小视频免费在线观看| 国产视频一区在线播放| 久久香蕉视频网站| 欧美精品日日操| 日韩免费观看高清完整版在线观看| 手机在线成人av| 国产高清欧美| 日本久久中文字幕| 亚洲第一页视频| 国产精品国产成人国产三级| 免费国产a级片| 国内精品视频| 亚洲网站视频福利| 国产福利久久久| 激情图片小说一区| 欧美日韩三区四区| 久久亚洲资源| 欧美高清精品3d| xxx在线播放| 最新日韩在线| 999精品在线观看| yjizz视频网站在线播放| 亚洲不卡av一区二区三区| 五月花丁香婷婷| 国产一区网站| 69久久夜色精品国产69| www.综合色| 综合久久国产九一剧情麻豆| 另类小说第一页| 亚洲第一福利社区| 亚洲91精品在线| 亚洲精品久久久中文字幕| 国产亚洲精品成人| 另类的小说在线视频另类成人小视频在线| 成人性色av| 中文字幕有码在线观看| 欧美日韩国产成人在线91| 久久精品无码一区| 亚洲一区二区成人| 激情欧美一区二区三区中文字幕| 日韩专区av| 欧美一区二区三区成人| 永久免费看片直接| 精品一区二区日韩| 亚洲午夜精品久久久中文影院av| 吞精囗交69激情欧美| 日韩h在线观看| 国产成人在线免费观看视频| 成人三级伦理片| 久草视频国产在线| 久久91在线| 久久久久久久久久久久久久久久久久av| 国产乱码精品一区二三区蜜臂 | а√天堂中文资源在线bt| 欧美日韩一区二区电影| 综合 欧美 亚洲日本| 麻豆视频一区二区| 一区二区不卡视频| 亚洲国产91视频| 欧美成人免费一级人片100| 国产丝袜视频在线观看| 亚洲精品欧美二区三区中文字幕| 亚洲国产成人va在线观看麻豆| 91精品综合久久久久久久久久久 | 狠狠干狠狠操视频| 欧美大片一区| 国产伦理一区二区三区| 中老年在线免费视频| 中文字幕日韩视频| www.成人精品| 红桃av永久久久| 日韩视频在线观看免费视频| 韩国av一区二区| 青青草国产精品视频| 蜜臀av免费一区二区三区| 国产成一区二区| 大片免费在线观看| 亚洲电影在线看| 中文字幕一区二区三区人妻四季| 国产精品成人网| 久久精品无码专区| 久久久夜夜夜| 天天综合五月天| 香蕉久久精品日日躁夜夜躁| 国产精品视频免费观看www| 国产福利视频在线观看| 亚洲精品国产免费| 欧美 亚洲 另类 激情 另类| 亚洲精品免费播放| 少妇光屁股影院| 精品一区二区三区蜜桃| 99在线精品免费视频| 成人午夜国产| 精品国产一区二区三区麻豆小说| 精品成人av| 欧美劲爆第一页| 亚洲xxxxxx| 亚洲娇小xxxx欧美娇小| 97成人在线观看| 欧美视频中文字幕在线| 欧美风情第一页| 久久在线观看免费| wwwww在线观看| 免费高清视频精品| 日韩在线视频在线观看| 自拍偷拍欧美专区| 视频一区二区精品| 极品束缚调教一区二区网站 | 中文字幕亚洲精品在线观看 | 亚洲裸色大胆大尺寸艺术写真| 91免费看片在线| 成人免费网站www网站高清| 欧美激情视频在线| 麻豆网站在线| 亚洲午夜小视频| 天堂中文网在线| 欧美一卡二卡三卡四卡| 天堂免费在线视频| 精品日韩中文字幕| 久久久无码精品亚洲国产| 欧美国产综合色视频| 亚洲精品乱码久久久久久久| 国产一区二区日韩精品| 视频二区在线播放| 久久伊人亚洲| 红桃av在线播放| 亚洲黄页一区| 黄色激情在线视频| 欧美成熟视频| www.69av| 欧美暴力喷水在线| 黄色小视频大全| 91亚洲自偷观看高清| 日韩精品一区二区三区四区五区| 久久精品福利| 精品亚洲一区二区三区四区五区高| 亚洲综合网站| av一本久道久久波多野结衣| 国产一区精品二区| 91九色单男在线观看| 福利精品一区| 国产一区二区视频在线观看| 欧美日韩国产网站| 国产精品情侣自拍| 成人国产一区| 国产精品久久久久久中文字| 户外露出一区二区三区| 国产成人91久久精品| 樱桃视频成人在线观看| 欧美一级高清免费播放| 亚洲深夜视频| 日韩av成人在线观看| 欧美极品影院| 国产精品入口免费视| 欧美少妇激情| 92福利视频午夜1000合集在线观看| av成人在线网站| 99re视频在线| 欧美一区 二区| 欧美深深色噜噜狠狠yyy| 国产一区二区三区探花| 亚洲一区二区三区免费观看| 99久久综合| 免费网站在线观看视频| 亚洲伦伦在线| 一本久道综合色婷婷五月| 日韩精品一二三区| 久久久久xxxx| 粉嫩aⅴ一区二区三区四区五区 | 中文字幕一区二区三区蜜月| 欧美性生交大片| 夜夜操天天操亚洲| 久久久久久久极品| 在线视频中文字幕一区二区| 中文字幕在线播放av| 欧美一区二区在线播放| 人妻va精品va欧美va| 国产亚洲精品日韩| 国产精品va在线观看视色| 国内精品在线一区| 国产在线|日韩| 99久久精品无码一区二区毛片| 欧美亚视频在线中文字幕免费| 亚洲精品国产精品国自产观看| 亚洲精品午夜av福利久久蜜桃| 欧美激情视频免费看| 销魂美女一区二区| 国产精品电影一区二区三区| 欧美卡一卡二卡三| 一本一本久久a久久精品综合麻豆| 中文字幕理论片| 精品国产一区久久| av天在线观看| 午夜精品一区二区三区在线| 成人精品一区二区三区电影| 国产精品久久久久av福利动漫| 国产一区二区三区四区五区| 欧美精品卡一卡二| 麻豆国产欧美日韩综合精品二区| www.四虎精品| 国产精品国产三级国产| 中文字幕在线观看视频网站| 欧美电影一区二区| 国产主播福利在线| 久久久久久久999| 欧美另类激情| 玛丽玛丽电影原版免费观看1977| 亚洲经典一区| 污版视频在线观看| 99精品久久只有精品| 婷婷伊人五月天| 欧美系列亚洲系列| 午夜影院免费体验区| 欧美大尺度激情区在线播放| 国产精品videossex撒尿| 国产伦精品一区二区三区视频黑人| 日韩一区二区三区免费播放| 国产精品免费观看久久| 成人精品小蝌蚪| 国产一区二区播放| 欧美日韩免费观看一区二区三区| 日本中文字幕电影在线观看| 欧美夫妻性生活xx| 亚洲精品大片| 亚洲欧美国产精品桃花| 日韩中文字幕亚洲一区二区va在线| 精品一区二区三区四区五区六区| 一区二区三区四区av| 91在线视频国产| 中文字幕久热精品在线视频| 日本综合字幕| 欧美午夜免费| 亚洲综合欧美| 国产精品1000部啪视频| 午夜不卡在线视频| 人人妻人人澡人人爽精品日本| 久精品免费视频| 欧州一区二区三区| 99亚洲国产精品| 国产精品资源在线看| www.超碰在线观看| 91精品国产色综合久久ai换脸| 日本在线免费网| 成人精品久久久| 91精品99| 久久久久国产免费| 亚洲一区二区精品久久av| 丰满大乳国产精品| 97视频在线观看视频免费视频 | 麻豆乱码国产一区二区三区 | 欧美三级网站| 久久精品丝袜高跟鞋| 亚洲一区欧美激情| 老牛影视av老牛影视av| 在线观看日韩一区| 在线观看a视频| 成人国产精品日本在线| 99热在线成人| 图片区偷拍区小说区| 午夜av一区二区三区| 黄色在线视频观看网站| 国产精品久久精品| 无码一区二区三区视频| 杨幂一区二区国产精品| 亚洲高清视频在线| 日本一卡二卡四卡精品| 国产精品久久久久77777| 日韩免费av| 日本黄色三级网站| 偷拍日韩校园综合在线| 九色在线视频蝌蚪| 国产日韩综合一区二区性色av| 亚洲精品国产首次亮相| 美女扒开腿免费视频| 日韩欧美在线网址| 色的视频在线免费看| 成人动漫在线观看视频| 亚洲专区欧美专区| 成年人二级毛片| 亚洲精品国产美女| 日韩免费大片| 欧美精品久久久久久久久久久| 久久品道一品道久久精品| 怡红院男人的天堂| 色综合久久久888| 久久av中文| 中文字幕第三区| 日韩欧美中文第一页| 国产精品扒开做爽爽爽的视频| 国产精品一级久久久| 蜜臀国产一区二区三区在线播放| 欧美成人黄色网| 国产亚洲a∨片在线观看| 日韩一区二区三区精品视频第3页 日韩一区二区三区精品 | 国产精品pans私拍| 亚洲国产日韩欧美在线| 91网站免费视频| 精品国产乱码久久久久久浪潮| 久久99国产精品二区高清软件| 国产男女免费视频| 亚洲三级免费电影|