Red Hat OpenShift on IBM Cloudで、OpenShift GitOpsを試す (導入編)

# はじめに
GitOpsは、Gitリポジトリに格納されている設定・情報を正として、対象のインフラ環境・アプリケーション環境をGitリポジトリ内の状態と同期させることで、環境の状態を一元的に管理できるようにするという考え方・手法です。

Kubernetes（およびOpenShift）の環境では、アプリケーションのソースコード用のGitリポジトリとは別に、DeploymentやServiceなどのマニフェストファイル用のGitリポジトリを用意し、そのGitリポジトリとKubernetes環境を同期させることで、手動でのデプロイ処理(``kubectl apply``など)を不要にしたり、環境の状態の履歴管理・ロールバックを容易にしたり、Pull Requestでのマージを承認処理として位置づけたりといったことが可能になります。

GitOpsを実現するソフトウェアとしては、[Argo CD](https://argoproj.github.io/argo-cd/)や[Flux](https://github.com/fluxcd/flux2)があります。

Red Hat社のOpenShiftでは、バージョン4.7より、Argo CDを含めた[OpenShift GitOps](https://access.redhat.com/documentation/ja-jp/openshift_container_platform/4.7/html/cicd/gitops)をテクノロジープレビューとして提供しています。

OpenShift GitOpsは初期状態から導入されているわけではないため、OpenShiftへの追加導入作業が必要となります。

当記事では、IBM Cloud上のマネージドなOpenShift環境である Red Hat OpenShift on IBM Cloud において、OpenShift GitOpsを導入する手順を紹介します。

# 環境
- Red Hat OpenShift on IBM Cloud 4.7.12 (VPC Gen 2環境に作成)
- OpenShift GitOps 1.1

※当記事の作成時点ではRed Hat OpenShift on IBM Cloudの最新バージョンが4.6であり、スクリーンショットはRed Hat OpenShift on IBM Cloud 4.6、および、(4.6に導入可能であった)OpenShift GitOps 1.0時点のものになります(OpenShiftのWeb管理コンソールが4.6では英語ですが、4.7からは日本語対応しています)。ただ、記事本文は上記記載の環境に準拠しています。


# 前提
OpenShiftクラスターが既に作成済みであることを前提としています。


# 導入手順
IBM Cloudの[OpenShiftクラスターのページ](https://cloud.ibm.com/kubernetes/clusters?platformType=openshift)にアクセスします。

対象のOpenShiftクラスターを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/66032e59-0cd9-3d77-0b71-5f76eda3e247.png)


「OpenShift Webコンソール」ボタンをクリックし、OpenShiftのWebコンソールにアクセスします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/5603d4a1-09d8-75de-0931-e506320f3f8b.png)


Administratorパースペクティブで、「Operators」→「OperatorHub」をクリックします。
検索フィールドで「gitops」と入力し、検索結果から「Red Hat OpenShift GitOps」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/a5aa661a-dee2-7723-129d-e61f10ac08a0.png)


「Install」ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/8938a7b4-9eab-f7e6-1bde-ff2dbc17624e.png)


特に設定は変更せず、「Install」ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/a9955f1c-9c63-d924-6d40-e6f950037dd3.png)


Operatorのインストールが正常に完了した後、「View Operator」ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/c5e8d93e-3ec5-b0af-8900-d06261bc026b.png)


「Red Hat OpenShift GitOps」Operatorが導入されていることを確認することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/43177ac9-861d-12e6-081e-40d45b872040.png)


Webコンソールの画面上部のルービックキューブのようなアイコンをクリックし、「Argo CD」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/31be506e-b21e-49ce-ff51-a92df5e02170.png)


すると、Argo CDのログイン画面が以下のように表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/92c79741-9a0e-c399-4102-6a5edc89ce28.png)


次に、ログインのためのパスワードを取得します。

OpenShiftのWebコンソールを「Developer」パースペクティブに変更します。
Projectを「openshift-gitops」に変更し、画面左側の「Secrets」をクリックし、「openshift-gitops-cluster」Secretをクリックします。
(※スクリーンショットはOpenShift GitOps 1.0.0当時のもののため「argocd-cluster-cluster」Secretとなっていますが、OpenShift GitOps 1.1以上では「openshift-gitops-cluster」Secretになります)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/46d69462-301d-f726-8d4c-7e63268e227c.png)


Secretの「admin.password」がArgo CDのパスワードになりますので、右側のコピー用ボタンをクリックしてコピーします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/227d7309-00a7-b08d-299e-ab97469ba35b.png)



先ほどのArgo CDのログイン画面で、「Username」に「admin」、「Password」にSecretからコピーしたパスワードを入力し、「SIGN IN」をクリックするとログインすることができます。以下はログイン直後の画面になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386149/f71b8f49-c68f-6c81-035b-cd632afeef43.png)


以上がOpenShift GitOpsの導入編となります。

次の記事「[Red Hat OpenShift on IBM Cloudで、OpenShift GitOpsを試す (アプリデプロイ編)](https://qiita.com/hisato_imanishi/private/cce06470b00cfe5a2986)」では、OpenShift GitOpsを使用し、サンプルのアプリケーションをデプロイしてみます。