はじめに
OpenShift 4.11 のベアメタルへのUPIインストールについて、以前のバージョンのインストール手順と比較して留意すると良いポイントをご紹介します。
今回インストールしたバージョンは 4.11.6
となります。
余談 : ベアメタルへのUPIインストール
という表現で界隈の方には何となく通じると思っているのですが、正確な呼び方かどうか不明。良い呼び方を教えていいただけますと幸いです。
1. 公式ドキュメント
-
docs.openshift.com
版(英語のみ) -
redhat.com/documentation
版(日本語あり)
2. 参考文献
今回構築した環境や手順はこれまでにご紹介した 4.6 や 4.7 のインストール手順と同様となります。
以下の記事も併せてご参照ください。
3. 留意ポイント1 : install-config.yaml への capabilities 設定の追加
以下は公式ドキュメントに記載されているサンプルの install-config.yaml
です。
過去のバージョンと比較すると capabilities
の設定が追加されています。
( 余談ですが 以前のバージョンでは clusterNetworks
だった項目名が clusterNetwork
になっている気がします。ちょっと気になりましたが、サンプルに記載の通り単数形にてインストールできました。 )
apiVersion: v1
baseDomain: example.com
compute:
- hyperthreading: Enabled
name: worker
replicas: 0
controlPlane:
hyperthreading: Enabled
name: master
replicas: 3
metadata:
name: test
networking:
clusterNetwork:
- cidr: 10.128.0.0/14
hostPrefix: 23
networkType: OpenShiftSDN
serviceNetwork:
- 172.30.0.0/16
platform:
none: {}
fips: false
pullSecret: '{"auths": ...}'
sshKey: 'ssh-ed25519 AAAA...'
capabilities:
baselineCapabilitySet: None
additionalEnabledCapabilities:
- openshift-samples
capabilities
については以下リリースノートに記載があります。
上記に記載のとおり、OpenShift 4.11 から、baremetal
、marketplace
、openshift-samples
の cluster operator のインストールを無効化できるようになっています。
私の場合、capabilities
の設定については サンプルの install-config.yaml
の記載通りとしてインストールを行いました。
以下のように確かに baremetal
と marketplace
の cluster operator はインストールされていませんでした。
openshift-samples
の cluster operator はインストール されていますね。
[root@bastion ocp]# ./oc get co
NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE MESSAGE
authentication 4.11.6 True False False 79s
cloud-controller-manager 4.11.6 True False False 99m
cloud-credential 4.11.6 True False False 107m
cluster-autoscaler 4.11.6 True False False 94m
config-operator 4.11.6 True False False 96m
console 4.11.6 True False False 4m51s
csi-snapshot-controller 4.11.6 True False False 94m
dns 4.11.6 True False False 93m
etcd 4.11.6 True False False 84m
image-registry 4.11.6 True False False 80m
ingress 4.11.6 True False False 12m
insights 4.11.6 True False False 81m
kube-apiserver 4.11.6 True False False 82m
kube-controller-manager 4.11.6 True False False 91m
kube-scheduler 4.11.6 True False False 84m
kube-storage-version-migrator 4.11.6 True False False 96m
machine-api 4.11.6 True False False 94m
machine-approver 4.11.6 True False False 94m
machine-config 4.11.6 True False False 83m
monitoring 4.11.6 True False False 3m41s
network 4.11.6 True False False 94m
node-tuning 4.11.6 True False False 16m
openshift-apiserver 4.11.6 True False False 7m28s
openshift-controller-manager 4.11.6 True False False 84m
openshift-samples 4.11.6 True False False 80m
operator-lifecycle-manager 4.11.6 True False False 95m
operator-lifecycle-manager-catalog 4.11.6 True False False 95m
operator-lifecycle-manager-packageserver 4.11.6 True False False 7m36s
service-ca 4.11.6 True False False 96m
storage 4.11.6 True False False 96m
[root@bastion ocp]#
インストールは無事に終了しましたが、特に marketplace
cluster operator がインストールされていないとどのような影響があるのでしょうか?(次章へ続く)
なお、後述する状況を鑑みて、始めからインストール時に marketplace
を設定することのご検討をいただくのがおすすめです。
4. 留意ポイント2 : No OperatorHub items found と表示されて OperatorHub が利用できない場合の対応策
marketplace
cluster operator をインストールしていない場合、Administrator
パースペクティブの OperatorHub
を表示しようとすると、
No OperatorHub items found
( 日本語表示している場合 OperatorHub 項目が見つかりません
) と表示され、OperatorHub を使用することができませんでした。
以下のような説明文も表示されます。
Please check that the OperatorHub is running and that you have created a valid CatalogSource.
For more information about OperatorHub, please click here.
( click here の リンク先は https://github.com/operator-framework/operator-marketplace )
上記説明文に従い状況を確認してみましょう。
CatalogSource
という CR はありますが、オブジェクトはありませんでした。
[root@bastion ocp]# ./oc get CatalogSource -A
No resources found
[root@bastion ocp]#
OperatorHub
については以下のドキュメントに説明があります。
上記ドキュメントに以下のような記述があります。
OperatorHub UI コンポーネントは、デフォルトで OpenShift Container Platform の openshift-marketplace namespace で Marketplace Operator によって実行されます。
openshift-marketplace
ns を確認してみると、配下にオブジェクトは ありませんでした。
[root@bastion ocp]# ./oc get pods -n openshift-marketplace
No resources found in openshift-marketplace namespace.
[root@bastion ocp]# ./oc get all -n openshift-marketplace
No resources found in openshift-marketplace namespace.
[root@bastion ocp]#
同ドキュメントに以下のような記述もあります。
Marketplace Operator は、OperatorHub で提供されるデフォルトの CatalogSource オブジェクトを管理する cluster という名前の OperatorHub カスタムリソース (CR) を管理します。
確認してみると、OperatorHub
という CR 自体がありませんでした。
[root@bastion ocp]# ./oc get OperatorHub -A
error: the server doesn't have a resource type "OperatorHub"
OperatorHub を表示するには、Marketplace Operator が必要という可能性がありそうですね。
前章で、capabilities
の設定 に marketplace
を明示的に指定せずにインストールを行っため、
Marketplace Operator が稼働せず、OperatorHub が表示されていない状況であると推測しました。
幸い、リリースノートの以下章に、インストール後にも capabilities を設定できると記述がありました。
UPIインストールはお時間もかかりますので再インストールしなくてよさそうなのはありがたいです。
以下ドキュメントに記載されている方法で、インストール後でも機能を有効化することができるとのこと、早速試してみましょう。
Post-installation configuration
の Cluster capabilities
ドキュメント :
additionalEnabledCapabilities
に marketplace
を追加しました。
[root@bastion ocp]# ./oc patch clusterversion/version --type merge -p '{"spec":{"capabilities":{"additionalEnabledCapabilities":["marketplace","openshift-samples"]}}}'
clusterversion.config.openshift.io/version patched
[root@bastion ocp]# ./oc get clusterversion version -o jsonpath='{.spec.capabilities}{"\n"}{.status.capabilities}{"\n"}'
{"additionalEnabledCapabilities":["marketplace","openshift-samples"],"baselineCapabilitySet":"None"}
{"enabledCapabilities":["marketplace","openshift-samples"],"knownCapabilities":["baremetal","marketplace","openshift-samples"]}
[root@bastion ocp]#
確かに marketplace
cluster operator が追加でインストールされました。
[root@bastion ocp]# ./oc get co
NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE MESSAGE
authentication 4.11.6 True False False 4d14h
cloud-controller-manager 4.11.6 True False False 18d
cloud-credential 4.11.6 True False False 18d
cluster-autoscaler 4.11.6 True False False 18d
config-operator 4.11.6 True False False 18d
console 4.11.6 True False False 11d
csi-snapshot-controller 4.11.6 True False False 18d
dns 4.11.6 True False False 18d
etcd 4.11.6 True False False 18d
image-registry 4.11.6 True False False 18d
ingress 4.11.6 True False False 18d
insights 4.11.6 True False False 18d
kube-apiserver 4.11.6 True False False 18d
kube-controller-manager 4.11.6 True False False 18d
kube-scheduler 4.11.6 True False False 18d
kube-storage-version-migrator 4.11.6 True False False 18d
machine-api 4.11.6 True False False 18d
machine-approver 4.11.6 True False False 18d
machine-config 4.11.6 True False False 4d17h
marketplace 4.11.6 True False False 71s
monitoring 4.11.6 True False False 11d
network 4.11.6 True False False 18d
node-tuning 4.11.6 True False False 18d
openshift-apiserver 4.11.6 True False False 11d
openshift-controller-manager 4.11.6 True False False 18d
openshift-samples 4.11.6 True False False 18d
operator-lifecycle-manager 4.11.6 True False False 18d
operator-lifecycle-manager-catalog 4.11.6 True False False 18d
operator-lifecycle-manager-packageserver 4.11.6 True False False 18d
service-ca 4.11.6 True False False 18d
storage 4.11.6 True False False 18d
[root@bastion ocp]#
空っぽだった openshift-marketplace
ns 配下にデプロイされています。いい感じですね。
[root@bastion ocp]# ./oc get all -n openshift-marketplace
NAME READY STATUS RESTARTS AGE
pod/certified-operators-pcrhg 1/1 Running 0 4h4m
pod/community-operators-vh8mj 1/1 Running 0 4h4m
pod/marketplace-operator-56846cf448-wfkdj 1/1 Running 0 4h5m
pod/redhat-marketplace-h97sw 1/1 Running 0 4h4m
pod/redhat-operators-txgnv 1/1 Running 0 4h4m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/certified-operators ClusterIP 172.30.139.240 <none> 50051/TCP 4h4m
service/community-operators ClusterIP 172.30.20.19 <none> 50051/TCP 4h4m
service/marketplace-operator-metrics ClusterIP 172.30.67.90 <none> 8383/TCP,8081/TCP 4h5m
service/redhat-marketplace ClusterIP 172.30.27.147 <none> 50051/TCP 4h4m
service/redhat-operators ClusterIP 172.30.183.137 <none> 50051/TCP 4h4m
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/marketplace-operator 1/1 1 1 4h5m
NAME DESIRED CURRENT READY AGE
replicaset.apps/marketplace-operator-56846cf448 1 1 1 4h5m
[root@bastion ocp]#
OperatorHub
という CR と オブジェクトも作成されています。いけそうです!
[root@bastion ocp]# ./oc get OperatorHub
NAME AGE
cluster 4h7m
[root@bastion ocp]#
Administrator
パースペクティブの OperatorHub
を表示してみましょう、正常に表示されているようです。
これで OpenShift GitOps
、OpenShift Pipelines
、OpenShift Serverless
などを利用するために必要なOpratorを OperatorHub 画面上でインストールできる他、さまざまなOperatorも検索可能ですね
試しに OpenShift GitOps
オペレーターをインストールしてみました。
OpenShift GitOps
で検索してきちんとHITしています。
確かに Argo CD がデプロイされており、ログインもできました。
一例として OpenShift GitOps
Operator で試してみた結果、問題なく OperatorHubからOperatorの検索やインストールもできてそうですね。
5. まとめ
OperatorHub を利用するためには marketplace
cluster operator がインストールされている必要があるようですね。
インストール時に install-config.yaml
の capabilities
に marketplace
を設定しておく、もしくはインストール後にadditionalEnabledCapabilities
に marketplace
を設定することで、marketplace
cluster operator がインストールされ、OperatorHub を利用することができます。
OperatorHub を利用することが確定している場合は、前者が良さそうですね。
本記事が OpenShift 4.11 インストール手順の参考になりましたら幸いです。
関連つぶやき: