ワークロード・アイデンティティを使用した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 Container Registryでリポジトリを作成する権限。
Allow group <your_group> to manage repos in tenancy -
OKEクラスタを管理するためのArgoCDに対する権限。
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- ユーザー:
- アイデンティティ・ドメインを使用する場合:
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のインストール
-
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が使用されます。ポート転送にのみ追加の端末を使用します。-
2つ目の端末で、次のコマンドを実行します。
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
G36153-02