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のデプロイを始める前に、以下の項目を設定する必要があります。
デプロイする予定のKubernetesリソース定義ファイルを含むGitHubリポジトリが必要です。
Argo CDサーバーにアクセスする必要があります。Argo CDのインストール方法については、https://argo-cd.readthedocs.io/en/stable/getting_started/ を参照してください。GitHub リポジトリを参照する Argo CD アプリケーションが Argo CD サーバーに存在する必要があります。
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自動化プラグインはソースプラグインに依存しているため、最初に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 プラグインは https://urbancode.github.io/IBM-UCx-PLUGIN-DOCS/UCD/#argocd からダウンロードできます。
Argo CDサーバにログインし、ソースのGitHubリポジトリとKubernetesリソースをデプロイしたいデスティネーションのKubernetes/OpenShiftクラスタを参照する新しいアプリケーションを作成します。アプリケーションの同期ポリシーを手動に設定します。Argo CDアプリケーションが既に存在する場合は、このステップをスキップできます。
DevOps Deployサーバにログインし、新しいアプリケーションを作成します。このアプリケーションは、Argo CDアプリケーション経由でKubernetesリソースをデプロイするために使用されます。
新しいDevOps Deployアプリケーションで環境を作成します。以前にArgo CD CLIをインストールした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エージェントの下に新しいコンポーネントへの参照を追加します。
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プロセスは成功したステータスで終了します。
アプリケーション・プロセスが作成されたので、アプリケーションに追加したコンポーネントに新しいコンポーネント・バージョンが作成されるたびに呼び出される新しいDeployment Triggerを作成する必要があります。DevOps Deployアプリケーション環境設定を編集する。環境構成のDeployment Triggersセクションを選択し、Create Deployment Triggerボタンをクリックします。上記で作成した新しいDevOps Deployコンポーネントとアプリケーション・プロセス、およびアプリケーション・プロセスを実行するDevOps Deployユーザを指定します。
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インスタンス固有の値で更新します。
この例では、DEVOPS_DEPLOY_AUTHTOKENという名前のシークレットを使用しています。このシークレットは、GitHubリポジトリのSettings->Secrets and variables->Actionsで定義されています。
以下のワークフロー例では、変更が master ブランチにプッシュされたときにこの処理を実行するようにしています。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つ表示されていることに注意してください。