OpenShift 4.5.1: التثبيت على vSphere IPI

إذا كنت قد تعاملت مع OpenShift من قبل ، فأنت تعلم مدى صعوبة تثبيت مجموعة OpenShift في vSphere من البداية. بشكل رئيسي لأن البنية التحتية المحيطة بحاجة إلى الاستعداد. مع إصدار OpenShift 4.5.1 ، أصبحت هذه المهمة أسهل بكثير.







قبل إصدار OpenShift 4.5.1 ، كان من الممكن تثبيت مجموعة على منصة vSphere فقط في إصدار UPI (البنية التحتية لموفر المستخدم). كان على المستخدم أن يقوم بشكل مستقل بإعداد البنية التحتية اللازمة للتثبيت ، أي إعداد:



  • موازنات الشبكة الخارجية (أحدهما لموازنة حركة مرور المجموعة ، والآخر لموازنة حركة مرور التطبيقات) ؛
  • عدد من سجلات DNS ، بما في ذلك سجل SRV ؛
  • خادم DHCP لإصدار العناوين لعقد المجموعة (حسنًا ، أو تحديد طريقة لإعداد العنونة الثابتة) ؛
  • خادم HTTP لنقل تكوين ingnition عند تثبيت RHCOS.


في نفس الوقت ، فإن أي خطأ (وكما تعلم - "errare humanum est") في إعداد البيئة يؤدي إلى فشل في تركيب الكتلة. لتسهيل هذه المهمة بطريقة ما ، بدأت مشاريع الطرف الثالث في الظهور لتسريع إعداد البيئة وتقليل تأثير "العامل البشري" في هذه العملية. من أشهرها مشروع OCP Helper Node ، الذي يعد جميع التكوينات اللازمة لتثبيت OpenShift على خادم واحد عبر Ansible. كانت هناك أيضًا خيارات لتركيب مجموعة مع إعداد البنية التحتية من خلال Terraform.



لكن مثل هذه المشاريع لم تحل كل المشاكل المتعلقة بنشر الكتلة في vSphere. غالبًا ما يكون من الضروري توفير مجموعة OpenShift كخدمة ("kubernetes as service") ، وفي هذه الحالة ، لم تكن أتمتة تثبيت OpenShift مهمة سهلة - كان التدخل اليدوي مطلوبًا: مراقبة ترتيب تثبيت نظام التشغيل على عقد المجموعة ، وتأكيد الشهادات في المجموعة ، وانتظار تثبيت مشغلي الكتلة ، و إلخ إذا لزم الأمر ، يمكنك أتمتة هذه العملية ، ولكن هذا يستغرق أيضًا وقتًا وموارد لإنشاء مثل هذه الحلول وصيانتها.



منذ الإصدار 4.5.1. تم إصداره في 13 يوليو 2020 ، يدعم OpenShift التثبيت في vSphere باستخدام IPI (البنية الأساسية المقدمة من المثبت). هذا يعني أن برنامج التثبيت يمكنه الآن:



  • إعداد جميع الموارد اللازمة في vSphere بشكل مستقل ؛
  • إنشاء كتلة OpenShift بأمر واحد ؛
  • حذف مجموعة OpenShift التي تم إنشاؤها مسبقًا بأمر واحد.


بالإضافة إلى ذلك ، بعد هذا التثبيت ، يمكن للمسؤول إضافة أو إزالة عقد المجموعة بأمر واحد في OpenShift. أو قم بتمكين القياس التلقائي تمامًا ، مما يمنح الكتلة القدرة على الاستجابة بشكل مستقل لتغييرات الحمل.



لكن طريقة التثبيت الجديدة لها قيد واحد - يجب أن يكون لجميع العقد العنقودية ، وكذلك الخادم الذي يتم إجراء التثبيت منه ، وصول مباشر إلى الإنترنت. إذا كان المسؤول خلف خادم وكيل شركة أو لم يكن الإنترنت متاحًا للكتلة ، فيجب تثبيت الكتلة كما كان من قبل ، في إصدار UPI.



تجهيز البنية التحتية المحيطة



عند تثبيت OpenShift ، لا يمكنك الاستغناء عن إعداد البنية التحتية ، لكن قائمة المهام أصبحت أكثر تواضعًا:



  1. مطلوب خادم DHCP (لإصدار عناوين لعقد OpenShift) ؛
  2. مطلوب سجلين DNS (VIP لمجموعة API و VIP لحركة مرور الدخول) ؛
  3. ستحتاج إلى حساب في vSphere مع مجموعة من الامتيازات الموضحة في الوثائق لتثبيت OpenShift .


في حالتنا ، لتثبيت OpenShift وتشغيل جميع الخدمات المطلوبة ، استخدمنا خادم shift-is01 الذي يعمل بنظام CentOS 7.



تكوين DHCPD



لا يوجد شيء محدد هنا ، نختار تجمع العناوين (192.168.111.100 -192.168.111.150) لخوادم 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;
        }
}


تكوين DNS



بالنسبة لمجموعتنا ، تم إنشاء المنطقة المحلية ocp45.demo.local وتم إنشاء سجلات A و PTR لنطاق DHCP. قم بإنشاء إدخالات 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



أصبح إجراء التثبيت الآن بسيطًا قدر الإمكان:



  1. احصل على المثبت والمفاتيح (Pull Secret) من موقع Red Hat ؛
  2. تحضير ملف yaml مع install-config.yaml مع تكوين المجموعة المخطط ؛
  3. تثبيت الكتلة.


نحصل على المثبت والمفاتيح



قم بتنزيل برنامج التثبيت و PullSecret من RedHat ، هذا الإجراء موضح في دليل التثبيت . في مثالنا ، توجد جميع الثنائيات اللازمة للعمل في دليل bin الخاص بالدليل الرئيسي للمستخدم ocp.



[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'


عند تحضير هذا الملف بتكوين مجموعة مستقبلي ، هناك ثلاثة أشياء يجب ملاحظتها.



أولاً ، ستتذكر الكتلة تكوين العقد العاملة في الكتلة المحددة في install-config. وجميع العقد اللاحقة التي ستنشئها عند قياس الكتلة سيكون لها نفس التكوين تمامًا. لذلك ، من الضروري تحديد التكوين الأمثل لعقدة العامل على الفور.



ثانيًا ، من المستحسن ألا يتداخل العنونة الداخلية للكتلة (Cluster Network and Service Network) مع العنونة الداخلية. خلاف ذلك ، هناك احتمال ألا يكون POD داخل الكتلة قادرًا على فتح اتصال بالموارد الخارجية (على سبيل المثال ، الانتقال إلى قاعدة بيانات خارجية).



ثالثًا ، يجب أن يتطابق اسم الكتلة (حقل البيانات الوصفية) مع المجال الخاص بك لتلك المجموعة. في حالتنا ، اسم الكتلة هو ocp45 ، وعناوينه موجودة في المجال ocp45.demo.local.



يمكنك أيضًا إعداد install-config.yaml من خلال برنامج التثبيت openshift-install ، ولكن بعد ذلك لن تتمكن من تحديد تكوين العقدة العاملة والعنونة الداخلية. في أي حال ، من المنطقي إنشاء install-config.yaml من خلال برنامج التثبيت ثم إصلاحه.



تركيب الكتلة



لم يتغير إجراء تثبيت الكتلة بشكل جذري. بعد بدء برنامج التثبيت:



  • يقوم المثبت بإنشاء عقدة تمهيد تشغيل مع موارد لتهيئة العقدة الرئيسية ؛
  • يقوم المثبت بإنشاء ثلاث عقد رئيسية ؛
  • تشكل عقدة التمهيد وثلاث عقد رئيسية مستوى تحكم عنقود ؛
  • يقوم المثبت بتعطيل عقدة التمهيد وإزالتها ؛
  • ينشر مستوى التحكم العقد العاملة ويشكل خدمات الكتلة الضرورية.




عملية إعداد الكتلة.



نبدأ التثبيت العنقودي وننتظر. تستغرق عملية التثبيت عادةً من 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 الكتلة



لا تتمثل مزايا الطريقة الجديدة في أن التثبيت أصبح الآن أسهل ويتطلب جهدًا أقل في التحضير. تعتبر مجموعة OpenShift المثبتة في vSphere عبر IPI أن vShpere منصة سحابية كاملة ويمكنها الاستفادة من مزايا "المرونة" الخاصة بها.



يوجد الآن مجموعة على منصة vSphere (مثل الأنظمة الأساسية السحابية الكبيرة مثل Amazon AWS أو Google GCP) لديها مجموعة آلات يتم إنشاؤها تلقائيًا بواسطة المثبت:



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


هذا يسمح لك بتقليل تحجيم الكتلة لتشغيل أمر واحد. سيقوم 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:



  1. تتم إدارة إنشاء وحذف الموارد للكتلة بواسطة مسؤول OpenShift من خلال مجموعة الماكينات ؛
  2. يتم أيضًا إدارة تكوين إعدادات نظام التشغيل على عقد المجموعة بواسطة مسؤول OpenShift عبر macheneconfig.


يتناسب هذا تمامًا مع نهج الإدارة الصفرية المعلن من RedHat للبنية التحتية الأساسية ضمن المجموعة.



بالإضافة إلى أتمتة إنشاء المجموعات ، يمكن للمثبت الجديد إزالتها من تلقاء نفسه. "تحت غطاء" مثبت Terraform وفي الدليل الذي يحتوي على ملفات تكوين التثبيت ، يظل ملف حالة Terraform (terraform.tfstate). يتيح لك هذا حذف مجموعة تم إنشاؤها مسبقًا دون خوف من "لمس" موارد الأشخاص الآخرين عن طريق الخطأ:



[ocp@shift-is01 ~]$./bin/openshift-install destroy cluster --dir=ocp45 --log-level=info


إذا كنت تقوم بإنشاء مجموعات وإفلاتها باستمرار ، على سبيل المثال ، للاختبارات أو بيئات التدريب ، فإن هذه الميزة تساعد أيضًا في أتمتة هذه العملية ومنع حدوث خطأ بشري محتمل في العملية.



خاتمة



يعد تثبيت OpenShift على برنامج VMware vSphere هو خيار التثبيت الأكثر شيوعًا. كما أن قدرة OpenShift على العمل مع vSphere كمنصة سحابية ، والتي ظهرت في الإصدار 4.5.1 ، تبسط إدارتها بشكل كبير ، مما يوفر حلاً جاهزًا لأتمتة عمليات دورة الحياة من إنشاء النظام الأساسي وتوسيع نطاقه وإزالته.



الآن أصبحت البنية التحتية كنهج رمز لخدمة الحلول المحلية القائمة على Red Hat OpenShift و VMware vSphere أكثر سهولة في التنفيذ.



المؤلف: سيرجي أرتيموف ، مهندس قسم حلول DevOps في Jet Infosystems



PS. انضم إلى مجتمع Telegram DevSecOps Talks .



All Articles