Использовать PROXY-протокол
Использовать PROXY-протокол
к сведению
PROXY-протокол работает корректно только с кластерами Managed Kubernetes версии 1.21.10 или выше. В ы можете обновить версию кластера.
-
Скачайте манифест ingresscontroller.yaml.
-
Внесите изменения в поля манифеста, которые отмечены тегом
[EDIT]
:- включите PROXY-протокол:
config:
use-proxy-protocol: true- создайте Service с параметрами:
type: LoadBalancer
externalTrafficPolicy: Cluster
annotations:
loadbalancer.openstack.org/proxy-protocol: "true" -
Опционально: добавьте репозиторий ingress-nginx в Helm и обновите его:
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update -
Создайте Ingress Controller с помощью манифеста из шага 1:
helm install ingress-nginx/ingress-nginx --values ingresscontroller.yaml --generate-name
-
Проверьте, что Ingress Controller установлен:
kubectl get svc
В выводе команды должен быть внешний IP-адрес с суффиксом nip.io:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx-ingress LoadBalancer 10.100.100.100 123.123.123.123.nip.io 80:31039/TCP,443:31667/TCP 103s -
Создайте тестовый Deployment echo-сервера:
cat <<EOF | kubectl apply -f -
apiVersion: apps/v1
kind: Deployment
metadata:
name: echoserver
namespace: default
labels:
app: echoserver
spec:
replicas: 1
selector:
matchLabels:
app: echoserver
template:
metadata:
labels:
app: echoserver
spec:
containers:
- name: echoserver
image: gcr.io/google-containers/echoserver:1.10
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
EOF -
Создайте Service для echo-сервера:
kubectl expose deployment echoserver --type=ClusterIP --target-port=8080
-
Создайте правило Ingress для Service echo-сервера:
cat <<EOF | kubectl apply -f -
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: test-proxy-protocol
namespace: default
spec:
ingressClassName: "nginx"
rules:
- host: test.com
http:
paths:
- path: /ping
pathType: Exact
backend:
service:
name: echoserver
port:
number: 8080
EOF