Sebelum OpenShift 4.5.1 dirilis, cluster dapat diinstal pada platform vSphere hanya dalam versi UPI (User Provider Infrastructure). Pengguna harus secara mandiri menyiapkan infrastruktur yang diperlukan untuk instalasi, yaitu, menyiapkan:
- penyeimbang jaringan eksternal (satu untuk menyeimbangkan lalu lintas cluster, yang lainnya untuk menyeimbangkan lalu lintas aplikasi);
- sejumlah catatan DNS, termasuk catatan SRV;
- Server DHCP untuk menerbitkan alamat ke node cluster (baik, atau putuskan metode untuk mengatur pengalamatan statis);
- Server HTTP untuk mentransfer konfigurasi ingnition saat menginstal RHCOS.
Pada saat yang sama, setiap kesalahan (dan seperti yang Anda ketahui - "errare humanum est") dalam persiapan lingkungan menyebabkan kegagalan instalasi cluster. Untuk memfasilitasi tugas ini, proyek pihak ketiga mulai muncul untuk mempercepat persiapan lingkungan dan mengurangi pengaruh "faktor manusia" dalam proses ini. Salah satu yang paling terkenal adalah proyek OCP Helper Node , yang menyiapkan semua konfigurasi yang diperlukan untuk menginstal OpenShift di satu server melalui Ansible. Ada juga opsi untuk menginstal cluster dengan persiapan infrastruktur melalui Terraform.
Tetapi proyek semacam itu tidak menyelesaikan semua masalah dengan menerapkan kluster di vSphere. Seringkali perlu menyediakan cluster OpenShift sebagai layanan ("kubernetes as service"), dan dalam hal ini, mengotomatiskan instalasi OpenShift bukanlah tugas yang mudah - diperlukan intervensi manual: mengamati urutan instalasi OS pada node cluster, mengkonfirmasi sertifikat di cluster, menunggu instalasi operator cluster, dan dll. Jika perlu, Anda dapat mengotomatiskan proses ini, tetapi ini juga membutuhkan waktu dan sumber daya untuk membuat dan memelihara solusi tersebut.
Sejak rilis 4.5.1. dirilis pada 13 Juli 2020, OpenShift mendukung instalasi di vSphere menggunakan IPI (Installer Provided Infrastructure). Artinya, program penginstalan sekarang dapat:
- mempersiapkan semua sumber daya yang diperlukan di vSphere secara mandiri;
- membuat cluster OpenShift dengan satu perintah;
- hapus cluster OpenShift yang dibuat sebelumnya dengan satu perintah.
Selain itu, setelah instalasi seperti itu, administrator dapat menambah atau menghapus node cluster dengan satu perintah di OpenShift. Atau aktifkan penskalaan otomatis sama sekali, memberikan cluster kemampuan untuk secara independen merespons perubahan pemuatan.
Tetapi metode penginstalan baru memiliki satu batasan - semua node cluster, serta server tempat penginstalan dilakukan, harus memiliki akses langsung ke Internet. Jika administrator berada di belakang server proxy perusahaan atau Internet tidak tersedia untuk cluster, cluster harus diinstal seperti sebelumnya, dalam versi UPI.
Mempersiapkan infrastruktur di sekitarnya
Saat menginstal OpenShift, Anda tidak dapat melakukannya tanpa menyiapkan infrastruktur, tetapi daftar tugas menjadi lebih sederhana:
- Server DHCP diperlukan (untuk mengeluarkan alamat ke node OpenShift);
- Diperlukan dua data DNS (VIP untuk API klaster dan VIP untuk lalu lintas Ingress);
- Anda akan membutuhkan akun di vSphere dengan satu set hak istimewa yang dijelaskan dalam dokumentasi untuk menginstal OpenShift .
Dalam kasus kami, untuk menginstal OpenShift dan menjalankan semua layanan yang diperlukan, kami menggunakan server shift-is01 yang menjalankan CentOS 7.
Konfigurasi DHCPD
Tidak ada yang spesifik di sini, kami mengalokasikan kumpulan alamat (192.168.111.100 -192.168.111.150) untuk server OpenShift:
[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;
}
}
Konfigurasi DNS
Untuk cluster kami, zona ocp45.demo.local dibuat dan data A dan PTR untuk rentang DHCP dibuat. Buat entri OpenShift yang diperlukan untuk API dan Ingress:
Potongan dari zona BIND ocp45.demo.local:
api IN A 192.168.111.190
*.apps IN A 192.168.111.191
Setelah itu, kami mengunduh sertifikat dari vCenter kami dan menginstalnya sebagai tepercaya di server kami.
Instal sertifikat 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
Menginstal cluster OpenShift
Prosedur pemasangannya sendiri sekarang sesederhana mungkin:
- dapatkan penginstal dan kunci (Pull Secret) dari situs Red Hat ;
- menyiapkan file yaml dengan install-config.yaml dengan konfigurasi cluster yang direncanakan;
- instal cluster.
Kami mendapatkan penginstal dan kunci
Unduh program instalasi dan PullSecret dari RedHat, prosedur ini dijelaskan dalam Panduan Instalasi . Dalam contoh kami, semua biner yang diperlukan untuk pekerjaan terletak di direktori bin dari direktori home ocp pengguna.
[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
Mempersiapkan 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'
Saat menyiapkan file ini dengan konfigurasi cluster yang akan datang, ada tiga hal yang perlu diperhatikan.
Pertama, cluster akan mengingat konfigurasi node pekerja dari cluster yang ditentukan di install-config. Dan semua node berikutnya yang akan Anda buat saat menskalakan cluster akan memiliki konfigurasi yang persis sama. Oleh karena itu, perlu segera ditentukan konfigurasi optimal dari node pekerja.
Kedua, sebaiknya pengalamatan internal kluster (Jaringan Cluster dan Jaringan Layanan) tidak mengganggu pengalamatan internal Anda. Jika tidak, ada kemungkinan POD di dalam cluster tidak akan dapat membuka koneksi ke sumber daya eksternal (misalnya, pergi ke database eksternal).
Ketiga, nama cluster (bidang metadata) harus cocok dengan domain Anda untuk cluster tersebut. Dalam kasus kami, nama cluster adalah ocp45, dan alamatnya ada di domain ocp45.demo.local.
Anda juga dapat mempersiapkan install-config.yaml melalui penginstal openshift-install, tetapi kemudian Anda tidak akan dapat menentukan konfigurasi node pekerja dan pengalamatan internal. Bagaimanapun, masuk akal untuk membuat install-config.yaml melalui penginstal dan kemudian memperbaikinya.
Menginstal cluster
Prosedur untuk menginstal cluster tidak berubah secara fundamental. Setelah memulai program instalasi:
- penginstal membuat simpul bootstrap dengan sumber daya untuk menginisialisasi simpul master;
- penginstal membuat tiga node master;
- node bootstrap dan tiga node master membentuk bidang kontrol cluster;
- penginstal menonaktifkan dan menghapus node bootstrap;
- Bidang kontrol menerapkan node pekerja dan mengonfigurasi layanan cluster yang diperlukan.
Proses penyiapan cluster.
Kami memulai instalasi cluster dan menunggu. Proses instalasi biasanya memakan waktu 30-40 menit:
Instalasi cluster
[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
Masalah Boot RHCOS
Jika koneksi Internet lambat, penginstalan mungkin tidak bekerja: penginstal tidak akan menunggu gambar RHCOS dimuat. Anda dapat mengunduh gambar RHCOS terlebih dahulu dari tautan yang ditunjukkan oleh penginstal. File yang dihasilkan harus ditempatkan di direktori ~ / .cache / openshift-installer / image_cache dengan nama 5dad1f50634794b0e1ff8a830cad4b98 dan mulai ulang penginstalan. Kali ini openshift-install akan mengambilnya dari sistem file:
INFO The file was found in cache: /home/ocp/.cache/openshift-installer/image_cache/5dad1f50634794b0e1ff8a830cad4b98. Reusing...
Itu saja, cluster sudah siap:
[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
Menskalakan dan menghapus cluster OpenShift
Keuntungan dari metode baru ini tidak hanya karena pemasangannya sekarang lebih mudah dan membutuhkan lebih sedikit usaha persiapan. Cluster OpenShift yang diinstal di vSphere melalui IPI menganggap vShpere sebagai Cloud Platform yang lengkap dan dapat memanfaatkan manfaat "elastisitas" nya.
Sekarang cluster di platform vSphere (seperti platform cloud besar seperti Amazon AWS atau Google GCP) memiliki sekumpulan mesin yang dibuat secara otomatis oleh penginstal:
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
Ini memungkinkan Anda mengurangi penskalaan cluster untuk menjalankan satu perintah. OpenShift secara mandiri akan membuat node dan menambahkannya ke cluster atau menghapusnya.
Menambahkan node ke cluster
[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
Menghapus node dari cluster
[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
Kemampuan cluster untuk membuat dan melepaskan node sendiri dapat digunakan untuk mengonfigurasi penskalaan otomatis cluster OpenShfit .
Secara umum, dengan Instalasi vSphere IPI, semua pengelolaan platform orkestrasi container OpenShift masuk ke sisi kubernetes:
- pembuatan dan penghapusan sumber daya untuk cluster dikelola oleh administrator OpenShift melalui perangkat komputer;
- konfigurasi pengaturan OS pada node cluster juga dikelola oleh administrator OpenShift melalui macheneconfig.
Ini sangat cocok dengan pendekatan Zero Administration yang dinyatakan RedHat untuk infrastruktur dasar di bawah cluster.
Selain mengotomatiskan pembuatan cluster, penginstal baru dapat menghapusnya sendiri. "Di bawah kap" installer Terraform dan di direktori dengan file konfigurasi instalasi, file status Terraform (terraform.tfstate) tetap ada. Ini memungkinkan Anda untuk menghapus cluster yang dibuat sebelumnya tanpa takut "menyentuh" sumber daya orang lain secara tidak sengaja:
[ocp@shift-is01 ~]$./bin/openshift-install destroy cluster --dir=ocp45 --log-level=info
Jika Anda terus-menerus membuat dan menghapus cluster, misalnya, untuk pengujian atau lingkungan pembelajaran, maka fitur ini juga membantu mengotomatiskan proses ini dan mencegah kemungkinan kesalahan manusia dalam proses tersebut.
Kesimpulan
Menginstal OpenShift di VMware vSphere adalah opsi penginstalan yang paling umum. Dan kemampuan OpenShift untuk bekerja dengan vSphere sebagai platform cloud, yang muncul dalam rilis 4.5.1, sangat menyederhanakan administrasinya, memberikan solusi siap pakai untuk mengotomatiskan proses siklus proses mulai dari pembuatan platform, penskalaan, dan penghapusan.
Sekarang, pendekatan Infrastruktur sebagai Kode untuk menyajikan solusi on-premise berdasarkan Red Hat OpenShift dan VMware vSphere menjadi jauh lebih terjangkau untuk implementasi.
Penulis: Sergey Artemov, Arsitek Departemen Solusi DevOps , Jet Infosystems
PS. Bergabunglah dengan komunitas Telegram DevSecOps Talks .