Cilium
Подготовка конфигурации машины
При создании конфигурации машины для узла ALT Orchestra установите для параметра CNI значение none. Например, с помощью патча конфигурации:
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 можно установить с помощью утилиты cilium-cli или через Helm — оба способа описаны ниже. Во всех командах установки $VERSION — желаемая версия Cilium; задайте её перед установкой, например:
export VERSION=1.18.2Доступные версии и совместимые values.yaml для ALT находятся в репозитории чартов ALT.
Установка с помощью cilium CLI
Для установки и управления Cilium с рабочего места администратора можно использовать утилиту cilium-cli.
Установите утилиту cilium-cli (от имени root):
apt-get update && apt-get install cilium-cliНапример, команда установки без использования kube-proxy может выглядеть так:
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 добавьте:
-f https://altlinux.space/cloud/charts/raw/branch/master/cilium/<branch>/<version>/values.yamlПримечание: перед установкой желательно проверить, удовлетворяют ли вас настройки в указанном выше файле.
Далее ожидайте установки Cilium на кластере ALT Orchestra (процесс может занять несколько минут). Статус установки можно отслеживать с помощью cilium-cli утилиты, установленной на рабочем месте администратора:
cilium status --waitУстановка с помощью Helm
При необходимости обратитесь к документации Cilium по установке с помощью helm.
Установите helm на рабочее место администратора. Добавьте репозиторий helm для Cilium и обновите ресурсы.
helm repo add cilium https://helm.cilium.io/
helm repo updateУстановите Cilium, выполнив следующую команду:
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, также установите несколько дополнительных параметров:
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:
...
--set=gatewayAPI.enabled=true \
--set=gatewayAPI.enableAlpn=true \
--set=gatewayAPI.enableAppProtocol=trueДля установки Cilium на базе ALT Linux добавьте:
-f https://altlinux.space/cloud/charts/raw/branch/master/cilium/<branch>/<version>/values.yamlПримечание: перед установкой желательно проверить, удовлетворяют ли вас настройки в указанном выше файле. Например, с помощью следующей команды можно получить результирующий манифест для проверки, и, если все в порядке, применить его:
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 утилиты, установленной на рабочем месте администратора:
cilium status --waitПроверка работы сети
После успешной установки Cilium на кластере можете проверить работоспособность сети с помощью встроенной команды тестирования в утилиту cilium-cli. Предварительно можно активировать веб-интерфейс hubble, по-умолчанию встроенный в конфигурацию Cilium, для отслеживания сетевого трафика.
Запустите проверку с помощью cilium-cli (если он ещё не установлен — см. раздел «Установка с помощью cilium CLI» выше):
cilium status # проверка статуса
cilium connectivity test # запуск тестового трафикаПримечание: проверка сети может зависнуть и/или выдать ошибки, аналогичные нижеуказанным. Это ожидаемо, вы можете обойти это, добавив pod-security.kubernetes.io/enforce=privileged метку на уровне namespace.
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)