Skip to content

Cilium

Подготовка конфигурации машины

При создании конфигурации машины для узла ALT Orchestra установите для параметра CNI значение none. Например, с помощью патча конфигурации:

console
$ cat <<EOF > patch.yaml
cluster:
  network:
    cni:
      name: none
EOF

$ talosctl gen config \
    my-cluster https://mycluster.local:6443 \
    --config-patch @patch.yaml

Примечание: после применения конфигурации машины и начальной загрузки, ALT Orchestra зависнет на этапе 18/19 с сообщением: retrying error: node not ready. Это происходит потому, что узлы в Kubernetes помечаются как готовые только после запуска CNI. Поскольку CNI не определен, процесс загрузки находится в состоянии ожидания, и узел будет перезагружен для повторной попытки через 10 минут, что является ожидаемым поведением.

Установка с помощью cilium CLI

Для установки и управления Cilium с рабочего места администратора можно использовать утилиту cilium-cli. Например, команда установки без использования kube-proxy может выглядеть так:

console
# apt-get update && apt-get install cilium-cli

$ cilium install \
    --set ipam.mode=kubernetes \
    --set kubeProxyReplacement=true \
    --set securityContext.capabilities.ciliumAgent="{CHOWN,KILL,NET_ADMIN,NET_RAW,IPC_LOCK,SYS_ADMIN,SYS_RESOURCE,DAC_OVERRIDE,FOWNER,SETGID,SETUID}" \
    --set securityContext.capabilities.cleanCiliumState="{NET_ADMIN,SYS_ADMIN,SYS_RESOURCE}" \
    --set cgroup.autoMount.enabled=false \
    --set cgroup.hostRoot=/sys/fs/cgroup \
    --set k8sServiceHost=localhost \
    --set k8sServicePort=7445 \
    --version $VERSION

Для установки Cilium на базе ALT Linux добавьте:

console
    -f https://altlinux.space/cloud/charts/raw/branch/master/cilium/<branch>/<version>/values.yaml

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

Далее ожидайте устновки Cilium на кластере ALT Orchestra (процесс может занять несколько минут). Статус установки можно отслеживать с помощью cilium-cli утилиты, установленной на рабочем месте администратора:

console
$ cilium status --wait

Установка с помощью Helm

При необходимости обратитесь к документации Cilium по установке с помощью helm.

Установите helm на рабочее место администратора. Добавьте репозиторий helm для Cilium и обновите ресурсы.

console
$ helm repo add cilium https://helm.cilium.io/
$ helm repo update

Установите Cilium, выполнив следующую команду:

console
$ helm install \
    cilium \
    cilium/cilium \
    --version $VERSION \
    --namespace kube-system \
    --set ipam.mode=kubernetes \
    --set kubeProxyReplacement=false \
    --set securityContext.capabilities.ciliumAgent="{CHOWN,KILL,NET_ADMIN,NET_RAW,IPC_LOCK,SYS_ADMIN,SYS_RESOURCE,DAC_OVERRIDE,FOWNER,SETGID,SETUID}" \
    --set securityContext.capabilities.cleanCiliumState="{NET_ADMIN,SYS_ADMIN,SYS_RESOURCE}" \
    --set cgroup.autoMount.enabled=false \
    --set cgroup.hostRoot=/sys/fs/cgroup

Или, если вы хотите развернуть Cilium без kube-proxy, также установите несколько дополнительных параметров:

console
$ helm install \
    cilium \
    cilium/cilium \
    --version $VERSION \
    --namespace kube-system \
    --set ipam.mode=kubernetes \
    --set kubeProxyReplacement=true \
    --set securityContext.capabilities.ciliumAgent="{CHOWN,KILL,NET_ADMIN,NET_RAW,IPC_LOCK,SYS_ADMIN,SYS_RESOURCE,DAC_OVERRIDE,FOWNER,SETGID,SETUID}" \
    --set securityContext.capabilities.cleanCiliumState="{NET_ADMIN,SYS_ADMIN,SYS_RESOURCE}" \
    --set cgroup.autoMount.enabled=false \
    --set cgroup.hostRoot=/sys/fs/cgroup \
    --set k8sServiceHost=localhost \
    --set k8sServicePort=7445

А также с поддержкой GatewayAPI:

console
...
    --set=gatewayAPI.enabled=true \
    --set=gatewayAPI.enableAlpn=true \
    --set=gatewayAPI.enableAppProtocol=true

Для установки Cilium на базе ALT Linux добавьте:

console
    -f https://altlinux.space/cloud/charts/raw/branch/master/cilium/<branch>/<version>/values.yaml

Примечание: перед установкой желательно проверить, удовлетворяют ли вас настройки в указанном выше файле. Например, с помощью следующей команды можно получить результирующий манифест для проверки, и, если все в порядке, применить его:

console
$ helm template \
    cilium \
    cilium/cilium \
    --version $VERSION \
    --namespace kube-system \
    --set ipam.mode=kubernetes \
    --set kubeProxyReplacement=false \
    --set securityContext.capabilities.ciliumAgent="{CHOWN,KILL,NET_ADMIN,NET_RAW,IPC_LOCK,SYS_ADMIN,SYS_RESOURCE,DAC_OVERRIDE,FOWNER,SETGID,SETUID}" \
    --set securityContext.capabilities.cleanCiliumState="{NET_ADMIN,SYS_ADMIN,SYS_RESOURCE}" \
    --set cgroup.autoMount.enabled=false \
    --set cgroup.hostRoot=/sys/fs/cgroup > cilium.yaml

$ kubectl apply -f cilium.yaml

Далее ожидайте устновки Cilium на кластере ALT Orchestra (процесс может занять несколько минут). Статус установки можно отслеживать с помощью cilium-cli утилиты, установленной на рабочем месте администратора:

console
$ cilium status --wait

Проверка работы сети

После успешной установки Cilium на кластере можете проверить работоспособность сети с помощью встроенной команды тестирования в утилиту cilium-cli. Предварительно можно активировать веб-интерфейс hubble, по-умолчанию встроенный в конфигурацию Cilium, для отслеживания сетевого трафика.

console
# apt-get update && apt-get install cilium-cli
$ cilium status # проверка статуса
$ cilium connectivity test # запуск тестого трафика

Примечание: проверка сети может зависнуть и/или выдать ошибки, аналогичные нижеуказанным. Это ожидаемо, вы можете обойти это, добавив pod-security.kubernetes.io/enforce=privileged метку на уровне namespase.

text
Error creating: pods "client-69748f45d8-9b9jg" is forbidden: violates PodSecurity "baseline:latest": non-default capabilities (container "client" must not include "NET_RAW" in securityContext.capabilities.add)

Опубликовано под лицензией GPL-3.0+. Содержание доступно по лицензии CC BY-SA 4.0, если не указано иное. Разработано участниками ALT Orchestra.