使用工作負載識別管理 ArgoCD 中的 Oracle Cloud Infrastructure Kubernetes Engine 叢集
簡介
ArgoCD 是適用於 Kubernetes 的宣告式 GitOps 持續傳遞工具。撰寫本教學課程時,ArgoCD 沒有產生 Oracle Cloud Infrastructure Kubernetes Engine (OKE) 存取權杖所需的 Oracle Cloud Infrastructure 命令行介面 (OCI CLI) 功能,因此需要自訂 ArgoCD 映像檔。
注意:用於自訂影像的基本 ArgoCD 影像是
quay.io/argoproj/argocd:v3.1.1。
目標
-
建立包含 OCI CLI 的自訂 ArgoCD 映像檔。
-
使用自訂影像在增強式 OKE 叢集上安裝 ArgoCD。
-
使用
execProviderConfig將 OKE 叢集新增至 ArgoCD 叢集清單。 -
從 ArgoCD 在目標 OKE 叢集上部署應用程式。
必備條件
-
安裝 Podman 或 Docker 和
argocdCLI。 -
用於安裝 ArgoCD 的 OKE 增強型叢集。
注意:您只能在增強型叢集使用工作負載識別。
-
由 ArgoCD 管理的 OKE 叢集。
-
您 OCI 使用者的認證權杖 (從 OCI 主控台,前往您的使用者設定檔並按一下認證權杖 ),最多可能需要 5 分鐘的時間才能啟用。
-
您的 OCI 使用者在 OCI 容器登錄中建立儲存區域的權限。
Allow group <your_group> to manage repos in tenancy -
ArgoCD 管理 OKE 叢集的權限。
allow any-user to manage all-resources in compartment <compartment_ocid> where all { request.principal.type='workload', request.principal.cluster_id = '<cluster_ocid>', request.principal.namespace = 'argocd', request.principal.service_account = 'argocd-application-controller' }注意:此原則太開放,但您可以視需要將其設為限制。
- 取代原則:
compartment_ocid:這應該是區間 OCID,其中包含您要使用 ArgoCD 管理的叢集。cluster_ocid:這應該是您要管理其他叢集的來源叢集 OCID。具有 ArgoCD 的項目。
- 取代原則:
工作 1:將 ArgoCD 自訂映像檔推送至 OCI 容器登錄
注意:您可以使用 Podman 或 docker。
-
建立
Dockerfile,其中包含:FROM quay.io/argoproj/argocd:v3.1.1 USER root RUN apt-get update; \ apt-get install -y --no-install-recommends python3-venv; \ python3 -m venv /opt/oci; \ /opt/oci/bin/pip install --no-cache-dir --upgrade pip; \ /opt/oci/bin/pip install --no-cache-dir "oci-cli==3.65.0"; \ ln -s /opt/oci/bin/oci /usr/local/bin/oci; \ apt-get clean; \ rm -rf /var/lib/apt/lists/* USER 999 -
在包含 'Dockerfile' 的資料夾內執行下列命令。
podman build --platform linux/amd64 -t argocd-oci:01 .注意:命令結尾的 dot (.) 是用於 Dockerfile 所在的目前目錄。
-
執行下列命令。
podman tag argocd-oci:01 ocir.**your_region**.oci.oraclecloud.com/**your_tenancy_namespace**/**your_repository_name**/argocd-oci:01 -
執行下列命令。
podman login ocir.**your_region**.oci.oraclecloud.com- 使用者為:
- 如果使用識別網域:
your_tenancy_namespace/OracleIdentityCloudService/your_email。 - 如果使用預設網域:
your_tenancy_namespace/your_email。
- 如果使用識別網域:
- 密碼是您的 OCI 認證權杖。
- 使用者為:
-
執行下列命令。
podman push ocir.**your_region**.oci.oraclecloud.com/**your_tenancy_namespace**/**your_repository_name**/argocd-oci:01
工作 2:使用自訂影像安裝 ArgoCD
-
從此處下載並安裝 ArgoCD 清單: argo-cd/manifests/install.yaml 。
-
編輯檔案以將 ArgoCD 影像取代為我們的自訂影像。
- 從圖片更改:
quay.io/argoproj/argocd - 圖像:
ocir.**your_region**.oci.oraclecloud.com/**your_tenancy_namespace**/**your_repository_name**/argocd-oci:01
- 從圖片更改:
-
執行下列命令以建立
argocd命名空間。kubectl create namespace argocd -
執行下列命令以部署
argocd。kubectl apply -f install.yaml -n argocd
工作 3:新增叢集至 ArgoCD 叢集清單
-
啟動 ArgoCD。
注意:您可以使用 OCI 負載平衡器來顯示 ArgoCD。此範例將改用
port-forward。只對連接埠轉送使用額外的終端機。-
在第二個終端機中,執行下列指令。
kubectl port-forward service/argocd-server -n argocd 63265:80注意:請勿關閉此終端機,請切換至先前的終端機,因為這是用來讓 ArgoCD 保持在最新狀態。
-
使用下列命令取得 ArgoCD 管理員密碼。
kubectl get secret -n argocd argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d -
使用下列指令登入 (使用者為管理,密碼為上一個指令中的密碼)。
argocd login 127.0.0.1:63265
-
-
從下列網址下載並編輯名為
add_cluster.yaml的檔案:add_cluster.yaml :注意:此範例使用不安全的 TLS,可以加以變更。
cluster_name:將出現在 ArgoCD 叢集清單中的叢集名稱。cluster_api_endpoint:要新增至 ArgoCD 叢集清單的叢集端點。cluster_ocid:要新增至 ArgoCD 叢集清單之叢集的 OCID。region:叢集所在的區域。
-
使用下列命令,套用檔案以在 ArgoCD 叢集清單中新增叢集。
kubectl apply -f add_cluster.yaml -
檢查叢集是否已使用下列命令新增至 ArgoCD 叢集清單。
argocd cluster list
工作 4:透過將應用程式從 ArgoCD 部署到叢集進行測試
-
請從此處下載並編輯名為
deploy_example.yaml的檔案:deploy_example.yaml 。cluster_name:您要部署應用程式的叢集名稱。
-
使用下列命令套用檔案,將簡單 App 部署至目標叢集。
kubectl apply -f deploy-example.yaml -
檢查是否使用下列命令順利部署應用程式。
argocd app list argocd app sync guestbook
確認
- 作者 - Gabriel Feodorov (資深雲端工程師)
其他學習資源
在 docs.oracle.com/learn 上探索其他實驗室,或在 Oracle Learning YouTube 頻道上存取更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。
如需產品文件,請造訪 Oracle Help Center 。
Manage Oracle Cloud Infrastructure Kubernetes Engine Clusters in Argo CD using Workload Identity
G36157-02