워크로드 ID를 사용하여 ArgoCD에서 Oracle Cloud Infrastructure Kubernetes Engine 클러스터 관리
소개
ArgoCD는 Kubernetes를 위한 선언적 GitOps 지속적 제공 도구입니다. 이 튜토리얼을 작성할 때 ArgoCD에는 Oracle Cloud Infrastructure Kubernetes Engine(OKE)에 대한 액세스 토큰을 생성하는 데 필요한 OCI CLI(Oracle Cloud Infrastructure Command Line Interface) 기능이 없으므로 사용자정의 ArgoCD 이미지가 필요합니다.
주: 사용자정의 이미지에 사용된 기본 ArgoCD 이미지는
quay.io/argoproj/argocd:v3.1.1입니다.
목표
-
OCI CLI를 포함하는 사용자정의 ArgoCD 이미지를 생성합니다.
-
사용자 정의 이미지를 사용하여 향상된 OKE 클러스터에 ArgoCD를 설치합니다.
-
execProviderConfig를 사용하여 ArgoCD 클러스터 목록에 OKE 클러스터를 추가합니다. -
ArgoCD에서 대상 OKE 클러스터에 앱을 배치합니다.
필수 조건
-
Podman 또는 Docker 및
argocdCLI를 설치합니다. -
ArgoCD를 설치하기 위한 OKE 고급 클러스터입니다.
주: 고급 클러스터에는 작업 로드 ID만 사용할 수 있습니다.
-
ArgoCD에서 관리할 OKE 클러스터입니다.
-
OCI 사용자의 인증 토큰(OCI 콘솔에서 사용자 프로파일로 이동하고 Auth 토큰을 누름)은 활성화하는 데 최대 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: ArgoCD로 관리하려는 클러스터를 포함하는 컴파트먼트 OCID여야 합니다.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 .주: 명령 끝에 있는 점(.)은 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- 사용자:
- ID 도메인이 사용되는 경우:
your_tenancy_namespace/OracleIdentityCloudService/your_email - 기본 도메인이 사용되는 경우:
your_tenancy_namespace/your_email.
- ID 도메인이 사용되는 경우:
- 비밀번호는 OCI 인증 토큰입니다.
- 사용자:
-
다음 명령을 실행합니다.
podman push ocir.**your_region**.oci.oraclecloud.com/**your_tenancy_namespace**/**your_repository_name**/argocd-oci:01
작업 2: 사용자 정의 이미지를 사용하여 ArgoCD 설치
-
argo-cd/manifests/install.yaml에서 ArgoCD 매니페스트를 다운로드하여 설치합니다.
-
파일을 편집하여 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 -
다음 명령을 사용하여 로그인합니다(사용자는 admin, 암호는 이전 명령의 암호임).
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: 앱을 배치할 클러스터의 이름입니다.
-
다음 명령을 사용하여 대상 클러스터에 간단한 앱을 배치하려면 파일을 적용합니다.
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
G36154-02