在現代雲原生應用程式開發中,機密資料(Secrets)的管理是一項至關重要的任務。對於採用 GitOps 策略的團隊來說,如何安全地儲存和佈署機密資料更是一項挑戰。本文將介紹如何使用 Bitnami 的 Sealed Secrets,這是一個簡化 Kubernetes 機密資料管理流程的解決方案。

挑戰:GitOps 與機密資料管理

在 GitOps 的世界中,程式碼倉函式庫一的真實來源。這意味著所有應用程式設定,包括機密資料,都應該儲存在程式碼倉函式庫然而,將機密資料直接儲存在程式碼倉函式庫然是不安全的。為瞭解決這個問題,開發者通常會尋求各種機密管理解決方案。

Sealed Secrets:簡化的機密資料管理方案

Sealed Secrets 提供了一種更簡單的替代方案,無需依賴複雜的機密管理系統,例如 AWS Secrets Manager 或 HashiCorp Vault。Sealed Secrets 的運作方式是利用佈署在 Kubernetes 叢集中的 Sealed Secrets 控制器,使用其公鑰憑證來加密機密資料。只有控制器才能解密這些加密後的機密資料。

Sealed Secrets 的運作原理

  1. 產生加密金鑰:Sealed Secrets 控制器會產生一對公鑰和私鑰。
  2. 加密機密資料:開發者使用公鑰加密機密資料,產生 SealedSecret 清單檔案。
  3. 儲存 SealedSecret:SealedSecret 清單檔案可以安全地儲存在程式碼倉函式庫
  4. 佈署 SealedSecret:將 SealedSecret 佈署到 Kubernetes 叢集。
  5. 解密機密資料:Sealed Secrets 控制器使用私鑰解密 SealedSecret,並建立 Kubernetes Secret。
  6. 應用程式使用機密資料:應用程式可以像往往常一樣使用 Kubernetes Secret。

暴露機密資料給 Pod 的方法

有多種方法可以將機密資料暴露給 Pod,包括:

  • 環境變數(Environment Variables):將機密資料作為環境變數注入到容器中。
  • 卷掛載(Volume Mounts):將機密資料作為檔案掛載到 Pod 內,使其可以從檔案系統存取。
  • Kubernetes 向下 API(Kubernetes Downward API):透過 Kubernetes 向下 API 將機密資料提供給應用程式,允許容器將機密資料作為 Pod 的元資料的一部分使用。

為了簡化範例,本文將重點介紹如何將機密資料作為環境變數注入。

實作範例:佈署一個使用機密資料的 Web 應用程式

以下是一個實作範例,展示如何使用 Sealed Secrets 佈署一個使用機密資料的 Web 應用程式。

前提條件

  • 一個可用的 Kubernetes 叢集
  • 一個容器映像登入檔
  • 已安裝在 Kubernetes 叢集中的 Bitnami Sealed Secrets 控制器
  • kubeseal CLI 工具,用於與 Sealed Secrets 控制器互動

安裝 kubeseal CLI

kubeseal 命令列介面(CLI)是一個用於管理 Kubernetes 中 Sealed Secrets 的工具。它允許您將機密資料加密為 SealedSecret,然後只有在您的 Kubernetes 叢集中執行的 Sealed Secrets 控制器才能解密。

您可以參考官方安裝 kubeseal CLI。

應用程式架構

  1. 取得公鑰憑證:開發者從 Sealed Secrets 控制器中檢索公鑰憑證。此憑證對於加密機密資料是必要的,以便只有 Sealed Secrets 控制器可以解密它們。
  2. 建立 Kubernetes Secret 清單:開發人員建立一個包含需要加密的敏感資訊的 Kubernetes Secret 清單檔案。
  3. 加密機密資料:使用 kubeseal CLI 和取得的公鑰憑證,開發人員對 Kubernetes Secret 進行加密。
  4. 儲存 SealedSecret 清單:加密的 SealedSecret 清單已儲存到檔案中,準備提交到版本控制。
  5. 佈署 SealedSecret 清單:SealedSecret 清單將佈署到 Kubernetes 叢集。
  6. 建立 Kubernetes Secret:Sealed Secrets 控制器從 SealedSecret 物件建立 Kubernetes Secret。
  7. 應用程式使用機密資料:在 Kubernetes 叢集中執行的應用程式現在可以存取和使用 Kubernetes Secret。

範例專案

此範例將佈署一個虛擬的 Web 應用程式,該應用程式將使用一些機密資料。

Web 應用程式將從機密資料中讀取資料並將其用作環境變數。此範例包含兩個鍵值對:

  • 使用者名稱(Username)
  • 密碼(Password)

應用程式也包含一個 Ingress,可以在瀏覽器中檢視資料。

該應用程式根據 Flask,程式碼如下:

from flask import Flask
import os

app = Flask(__name__)

@app.route('/')
@app.route('/home')
def home():
    html = f'''
        <h1>Web App</h1>
        <p>Welcome to the home page</p>
        <p>Username: {os.environ.get('USERNAME')}</p>
        <p>Password: {os.environ.get('PASSWORD')}</p>
    '''
    return html

if __name__ == '__main__':
    app.run(debug=False, host='0.0.0.0', port=5050)

應用程式會從環境變數中取得值,這些值將暴露給 Pod。

建立映像並推播到登入檔

在應用程式資料夾中,有一個 Dockerfile 用於建立容器映像。前往應用程式資料夾並執行:

docker build -t <my_registry>/web-app-sealed-secret:0.1.0 .

請務必將 <my_registry> 替換為您的容器映像登入檔。

接下來,將映像推播到登入檔:

docker push <my_registry>/web-app-sealed-secret:0.1.0

Sealed Secrets 的優勢與限制

Sealed Secrets 具有以下優勢:

  • 簡化機密資料管理:無需複雜的機密管理系統。
  • 與 GitOps 整合:可以安全地儲存機密資料在程式碼倉函式庫
  • 易於使用kubeseal CLI 工具簡化了機密資料的加密和佈署流程。

Sealed Secrets 也存在一些限制:

  • 依賴於 Sealed Secrets 控制器:如果控制器不可用,則無法解密機密資料。
  • 金鑰管理:需要安全地儲存 Sealed Secrets 控制器的私鑰。

Sealed Secrets 提供了一種簡化 Kubernetes 機密資料管理流程的有效方法。它特別適合於小型專案和團隊,可以安全地儲存機密資料在程式碼倉函式庫並且 GitOps 工作流程整合。透過瞭解 Sealed Secrets 的運作原理和實作範例,開發者可以更好地保護 Kubernetes 應用程式中的機密資訊,確保應用程式的安全性。

在雲原生應用程式開發中,金鑰管理(Secrets Management)是至關重要的一環。傳統上,將金鑰儲存在版本控制系統中存在安全風險。Sealed Secrets 提供了一個解決方案,允許您將金鑰儲存在公開的儲存函式庫同時確保其安全性。本文將探討如何使用 Sealed Secrets 在 Kubernetes 環境中安全地管理金鑰,並整合到 GitOps 工作流程中。

準備工作:建立可用的映像

首先,確認您有一個可用的映像檔。以下是一個範例,展示如何將映像推播到私有容器登入檔:

docker tag web-app-sealed-secret:latest 192.168.64.54:30500/web-app-sealed-secret:0.1.0
docker push 192.168.64.54:30500/web-app-sealed-secret:0.1.0

這個過程將標記本地映像,並將其推播到指定的容器登入檔。這一步驟確保您的應用程式映像在 Kubernetes 叢集中可用。

佈署環境:設定 Kubernetes 清單檔案

k8s-manifests 資料夾中,您需要設定 Kubernetes 清單檔案,包括 Deployment、Ingress 和 Service。

Deployment 清單

在 Deployment 檔案 (deployment.yaml) 中,請確保映像名稱設定正確:

spec:
  containers:
    - name: web-app
      image: 192.168.64.54:30500/web-app-sealed-secret:0.1.0

Ingress 清單

您需要在 Ingress 檔案 (ingress.yaml) 中更改主機名稱:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: web-app-ingress
  namespace: gitops-sealed-secret-demo
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
    - host: <設定您的主機名稱 (Set Your Hostname)>
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: web-app-service
                port:
                  number: 80

如果您沒有設定 Ingress Controller,您可以將流量直接轉發到 Service。

建立 Sealed Secret:加密您的金鑰

建立 Sealed Secret 清單檔案的步驟如下:

  1. 取得公鑰憑證: 從在 Kubernetes 中執行的 Sealed Secrets Controller 取得公鑰憑證。
  2. 建立 Kubernetes 金鑰: 在本地建立 Kubernetes 金鑰清單檔案,以保留您的金鑰資料。
  3. 加金鑰: 使用公鑰憑證透過 kubeseal 加密 Kubernetes 金鑰。

取得公鑰憑證

kubeseal CLI 工具在 kubectl 環境中執行。要取得憑證,請執行以下命令:

kubeseal --fetch-cert --controller-name=sealed-secrets --controller-namespace=sealed-secrets > public-key-cert.pem

確保您擁有效的公鑰憑證,方法是檢查 public-key-cert.pem 檔案的內容。

建立 Kubernetes 金鑰

接下來,我們將建立一個 Kubernetes 金鑰。重要的是,我們不會將這個金鑰提交到 Git 儲存函式庫反,我們將建立另一個名為 Sealed Secret 的清單檔案。

kubectl create secret generic mysecret --dry-run=client --from-literal=username=admin --from-literal=password='supersecretpassword' -o yaml > mysecret.yaml

這個命令會產生一個 mysecret.yaml 檔案,其中包含您的金鑰資料。

使用 kubeseal 加密 Kubernetes 金鑰

使用 kubeseal 加密我們建立的金鑰。這將生成一個 Sealed Secret 的清單檔案。

kubeseal -n sealed-secret-demo --cert public-key-cert.pem --format yaml < mysecret.yaml > sealedsecret.yaml

請注意,如果您在 kubeseal 命令中不使用 -n 選項指定名稱空間,則清單檔案將包含您在 kubectl 連貫的背景與環境中設定的名稱空間。

透過 Sealed Secrets,您可以安全地在 Kubernetes 環境中管理金鑰,並將其整合到 GitOps 工作流程中。這種方法不僅提高了安全性,還簡化了金鑰的管理和佈署過程。玄貓(BlackCat)建議您在實務中多加嘗試,以確保您的金鑰管理策略既安全又高效。掌握 Sealed Secrets 的使用,將有助於您在雲原生應用程式開發中更好地保護敏感資料。

在雲原生應用程式的開發和佈署中,安全地管理金鑰(Secrets)至關重要。傳統上,直接將金鑰儲存在 Git 儲存函式庫極不安全的做法。Sealed Secrets 提供了一種解決方案,允許您加密 Kubernetes 金鑰,並將其安全地儲存在公共儲存函式庫例如 Git。本文將探討如何使用 Sealed Secrets 來保護 Kubernetes 環境中的敏感資訊,並將其整合到 GitOps 工作流程中。

Sealed Secrets:加金鑰的安全守護者

Sealed Secrets 是一種 Kubernetes 控制器和相關工具,旨在解決在 Git 儲存庫存金鑰的安全問題。它透過非對稱加密(Asymmetric Encryption)的方式,將金鑰加密成只有 Kubernetes 叢集才能解密的 SealedSecret 資源。

其核心概念是:

  1. 加密:使用只有 Kubernetes 叢集知道的公鑰(Public Key)加金鑰。
  2. 儲存:將加密後的 SealedSecret 儲存在 Git 儲存函式庫
  3. 解密:Kubernetes 叢集中的 Sealed Secrets 控制器使用私鑰(Private Key)解密 SealedSecret,並建立原始的 Kubernetes Secret 資源。

這種方法確保了即使有人獲得了 Git 儲存函式庫取權,也無法解金鑰,因為他們沒有私鑰。

佈署 Sealed Secrets 控制器

首先,您需要在 Kubernetes 叢集中佈署 Sealed Secrets 控制器。Bitnami 提供了一種簡單的方法來使用 Helm 安裝 Sealed Secrets:

helm repo add bitnami https://charts.bitnami.com/bitnami
helm install sealed-secrets bitnami/sealed-secrets --namespace kube-system

這將在 kube-system 名稱空間(Namespace)中佈署 Sealed Secrets 控制器。

建立 SealedSecret

一旦 Sealed Secrets 控制器執行,您就可以建立 SealedSecret 資源。以下是一個範例:

首先,建立一個 Kubernetes Secret:

kubectl create secret generic mysecret \
  --namespace gitops-sealed-secret-demo \
  --from-literal=username=myuser \
  --from-literal=password=mypassword

然後,使用 kubeseal 工具將其加密:

kubeseal --namespace gitops-sealed-secret-demo \
  --format yaml < mysecret.yaml > sealedsecret.yaml

kubeseal 工具會連線到 Kubernetes API 伺服器(API Server),檢索公鑰,並使用它來加金鑰。sealedsecret.yaml 檔案包含加密後的金鑰,可以安全地儲存在 Git 儲存函式庫

檢視 SealedSecret 檔案

驗證您是否擁有密封的金鑰,方法是列印出 sealedsecret.yaml 檔案:

---
apiVersion: bitnami.com/v1alpha1
kind: SealedSecret
metadata:
  creationTimestamp: null
  name: mysecret
  namespace: gitops-sealed-secret-demo
spec:
  encryptedData:
    password: AgB0rhJWYqojdSVcn+49XQGnKkN+j79cza08goDBJrMd3dX7qTbgJJ+Klko929f7VUBv0LOP1gQBz/XJEMmLze4iqIHhz/w9ZDmxEOOjufTSYQy1/lztSMKb6qVt54Hj038iKbq43zIL3YgUZiF5aqqpj+F9CIoQKhsPACtM/VTN3sYHy1JwWyH6M/89uPjj/jPE9Khblm9iKIsx2BfqipR0K8fMOo9XtX+fUA4L8ORJBYKjN4yaGihnyTZV/3HKZd3gOsuL70GL7oPrBWLOh1ERVhh+dnoIv2RMPMJ94le53Fi8QWdBGI3zznPrf9fWDSwJa/76Zx3leqSTcBTwSftdcFTDpFEKd30qllav8lTMvr/jWsHKKrIZLFLZZ+tyBopHyCx3DrWoI39v9w1TilrVtL6+W4Uc/UAxdyHRLio9glWxANH+GjvLHHRrxsnGHtRqSEHNP2PeZ+EEhAKYSdOXURMWAbpIVbTiwd4NT6mD14plYx0Gxn+KLJkwhLFKhVUZPCjv+0SJhzHseW+xgNyoMHdq4bvYaICmSmmZLbMaqaPVeSWCElpiSzVCFLpYQleP6CDnnoQMRliNd84WAv9SjKRFQcuqM3NOp8gREBG05ucNKPk26UUF1+3+Xef2i9LEAkHtVDBumYjx07SUiCZ6usU2xxLaDttpOlp9xQdA/Mm9LXvCGS/N6a9pxE0Hwllo+geU/nJWgHU0LKV+9w==
    username: AgBaNDSRzBL/FqZUZXoGuttfOdecsB5Jqfiau7dJJFvqW4PLwV513Bhv9NLe59zavxg+dZe27HGszSZfbt0mDtiw4Usjk5icWnF9ZrZNAlim4cPJNslnYUxU8A5bTPsuQ9ZBJ88z2CEa7O6I08i5CpIyp6L6A2r2Y/S5Tz4YKyKbXzTAW8kBoOCsCqJ/5XsfKpgNBedP+xDYi+U3UxvET95RS/1HFPE8mTERdrqzTflNmduccgyJ34yuANFbi7YXO8UPE+4Ogcpw6LEPRKHNi4sajPbxCnAXZtiw9X30/DGF64V4RtB413U5m+3N9OrkQmK/Uq/YBsz7pr66C0JUyMAOeEdITfWEy8qtT5N4eG1PESr75zKz/n45kSXkkqbbv6WXCtFhKFd0Lrn9YHIfImgny93ZhyCjEnKRpGmno82Ut1PuykiPBCxnECORGn7+GxlWScdkRYt4Tv2c4ZctZUsSzP3Hrh1IIACMDw7smB879cXgXebKkEyZltPyyBMLN4gxcRw59Vk495LEvUAp4cteVwywPlx6mhPUX1gLMpqiXk5SXHT296C8m5sjNtGmzgx9ddDnmIzL4uL2ComtnxkENDupPyHk/FX4XFahN+FvaGZ+5hQh9eg91zN37reXY2uS8Ss019YIoFUjUBcPDA9FPpF9RoN/KzcQaZRV1PPl886ZJT6FnnjHFqdbMmSwXE5wsdu4uA==
  template:
    metadata:
      creationTimestamp: null
      name: mysecret
      namespace: gitops-sealed-secret-demo

您可以安全地將 sealedsecret.yaml 新增到您的其他清單檔案中。它只能由 Sealed Secrets 控制器解密,因為它保留了私鑰憑證(Private Key Certificate)。請確保您的佈署清單檔案參照了正確的金鑰名稱,在我們的例子中是 mysecret

spec:
  containers:
    - name: web-app
      image: 192.168.64.54:30500/web-app-sealed-secret:0.1.0
      env:
        - name: USERNAME
          valueFrom:
            secretKeyRef:
              name: mysecret
              key: username
        - name: PASSWORD
          valueFrom:
            secretKeyRef:
              name: mysecret
              key: password
      ports:
        - containerPort: 5000

提交與佈署

您可以將新的 Sealed Secret 檔案新增到您的 Git 儲存函式庫

git add k8s-manifests/sealed_secret.yaml
git commit -m "Add SealedSecret for application credentials"
git push origin <branch-name>

現在由您決定如何佈署應用程式。在我的情況下,我正在執行 ArgoCD。如果您也這樣做,您需要為 Web 應用程式準備一個應用程式清單檔案。ArgoCD 應用程式清單範例:

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: gitops-secret-example
  namespace: argocd
spec:
  project: default
  source:
    repoURL: 'git@github.com:devoriales/gitops-secret-example.git'
    path: k8s-manifests
  targetRevision: main
  destination:
    server: 'https://kubernetes.default.svc'
    namespace: gitops-sealed-secret-demo
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
    syncOptions:
      - CreateNamespace=true

如果您沒有 ArgoCD,您可以直接使用 kubectl 應用清單檔案:

kubectl apply -f k8s-manifests/

輸出:

deployment.apps/web-app configured
ingress.networking.k8s.io/web-app-ingress configured

Sealed Secrets 的優勢與限制

優勢

  • 安全性:透過加密保護敏感資訊,防止未授權存取。
  • GitOps 友善:允許將金鑰儲存在 Git 儲存函式庫並透過 GitOps 工作流程進行管理。
  • 易於使用kubeseal 工具簡化了金鑰加密過程。
  • 自動化:Sealed Secrets 控制器自動解金鑰,並建立 Kubernetes Secret 資源。

限制

  • 需要額外的控制器:需要在 Kubernetes 叢集中佈署 Sealed Secrets 控制器。
  • 金鑰輪換:金鑰輪換需要重新加密 SealedSecret 資源。
  • 私鑰管理:需要安全地管理 Sealed Secrets 控制器的私鑰。

Sealed Secrets 提供了一種安全與方便的方法來管理 Kubernetes 環境中的金鑰,並將其整合到 GitOps 工作流程中。透過加金鑰,您可以安全地將其儲存在公共儲存函式庫並確保只有 Kubernetes 叢集才能解密它們。雖然存在一些限制,但 Sealed Secrets 的優勢使其成為雲原生應用程式中金鑰管理的理想選擇。玄貓(BlackCat)建議您在評估金鑰管理方案時,將 Sealed Secrets 納入考量,以提升應用程式的安全性與可維護性。

在雲原生應用程式的開發與佈署中,金鑰管理(Secret Management)始終是一項重要的挑戰。傳統的 Kubernetes Secret 並非真正的安全,因為它們以 Base64 編碼儲存,容易被解碼。為瞭解決這個問題,Sealed Secrets 提供了一種更安全的方案,允許開發者將加密後的金鑰儲存在 Git 儲存函式庫同時確保只有 Kubernetes 叢集才能解密這些金鑰。本文將探討 Sealed Secrets 的原理、設定與實際應用。

Sealed Secrets:更安全的金鑰管理方案

Sealed Secrets 是一種 Kubernetes 控制器,它使用非對稱加密(Asymmetric Encryption)來加密 Kubernetes Secret。這種加密方式使用公鑰(Public Key)加密,私鑰(Private Key)解密,確保只有擁有私鑰的 Kubernetes 叢集才能解金鑰。這使得開發者可以安全地將 SealedSecret 的 YAML 檔案儲存在公開的 Git 儲存函式庫而不用擔心敏感資訊外洩。

Sealed Secrets 的運作原理

Sealed Secrets 的核心在於其非對稱加密機制。以下是其運作原理:

  1. 產生金鑰對(Key Pair): Sealed Secrets 控制器在啟動時會產生一對公鑰和私鑰。
  2. 公鑰加密(Public Key Encryption): 開發者使用公鑰加密 Kubernetes Secret,生成 SealedSecret 物件。
  3. 儲存 SealedSecret: SealedSecret 物件可以安全地儲存在 Git 儲存函式庫
  4. 私鑰解密(Private Key Decryption): Sealed Secrets 控制器監聽 SealedSecret 物件的建立,並使用私鑰解密,生成 Kubernetes Secret。

由於私鑰只存在於 Kubernetes 叢集中,因此只有叢集才能解密 SealedSecret,確保金鑰的安全性。

設定 Sealed Secrets

以下是在 Kubernetes 叢集中設定 Sealed Secrets 的步驟:

  1. 安裝 Sealed Secrets 控制器: 可以使用 Helm 或 YAML 檔案安裝 Sealed Secrets 控制器。
  2. 取得公鑰憑證(Public Key Certificate): 取得 Sealed Secrets 控制器的公鑰憑證,用於加密 Kubernetes Secret。
  3. 建立 SealedSecret: 使用 kubeseal CLI 工具或 YAML 檔案建立 SealedSecret。
  4. 佈署 SealedSecret: 將 SealedSecret 佈署到 Kubernetes 叢集。

建立和加密 Kubernetes 金鑰

首先,你需要一個 Kubernetes Secret。你可以使用 kubectl 命令建立一個:

kubectl create secret generic mysecret \
  --from-literal=username=admin \
  --from-literal=password=supersecretpassword \
  -o yaml --dry-run=client | kubeseal --format yaml > sealedsecret.yaml

這個命令會建立一個名為 mysecret 的 Kubernetes Secret,包含 usernamepassword 兩個鍵值對。然後,它會使用 kubeseal 工具將這個 Secret 加密成 SealedSecret,並儲存到 sealedsecret.yaml 檔案中。

將 SealedSecret 清單提交到 Git 倉函式庫現在,你可以將 sealedsecret.yaml 檔案提交到你的 Git 倉函式庫於 SealedSecret 已經被加密,因此即使檔案被公開,也不會洩漏敏感資訊。

透過 ArgoCD 佈署應用程式

如果你的 Kubernetes 叢集使用 ArgoCD 進行佈署,你可以將 SealedSecret 的 YAML 檔案新增到 ArgoCD 的應用程式清單中。ArgoCD 會自動將 SealedSecret 佈署到 Kubernetes 叢集,並由 Sealed Secrets 控制器解密成 Kubernetes Secret。

驗證網頁應用程式和金鑰值

佈署完成後,你可以驗證你的網頁應用程式是否正常執行,並且金鑰值是否正確。你可以檢查 Kubernetes Secret 是否已成功建立,並驗證應用程式是否可以正常讀取金鑰。

Sealed Secrets 的優勢與限制

Sealed Secrets 提供了許多優勢,包括:

  • 安全性: 使用非對稱加密保護金鑰,防止敏感資訊外洩。
  • GitOps 友善: 允許將加密後的金鑰儲存在 Git 儲存函式庫符合 GitOps 原則。
  • 易於使用: 提供簡單易用的 CLI 工具,方便建立和管理 SealedSecret。

然而,Sealed Secrets 也有一些限制:

  • 需要額外的控制器: 需要在 Kubernetes 叢集中安裝 Sealed Secrets 控制器。
  • 金鑰管理: 需要妥善管理 Sealed Secrets 控制器的私鑰。

解密 Sealed Secret 的方法

雖然 Sealed Secrets 的主要目的是保護金鑰,但在某些情況下,你可能需要解密 Sealed Secret。以下是解密 Sealed Secret 的步驟:

  1. 取得私鑰: 從 Sealed Secrets 控制器所在的名稱空間取得私鑰。
  2. 使用 kubeseal 解密: 使用 kubeseal CLI 工具和私鑰解密 SealedSecret。

Sealed Secrets 提供了一種安全、可靠的 Kubernetes 金鑰管理方案,特別適合遵循 GitOps 原則的團隊。透過使用 Sealed Secrets,開發者可以安全地將加密後的金鑰儲存在 Git 儲存函式庫同時確保只有 Kubernetes 叢集才能解密這些金鑰。這不僅提高了金鑰的安全性,也簡化了金鑰管理的流程。在實際應用中,請務必妥善管理 Sealed Secrets 控制器的私鑰,並定期更新金鑰,以確保金鑰的安全性。透過本文的介紹,相信您已對 Sealed Secrets 有更深入的瞭解,並能在您的 Kubernetes 環境中安全地管理金鑰。