OKD をインストールした｢次｣にすべき初期設定

OKD4 を導入した後、実用的に使い始めるために必要な初期設定をまとめる。

## Operator Hub の制限解除
OKD の Operator Hub は、デフォルトだと Community 提供の Operator しか表示されず、RedHat が提供する Operator などが表示されない。次のコマンドを実行し、クラスターの設定を変更する。
```
oc patch operatorhub cluster -p '{"spec": {"disableAllDefaultSources": false}}' --type=merge
```
1分くらい待つと，Operator Hub からすべての Operator が利用可能になる：


#### 参考資料
- [OpenShift OKDでOperatorHubの追加 #openshift - Qiita](https://qiita.com/takusonix/items/4f16163776d7b4b29726)

## 管理者ユーザの追加
OpenShift クラスタをインストールした直後は、デフォルトで `kubeadmin` というスーパーユーザが用意される。しかしこれは一時的な利用を想定したものであるため、新規にユーザを作成することが望ましい。

以下、例として `admin` という名前のユーザを作成する。


### `admin` user の作成

次のコマンドで `admin` user の Basic 認証のパスワードファイルを作成する。
```
$ htpasswd -c -B -b users.htpasswd admin <PASSWORD>
```

:::note
`htpasswd` のインストール
Fedora-based distroの場合：
```
$ sudo dnf install httpd-tools
```

Debian-based distro の場合：
```
$ sudo apt-get install apache2-util
```
:::

生成されたファイルから Secret を作成する：
```
$ oc create secret generic htpass-secret --from-file=htpasswd=users.htpasswd -n openshift-config
```


### htpasswd provider のデプロイ

htpasswd provider の CR の manifest を作成する：
```yaml:htpasswd_provider.yaml
apiVersion: config.openshift.io/v1
kind: OAuth
metadata:
  name: cluster
spec:
  identityProviders:
  - name: htpasswd_provider
    mappingMethod: claim
    type: HTPasswd
    htpasswd:
      fileData:
        name: htpass-secret 
```

CR を作成する：

```
$ oc apply -f htpasswd_provider.yaml
```

### clusterrolebinding の設定
`admin` user に `cluster-admin` roleを付与する：
```
$ oc adm policy add-cluster-role-to-user cluster-admin admin
```

設定が反映されるまでしばらく待ち、コンソール (e.g. https://console-openshift-console.apps.ocp4.example.com/) にアクセスし、
`htpasswd_provider` を選ぶ。

![Screenshot from 2024-02-04 15-18-35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261727/b9064175-06f3-3aa7-61c6-75fba57a4921.png)

`admin:<PASSWORD>` でログインする。
![Screenshot from 2024-02-04 15-18-38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261727/d1420e68-391e-bf57-5043-2b318242c926.png)

#### 参考資料
- [Configuring an htpasswd identity provider - Configuring identity providers | Authentication and authorization | OpenShift Container Platform 4.15](https://docs.openshift.com/container-platform/4.15/authentication/identity_providers/configuring-htpasswd-identity-provider.html)


### kubeadmin の削除
デフォルトの kubeadmin ユーザは、不要になったら削除しまってもよい。

:::note alert
ただし `cluster-admin` role をもつユーザが `kubeadmin` 以外にない状態で `kubeadmin` を削除してしまうと、二度と `cluster-admin` をもつユーザを作成することができなくなる。そうなると、解決するにはクラスタを再作成するしかなくなくなるので注意する。
:::

次のコマンドで `kubeadmin` user を削除する：

```
$ oc delete secrets kubeadmin -n kube-system
```


## ODF (OpenShift Data Foundation) の導入
ODF は Rook-Ceph と NooBaa によって構成される強力なストレージ統合基盤である。ODF を導入すると、Ceph-Rook による PV の Dyanmic provisioning、および、NooBaa の S3 Bucket の Dynamic provisioning が簡単に利用できるようになる。導入方法は次の Qiita 記事を参照：

https://qiita.com/sawa2d2/items/f8c2b37340b59b4ee579

## Image Registry の有効化
ベアメタル環境など、共有可能なオブジェクトストレージを提供しないプラットフォーム上に OpenShift/OKD クラスタを構築した場合、デフォルトでは Image Registry が無効になっている。Image Registry の有効化および外部公開の手順は次の Qiita 記事を参照：

https://qiita.com/sawa2d2/items/fb9b5213766c65e30c81

#### 参考資料
- [Removing the kubeadmin user | Authentication and authorization | OpenShift Container Platform 4.14](https://docs.openshift.com/container-platform/4.14/authentication/remove-kubeadmin.html)
- [ゼロからはじめるOpenShift Virtualization（2）OpenShiftインストール後の作業 - 赤帽エンジニアブログ](https://rheb.hatenablog.com/entry/start-openshift-virt-02#4-2-htpasswd-%E3%82%A2%E3%82%A4%E3%83%87%E3%83%B3%E3%83%86%E3%82%A3%E3%83%86%E3%82%A3%E3%83%BC%E3%83%97%E3%83%AD%E3%83%90%E3%82%A4%E3%83%80%E3%83%BC%E3%81%AE%E8%A8%AD%E5%AE%9A)