部署流程

從匯入 OVA 到推送 Sealed Secrets,確保 Argo CD 正確部署最新設定。

本指南整理現場已取得預配置 OVA 後的完整部署流程,說明虛擬機、Kubernetes Secrets 與 GitHub 儲存庫如何搭配,將設定安全地送交 Argo CD。

前置條件

  • 已在支援的 Hypervisor 中匯入官方提供的 OVA 並準備啟動。
  • 從虛擬機內可存取 Kubernetes 叢集(kubeconfig 就緒且叢集狀態為 Ready)。
  • 已安裝 kubectlkubeseal,且叢集中 kube-system/sealed-secrets 控制器運作正常。
  • 取得 GHCR 認證資訊、必要的環境變數,以及建置 TLS 憑證所需的檔案。

流程總覽

  1. 匯入並啟動 OVA 虛擬機。
  2. 調整網路設定,確認虛擬機可連線至 GitHub、GHCR 與叢集 API。
  3. 在虛擬機內封裝密碼與金鑰,更新 values.yaml
  4. 推送變更至 GitHub,交由 Argo CD 套用到叢集。

以下章節依序說明各步驟的細節與注意事項。

Step 01. 匯入並驗證 OVA

  • 在客戶端 Hypervisor 依原樣匯入 OVA,不需修改虛擬硬體設定。
  • 開機後檢查 CPU、RAM 與磁碟容量是否符合專案建議值。
  • 更新系統時間並確認已套用最新安全修補(若有內部流程)。

Step 02. 建立穩定的網路連線

  • 為虛擬機選擇具有外部連線能力的 VLAN,依需求設定靜態 IP、Gateway 與 DNS。
  • 使用 ping github.comcurl -I https://ghcr.ionc -vz 等指令確認必須服務可達。
  • 若環境具備 Proxy 或防火牆,記錄開放的連線埠與例外規則,以利後續排障。

Step 03. 封裝敏感資訊並更新 values.yaml

  1. 彙整原始值:包含應用程式環境變數、GHCR 認證、TLS 憑證等。

  2. 建立暫存 Secret:在目標命名空間以 kubectl create secret ... --dry-run=client -o yaml 建立 YAML,例如:

    kubectl create secret docker-registry ghcr-secret \
      --docker-server=ghcr.io \
      --docker-username="${GHCR_USERNAME}" \
      --docker-password="${GHCR_TOKEN}" \
      --docker-email="${GHCR_EMAIL}" \
      --namespace <target-namespace> \
      --dry-run=client -o yaml > ghcr-secret.yaml
    
  3. 透過 kubeseal 產生密封結果

    kubeseal \
      --controller-namespace kube-system \
      --controller-name sealed-secrets \
      --namespace <target-namespace> \
      --format yaml \
      -f ghcr-secret.yaml > ghcr-secret-sealed.yaml
    

    重複處理所有需要保密的項目,僅將密封後的檔案留存於儲存庫。

  4. 更新組態:將密封內容複製至 chart 的 values.yaml 對應欄位,例如:

    secrets:
      dockerconfigjson: AgB4ncK...
      tlscrt: AgALJbB...
      tlskey: AgA21UF...
    
  5. 清除暫存檔案:完成後移除未加密的 YAML 或明文憑證,避免外洩。

Step 04. 推送至 GitHub 並確認部署

  1. 使用 yqhelm template 檢查 values.yaml 語法是否正確。
  2. 將變更提交至 Argo CD 監控的分支,再推送到遠端儲存庫。
  3. 在 Argo CD 介面確認 Application 狀態為 Synced 並保持 Healthy
  4. 透過 kubectl get pods 或應用程式健康檢查,確保新設定成功套用。

若已啟用 argocd-image-updater,記得同步檢視映像版本是否符合預期。

驗證清單

  • 虛擬機可正常連線至 GitHub、GHCR 與叢集 API。
  • kube-system/sealed-secrets 控制器狀態為 Ready
  • 所有密封 Secrets 已更新到 values.yaml 並移除暫存明文檔。
  • Argo CD Application 顯示 Synced / Healthy
  • 新版 Pod 正常啟動且載入預期的環境變數與憑證。

依循以上步驟,可在確保敏感資訊安全的前提下,快速完成一次部署或更新。