Cover Image

DevOps Deploy と Argo CD を使った GitOps

2023/12/27 - 読み終える時間: 8 分

GitOps with DevOps Deploy and Argo CD の翻訳版です。

DevOps Deploy と Argo CD を使った GitOps

2023年12月14日

Thomas Neal / Lead Software Engineer I - HCL Continuous Delivery

前提条件

DevOps DeployでArgo CDのデプロイを始める前に、以下の項目を設定する必要があります。

GitHub リポジトリ

デプロイする予定のKubernetesリソース定義ファイルを含むGitHubリポジトリが必要です。

Argo CDサーバ

Argo CDサーバーにアクセスする必要があります。Argo CDのインストール方法については、https://argo-cd.readthedocs.io/en/stable/getting_started/ を参照してください。GitHub リポジトリを参照する Argo CD アプリケーションが Argo CD サーバーに存在する必要があります。

Argo CD CLI

Argo CD CLI を DevOps Deploy エージェント マシンにインストールする必要があります。CLI のインストールについては https://argo-cd.readthedocs.io/en/stable/cli_installation/for の説明を参照してください。

Kubernetes/OpenShift クラスタで動作するコンテナ化された DevOps Deploy エージェントに Argo CD CLI をインストールする場合は、必ず persisted conf ディレクトリにインストールしてください。それ以外の場所にインストールすると、ポッドが再起動されたときに失われてしまいます。また、CLIの実行ファイルに実行権限が設定されていることを確認してください。

DevOps Deploy Dockerソースと自動化プラグイン

DevOps Deploy Dockerソースと自動化プラグインをDevOps Deployサーバにロードする必要があります。Docker自動化プラグインはソースプラグインに依存しているため、最初にDockerソースプラグインをロードする必要があります。

Dockerソースプラグインはhttps://urbancode.github.io/IBM-UCx-PLUGIN-DOCS/UCD/#docker-registry からダウンロードできます。

画像の説明

Docker自動化プラグインは、https://urbancode.github.io/IBM-UCx-PLUGIN-DOCS/UCD/#docker からダウンロードできる。

画像の説明

DevOps Deploy Argo CD オートメーションプラグイン

DevOps Deploy Argo CD自動化プラグインをDevOps Deployサーバにロードする必要があります。Argo CD プラグインは https://urbancode.github.io/IBM-UCx-PLUGIN-DOCS/UCD/#argocd からダウンロードできます。

画像の説明

Argo CD アプリケーションの作成

Argo CDサーバにログインし、ソースのGitHubリポジトリとKubernetesリソースをデプロイしたいデスティネーションのKubernetes/OpenShiftクラスタを参照する新しいアプリケーションを作成します。アプリケーションの同期ポリシーを手動に設定します。Argo CDアプリケーションが既に存在する場合は、このステップをスキップできます。

DevOps Deploy アプリケーションと関連リソースの作成

DevOps Deployサーバにログインし、新しいアプリケーションを作成します。このアプリケーションは、Argo CDアプリケーション経由でKubernetesリソースをデプロイするために使用されます。

画像の説明

新しいDevOps Deployアプリケーションで環境を作成します。以前にArgo CD CLIをインストールしたDevOps Deployエージェントを、この新しいDevOps Deploy環境のリソースツリーに追加します。

画像の説明

画像の説明

DevOps Deploy コンポーネントの作成

ArgoCD コンポーネント テンプレートを使用して、新しい DevOps Deploy コンポーネントを作成します。argocd.server、argocd.user、argocd.password、argocd.application.name など、必要なコンポーネントのプロパティを入力します。argocd.global.flags フィールドに、-config=../argocd.config --insecure などの必要な Argo CD CLI グローバルフラグを指定します。各グローバルフラグを必ず 1 行で指定してください。Argo CD CLI がエージェントの PATH に含まれるディレクトリにインストールされていない場合は、argocd.cmd.path にその場所を指定します。

画像の説明

画像の説明

新しいDevOps Deployコンポーネントが作成されたら、それを新しいDevOps Deployアプリケーションに追加する。また、DevOps Deployアプリケーション環境リソースツリーのDevOps Deployエージェントの下に新しいコンポーネントへの参照を追加します。

画像の説明

画像の説明

画像の説明

DevOps Deployアプリケーション・プロセスの作成

Argo CD サーバにアプリケーション同期要求を送信する新しい DevOps Deploy アプリケーション プロセスを作成します。新しい DevOps Deploy アプリケーションの[Processes]タブに移動し、[Create Process]ボタンをクリックします。Name] フィールドと [Description] フィールドに値を指定し、[Save] をクリックします。

画像の説明

Process Design ペインで、Run Operational Process for Multiple Components ステップをパレットにドラッグします。ステップを編集します。Name] フィールドに Sync And Run Tests を指定します。Component Tag フィールドに ArgoCD を選択します。Component Process フィールドに Sync And Run Tests を指定します。OK ボタンをクリックして、ステップの変更を保存します。Save をクリックして、新しいアプリケーション プロセスのデザインを保存します。

画像の説明

画像の説明

Sync And Run Tests という名前のコンポーネント プロセスが ArgoCD コンポーネント テンプレートに含まれています。Argo CD CLI を呼び出して Argo CD アプリケーションを同期する App Sync ステッ プの後に、Run Tests というシェル ステップがあります。このステップは、Kubernetesアプリケーションが正常にデプロイされたことを検証するために必要なテストを実行するように変更できます。Run TestsステップのステータスがFailureの場合、App Rollbackステップが呼び出され、以前のアプリケーション状態にロールバックされます。Run TestsステップのステータスがSuccessの場合、Sync And Run Testsプロセスは成功したステータスで終了します。

画像の説明

DevOps Deploy デプロイメント・トリガーの作成

アプリケーション・プロセスが作成されたので、アプリケーションに追加したコンポーネントに新しいコンポーネント・バージョンが作成されるたびに呼び出される新しいDeployment Triggerを作成する必要があります。DevOps Deployアプリケーション環境設定を編集する。環境構成のDeployment Triggersセクションを選択し、Create Deployment Triggerボタンをクリックします。上記で作成した新しいDevOps Deployコンポーネントとアプリケーション・プロセス、およびアプリケーション・プロセスを実行するDevOps Deployユーザを指定します。

画像の説明

GitHub リポジトリでの GitHub Actions ワークフローの設定

GitHub リポジトリに、リポジトリのメインブランチに変更がプッシュされたときにトリガーされる新しい GitHub Actions ワークフローを作成します。このワークフローがトリガーされると、新しい DevOps Deploy コンポーネント・バージョンが作成されます。新しいコンポーネント バージョンが作成されると、Argo CD CLI への app-sync 呼び出しを呼び出すアプリケーション プロセスがトリガーされ、GitHub リポジトリで定義された Kubernetes リソースがデプロイされます。

GitHubリポジトリに、.github/workflows/CreateDevOpsDeployCompVersion.ymlという名前の新しいファイルを作成します。内容は、https://github.com/HCL-TECH-SOFTWARE/devops-deploy-createcomponentversion-action の「使用例」セクションから取得する必要があります。

例の以下の入力プロパティを、DevOps Deployインスタンス固有の値で更新します。

  • component - DevOps Deployのコンポーネントの名前またはID。
  • hostname - DevOps Deployサーバのホスト名またはIP。
  • port - DevOps Deployサーバのポート番号。デフォルトは8443。
  • authToken - DevOps Deployサーバとの認証に使用する認証トークン。

この例では、DEVOPS_DEPLOY_AUTHTOKENという名前のシークレットを使用しています。このシークレットは、GitHubリポジトリのSettings->Secrets and variables->Actionsで定義されています。

以下のワークフロー例では、変更が master ブランチにプッシュされたときにこの処理を実行するようにしています。GitHub リポジトリで別のブランチを使用している場合は、この値を変更する必要があります。

画像の説明

GitHub リポジトリの更新と変更のデプロイ

これで、GitHub リポジトリの指定したブランチに変更がプッシュされるたびに、DevOps Deploy が Argo CD に対してアプリケーションの同期リクエストを開始するようにすべてが設定されました。Argo CDはどのような変更が行われたかをチェックし、宛先のKubernetes/OpenShiftクラスタに適用します。

GitHubリポジトリ内のKubernetesリソースファイルの1つに変更を加えます。例えば、デプロイメントやステートフルセットのリソースファイルのレプリカカウントを変更し、変更をプッシュします。新しいDevOps Deployコンポーネントのバージョンが作成されていることを確認します。

画像の説明

次に、Argo CD アプリケーション同期要求を呼び出す DevOps Deploy アプリケーション・プロセスが実行され、正常に完了したことを確認します。DevOps Deployアプリケーションに移動し、Historyタブを選択します。

画像の説明

プロセス リクエスト行の末尾にある省略記号(Actions)をクリックし、[View Request]を選択します。実行ログを展開し、プロセスリクエストで実行されたすべてのステップを表示します。

画像の説明

また、Argo CD UIでアプリケーションを確認し、GitHubリポジトリで行った変更に合わせてKubernetesリソースが更新されたことを確認できます。下の画像の右下の部分にKubeToyポッドが2つ表示されていることに注意してください。

画像の説明


このブログについて

HCL Japan の Software 部門の複数担当者で HCL Software 全般について記しています。

Tags

Academy Accelerate Accelerator Actian Aftermarket Cloud Ambassador AoC AppDev Pack AppScan ASoC BigFix BigFix Workspace CAA CDP Clara Client Applicatin Access Cloud Native Commerce Common Local License Server Compass Connections Connnections CVE-2021-44228 DevOpes Velocity DevOps DevOps Code ClearCase DevOps Code RealTime DevOps Deploy DevOps.Launch.AppScan DevOps Model RealTim DevOps Model RealTime DevOps Plan DevOps Test DevOps Velocity Digital Experience Discover Domino Domino Leap Domino Volt Domino管理者アップデート認定試験対策 DQL DRYiCE DX Enterprise Integrator event General HCAA HCL Ambassador HCL Ambassadors HCL Domino REST API HCL OneTest Embedded HCL Z and I Emulator HCL Z and I Emulator for Transformation HCLSoftware U Hero history HTMO iControl iNotes IZSAM KEEP Launch Launch.DevOps Leap Link MarvelClient nds2019 ndv12beta Noets/Domino Nomad Nomad Mobile Nomad Web notes Notes/Domino notes-domino-9-10-limited-supportability-as-of-202204 Notes/Domino V12 Notes/Domion notescons Now OneDB OneTest OnTime REST RTist SafeLinx Sametime SoFy Total Experience Traveler Traveler for Microsoft Outlook Unica Unica Discover Unica Interact UrbanCode Deploy UrbanCode Velocity Velocity Verse VersionVault Volt Volt MX Volt MX Go Volt MX サンプルアプリ Wordload Automation Workload Automation youtube Z Z Abend Investigator Z and I Emulator Z and I Emulator for Transformation Z and I Emulator for Web Z and I Emulator for Web Client Z Asset Optimizer Z Data Tools Z Software Asset Manager ZAI ZAO ZIE ZIE for Transformation ZIE for Web ZIE for Windows ZIET ZIETrans ZIEWeb イベント ガイド クラウド サポート サポート技術情報 サポート終了 セキュリティ セキュリティー セキュリティー脆弱性 テクてく Lotus 技術者夜会 ニュース ノーツコンソーシアム パートナー ライセンス 九州地区 Notes パートナー会 出荷日 研修