OCPクラスターにQuay コンテナーレジストリを立てる

ODF構成済みのOCPクラスターでは、手軽にRed Hat Quayをインストールし、コンテナーレジストリとして使用することができます。

注）当記事の内容および画面イメージは2024年10月時点のものであり、今後変更される場合があります。2024年11月、Red Hat Quay 3.13.0 でも同等の手順でインストールし使用可能であることを確認済みです。


## Red Hat Quay Operator のインストール

1. OpenShift Container Platform コンソールを使用して、Operators → OperatorHub を選択します。
2. 検索ボックスに Red Hat Quay と入力し、Red Hat が提供する公式の `Red Hat Quay Operator` を選択します。機能、前提条件、デプロイメント情報について記載されている Installation ページに移動します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/49bb5794-0d26-dac8-799a-be50da28f361.png)


3. `インストール` を選択します。Operator Installation ページが表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/b7871de8-0ae0-951e-f3a7-f30e20b2094f.png)


4. インストールのカスタマイズには、以下の選択肢を使用できます。
    i. Update Channel: 更新チャネルとして、最新リリースの `stable-3.12` を選択します。
    ii. Installation Mode: Red Hat Quay Operator をクラスター全体で使用する場合は、`クラスターのすべてのnamespace` を選択します。
    iii. 更新の承認: `自動` を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/60103b40-3ca8-09d9-ad6e-a08a9e0ce9c5.png)


5. `インストール` を選択します。しばらくするとインストールが完了します。 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/960a85f7-a8ec-8db3-7ef0-2775af6e38d2.png)

6. 次のようなpodが起動しています。
    ```
    $ oc get pods -n openshift-operators
    NAME                                     READY   STATUS    RESTARTS   AGE
    quay-operator.v3.12.3-6dd9d8cc8c-94dbl   1/1     Running   0          66s
    ```

## Red Hat Quay のデプロイ


1. 次のコマンドを入力して、namespace (デフォルトのnamespaceは、quay-enterprise) を作成します。作成したnamespaceに、プロジェクトを切り替えます。
   ```
   $ oc new-project quay-enterprise
   $ oc project quay-enterprise
   ```

2. Operator インストール完了の画面から `Operator の表示` をクリックし（または Operators Installed Operators を選択してから Quay Operator を選択し）Operator の詳細ビューに移動します。
3. 提供されるAPI の下にある `Quay Registry` タイルの `インスタンスの作成` をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/dce2349a-11a6-3680-baae-e1aae65aba34.png)

4. プロジェクトは1で作成したnamespaceを選択します。オプションで、QuayRegistry の `名前` を変更します。これはレジストリーのホスト名に影響します。ここでは、`my-registry` と入力します。その他のフィールドはすべてデフォルトのままにします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/01adf9d9-2f5a-54b6-ee2a-a7981e12f3d9.png)


5. `作成` をクリックし、Quay Operator によってデプロイされる QuayRegistry を作成します。
6. QuayRegistry リストビューにリダイレクトされます。作成した QuayRegistry をクリックし、詳細ビューを表示します。
7. `Registry Endpoint` の値が設定されたら、その値をクリックして UI で新規 Quay レジストリーにアクセスします。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/b06cfc49-25da-12f7-0abe-8bf8de049bfc.png)

## 最初のユーザーの作成

1. `Create Account` からユーザーを作成すると、サインインできるようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/7e4f7184-c341-d672-ed94-1aec3f9bb34e.png)

2. Username、Password、Email の詳細を入力し、Create Account をクリックします。最初のユーザーを作成すると、自動的に Red Hat Quay レジストリーにログインします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/750f7de2-bc4d-83b3-c074-f77977f93eaf.png)
3. 次のようなpodが起動しています。
   ```
   $ oc get pods -n quay-enterprise
   NAME                                              READY   STATUS      RESTARTS        AGE
   my-registry-clair-app-5457c98f98-67w46            1/1     Running     2 (3m49s ago)   4m3s
   my-registry-clair-app-5457c98f98-7mdpf            1/1     Running     0               2m35s
   my-registry-clair-app-5457c98f98-d25l8            1/1     Running     0               65s
   my-registry-clair-app-5457c98f98-kbb45            1/1     Running     2 (3m38s ago)   3m50s
   my-registry-clair-postgres-75f9b7f5dc-nkd7q       1/1     Running     1 (3m34s ago)   4m3s
   my-registry-quay-app-759c59859d-kgqnb             1/1     Running     0               3m5s
   my-registry-quay-app-759c59859d-p764v             1/1     Running     0               3m6s
   my-registry-quay-app-upgrade-dsp8s                0/1     Completed   0               4m3s
   my-registry-quay-config-editor-5d5b468dff-pxllh   1/1     Running     0               4m3s
   my-registry-quay-database-77cf6fbf7f-bsq2z        1/1     Running     0               4m3s
   my-registry-quay-mirror-6cd84fdfb5-hwskm          1/1     Running     0               4m3s
   my-registry-quay-mirror-6cd84fdfb5-m6sj2          1/1     Running     0               3m48s
   my-registry-quay-redis-68c786fcf4-wpw67           1/1     Running     0               4m3s
   ```

## 補足：イメージのpush

この後、次のサンプルコマンドのようにレジストリにログインし、コンテナーイメージのpush等を実行できます。
```
$ docker login my-registry-quay-quay-enterprise.xxx.domain
$ docker tag elasticsearch-jp:8.14.1 my-registry-quay-quay-enterprise.xxx.domain/quayuser/elasticsearch-jp:8.14.1
$ docker push my-registry-quay-quay-enterprise.xxx.domain/quayuser/elasticsearch-jp:8.14.1
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2164968/5461fc2d-8515-9270-2a2e-e1c10ab85045.png)



## 環境
- ROKS (Red Hat OpenShift on IBM Cloud) 4.14 + ODF
- Red Hat Quay 3.12.3

## 参考

https://docs.redhat.com/ja/documentation/red_hat_quay/3.12/html/deploying_the_red_hat_quay_operator_on_openshift_container_platform/operator-deploy-ui