5.6. Argo CD を使用した Spring Boot アプリケーションのデプロイ
Argo CD を使用すると、Argo CD ダッシュボードまたは oc
ツールを使用して、アプリケーションを OpenShift クラスターにデプロイできます。
前提条件
- Red Hat OpenShift GitOps がクラスターにインストールされている。
- Argo CD インスタンスにログインしている。
5.6.1. Argo CD ダッシュボードを使用したアプリケーションの作成
Argo CD は、アプリケーションを作成できるダッシュボードを提供します。
このサンプルワークフローでは cluster
ディレクトリーの内容を cluster-configs
アプリケーションに対して再帰的に同期するために Argo CD を設定するプロセスについて説明します。ディレクトリーは Web コンソールの
メニューで Red Hat Developer Blog - Kubernetes へのリンクを追加する OpenShift Container Platform Web コンソールクラスター設定を定義してクラスターの namespace spring-petclinic
を定義します。
手順
- Argo CD ダッシュボードで、New App をクリックして新規の Argo CD アプリケーションを追加します。
このワークフローでは、以下の設定で cluster-configs アプリケーションを作成します。
- アプリケーション名
-
cluster-configs
- プロジェクト
-
default
- 同期ポリシー
-
Manual
- リポジトリー URL
-
https://github.com/redhat-developer/openshift-gitops-getting-started
- リビジョン
-
HEAD
- パス
-
cluster
- 宛先
-
https://kubernetes.default.svc
- namespace
-
spring-petclinic
- ディレクトリーの再帰処理
-
checked
このワークフローでは、以下の設定で spring-petclinic アプリケーションを作成します。
- アプリケーション名
-
spring-petclinic
- プロジェクト
-
default
- 同期ポリシー
-
Automatic
- リポジトリー URL
-
https://github.com/redhat-developer/openshift-gitops-getting-started
- リビジョン
-
HEAD
- パス
-
app
- 宛先
-
https://kubernetes.default.svc
- namespace
-
spring-petclinic
- Create をクリックしてアプリケーションを作成します。
-
Web コンソールの Administrator パースペクティブで、左側のメニューにある Administration
Namespaces に移動します。 -
namespace を検索、選択してから Label フィールドに
argocd.argoproj.io/managed-by=openshift-gitops
を入力し、openshift-gitops
namespace にある Argo CD インスタンスが namespace を管理できるようにします。
5.6.2. oc
ツールを使用したアプリケーションの作成
oc
ツールを使用して、ターミナルで Argo CD アプリケーションを作成できます。
手順
サンプルアプリケーション をダウンロードします。
$ git clone git@github.com:redhat-developer/openshift-gitops-getting-started.git
アプリケーションを作成します。
$ oc create -f openshift-gitops-getting-started/argo/app.yaml
$ oc create -f openshift-gitops-getting-started/argo/cluster.yaml
oc get
コマンドを実行して、作成されたアプリケーションを確認します。$ oc get application -n openshift-gitops
アプリケーションがデプロイされている namespace にラベルを追加し、
openshift-gitops
namespace の Argo CD インスタンスが管理できるようにします。$ oc label namespace spring-petclinic argocd.argoproj.io/managed-by=openshift-gitops
$ oc label namespace spring-petclinic argocd.argoproj.io/managed-by=openshift-gitops
5.6.3. Argo CD の自己修復動作の確認
Argo CD は、デプロイされたアプリケーションの状態を常に監視し、Git の指定されたマニフェストとクラスターのライブの変更の違いを検出し、それらを自動的に修正します。この動作は自己修復として言及されます。
Argo CD で自己修復動作をテストし、確認することができます。
前提条件
-
サンプル
app-spring-petclinic
アプリケーションがデプロイされ、設定されている。
手順
-
Argo CD ダッシュボードで、アプリケーションに
Synced
ステータスがあることを確認します。 -
Argo CD ダッシュボードの
app-spring-petclinic
タイルをクリックし、クラスターにデプロイされたアプリケーションのリソースを表示します。 - OpenShift Container Platform Web コンソールで、Developer パースペクティブに移動します。
Spring PetClinic デプロイメントを変更し、Git リポジトリーの
app/
ディレクトリーに変更をコミットします。Argo CD は変更をクラスターに自動的にデプロイします。- OpenShift GitOps 開始のリポジトリー をフォークします。
-
deployment.yaml
ファイルでfailureThreshold
の値を5
に変更します。 デプロイメントクラスターで、以下のコマンドを実行し、
failureThreshold
フィールドの値を確認します。$ oc edit deployment spring-petclinic -n spring-petclinic
OpenShift Container Platform Web コンソールでアプリケーションを監視している間に、クラスターでデプロイメントを変更し、これを 2 つの Pod にスケールアップして自己修復動作をテストします。
以下のコマンドを実行してデプロイメントを変更します。
$ oc scale deployment spring-petclinic --replicas 2 -n spring-petclinic
- OpenShift Container Platform Web コンソールでは、デプロイメントは 2 つの Pod にスケールアップし、すぐに再び 1 つの Pod にスケールダウンすることに注意してください。Argo CD は Git リポジトリーとの差異を検知し、OpenShift Container Platform クラスターでアプリケーションを自動的に修復しました。
-
Argo CD ダッシュボードで、app-spring-petclinic タイル
APP DETAILS EVENTS をクリックします。EVENTS タブには、以下のイベントが表示されます。Argo CD がクラスターのデプロイメントリソースが同期されていないことを検知し、Git リポジトリーを再同期してこれを修正します。