使用 Workload Identity 在 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

目标

Prerequisites

任务 1:将 ArgoCD 定制映像推送到 OCI 容器注册表

注意:您可以使用 Podman 或 docker。

  1. 创建包含以下内容的 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
  2. 在包含 'Dockerfile' 的文件夹中运行以下命令。

    podman build --platform linux/amd64 -t argocd-oci:01 .

    注:命令末尾的 dot (.) 用于 Dockerfile 所在的当前目录。

  3. 运行以下命令。

    podman tag argocd-oci:01 ocir.**your_region**.oci.oraclecloud.com/**your_tenancy_namespace**/**your_repository_name**/argocd-oci:01
  4. 运行以下命令。

    podman login ocir.**your_region**.oci.oraclecloud.com
    • 用户为:
      • 如果使用身份域:your_tenancy_namespace/OracleIdentityCloudService/your_email
      • 如果使用缺省域:your_tenancy_namespace/your_email
    • 密码是 OCI 验证令牌。
  5. 运行以下命令。

    podman push ocir.**your_region**.oci.oraclecloud.com/**your_tenancy_namespace**/**your_repository_name**/argocd-oci:01

任务 2:使用定制映像安装 ArgoCD

  1. 从此处下载并安装 ArgoCD 清单: argo-cd/manifests/install.yaml

  2. 编辑文件以将 ArgoCD 映像替换为定制映像。

    • 更改自图像:quay.io/argoproj/argocd
    • 图片来源:ocir.**your_region**.oci.oraclecloud.com/**your_tenancy_namespace**/**your_repository_name**/argocd-oci:01
  3. 运行以下命令以创建 argocd 名称空间。

    kubectl create namespace argocd
  4. 运行以下命令以部署 argocd

    kubectl apply -f install.yaml -n argocd

任务 3:向 ArgoCD 群集列表添加群集

  1. 启动 ArgoCD。

    注:您可以使用 OCI 负载平衡器公开 ArgoCD。对于此示例,将改用 port-forward。仅将附加终端用于端口转发。

    1. 在第二个终端中,运行以下命令。

      kubectl port-forward service/argocd-server -n argocd 63265:80

      注:请不要关闭此终端,请切换到上一个终端,因为此终端用于保持 ArgoCD 正常运行。

    2. 使用以下命令获取 ArgoCD 管理员密码。

      kubectl get secret -n argocd argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d
    3. 使用以下命令登录(用户是 admin,密码是上一个命令中的密码)。

      argocd login 127.0.0.1:63265
  2. 从以下位置下载并编辑名为 add_cluster.yaml 的文件:add_cluster.yaml

    注:此示例使用不安全的 TLS,可以对其进行更改。

    • cluster_name将出现在 ArgoCD 群集列表中的群集的名称。
    • cluster_api_endpoint要添加到 ArgoCD 群集列表的群集的端点。
    • cluster_ocid要添加到 ArgoCD 群集列表的群集的 OCID。
    • region群集所在的区域。
  3. 使用以下命令应用该文件以将群集添加到 ArgoCD 群集列表中。

    kubectl apply -f add_cluster.yaml
  4. 使用以下命令检查是否已将群集添加到 ArgoCD 群集列表中。

    argocd cluster list

任务 4:通过将应用程序从 ArgoCD 部署到集群进行测试

  1. 从以下位置下载并编辑名为 deploy_example.yaml 的文件:deploy_example.yaml

    • cluster_name要部署应用程序的集群的名称。
  2. 使用以下命令应用该文件以将简单应用程序部署到目标集群。

    kubectl apply -f deploy-example.yaml
  3. 使用以下命令检查应用程序是否已成功部署。

    argocd app list
    argocd app sync guestbook

确认

更多学习资源

通过 docs.oracle.com/learn 浏览其他实验室,或者通过 Oracle Learning YouTube 频道访问更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 以成为 Oracle Learning Explorer。

有关产品文档,请访问 Oracle 帮助中心