注意:
- 本教程需要访问 Oracle Cloud。要注册免费账户,请参阅开始使用 Oracle Cloud Infrastructure 免费套餐。
- 它使用 Oracle Cloud Infrastructure 身份证明、租户和区间的示例值。完成实验室时,请将这些值替换为特定于云环境的值。
使用工作负载身份管理 Argo CD 中的 Oracle Cloud Infrastructure Kubernetes Engine 集群
简介
Argo CD 是 Kubernetes 的声明式 GitOps 持续交付工具。在编写本教程时,Argo CD 不具有为 Oracle Cloud Infrastructure Kubernetes Engine (OKE) 生成访问令牌所需的 Oracle Cloud Infrastructure 命令行界面 (OCI CLI) 功能,因此需要定制 Argo CD 映像。
注:用于定制映像的基本 Argo CD 映像为
quay.io/argoproj/argocd:v2.14.9
。
目标
-
创建包含 OCI CLI 的定制 Argo CD 映像。
-
使用定制映像在增强的 OKE 群集上安装 Argo CD。
-
使用
execProviderConfig
将基本 OKE 群集添加到 Argo CD 群集列表。 -
从 Argo CD 在基本集群上部署应用。
先决条件
-
安装 Podman 或 Docker 以及
argocd
CLI。 -
用于安装 Argo CD 的 OKE 增强群集。
注:只能将工作量身份用于增强集群。
-
由 Argo CD 管理的 OKE 集群。
-
OCI 用户的验证令牌(从 OCI 控制台转到您的用户概要信息并单击验证令牌),最多需要 5 分钟才能激活。
-
OCI 用户在 OCI 容器注册表中创建存储库的权限。
Allow group <your_group> to manage repos in tenancy
-
Argo CD 管理 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
:这应该是包含要使用 Argo CD 管理的集群的区间 OCID。cluster_ocid
:这应该是要从中管理其他集群的集群 OCID。那个有 Argo CD 的人request.principal.namespace
:这是部署 Argo CD 的名称空间。request.principal.service_account
:这是 Argo CD 应用程序控制器(负责群集验证的控制器)的服务帐户。
- 策略中的替换:
任务 1:将 Argo CD 定制映像推送到 OCI Container Registry
注意:您可以使用 Podman 或 docker。
-
从以下位置下载名为
Dockerfile
的文件: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:使用定制映像安装 Argo CD
注:仅更新
argocd-application-controller
的映像,因为这负责群集验证。
-
从此处下载并安装 Argo CD 清单: argo-CD/manifests/install.yaml 。
-
编辑文件以更改
argocd-application-controller
的图像。- 更改自图像:
quay.io/argoproj/argocd:latest
- 图片来源:
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:将集群添加到 Argo CD 集群列表
-
启动 Argo CD。
注:您可以使用 OCI 负载平衡器公开 Argo CD。对于此示例,将改用
port-forward
。为此,您需要一个仅用于端口转发的附加终端。-
在第二个终端中,运行以下命令。
kubectl port-forward service/argocd-server -n argocd 63265:80
注:请不要关闭此终端,请切换到上一个终端,因为此终端用于保持 Argo CD 的正常运行。
-
使用以下命令获取 Argo CD 管理员密码。
kubectl get secret -n argocd argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d
-
使用以下命令登录(用户是 admin,密码是上一个命令中的密码)。
argocd login 127.0.0.1:63265
-
-
从以下位置下载并编辑名为
add_cluster.yaml
的文件:add_cluster.yaml :注:此示例使用不安全的 TLS,可以对其进行更改。
cluster_name
:将显示在 Argo CD 群集列表中的群集的名称。cluster_api_endpoint
:要添加到 Argo CD 集群列表的集群的端点。cluster_ocid
:要添加到 Argo CD 集群列表的集群的 OCID。region
:群集所在的区域。
-
使用以下命令应用该文件以将群集添加到 Argo CD 群集列表中。
kubectl apply -f add_cluster.yaml
-
使用以下命令检查集群是否已添加到 Argo CD 集群列表中。
argocd cluster list
任务 4:通过将应用程序从 Argo CD 部署到集群进行测试
-
从以下位置下载并编辑名为
deploy_example.yaml
的文件:deploy_example.yaml 。cluster_name
:要部署应用程序的集群的名称。
-
使用以下命令应用该文件以将简单应用程序部署到目标集群。
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 帮助中心。
Manage Oracle Cloud Infrastructure Kubernetes Engine Clusters in Argo CD using Workload Identity
G36156-01
Copyright ©2025, Oracle and/or its affiliates.