☸️ Установка легкого Openshift с помощью Microshift

Как установить мини OpenShift

by itisgood
Граничные вычисления – это распределенная ИТ-архитектура, которая позволяет обрабатывать данные клиента на периферии сети.
Данные обрабатываются как можно ближе к источнику их происхождения.
Другими словами, это позволяет приблизить приложения к источникам данных или локальным пограничным серверам.
Такая архитектура дает множество преимуществ для бизнеса, таких как улучшенное время отклика, повышенная доступность полосы пропускания и более быстрое получение информации.
Почти все системные администраторы и инженеры DevOps знакомы с Kubernetes.
Этот инструмент позволяет запускать контейнерные рабочие нагрузки на ферме серверов.
Он также имеет множество преимуществ, таких как масштабирование, переносимость, повышенная безопасность и т. д.
Сегодня существует множество дистрибутивов Kubernetes, включая Rancher, Minikube, EKS, AKS, GKE, Red Hat OpenShift, Docker Kubernetes, Mirantis, VMware Tanzu Kubernetes Grid и другие.
Хотя Red Hat Openshift считается легким решением для оркестрации контейнеров Kubernetes, существует еще более легкий дистрибутив, известный как MicroShift.
Сборка MicroShift от Red Hat® – это решение, построенное на основе краевых возможностей Red Hat® OpenShift®.
Это инструмент с открытым исходным кодом, который сочетает в себе дистрибутив для предприятий, обеспечивающий мощь Kubernetes.
Microshift предназначен для предприятий или пользователей с небольшим или маломощным оборудованием, которые все же хотят пользоваться возможностями оркестровки Kubernetes.
В этом руководстве мы узнаем, как можно быстро развернуть легковесный Openshift для граничных вычислений с помощью Microshift.

☁️ Что такое гипервизор? В чем разница между типами 1 и 2?

Системные требования

Ниже приведены спецификации, необходимые для работы Microshift.

  • Рекомендуемая операционная система: RHEL 8, CentOS Stream или Fedora 34+
  • Архитектура: 64-битная архитектура процессора (amd64/x86_64, arm64 или riscv64)
  • Память: 2 ГБ оперативной памяти
  • Процессор: 2 ядра процессора
  • Хранение: 1 ГБ свободного места для хранения данных

После выполнения всех вышеперечисленных требований действуйте, как показано ниже.

1: Установите CRI-O на свою систему

CRI-O – это движок выполнения контейнеров для Kubernetes.

Он может использоваться в качестве альтернативы Docker, Containerd и т. д.

Чтобы установить его, выполните следующие команды в вашей системе.

На RedHat

command -v subscription-manager &> /dev/null \
    && subscription-manager repos --enable rhocp-4.8-for-rhel-8-x86_64-rpms
sudo dnf install -y cri-o cri-tools conntrack

На CentOS Stream
Сначала установите репозиторий EPEL:

sudo dnf install epel-release -y

Включите репозиторий Powertools с помощью команды:

sudo dnf config-manager --enable powertools

Теперь включите репозиторий и установите Microshift:

sudo dnf module enable -y cri-o
sudo dnf install -y cri-o cri-tools conntrack

На Fedora

sudo dnf module enable -y cri-o
sudo dnf install -y cri-o cri-tools conntrack

После установки запустите и включите службу:

sudo systemctl enable crio --now

Проверьте состояние:

$ systemctl status crio
 ● crio.service - Container Runtime Interface for OCI (CRI-O)
   Loaded: loaded (/usr/lib/systemd/system/crio.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2023-11-30 19:06:02 EAT; 4s ago
     Docs: https://github.com/cri-o/cri-o
 Main PID: 829600 (crio)
    Tasks: 9
   Memory: 41.0M
   CGroup: /system.slice/crio.service
           └─829600 /usr/bin/crio
.....

2: Установка и настройка MicroShift

После установки и запуска среды выполнения мы можем быстро установить и использовать Microshift.

Начнем с включения репозитория, предоставляющего пакеты:

sudo dnf copr enable -y @redhat-et/microshift

Теперь установите Microshift на RedHat, CentOS и Fedora с помощью команды:

sudo dnf install -y microshift podman

Далее нужно разрешить порты и IP-адреса через брандмауэр, если он активен.

Для этого выполните следующие команды:

sudo firewall-cmd --zone=trusted --add-source=10.42.0.0/16 --permanent
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo firewall-cmd --zone=public --add-port=443/tcp --permanent
sudo firewall-cmd --zone=public --add-port=5353/udp --permanent
sudo firewall-cmd --reload

Загрузите pull secret OpenShift со страницы https://console.redhat.com/openshift/downloads#tool-pull-secret и сохраните его в файле ~/.pull-secret.json.

Настройте CRI-O на использование pull secret.

sudo cp ~/.pull-secret.json /etc/crio/openshift-pull-secret

Перезапустите службу MicroShift.

sudo systemctl enable --now microshift.service

Проверьте, работает ли служба:

$ systemctl status microshift
● microshift.service - MicroShift
   Loaded: loaded (/usr/lib/systemd/system/microshift.service; enabled; vendor preset: disabl>
   Active: active (running) since Thu 2023-11-30 19:08:18 EAT; 4s ago
 Main PID: 830336 (microshift)
    Tasks: 8 (limit: 98700)
   Memory: 40.2M
   CGroup: /system.slice/microshift.service
           └─830336 /usr/bin/microshift run

Nov 30 19:08:18 microshift.itisgood.ru systemd[1]: Started MicroShift.

Более подробная информация о настройке портов и брандмауэров содержится в документации по брандмауэрам.

Вам необходимо настроить сетевой интерфейс Microshift CNI таким образом, чтобы он соответствовал интерфейсу, определенному в файле /etc/cni/net.d/100-crio-bridge.conf.

По умолчанию используется интерфейс cni0, поэтому мы заменим его командой:

sudo sed -i '/cni_default_network = "cbr0"/c\cni_default_network = "cni0"' /etc/crio/crio.conf.d/microshift.conf

В системах Fedora и CentOS могут возникнуть проблемы с падением кластера при запуске.

В этом случае необходимо доверить ключи GPG с помощью команд:

sudo podman image trust set -f /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release registry.access.redhat.com
sudo podman image trust set -f /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release registry.redhat.io

Также необходимо создать реджестри контейнеров с помощью следующих команд

sudo tee /etc/containers/registries.d/registry.access.redhat.com.yaml > /dev/null <<EOF
docker:
     registry.access.redhat.com:
         sigstore: https://access.redhat.com/webassets/docker/content/sigstore
EOF

sudo tee /etc/containers/registries.d/registry.redhat.io.yaml > /dev/null <<EOF
docker:
     registry.redhat.io:
         sigstore: https://registry.redhat.io/containers/sigstore
EOF

3. Доступ и использование MicroShift Kubernetes

Теперь, чтобы использовать установленный MicroShift, вам нужно установить клиент, либо kubectl, либо клиент OpenShift.

В нашем руководстве мы установим оба клиента с помощью команд:

curl -O https://mirror.openshift.com/pub/openshift-v4/$(uname -m)/clients/ocp/stable/openshift-client-linux.tar.gz
sudo tar -xf openshift-client-linux.tar.gz -C /usr/bin oc kubectl

Затем скопируйте файл Kubeconfig в стандартное местоположение, доступ к которому можно получить без привилегий администратора.

mkdir ~/.kube
sudo cat /var/lib/microshift/resources/kubeadmin/kubeconfig > ~/.kube/config

Теперь вы можете наслаждаться потрясающими возможностями MicroShift.

Через некоторое время нода будет готова, как показано далее:

$ oc get nodes -o wide
NAME             STATUS   ROLES    AGE   VERSION   INTERNAL-IP    EXTERNAL-IP   OS-IMAGE          KERNEL-VERSION          CONTAINER-RUNTIME
cent8.mylab.io   Ready    <none>   10m   v1.21.0   65.109.12.95   <none>        CentOS Stream 8   4.18.0-526.el8.x86_64   cri-o://1.21.3

Вы также можете использовать kubectl для доступа к кластеру.

Посмотрим поды:

$ oc get pods -A
NAMESPACE                       NAME                                  READY   STATUS    RESTARTS   AGE
kube-system                     kube-flannel-ds-67lf5                 1/1     Running   0          5m9s
kubevirt-hostpath-provisioner   kubevirt-hostpath-provisioner-swhcd   1/1     Running   0          3m
openshift-dns                   dns-default-rqzsh                     2/2     Running   0          5m9s
openshift-dns                   node-resolver-66tmz                   1/1     Running   0          5m9s
openshift-ingress               router-default-6c96f6bc66-fps7g       1/1     Running   0          5m10s
openshift-service-ca            service-ca-7bffb6f6bf-m8xj2           1/1     Running   0          5m11s

Чтобы проверить, все ли в порядке, мы развернем простое приложение Nginx.

oc apply -f - <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 2 
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80
EOF

Проверьте, развернуто ли приложение:

$ oc get pods
NAME                               READY   STATUS    RESTARTS   AGE
nginx-deployment-585449566-9dqsm   1/1     Running   0          32s
nginx-deployment-585449566-9rl62   1/1     Running   0          32s

Подключим службу с помощью NodePort.

$ kubectl expose deployment nginx-deployment --type=NodePort --port=80
service/nginx-deployment exposed

Получим порта службы:

$ kubectl get svc
NAME                        TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)        AGE
kubernetes                  ClusterIP   10.43.0.1     <none>        443/TCP        8m55s
nginx-deployment            NodePort    10.43.242.3   <none>        80:31977/TCP   6s
openshift-apiserver         ClusterIP   None          <none>        443/TCP        8m12s
openshift-oauth-apiserver   ClusterIP   None          <none>        443/TCP        8m12s

Затем мы можем получить доступ к службе в браузере, используя порт, на который была открыта служба (31977 в данном случае).

Заключение

На этом мы заканчиваем руководство по развертыванию легкого Openshift с помощью Microshift.

Вы увидели, как легко развернуть этот легкий Kubernetes.

Это может быть очень важно для тестирования или для пользователей, которые хотят настроить и использовать Kubernetes с минимальными усилиями.

см. также:

You may also like

Leave a Comment