по дефолту 80 порт можно только от рута слушать, иначе надо спец разрешения давать юзеру То есть capabilities добавлять NET_BIND_SERVICE в манифесты куба И еще setcap CAP_NET_BIND_SERVICE=+eip /path/to/binary при сборке добавлять Кароче мало приятного как по мне, ради 80 порта столько возни
Проще повесить 8080 и через port - targetPort разрулить
1. Не обязательно, см. net.ipv4.ip_unprivileged_port_start + https://github.com/containerd/containerd/pull/6170 + https://github.com/kubernetes/kubernetes/issues/102612 2. setcap на бинарник не нужно (edit: похоже я ошибся и таки нужно) но использовать разные порты для приложения и его сервиса стоит как минимум для того, чтобы глаза не вытекали при диагностике очередного бага в conntrack и ipvs
1. Ну он считается safe только с 1.22 куба
2. Про setcap не понял, его нужно при сборке добавлять на бинарь. Я в свое время в энвоем намучался, разбираясь, почему контейнер падает при использовании NET_BIND_SERVICE с 80 и 443 портами пока по не увидел, что нет разрешений на бинаре и пришлось пересобирать образ
например, внутри контейнера с securityContext: capabilities: add: - NET_BIND_SERVICE drop: - ALL и запущенном не от рута bash-5.1$ id uid=1000 gid=3000 groups=2000 bash-5.1$ capsh --current Current: cap_net_bind_service=i
Как буду у компа, специально проверю с энвоем и глу, чот оно расходится с моими знаниями
не проверяй, я похоже ошибся, setcap бинарнику нужен
Ради 80 порта sysctl менять, ещё лучше ага. То есть это только подтверждает что 80 порт не комильфо
Обсуждают сегодня