Как установить кластер OKD OpenShift 4.7 на OpenStack
В этом руководстве мы будем выполнять установку кластера OKD / OpenShift 4.7 на облачной платформе OpenStack. OpenShift — это мощное программное решение для контейнеризации корпоративного уровня, разработанное Red Hat. Решение построено на контейнерах Docker, организованных и управляемых Kubernetes на основе Red Hat Enterprise Linux.
Платформа OpenShift предлагает автоматическую установку, обновление и управление жизненным циклом всего стека контейнеров — от операционной системы, Kubernetes и кластерных сервисов до развернутых приложений. Операционная система, которая будет использоваться как на машинах с планом управления, так и на рабочих машинах, — это Fedora CoreOS (FCOS) для развертывания OKD и Red Hat CoreOS (RHCOS) для развертывания OpenShift. Эта ОС включает кубелет, который является агентом узла Kubernetes, и среду выполнения контейнера CRI-O, оптимизированную для Kubernetes.
Fedora CoreOS / Red Hat Enterprise Linux CoreOS также включает в себя важный инструмент подготовки при первой загрузке под названием Ignition, который позволяет кластеру настраивать машины. Поскольку все машины в кластере работают на RHCOS / FCOS, кластер будет управлять всеми аспектами своих компонентов и машин, включая операционную систему.
Ниже приводится подмножество целей установки и зависимостей для OpenShift / OKD Cluster.
Последним выпуском OpenShift на момент написания этой статьи является версия 4.7 . Выполните действия, описанные в этой статье, чтобы получить работающую установку OpenShift / OKD Cluster на OpenStack. Требуется наличие работающей установки OpenStack Cloud — локальной, совместно размещенной инфраструктуры или настройки Cloud IaaS.
Шаг 1. Загрузите программу установки / клиентские инструменты
Загрузите программу установки (openshift-install) и инструменты управления кластером с
- OKD выпускает инструменты
- Для настройки кластера OpenShift : страница выпусков OpenShift
OKD 4.7 Программа установки и клиентские инструменты
Скачиваем установщик OKD 4.7:
mkdir -p ~/okd/tools
cd ~/okd/tools
wget https://github.com/openshift/okd/releases/download/4.7.0-0.okd-2021-05-22-050008/openshift-install-linux-4.7.0-0.okd-2021-05-22-050008.tar.gz
Распакуйте файл после загрузки:
$ tar xvf openshift-install-linux-4.7.0-0.okd-2021-05-22-050008.tar.gz
README.md
openshift-install
Переместите полученный двоичный файл в каталог /usr/local/bin :
sudo mv openshift-install /usr/local/bin
Скачать клиентские инструменты:
wget https://github.com/openshift/okd/releases/download/4.7.0-0.okd-2021-05-22-050008/openshift-client-linux-4.7.0-0.okd-2021-05-22-050008.tar.gz
tar xvf openshift-client-linux-4.7.0-0.okd-2021-05-22-050008.tar.gz
sudo mv kubectl oc /usr/local/bin
Проверьте версии как oc, так и openshift-install, чтобы подтвердить успешную установку:
$ oc version
Client Version: 4.7.0-0.okd-2021-05-22-050008
Kubernetes Version: v1.21.1
$ openshift-install version
openshift-install 4.7.0-0.okd-2021-05-22-050008
built from commit ba1a5fc61dd3be134a24fa6d89ae24012a93385a
release image quay.io/openshift/okd@sha256:301cd36b2ab370027ddb0ec43e540a03a24748a25b69578dec504d130475304b
Программа установки OpenShift 4.7 и клиентские инструменты
Перед установкой OpenShift Container Platform загрузите установочный файл на локальный компьютер.
- Доступ к странице поставщика инфраструктуры на сайте Red Hat OpenShift Cluster Manager.
- Выберите поставщика инфраструктуры — (Red Hat OpenStack)
- Загрузите программу установки для вашей операционной системы
# Linux
mkdir -p ~/ocp/tools
cd ~/ocp/tools
wget https://mirror.openshift.com/pub/openshift-v4/clients/ocp/stable/openshift-install-linux.tar.gz
tar xvf openshift-install-linux.tar.gz
sudo mv openshift-install /usr/local/bin/
# macOS
wget https://mirror.openshift.com/pub/openshift-v4/clients/ocp/stable/openshift-install-mac.tar.gz
tar xvf openshift-install-mac.tar.gz
sudo mv openshift-install /usr/local/bin/
Установка средств управления кластером:
# Linux
wget https://mirror.openshift.com/pub/openshift-v4/clients/ocp/stable/openshift-client-linux.tar.gz
tar xvf openshift-client-linux.tar.gz
sudo mv oc kubectl /usr/local/bin/
Подтвердите установку:
$ oc version
Client Version: 4.7.12
$ kubectl version --client --short
Client Version: v1.20.1-5-g76a04fc
$ oc version
Client Version: 4.7.12
Шаг 2. Настройте облака OpenStack в файле clouds.yaml
В OpenStack clouds.yaml
— это файл конфигурации, содержащий все необходимое для подключения к одному или нескольким облакам. Он может содержать личную информацию и обычно считается личным для пользователя.
Клиент OpenStack будет искать clouds.yaml
файл в следующих местах:
- текущий рабочий каталог
~/.config/openstack
/etc/openstack
Мы поместим наш файл конфигурации Clouds в каталог ~/.config/openstack :
mkdir -p ~/.config/openstack/
Создайте новый файл:
vim ~/.config/openstack/clouds.yaml
Пример содержимого конфигурации для двух облаков. Соответственно изменить:
clouds:
osp1:
auth:
auth_url: http://192.168.200.2:5000/v3
project_name: admin
username: admin
password: 'AdminPassword'
user_domain_name: Default
project_domain_name: Default
identity_api_version: 3
region_name: RegionOne
osp2:
auth:
auth_url: http://192.168.100.2:5000/v3
project_name: admin
username: admin
password: 'AdminPassword'
user_domain_name: Default
project_domain_name: Default
identity_api_version: 3
region_name: RegionOne
Облако можно выбрать в командной строке:
$ openstack --os-cloud osp1 network list --format json
[
{
"ID": "44b32734-4798-403c-85e3-fbed9f0d51f2",
"Name": "private",
"Subnets": [
"1d1f6a6d-9dd4-480e-b2e9-fb51766ded0b"
]
},
{
"ID": "70ea2e21-79fd-481b-a8c1-182b224168f6",
"Name": "public",
"Subnets": [
"8244731c-c119-4615-b134-cfad768a27d4"
]
}
]
Шаг 3. Создание вариантов вычислений для узлов кластера OpenShift
Для создания кластера требуется вариант с памятью не менее 16 ГБ , 4 виртуальными ЦП и 25 ГБ дискового пространства.
Давайте создадим аромат Compute:
$ openstack flavor create --ram 16384 --vcpus 4 --disk 30 m1.openshift
+----------------------------+--------------------------------------+
| Field | Value |
+----------------------------+--------------------------------------+
| OS-FLV-DISABLED:disabled | False |
| OS-FLV-EXT-DATA:ephemeral | 0 |
| description | None |
| disk | 30 |
| id | 90234d29-e059-48ac-b02d-e72ce3f6d771 |
| name | m1.openshift |
| os-flavor-access:is_public | True |
| properties | |
| ram | 16384 |
| rxtx_factor | 1.0 |
| swap | |
| vcpus | 4 |
+----------------------------+--------------------------------------+
Если у вас больше вычислительных ресурсов, вы можете добавить больше ЦП, памяти и хранилища к создаваемой версии.
Шаг 4. Создайте плавающие IP-адреса
У вас будет два плавающих IP-адреса для:
- Плавающий IP-адрес для связи с входным портом.
- Плавающий IP-адрес для связи с балансировщиком нагрузки API .
Создайте плавающий IP-адрес балансировщика нагрузки API:
$ openstack floating ip create --description "API <cluster_name>.<base_domain>" <external_network>
Создать входящий плавающий IP-адрес:
$ openstack floating ip create --description "Ingress <cluster_name>.<base_domain>" <external_network>
Вы можете перечислить свои сети, используя команду:
$ openstack network list
+--------------------------------------+---------------------+--------------------------------------+
| ID | Name | Subnets |
+--------------------------------------+---------------------+--------------------------------------+
| 155ef402-bf39-494c-b2f7-59509828fcc2 | public | 9d0e8119-c091-4a20-b03a-80922f7d43dd |
| af7b4f7c-9095-4643-a470-fefb47777ae4 | private | 90805451-e2cd-4203-b9ac-a95dc7d92957 |
+--------------------------------------+---------------------+--------------------------------------+
Мои плавающие IP-адреса будут созданы из общедоступной подсети. Внешнюю сеть нужно настроить заранее.
$ openstack floating ip create --description "API ocp.mycluster.com" public
+---------------------+--------------------------------------+
| Field | Value |
+---------------------+--------------------------------------+
| created_at | 2021-05-29T19:48:23Z |
| description | API ocp.mycluster.com |
| dns_domain | None |
| dns_name | None |
| fixed_ip_address | None |
| floating_ip_address | 172.21.200.20 |
| floating_network_id | 155ef402-bf39-494c-b2f7-59509828fcc2 |
| id | a0f41edb-c90b-417d-beff-9c03f180c71b |
| name | 172.21.200.20 |
| port_details | None |
| port_id | None |
| project_id | d0515ffa23c24e54a3b987b491f17acb |
| qos_policy_id | None |
| revision_number | 0 |
| router_id | None |
| status | DOWN |
| subnet_id | None |
| tags | [] |
| updated_at | 2021-05-29T19:48:23Z |
+---------------------+--------------------------------------+
$ openstack floating ip create --description "Ingress ocp.mycluster.com" public
+---------------------+--------------------------------------+
| Field | Value |
+---------------------+--------------------------------------+
| created_at | 2021-05-29T19:42:02Z |
| description | Ingress ocp.mycluster.com |
| dns_domain | None |
| dns_name | None |
| fixed_ip_address | None |
| floating_ip_address | 172.21.200.22 |
| floating_network_id | 155ef402-bf39-494c-b2f7-59509828fcc2 |
| id | 7035ff39-2903-464c-9ffc-c07a3245448d |
| name | 172.21.200.22 |
| port_details | None |
| port_id | None |
| project_id | d0515ffa23c24e54a3b987b491f17acb |
| qos_policy_id | None |
| revision_number | 0 |
| router_id | None |
| status | DOWN |
| subnet_id | None |
| tags | [] |
| updated_at | 2021-05-29T19:42:02Z |
+---------------------+--------------------------------------+
Шаг 5. Создайте необходимые записи DNS.
Получите доступ к порталу или консоли управления DNS-сервером и создайте необходимые записи DNS:
api.<cluster_name>.<base_domain>. IN A <API_FIP>
*.apps.<cluster_name>.<base_domain>. IN A <apps_FIP>
Где:
- <cluster_name> это базовый домен, например infoit.com.ua
- <cluster_name> это имя, которое будет присвоено вашему кластеру, наприме ocp
- <API_FIP> плавающий IP-адрес, созданный на шаге 4 для балансировщика нагрузки API.
- <apps_FIP> плавающий IP-адрес, созданный на шаге 4 для Ingress (доступ к развернутым приложениям).
Пример записи API DNS:
Пример записи Ingress DNS:
Шаг 6. Создайте файл OpenShift install-config.yaml
На странице » Секрет извлечения» на сайте Red Hat OpenShift Cluster Manager загрузите свой секрет извлечения установки в виде файла .txt.
Выполните следующую команду, чтобы сгенерировать фай install-config.yaml :
cd ~/
openshift-install create install-config --dir=<installation_directory>
Для <installation_directory>
укажите имя каталога для хранения файлов, создаваемых программой установки. Указанный каталог установки должен быть пустым .
Пример:
$ openshift-install create install-config --dir=ocp
При появлении запросов укажите сведения о конфигурации вашего облака:
? Platform openstack # Select openstack as the platform to target.
? Cloud osp1 # Choose cloud configured in clouds.yml
? ExternalNetwork public # Specify OpenStack external network name to use for installing the cluster.
? APIFloatingIPAddress [Use arrows to move, enter to select, type to filter, ? for more help]
> 172.21.200.20 # Specify the floating IP address to use for external access to the OpenShift API
172.21.200.22
? FlavorName [Use arrows to move, enter to select, type to filter, ? for more help]
m1.large
m1.magnum
m1.medium
> m1.openshift # Specify a RHOSP flavor with at least 16 GB RAM to use for control plane and compute nodes.
m1.small
m1.tiny
m1.xlarge
? Base Domain [? for help] mycluster.com # Select the base domain to deploy the cluster to
? Cluster Name ocp # Enter a name for your cluster. The name must be 14 or fewer characters long.
? Pull Secret [? for help] <paste-pull-secret>
INFO Install-Config created in: ocp
Создание файла
$ ls ocp/
install-config.yaml
Вы можете редактировать для дальнейшей настройки:
$ vim ocp/install-config.yaml
- Убедитесь, что плавающие IP-адреса добавлены в файл install-config.yaml как значения следующих параметров:
platform.openstack.ingressFloatingIP
platform.openstack.apiFloatingIP
Пример:
...
platform:
openstack:
apiFloatingIP: 172.21.200.20
ingressFloatingIP: 172.21.200.22
apiVIP: 10.0.0.5
cloud: osp1
Также добавьте открытый ключ ssh:
$ vim ocp/install-config.yaml
...
sshKey: replace-me-with-ssh-pub-key-contents
Если у вас нет SSH-ключа, настроенного для аутентификации без пароля на вашем компьютере, создайте его:
$ ssh-keygen -t ed25519 -N '' -f <path>/<file_name>
Шаг 7. Разверните кластер OKD / OpenShift в OpenStack
Перейдите в каталог, содержащий программу установки, и сделайте резервную копию файла install-config.yaml :
cp install-config.yaml install-config.yaml.bak
Инициализируйте развертывание кластера:
$ openshift-install create cluster --dir=ocp --log-level=info
INFO Credentials loaded from file "/root/.config/openstack/clouds.yaml"
INFO Consuming Install Config from target directory
INFO Obtaining RHCOS image file from 'https://builds.coreos.fedoraproject.org/prod/streams/stable/builds/33.20210217.3.0/x86_64/fedora-coreos-33.20210217.3.0-openstack.x86_64.qcow2.xz?sha256=ae088d752a52859ad38c53c29090efd5930453229ef6d1204645916aab856fb1'
INFO The file was found in cache: /root/.cache/openshift-installer/image_cache/41b2fca6062b458e4d5157ca9e4666f2. Reusing...
INFO Creating infrastructure resources...
INFO Waiting up to 20m0s for the Kubernetes API at https://api.ocp.mycluster.com:6443...
INFO API v1.20.0-1073+df9c8387b2dc23-dirty up
INFO Waiting up to 30m0s for bootstrapping to complete...
INFO Destroying the bootstrap resources...
INFO Waiting up to 40m0s for the cluster at https://api.ocp.mycluster.com: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=/root/okd/ocp/auth/kubeconfig'
INFO Access the OpenShift web-console here: https://console-openshift-console.apps.ocp.mycluster.com
INFO Login to the console with user: "kubeadmin", and password: "33yzG-Ogiup-huGI9"
INFO Time elapsed: 42m39s
Список созданных серверов на OpenStack:
$ openstack server list --column Name --column Networks --column Status
+--------------------------------------+--------+---------------------------------------+
| Name | Status | Networks |
+--------------------------------------+--------+---------------------------------------+
| ocp-nlrnw-worker-0-nz2ch | ACTIVE | ocp-nlrnw-openshift=10.0.1.197 |
| ocp-nlrnw-worker-0-kts42 | ACTIVE | ocp-nlrnw-openshift=10.0.0.201 |
| ocp-nlrnw-worker-0-92kvf | ACTIVE | ocp-nlrnw-openshift=10.0.2.197 |
| ocp-nlrnw-master-2 | ACTIVE | ocp-nlrnw-openshift=10.0.3.167 |
| ocp-nlrnw-master-1 | ACTIVE | ocp-nlrnw-openshift=10.0.1.83 |
| ocp-nlrnw-master-0 | ACTIVE | ocp-nlrnw-openshift=10.0.0.139 |
+--------------------------------------+--------+---------------------------------------+
Экспортируйте файл конфигурации доступа к кластеру:
export KUBECONFIG=ocp/auth/kubeconfig
Вы также можете сделать его kubeconfig по умолчанию:
cp ocp/auth/kubeconfig ~/.kube/config
Список доступных узлов в кластере
$ oc get nodes
NAME STATUS ROLES AGE VERSION
ocp-nlrnw-master-0 Ready master 3h48m v1.20.0+df9c838-1073
ocp-nlrnw-master-1 Ready master 3h48m v1.20.0+df9c838-1073
ocp-nlrnw-master-2 Ready master 3h48m v1.20.0+df9c838-1073
ocp-nlrnw-worker-0-92kvf Ready worker 3h33m v1.20.0+df9c838-1073
ocp-nlrnw-worker-0-kts42 Ready worker 3h33m v1.20.0+df9c838-1073
ocp-nlrnw-worker-0-nz2ch Ready worker 3h33m v1.20.0+df9c838-1073
Просмотрите версию кластера кластера:
$ oc get clusterversion
NAME VERSION AVAILABLE PROGRESSING SINCE STATUS
version 4.7.0-0.okd-2021-05-22-050008 True False 3h16m Cluster version is 4.7.0-0.okd-2021-05-22-050008
Убедитесь, что все операторы кластера доступны и ни один из них не ухудшен:
$ oc get clusteroperator
NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE
authentication 4.7.0-0.okd-2021-05-22-050008 True False False 3h24m
baremetal 4.7.0-0.okd-2021-05-22-050008 True False False 3h52m
cloud-credential 4.7.0-0.okd-2021-05-22-050008 True False False 3h57m
cluster-autoscaler 4.7.0-0.okd-2021-05-22-050008 True False False 3h51m
config-operator 4.7.0-0.okd-2021-05-22-050008 True False False 3h52m
console 4.7.0-0.okd-2021-05-22-050008 True False False 3h31m
csi-snapshot-controller 4.7.0-0.okd-2021-05-22-050008 True False False 3h52m
dns 4.7.0-0.okd-2021-05-22-050008 True False False 3h51m
etcd 4.7.0-0.okd-2021-05-22-050008 True False False 3h51m
image-registry 4.7.0-0.okd-2021-05-22-050008 True False False 3h37m
ingress 4.7.0-0.okd-2021-05-22-050008 True False False 3h38m
insights 4.7.0-0.okd-2021-05-22-050008 True False False 3h45m
kube-apiserver 4.7.0-0.okd-2021-05-22-050008 True False False 3h49m
kube-controller-manager 4.7.0-0.okd-2021-05-22-050008 True False False 3h50m
kube-scheduler 4.7.0-0.okd-2021-05-22-050008 True False False 3h49m
kube-storage-version-migrator 4.7.0-0.okd-2021-05-22-050008 True False False 3h37m
machine-api 4.7.0-0.okd-2021-05-22-050008 True False False 3h46m
machine-approver 4.7.0-0.okd-2021-05-22-050008 True False False 3h51m
machine-config 4.7.0-0.okd-2021-05-22-050008 True False False 3h50m
marketplace 4.7.0-0.okd-2021-05-22-050008 True False False 3h50m
monitoring 4.7.0-0.okd-2021-05-22-050008 True False False 3h37m
network 4.7.0-0.okd-2021-05-22-050008 True False False 3h52m
node-tuning 4.7.0-0.okd-2021-05-22-050008 True False False 3h50m
openshift-apiserver 4.7.0-0.okd-2021-05-22-050008 True False False 3h45m
openshift-controller-manager 4.7.0-0.okd-2021-05-22-050008 True False False 3h44m
openshift-samples 4.7.0-0.okd-2021-05-22-050008 True False False 3h43m
operator-lifecycle-manager 4.7.0-0.okd-2021-05-22-050008 True False False 3h52m
operator-lifecycle-manager-catalog 4.7.0-0.okd-2021-05-22-050008 True False False 3h52m
operator-lifecycle-manager-packageserver 4.7.0-0.okd-2021-05-22-050008 True False False 3h46m
service-ca 4.7.0-0.okd-2021-05-22-050008 True False False 3h52m
storage 4.7.0-0.okd-2021-05-22-050008 True False False 3h50m
Вы всегда можете распечатать консоль входа OpenShift с помощью команды:
$ oc whoami --show-console
https://console-openshift-console.apps.ocp.mycluster.com
Затем вы можете войти в систему, используя распечатанный URL:
Удаление OKD / OpenShift Cluster
Чтобы уничтожить кластер, созданный на OpenStack, вам потребуется:
- Копия программы установки, которую вы использовали для развертывания кластера.
- Файлы, созданные программой установки при создании кластера.
Затем кластер можно уничтожить с помощью следующей команды:
$ openshift-install destroy cluster --dir=<installation_directory> --log-level=info
При желании вы можете удалить каталог и программу установки OpenShift Container Platform.