OpenShift 4.5.1: Instalasi di vSphere IPI

Jika Anda pernah berurusan dengan OpenShift sebelumnya, maka Anda tahu betapa melelahkannya menginstal cluster OpenShift di vSphere dari awal. Terutama karena infrastruktur di sekitarnya perlu disiapkan. Dengan dirilisnya OpenShift 4.5.1, tugas ini menjadi lebih mudah.







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:



  1. Server DHCP diperlukan (untuk mengeluarkan alamat ke node OpenShift);
  2. Diperlukan dua data DNS (VIP untuk API klaster dan VIP untuk lalu lintas Ingress);
  3. 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:



  1. dapatkan penginstal dan kunci (Pull Secret) dari situs Red Hat ;
  2. menyiapkan file yaml dengan install-config.yaml dengan konfigurasi cluster yang direncanakan;
  3. 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:



  1. pembuatan dan penghapusan sumber daya untuk cluster dikelola oleh administrator OpenShift melalui perangkat komputer;
  2. 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 .



All Articles