OpenShift – добавяне на worker node

Наложи ми се да добавя нов worker node към съществуваща инсталация на OpenShift с UPI върху VMware. Проблемът, е че съм подменил CA на OCP клъстера. Поради което използването на първичните worker.ing файлове е неуспешно. Чупи се комуникацията до api.domain.name.

Първа стъпка, вземане на текущият сертификат:

oc describe cm root-ca -n kube-system

Трябва ни съдържанието от BEGIN CERT.. до END CERT. За мое улеснение го записвам в ca.crt файл.

Ако разгледаме текущият ignition файл, ще се установи, че съдържанието на въпросният сертификат е в base64.

Втора стъпка, създаване на base64 от записаният файл

cat ca.crt | base64 -w0 > ca.crt.base64

Трета стъпка подмяна на съдържанието. За целта съм си копирал worker.ign файлът на друго място. Отварям го с любимият текстови редактор и извършвам корекция, като съдържанието изглежда нещо такова:

{"ignition":{"config":{"merge":[{"source":"https://api.domain.name:22623/config/worker"}]},"security":{"tls":{"certificateAuthorities":[{"source":"data:text/plain;charset=utf-8;base64, <съдържанието на ca.crt.base64>" }]}},"version":"3.2.0"}}

След запис, тъй като използвам VMware трябва файлът да го направя отново на base64 и съдържанието да го подам на него. С това нещата приключват. Ако инсталацията ни е например за baremetal то готовият ignition файл, трябва да бъде прехвърлен върху достъпен webserver и посочен по време на инсталацията на CoreOS.

OpenShift – премахване на проект

В този контейнизиран свят, доста често се налага да създавам/трия проекти. Второто по-често. Оказва се, че поради някаква причина не винаги това е успешно. При умишленото му указване то да е с параметър „force“.

Проект в OpenShift: nginx-ingress

Като например това:

kubectl delete ns nginx-ingress --force --grace-period=0

Решението понякога е това:

kubectl get namespace nginx-ingress -o json > nginx.json
vim nginx.json ( премахване на kubernetes от спецификация finalize)
kubectl replace --raw "/api/v1/namespaces/nginx-ingress/finalize" -f ./nginx.json

или с един ред:

kubectl get ns nginx-ingress -o json | jq '.spec.finalizers = []' | kubectl replace --raw "/api/v1/namespaces/nginx-ingress/finalize" -f -

Red Hat изпит

На 24 август 2021г. положих успешно Red Hat изпит Red Hat Enterprise Linux 8 (ex294).

Изпитът беше за 4 часа, като изцяло се използва технологията Ansible. Разполах с 5 машини, като 4 от тях трябва да играят различни роли(уеб сървър. дб, NFS).

Профилът ми в Red Hat.

Официално съм Red Hat Certified Engineer

В началото на годината започнах едно ново професионално пътешествие. След кратък разговор с началника, той ме убеди, че трябва да придобия квалификацията Red Hat Certified Engineer. Целта е ясна. За да се придобие въпросната квалификация, трябваше да взема два изпита Red Hat Certified System Administrator(EX200) и Red Hat Certified Engineer(EX300).

Ключа към успеха се криеше в многото практика, отново и отново. Бях си изградил един setup с vagrant и в деня не помня по колко up/destroy -f съм писал. За двата сертификата отделих може би над 80 часа.

Аз @ Red Hat

OpenShift Container Platform 3.10

От началото на година усилено съм се съсредоточил върху инсталиране/конфигуриране и разучаването на OpenShift. След усилена борба, успях да му надвия.

Ситуацията е следната, написах playbook, който разпъва OpenShift ent(container platform 3.10) върху 1 master, 3 nodes, 3 gluster registry.
Много съм доволен от себе си 🙂

Следваща стъпка, 3 master, 3 nodes, 3 gluster registry, 1 load balancer. 

Същевременно изкарах и сертификат от Red Hat с гръмкото име „Red Hat Delivery Specialist – Platform-as-a-Service (PaaS) Administration“.