OpenShift 4.5.1のリリース前は、UPI(User Provider Infrastructure)バージョンでのみvSphereプラットフォームにクラスターをインストールすることが可能でした。ユーザーは、インストールに必要なインフラストラクチャを独自に準備する必要がありました。
- 外部ネットワークバランサー(1つはクラスタートラフィックのバランシング用、もう1つはアプリケーショントラフィックのバランシング用)。
- SRVレコードを含む多数のDNSレコード。
- クラスターノードにアドレスを発行するためのDHCPサーバー(または、静的アドレス指定の設定方法を決定します)。
- RHCOSのインストール時に点火構成を転送するためのHTTPサーバー。
同時に、環境の準備に誤りがあると(そしてご存知のように、「エラーヒューマナムエスト」)、クラスターのインストールに失敗します。どういうわけかこのタスクを容易にするために、サードパーティのプロジェクトが環境の準備をスピードアップし、このプロセスにおける「人的要因」の影響を減らすように見え始めました。最も有名なものの1つは、OCPヘルパーノードプロジェクトです。このプロジェクトは、Ansibleを介して1つのサーバーにOpenShiftをインストールするために必要なすべての構成を準備します。 Terraformを介してインフラストラクチャを準備してクラスターをインストールするためのオプションもありました。
しかし、そのようなプロジェクトは、vSphereにクラスターをデプロイする際のすべての問題を解決したわけではありません。多くの場合、OpenShiftクラスターをサービスとして提供する必要があり(「サービスとしてのkubernetes」)、この場合、OpenShiftインストールの自動化は簡単な作業ではありませんでした。手動による介入が必要でした。クラスターノードへのOSのインストール順序の監視、クラスター内の証明書の確認、クラスターオペレーターのインストールの待機、等必要に応じて、このプロセスを自動化できますが、そのようなソリューションを作成および維持するには、時間とリソースもかかります。
リリース4.5.1以降。 2020年7月13日にリリースされたOpenShiftは、IPI(Installer Provided Infrastructure)を使用したvSphereへのインストールをサポートします。これは、インストールプログラムが次のことができることを意味します。
- vSphereで必要なすべてのリソースを個別に準備します。
- 1つのコマンドでOpenShiftクラスターを作成します。
- 以前に作成したOpenShiftクラスターを1つのコマンドで削除します。
さらに、このようなインストール後、管理者はOpenShiftの1つのコマンドでクラスターノードを追加または削除できます。または、自動スケーリングを完全に有効にして、クラスターが負荷の変化に独立して応答できるようにします。
ただし、新しいインストール方法には1つの制限があります。つまり、すべてのクラスターノード、およびインストールの実行元のサーバーは、インターネットに直接アクセスできる必要があります。管理者が企業のプロキシサーバーの背後にいる場合、またはクラスターでインターネットを利用できない場合は、クラスターを以前と同じようにUPIバージョンでインストールする必要があります。
周辺インフラの準備
OpenShiftをインストールする場合、インフラストラクチャを準備せずに行うことはできませんが、タスクのリストはより控えめになっています。
- DHCPサーバーが必要です(OpenShiftノードにアドレスを発行するため)。
- 2つのDNSレコードが必要です(クラスターAPIの場合はVIP、入力トラフィックの場合はVIP)。
- OpenShiftをインストールするためのドキュメントに記載されている一連の特権を持つvSphereのアカウントが必要になります。
この場合、OpenShiftをインストールして必要なすべてのサービスを実行するために、CentOS7を実行しているshift-is01サーバーを使用しました。
DHCPD構成
ここでは特に何もありません。OpenShiftサーバーのアドレスプール(192.168.111.100 -192.168.111.150)を選択します。
[ocp@shift-is01 ~]$ sudo cat /etc/dhcp/dhcpd.conf
authoritative;
ddns-update-style interim;
default-lease-time 14400;
max-lease-time 14400;
option routers 192.168.111.1;
option broadcast-address 192.168.111.255;
option subnet-mask 255.255.255.0;
option domain-name-servers 192.168.111.10;
option domain-name «ocp45.demo.local»;
subnet 192.168.111.0 netmask 255.255.255.0 {
interface ens192;
pool {
range 192.168.111.100 192.168.111.150;
# this is PXE specific
filename «pxelinux.0»;
next-server 192.168.111.10;
}
}
DNS構成
このクラスターでは、ocp45.demo.localゾーンが作成され、DHCP範囲のAレコードとPTRレコードが作成されました。APIと入力に必要なOpenShiftエントリを作成します。BIND
ゾーンからのチャンクocp45.demo.local:
api IN A 192.168.111.190
*.apps IN A 192.168.111.191
その後、vCenterから証明書をダウンロードし、信頼できるものとしてサーバーにインストールします。
vCenter証明書をインストールします。
[ocp@shift-is01 ~]$ mkdir certs; cd certs; curl -kO https://vc01.demo.local/certs/download.zip
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 5795 100 5795 0 0 15500 0 --:--:-- --:--:-- --:--:-- 15536
[ocp@shift-is01 certs]$ unzip ./download.zip
Archive: ./download.zip
inflating: certs/lin/e01a85a3.r1
inflating: certs/mac/e01a85a3.r1
inflating: certs/win/e01a85a3.r1.crl
inflating: certs/lin/e01a85a3.0
inflating: certs/mac/e01a85a3.0
inflating: certs/win/e01a85a3.0.crt
[ocp@shift-is01 certs]$ sudo cp ./certs/lin/e01a85a3.* /etc/pki/ca-trust/source/anchors
[ocp@shift-is01 certs]$ sudo update-ca-trust extract
OpenShiftクラスターのインストール
インストール手順自体が可能な限り簡単になりました。
- Red HatのWebサイトからインストーラーとキー(プルシークレット)を入手します。
- 計画されたクラスター構成でinstall-config.yamlを使用してyamlファイルを準備します。
- クラスターをインストールします。
インストーラーとキーを取得します
RedHatからインストールプログラムとPullSecretをダウンロードします。この手順は、インストールガイドで説明されています。この例では、作業に必要なすべてのバイナリは、ユーザーのホームディレクトリocpのbinディレクトリにあります。
[ocp@shift-is01 bin]$ ll
total 499036
-rwxr-xr-x 1 ocp ocp 78599208 Jul 16 11:53 kubectl
-rwxr-xr-x 1 ocp ocp 78599208 Jul 16 11:53 oc
-rwxr-xr-x 1 ocp ocp 353804288 Jul 16 11:53 openshift-install
-rw-r--r-- 1 ocp ocp 954 Jul 16 11:53 README.md
install-config.yamlの準備
[ocp@shift-is01 ~]$ cat ./install-config.yaml
apiVersion: v1
baseDomain: demo.local
compute:
- hyperthreading: Enabled
architecture: amd64
name: worker
replicas: 3
platform:
vsphere:
cpus: 2
coresPerSocket: 1
memoryMB: 8192
osDisk:
diskSizeGB: 120
controlPlane:
hyperthreading: Enabled
architecture: amd64
name: master
replicas: 3
platform:
vsphere:
cpus: 4
coresPerSocket: 1
memoryMB: 16384
osDisk:
diskSizeGB: 120
metadata:
name: ocp45
networking:
networkType: OpenShiftSDN
clusterNetwork:
- cidr: 10.128.0.0/14
hostPrefix: 23
serviceNetwork:
- 172.30.0.0/16
platform:
vsphere:
vcenter: _vCenter
username: __vCenter
password: _
datacenter: _Datacenter
defaultDatastore: _Datastre
network: _Network
cluster: _Cluster
apiVIP: 192.168.111.190
ingressVIP: 192.168.111.191
fips: false
pullSecret: '_PullSecret'
sshKey: '_SSH_Public_Key'
クラスタの将来の構成でこのファイルを準備するとき、注意すべき3つのことがあります。
まず、クラスターは、install-configで定義されたクラスターのワーカーノードの構成を記憶します。また、クラスターをスケーリングするときに作成する後続のすべてのノードは、まったく同じ構成になります。したがって、ワーカーノードの最適な構成をすぐに決定する必要があります。
次に、クラスターの内部アドレス指定(クラスターネットワークおよびサービスネットワーク)が内部アドレス指定に干渉しないことが望ましいです。そうしないと、クラスター内のPODが外部リソースへの接続を開くことができない可能性があります(たとえば、外部データベースに移動します)。
第3に、クラスター名(メタデータフィールド)は、そのクラスターのドメインと一致する必要があります。この場合、クラスター名はocp45であり、そのアドレスはocp45.demo.localドメインにあります。
openshift-installインストーラーを使用してinstall-config.yamlを準備することもできますが、その場合、ワーカーノードの構成と内部アドレスを決定することはできません。いずれの場合も、インストーラーを使用してinstall-config.yamlを作成し、それを修正することは理にかなっています。
クラスターのインストール
クラスターをインストールする手順そのものは根本的に変わっていません。インストールプログラムを開始した後:
- インストーラーは、マスターノードを初期化するためのリソースを使用してブートストラップノードを作成します。
- インストーラーは3つのマスターノードを作成します。
- ブートストラップノードと3つのマスターノードがクラスター制御プレーンを形成します。
- インストーラーはブートストラップノードを無効にして削除します。
- コントロールプレーンはワーカーノードを展開し、必要なクラスターサービスを構成します。
クラスターのセットアッププロセス。
クラスターのインストールを開始して待機します。インストールプロセスには通常30〜40分かかります。
クラスターのインストール
[ocp@shift-is01 ~]$ mkdir ocp45; cp ./install-config.yaml ./ocp45
[ocp@shift-is01 ~]$ ./bin/openshift-install create cluster --dir=ocp45 --log-level=info
INFO Consuming Install Config from target directory
INFO Obtaining RHCOS image file from 'https://releases-art-rhcos.svc.ci.openshift.org/art/storage/releases/rhcos-4.5/45.82.202007062333-0/x86_64/rhcos-45.82.202007062333-0-vmware.x86_64.ova?sha256=4189881eadb0b0cfd85c2f2ab1c32f6a320b71713cac3bd4179dba746ad4070a'
INFO Creating infrastructure resources...
INFO Waiting up to 20m0s for the Kubernetes API at https://api.ocp45.demo.local:6443...
INFO API v1.18.3+8b0a82f up
INFO Waiting up to 40m0s for bootstrapping to complete...
INFO Destroying the bootstrap resources...
INFO Waiting up to 30m0s for the cluster at https://api.ocp45.demo.local:6443 to initialize...
INFO Waiting up to 10m0s for the openshift-console route to be created...
INFO Install complete!
INFO To access the cluster as the system:admin user when using 'oc', run 'export KUBECONFIG=/home/ocp/ocp45/auth/kubeconfig'
INFO Access the OpenShift web-console here: https://console-openshift-console.apps.ocp45.demo.local
INFO Login to the console with user: «kubeadmin», and password: «xxxxxxxxxxxxxxx»
INFO Time elapsed: 41m56s
RHCOSブートの問題
インターネット接続が遅い場合、インストールが機能しない可能性があります。インストーラーはRHCOSイメージがロードされるのを待ちません。RHCOSイメージは、インストーラーが表示するリンクから事前にダウンロードできます。結果のファイルは、〜/ .cache / openshift-installer / image_cacheディレクトリに5dad1f50634794b0e1ff8a830cad4b98という名前で配置し、インストールを再開する必要があります。今回はopenshift-installがファイルシステムから取得します。
INFO The file was found in cache: /home/ocp/.cache/openshift-installer/image_cache/5dad1f50634794b0e1ff8a830cad4b98. Reusing...
これで、クラスターの準備が整いました。
[ocp@shift-is01 ~]$ export KUBECONFIG=/home/ocp/ocp45/auth/kubeconfig
[ocp@shift-is01 ~]$ ./bin/oc get nodes
NAME STATUS ROLES AGE VERSION
ocp45-64clc-master-0 Ready master 33m v1.18.3+6025c28
ocp45-64clc-master-1 Ready master 33m v1.18.3+6025c28
ocp45-64clc-master-2 Ready master 33m v1.18.3+6025c28
ocp45-64clc-worker-f7bw2 Ready worker 15m v1.18.3+6025c28
ocp45-64clc-worker-m277w Ready worker 15m v1.18.3+6025c28
ocp45-64clc-worker-wcjj7 Ready worker 15m v1.18.3+6025c28
OpenShiftクラスターのスケーリングと削除
新しい方法の利点は、インストールが簡単になり、準備作業が少なくて済むことだけではありません。IPIを介してvSphereにインストールされたOpenShiftクラスターは、vShpereを本格的なクラウドプラットフォームとして認識し、その「弾力性」の利点を活用できます。
vSphereプラットフォーム(AmazonAWSやGoogleGCPなどの大規模なクラウドプラットフォームなど)上のクラスターには、インストーラーによって自動的に生成されるマシンセットが含まれるようになりました。
OpenShift machineset
[ocp@shift-is01 ~]$ ./bin/oc get machinesets -n openshift-machine-api
NAME DESIRED CURRENT READY AVAILABLE AGE
ocp45-64clc-worker 3 3 3 3 50m
これにより、クラスターのスケーリングを1つのコマンドの実行に減らすことができます。OpenShiftは独立してノードを作成し、それをクラスターに追加または削除します。
クラスターへのノードの追加
[ocp@shift-is01 ~]$ ./bin/oc scale --replicas=4 machineset ocp45-64clc-worker -n openshift-machine-api
machineset.machine.openshift.io/ocp45-64clc-worker scaled
[ocp@shift-is01 ~]$ ./bin/oc get machinesets -n openshift-machine-api
NAME DESIRED CURRENT READY AVAILABLE AGE
ocp45-64clc-worker 4 4 3 3 61m
[ocp@shift-is01 ~]$ ./bin/oc get nodes
NAME STATUS ROLES AGE VERSION
ocp45-64clc-master-0 Ready master 75m v1.18.3+6025c28
ocp45-64clc-master-1 Ready master 75m v1.18.3+6025c28
ocp45-64clc-master-2 Ready master 75m v1.18.3+6025c28
ocp45-64clc-worker-f7bw2 Ready worker 57m v1.18.3+6025c28
ocp45-64clc-worker-hvjmn Ready worker 9m27s v1.18.3+6025c28
ocp45-64clc-worker-m277w Ready worker 57m v1.18.3+6025c28
ocp45-64clc-worker-wcjj7 Ready worker 57m v1.18.3+6025c28
クラスタからノードを削除する
[ocp@shift-is01 ~]$ ./bin/oc scale --replicas=3 machineset ocp45-64clc-worker -n openshift-machine-api
machineset.machine.openshift.io/ocp45-64clc-worker scaled
[ocp@shift-is01 ~]$ ./bin/oc get nodes
NAME STATUS ROLES AGE VERSION
ocp45-64clc-master-0 Ready master 97m v1.18.3+6025c28
ocp45-64clc-master-1 Ready master 98m v1.18.3+6025c28
ocp45-64clc-master-2 Ready master 98m v1.18.3+6025c28
ocp45-64clc-worker-hvjmn Ready worker 32m v1.18.3+6025c28
ocp45-64clc-worker-m277w Ready worker 79m v1.18.3+6025c28
ocp45-64clc-worker-wcjj7 Ready worker 79m v1.18.3+6025c28
ノードを自己作成および削除するクラスターの機能を使用して、OpenShfitクラスターの自動スケーリングを構成できます。
一般に、vSphere IPIのインストールでは、OpenShiftコンテナオーケストレーションプラットフォームのすべての管理はkubernetes側に行われます。
- クラスタのリソースの作成と削除は、マシンセットを介してOpenShift管理者によって管理されます。
- クラスタノードのOS設定の構成も、macheneconfigを介してOpenShift管理者によって管理されます。
これは、クラスターの下にある基盤となるインフラストラクチャに対するRedHatのゼロ管理アプローチとよく一致します。
クラスターの作成を自動化することに加えて、新しいインストーラーはクラスターを独自に削除できます。Terraformインストーラーの「内部」およびインストール構成ファイルのあるディレクトリーには、Terraform状態ファイル(terraform.tfstate)が残ります。これにより、他の人のリソースに誤って「触れる」ことを恐れずに、以前に作成したクラスターを削除できます。
[ocp@shift-is01 ~]$./bin/openshift-install destroy cluster --dir=ocp45 --log-level=info
たとえば、テスト環境やトレーニング環境でクラスターを絶えず作成および削除している場合、この機能はこのプロセスを自動化し、プロセスで発生する可能性のある人的エラーを防ぐのにも役立ちます。
結論
VMware vSphereへのOpenShiftのインストールは、最も一般的なインストールオプションです。また、リリース4.5.1で登場したOpenShiftがvSphereをクラウドプラットフォームとして動作する機能により、管理が大幅に簡素化され、プラットフォームの作成、スケーリング、削除からライフサイクルプロセスを自動化するためのターンキーソリューションが提供されます。
現在、Red HatOpenShiftおよびVMwarevSphereに基づくオンプレミスソリューションを提供するためのInfrastructureas Codeアプローチは、実装するのにはるかに手頃な価格になっています。
著者:Sergey Artemov、DevOpsソリューション部門のアーキテクト、Jet Infosystems
PS Telegram DevSecOpsTalksコミュニティに参加してください。