Установка#

Примечание

В текущем разделе приведена установка DropApp без опциональных инструментов.

Опциональные инструменты DropApp устанавливаются и настраиваются администратором. Порядок установки каждого опционального инструмента приведен в соответствующем разделе документа «Руководство по системному администрированию».

Примечание

В DropApp поставляется две версии опционального компонента Grafana - 10.4.19 и 11.6.2.

Порядок установки#

Выбор способа установки#

Установка DropApp возможна только с помощью утилиты командной строки kubeadm.

Предварительные условия#

Предварительные условия для установки DropApp:

  • ZIP-архив с дистрибутивом получен пользователем;

  • выбранные пользователем rpm-пакеты и контейнерные образы из полученного архива загружены в репозиторий пользователя.

Подготовка окружения#

Используйте ZIP-архив DropApp, полученный от производителя продукта. Загрузите rpm-пакеты в локальный репозиторий. В репозитории должны присутствовать все необходимые rpm-пакеты. Подробнее про перечень необходимых rpm-пакетов в разделе «Подготовка к установке».

Примечание

Для установки выбранных rpm-пакетов, выполните команду dnf install <package name>, которая выполнит их подключение.

DropApp настраивается администратором на виртуальной машине с предустановленной ОС (см. официальную документацию к продуктам, указанным в разделе «Системные требования» документа Описание).

Настройка DropApp в ОС#

Чтобы настроить DropApp в ОС:

  1. Установите ОС, следуя шагам документации к продукту.

  2. Создайте каталог, в который будет смонтирован установочный диск с ОС, например /mnt/iso:

    mkdir -p /mnt/iso
    
  3. Смонтируйте ISO-образ установочного диска с ОС в созданный ранее каталог:

    mount -o loop /tmp/distr/dvd.iso /mnt/iso
    

    Пример вывода:

    mount: /dev/loop0 is write-protected, mounting read-only
    

    В случае, если вместо файла ISO-образа используется DVD-привод с установленным в него установочным диском с ОС, смонтируйте его командой типа:

    mount /dev/sr0 /mnt/iso
    
  4. Скопируйте файл media.repo из смонтированного каталога с установочными файлами SLO в системный каталог /etc/yum.repos.d/ и установите в файл разрешения (файл с правами доступа):

    cp /mnt/iso/media.repo /etc/yum.repos.d/dvd.repo
    chmod 644 /etc/yum.repos.d/dvd.repo
    
  5. Внесите корректировки в файл dvd.repo, заменив параметр gpgcheck=0 на 1 и добавьте в конец файла еще 3 строки:

    vi /etc/yum.repos.d/dvd.repo
    
    ...
    enabled=1
    baseurl=file:///mnt/iso/
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-OS-release
    
  6. Установите ebtables, ethtool или аналогичный исполняемый файл на node. Их можно установить при помощи следующей команды:

     dnf install <ebtables|ethtool>
    

Установка DropApp#

Все шаги, приведенные в этой инструкции, описывают последовательность действий для установки DropApp.

Подготовка к установке#

Перед началом установки убедитесь, что выполнена подготовка окружения:

  • установите ОС;

  • получите ZIP-архив от разработчика DropApp.

Примечание

Действия по настройке в следующих шагах выполняются на всех nodes будущего кластера.

Предварительные условия перед установкой DropApp:

  1. Используйте полученный от разработчика DropApp ZIP-архив из 3 основных частей, включающий:

    • контейнерные образы;

    • пакеты;

    • бинарные файлы.

    Пример образов:

    <registry-name>/<path-to-image>/4.0.0/dapp-kubernetes-2
    <registry-name>/<path-to-image>/4.0.0/dapp-coredns-2
    <registry-name>/<path-to-image>/4.0.0/dapp-etcd-2
    

    Список rpm-пакетов в составе дистрибутива находится по пути K8S-<version>-owned-distrib.zip->K8S-rpms-<version>\x86_64\pkglist. Список зависимостей находится в K8S-<version>-owned-distrib.zip->K8S-rpms-<version>\src\pkglist.

    Когда пакет создается с помощью rpm, если какой-либо файл в списке rpm-пакета является общей библиотекой, soname-библиотеки автоматически добавляется в список возможностей, предоставляемых пакетом. Soname - это имя, используемое для определения совместимости между различными версиями библиотеки.

  2. Добавьте rpm-пакеты в существующий rpm-репозиторий, а контейнерные образы из архива - в существующий container registry.

    • Извлеките архив с компонентом K8S-k8sc-<version>-<distrib_number>-distrib.zip.

    • Из архива с компонентом K8SC извлеките архивы:

      • K8S-k8sc-rpms-<version>-<distrib_number>-SBEL<sbel_version>-distrib.zip с rpm-пакетами,

      • k8sc-images-<version>-<distrib_number>-distrib.zip с контейнерными образами,

      • k8sc-binaries-<version>-<distrib_number>-distrib.zip с бинарными файлами.

    • Распакуйте архив с rpm-пакетами K8S-k8sc-rpms-<version>-<distrib_number>-SBEL<sbel_version>-distrib.zip и загрузите пакеты в частный rpm-репозиторий. rpm-репозиторий должен быть прописан в конфигурационном файле /etc/yum.repos.d/dapp.repo в параметре которого указана ссылка на репозиторий baseurl= [путь к папке с расположенными в ней файлами rpm].

    • Распакуйте архив с контейнерными образами k8sc-images-<version>-<distrib_number>-distrib.zip и выгрузите образы в пользовательский репозиторий – container registry (этот репозиторий должен быть доступен для пользовательской виртуальной машины при запуске DropApp).

    • Распакуйте архив с бинарными файлами k8sc-binaries-<version>-<distrib_number>-distrib.zip в удобное место.

  3. Разверните количество виртуальных машин (виртуальные машины с предустановленной ОС) равное количеству nodes в кластере. Количество nodes в кластере приведено в разделе «Системные требования», где даны рекомендации с аппаратными характеристиками для master node и рабочих nodes.

  4. Отключите использование swap, выполните действия на каждой виртуальной машине:

    Проверьте статус swap. Если swap активен, в выводе будет указано активное swap-устройство, например /dev/dm-1:

    swapon --show
    

    Если swap выключен, то активные swap-разделы и устройства отображаться не будут.

    Чтобы временно отключить swap, введите команду:

    swapoff -a
    

    Для отключения swap навсегда, нужно выполнить несколько действий:

    • В конфигурационном файле /etc/fstab закомментировать все строки, которые содержат swap. Например, закомментированная строка может иметь следующий вид:

      /dev/mapper/sberlinux-swap    none    swap    defaults    0 0
      
    • Отключить службу swap.target:

    systemctl disable --now swap.target
    
  5. Настройте переадресацию IPv4 и разрешение на просмотр трафика:

    Создайте файл /etc/modules-load.d/k8s.conf:

    cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
    overlay
    br_netfilter
    EOF
    

    Загрузите модули:

    sudo modprobe overlay
    sudo modprobe br_netfilter
    

    Установите и примените необходимые параметры:

    # параметры sysctl, требуемые при установке (сохраняются при перезагрузке)
    cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
    net.bridge.bridge-nf-call-iptables  = 1
    net.bridge.bridge-nf-call-ip6tables = 1
    net.ipv4.ip_forward                 = 1
    EOF
    
    # Применить параметры sysctl без перезагрузки
    sudo sysctl --system
    
  6. Убедитесь, что модули br_netfilter и overlay загружены, выполнив следующие команды:

    lsmod | grep br_netfilter
    lsmod | grep overlay
    

    Пример вывода:

    Module                  Size  Used by
    br_netfilter           36864  0
    bridge                409600  1 br_netfilter
    overlay               233472  22
    
  7. Убедитесь, что для системных переменных net.bridge.bridge-nf-call-iptables, net.bridge.bridge-nf-call-ip6tables, net.ipv4.ip_forward в конфигурации установлено значение 1 sysctl, выполнив следующую команду:

    sysctl net.bridge.bridge-nf-call-iptables net.bridge.bridge-nf-call-ip6tables net.ipv4.ip_forward
    

    Примечание

    Если, после выполнения команд из шага 5, на каком-то node параметр net.ipv4.ip_forward остается в значении 0, примените команду: sudo sysctl -w net.ipv4.ip_forward=1

  8. Настройте драйверы групп. Базовая среда выполнения контейнера должна взаимодействовать с группами управления, чтобы обеспечить управление ресурсами для pods и контейнеров и установить ресурсы, такие как запросы и ограничения процессора, памяти. Для взаимодействия с контрольными группами Kubelet и среда выполнения контейнера должны использовать драйвер cgroup. Крайне важно, чтобы Kubelet и среда выполнения контейнера использовали один и тот же драйвер cgroup и были настроены одинаково.

    Доступен драйвер cgroup - systemd.

    Драйвер systemd cgroup

    Когда systemd выбирается в качестве системы инициализации для дистрибутива SLO, процесс инициализации генерирует и использует корневую контрольную группу (cgroup) и действует как менеджер cgroup.

    Systemd имеет тесную интеграцию с cgroups и выделяет cgroup для каждой единицы systemd. В результате systemd используется в качестве системы инициализации драйвера cgroupfs, система получает два разных менеджера cgroup.

    Два менеджера cgroup дают два представления доступных и используемых ресурсов в системе. В некоторых случаях nodes, которые настроены на использование cgroupfs для среды выполнения Kubelet и контейнера, но при этом используется systemd для остальных процессов, становятся нестабильными из-за нехватки ресурсов.

    Подход к нивелированию нестабильности заключается в использовании systemd в качестве драйвера cgroup для Kubelet и среды выполнения контейнера, когда systemd является выбранной системой инициализации.

    Чтобы установить systemd в качестве драйвера cgroup, отредактируйте KubeletConfiguration параметр cgroupDriver и установите для него значение systemd. Пример настройки:

    apiVersion: kubelet.config.k8s
    kind: KubeletConfiguration
    ...
    cgroupDriver: systemd
    

    Примечание

    Редактировать KubeletConfiguration можно в файле clusterconfig.yml перед запуском инициализации кластера. Подробнее в подразделе Установка и развертывание кластера DropApp.

  9. Если драйвер systemd cgroup настроен для Kubelet, настройте его для среды выполнения контейнера CRI-O. CRI-O по умолчанию использует драйвер systemd cgroup.

Установка и развертывание кластера DropApp#

Предварительные условия развертывания#

Примечание

Следующие действия по настройке выполняются на всех nodes будущего кластера.

Предварительные условия установки и развертывания кластера DropApp:

  • пользователь имеет роль администратора в ОС;

  • пользователем получен ZIP-архив с дистрибутивом DropApp.

Установка и развертывание#

Установка и развертывание кластера DropApp:

  1. Установите инструменты DropApp и обновите данные при помощи команды:

    sudo  dnf install kubelet kubeadm cri-o kubectl
    

    Результат команды будет содержать в конце следующее сообщение:

    complete!
    

    Примечание

    Все экземпляры пакетов, установленных на виртуальные машины, должны быть одной и той же версии на всех nodes.

  2. Активируйте и запустите службы CRI-O и Kubelet:

    sudo systemctl enable --now crio kubelet
    

    Если kubeadm не может скачать образы из-за ошибки авторизации, то нужно выполнить несколько действий:

    • Заполните файл /var/lib/kubelet/config.json с данными для входа в удаленный репозиторий. Пример структуры файла /var/lib/kubelet/config.json:

      {
          "auths": {
              "доменное_имя_репозитория": {
                  "auth": "закодированные_учетные_данные"
              }
          }
      }
      

      Примечание

      Строку с закодированными учетными данными можно получить в файле auth.json после авторизации в репозитории с образами, например, с помощью podman login <repository-name>, и после поиска этого файла, например, с командой find / -name "auth.json".

    • Отредактируйте файл /etc/crio/crio.conf, чтобы он мог считать файл для аутентификации /var/lib/kubelet/config.json. Пример раздела с репозиторием в файле /etc/crio/crio.conf:

      [crio.image]
      registries = ["доменное_имя_репозитория"]
      global_auth_file = "/var/lib/kubelet/config.json"
      pause_image = "доменное_имя_репозитория/путь/pause:тег"
      pause_image_auth_file = "/var/lib/kubelet/config.json"
      

    После изменения файлов перезапустите службы:

    sudo systemctl restart kubelet
    sudo systemctl restart crio
    

    Результат команды будет следующим:

    Created symlink /etc/systemd/system/cri-o.service  /usr/lib/systemd/system/crio.service.
    Created symlink /etc/systemd/system/multi-user.target.wants/crio.service  /usr/lib/systemd/system/crio.service.
    Created symlink /etc/systemd/system/multi-user.target.wants/kubelet.service  /usr/lib/systemd/system/kubelet.service.
    

    Примечание

    Для подключения worker nodes к кластеру и корректной работы Cilium может потребоваться отключение firewall на всех nodes кластера.

    Отключите firewall, например, для firewalld:

    `sudo systemctl stop firewalld`
    `sudo systemctl disable firewalld`
    
  3. Подготовьте конфигурацию с указанием репозитория DropApp для создания кластера, при помощи команды:

    Примечание

    С этого шага команды выполняются на master node.

    nano clusterconfig.yml
    
  4. Добавьте в YAML-файл параметры конфигурации.

    Для Platform V Sberlinux OS Server и Platform V Sberlinux OS Core:

    apiVersion: kubeadm.k8s.io/v1beta3
    kind: ClusterConfiguration
    kubernetesVersion: v1.27.16
    imageRepository: <registry-name>/<path-to-image>/4.0.0/dapp-kubernetes-2 # <--- репозиторий в registry, где лежат образы kube-apiserver, kube-proxy, kube-controller-manager, kube-scheduler
    dns:
       imageRepository: <registry-name>/<path-to-image>/4.0.0/dapp-coredns-2 # <--- репозиторий в registry, где лежит образ coredns. imageRepository является изменяемым параметром и может быть изменен в соответствии с docker repository
       imageTag: v1.10.1
    etcd:
        local:
            imageRepository: <registry-name>/<path-to-image>/4.0.0/dapp-etcd-2 # <--- репозиторий в registry, где лежит образ etcd
            imageTag: 3.5.16
    networking:
       serviceSubnet: "<IP-address>/16" # Подсеть для services адресов внутри кластера. Адрес должен быть изменен в соответствии с сетевыми настройками..
       podSubnet: "<IP-address>/16" # подсеть для pods адресов внутри кластера. Адрес должен быть изменен в соответствии с сетевыми настройками.
    ---
    apiVersion: kubelet.config.k8s.io/v1beta1
    kind: KubeletConfiguration
    cgroupDriver: systemd
    ---
    apiVersion: kubeproxy.config.k8s.io/v1alpha1
    kind: KubeProxyConfiguration
    metricsBindAddress: "0.0.0.0"
    mode: "ipvs"
    

    Примечание

    Конфигурация является тестовой и приведена в качестве примера проверки работоспособности.

  5. Нажмите сочетание клавиш Ctrl + X для сохранения.

  6. На вопрос: Save modified buffer? введите Y для подтверждения действия и нажмите Enter для выхода.

  7. Запустите создание кластера:

    Примечание

    Чтобы команда запустилась успешно, нужно правильно настроить clusterconfig.yml и доступ к репозиторию у Cri-o.

    sudo kubeadm init --config clusterconfig.yml
    

    Результат команды будет следующим:

       [init] Using Kubernetes version:
       [preflight] Running pre-flight checks
       [WARNING SystemVerification]: missing optional cgroups: blkio
       [preflight] Pulling images required for setting up a Kubernetes cluster
       [preflight] This might take a minute or two, depending on the speed of your internet connection
       [preflight] You can also perform this action in beforehand using 'kubeadm config images pull'
       [certs] Using certificateDir folder "/etc/kubernetes/pki"
       [certs] Generating "ca" certificate and key
       [certs] Generating "apiserver" certificate and key
       [certs] apiserver serving cert is signed for DNS names [control-plane kubernetes kubernetes.default kubernetes.default.svc kubernetes.default.svc.cluster.local] and IPs [<IP-address1>, <IP-address2>]
       [certs] Generating "apiserver-kubelet-client" certificate and key
       [certs] Generating "front-proxy-ca" certificate and key
       [certs] Generating "front-proxy-client" certificate and key
       [certs] Generating "etcd/ca" certificate and key
       [certs] Generating "etcd/server" certificate and key
       [certs] etcd/server serving cert is signed for DNS names [control-plane localhost] and IPs [<IP-address2> <IP-address3> ::1]
       [certs] Generating "etcd/peer" certificate and key
       [certs] etcd/peer serving cert is signed for DNS names [control-plane localhost] and IPs [<IP-address2> <IP-address3> ::1]
       [certs] Generating "etcd/healthcheck-client" certificate and key
       [certs] Generating "apiserver-etcd-client" certificate and key
       [certs] Generating "sa" key and public key
       [kubeconfig] Using kubeconfig folder "/etc/kubernetes"
       [kubeconfig] Writing "admin.conf" kubeconfig file
       [kubeconfig] Writing "kubelet.conf" kubeconfig file
       [kubeconfig] Writing "controller-manager.conf" kubeconfig file
       [kubeconfig] Writing "scheduler.conf" kubeconfig file
       [kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env"
       [kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
       [kubelet-start] Starting the kubelet
       [control-plane] Using manifest folder "/etc/kubernetes/manifests"
       [control-plane] Creating static Pod manifest for "kube-apiserver"
       ...
       [bootstrap-token] Using token: 0m00w0.jgdd0w000py0ljwp
       [bootstrap-token] Configuring bootstrap tokens, cluster-info ConfigMap, RBAC Roles
       [bootstrap-token] Configured RBAC rules to allow Node Bootstrap tokens to get nodes
       [bootstrap-token] Configured RBAC rules to allow Node Bootstrap tokens to post CSRs in order for nodes to get long term certificate credentials
       [bootstrap-token] Configured RBAC rules to allow the csrapprover controller automatically approve CSRs from a Node Bootstrap Token
       [bootstrap-token] Configured RBAC rules to allow certificate rotation for all node client certificates in the cluster
       [bootstrap-token] Creating the "cluster-info" ConfigMap in the "kube-public" namespace
       [kubelet-finalize] Updating "/etc/kubernetes/kubelet.conf" to point to a rotatable kubelet client certificate and key
       [addons] Applied essential addon: CoreDNS
    
       Your Kubernetes control-plane has initialized successfully!
    
       To start using your cluster, you need to run the following as a regular user:
    
          mkdir -p $HOME/.kube
          sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
          sudo chown $(id -u):$(id -g) $HOME/.kube/config
    
      Alternatively, if you are the root user, you can run:
    
          export KUBECONFIG=/etc/kubernetes/admin.conf
    
       You should now deploy a pod network to the cluster.
       Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
          https://kubernetes.io/docs/concepts/cluster-administration/addons/
    
       Then you can join any number of worker nodes by running the following on each as root:
    
       kubeadm join <IP-address2>:6443 --token 0m00w0.jgdd0w0py0ljwp \
       --discovery-token-ca-cert-hash sha256:0cc0eb00000c00edac00b0a0000c0c00ef0f0e00ce000c0f0b000f000bc00000:890128 # приведенное в примере значение токена и SHA256 являются вымышленным, при каждой установке DropApp должны использоваться уникальные значения токенов.
    

    Примечание

    Адрес в блоке вывода будет действительным IP nodes кластера.

    Убедитесь, что вывод предыдущей команды содержит сообщение: Your Kubernetes control-plane has initialized successfully!

  8. Для взаимодействия с кластером, выполните команды на master nodes и создайте файловую структуру:

    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    
  9. Сгенерируйте ключ сертификата (token) на master node при помощи команды:

    kubeadm token create --print-join-command
    

    Результат команды будет следующим:

    kubeadm join <IP-address4>:6443 --token 2xqf30.qe81qi7vhi32pnxk --discovery-token-ca-cert-hash sha256:000fg00i0000000000000000erw0000
    

    Примечание

    IP-токен и порт приведены для примера.

  10. Скопируйте token и хеш SHA256, необходимые для безопасной связи с master node.

    Примечание

    Сохраните результат (например, в специальную папку или репозиторий) выполненной команды для дальнейшего использования на всех подключенных рабочих nodes.

  11. Переключитесь на рабочий node (worker) и выполните команду:

    sudo hostnamectl set-hostname
    
    #[имя-машины, например worker1]
    

    Примечание

    Эту команду требуется выполнить на каждом worker node.

  12. Присоедините worker node к кластеру DropApp (совокупности worker и master nodes, объединенных в одну сеть) при помощи команды:

    sudo [результат шага №9]
    

    Пример выполняемой на рабочем node команды представлен ниже:

    sudo kubeadm join <IP-address4>:6443 --token 2xqf30.qe81qi7vhi32pnxk --discovery-token-ca-cert-hash sha256:fee0d000d0000cd0f00ace0be00d000dda00edc0bf00b000000ad0a0c0aee0ca
    

    Примечание

    IP-токен и порт приведены для примера.

    Результат команды будет следующим:

    ...
    [kubelet-start] Starting the kubelet
    [kubelet-start] Waiting for the kubelet to perform the TLS Bootstrap...
    
    This node has joined the cluster:
    * Certificate signing request was sent to apiserver and a response was received.
    * The Kubelet was informed of the new secure connection details.
    
    Run 'kubectl get nodes' on the control-plane to see this node join the cluster.
    
  13. Проверьте, что рабочие nodes присоединились к master node. По умолчанию их количество будет равным двум (см. в разделе Системные требования). Переключитесь на master node по ssh и выполните команду:

    kubectl get nodes
    

    Результат команды будет следующим:

    NAME       STATUS   ROLES       AGE    VERSION
    control-plane   Ready   control-plane   5m14s
    worker1      Ready   <none>      58s
    worker2      Ready   <none>      65s
    

Установка Cilium#

Для корректной работы кластера установите на master node сетевой плагин (CNI) Cilium версии 1.16.5:

  1. Получите файлы Cilium для Helm в виде чарта, например, из официального репозитория github:

    wget https://github.com/cilium/charts/raw/refs/heads/master/cilium-1.16.5.tgz
    
  2. Разархивируйте полученный архив:

    tar -xvf cilium-1.16.5.tgz
    
  3. Для установки Cilium с Helm создайте файл значений values.yaml:

    nano values.yaml
    

    Пример заполнения файла values.yaml:

    values.yaml
    image:
    repository: ${PATH_TO_REPOSITORY}/4.0.0/dapp-cilium-2/cilium
    digest: ""
    useDigest: false
    operator:
    image:
        useDigest: false
        repository: ${PATH_TO_REPOSITORY}/4.0.0/dapp-cilium-2/operator
    ipam:
    operator:
        clusterPoolIPv4PodCIDRList: ["<IP-address>/16"]
    installIptablesRules: false
    kubeProxyReplacement: true
    enableNodePort: true
    l7Proxy: false
    sockops:
    enabled: false
    bpf:
    masquerade: true
    k8sServiceHost: ${CONTROL_PLANE_IP}
    k8sServicePort: 6443
    hubble:
    relay:
        enabled: true
        image:
        useDigest: false
        repository: ${PATH_TO_REPOSITORY}/4.0.0/dapp-cilium-2/hubble-relay
    ui:
        enabled: true
        frontend:
        image:
            useDigest: false
            repository: ${PATH_TO_REPOSITORY}/4.0.0/dapp-hubble-ui-2/hubble-ui
            tag: v0.13.1
        backend:
        image:
            useDigest: false
            repository: ${PATH_TO_REPOSITORY}/4.0.0/dapp-hubble-ui-2/hubble-ui-backend
            tag: v0.13.1
    clustermesh:
    apiserver:
        image:
        useDigest: false
    preflight:
    image:
        useDigest: false
    

    Для сохранения и выхода нажмите сочетание клавиш Ctrl + X. На вопрос: Save modified buffer? введите Y для подтверждения действия и нажмите Enter для выхода.

  4. Установите Cilium с помощью Helm:

    export CONTROL_PLANE_IP=<IP> # адрес master-node
    export PATH_TO_REPOSITORY="<PATH_TO_REPOSITORY>" # путь до репозитория до указания версии
    
    envsubst < ~/values.yaml > ~/values-resolved.yaml # для подстановки указанных выше значений в файл значений для Helm. envsubst подставляет переменные окружения в values.yaml и записывает вывод в файл resolved
    
    helm install \
    --namespace kube-system cilium ./cilium \
    --version 1.16.5 \
    -f ~/values-resolved.yaml # применение файла значений при установке с Helm
    

    Примечание

    В местах с путем указывается ссылка на репозиторий с инструментом. Должна быть настроена аутентификация в репозиторий для CRI-O.

  5. Проверьте установку Cilium, используя команду:

    cilium status --wait
    

    Примечание

    Для корректного запуска всех pods после установки Cilium рекомендуется пересоздать coredns pods командой: kubectl delete pods -n kube-system -l k8s-app=kube-dns

    Пример вывода:

    Проверка установки Cilium

Результаты выполнения сценария установки DropApp:

  • Установлен программный компонент K8SC;

  • Настроены хосты;

  • Развернут кластер DropApp;

  • Установлены CNI-плагин Cilium.