Перейти к содержанию

Активация proxy protocol

Базовая информация

Внимание

После включения proxy protocol вы потеряете доступ к Rancher через Ingress напрямую.

Включать только при использовании внешнего балансировщика.

Proxy protocol предоставляет удобный способ безопасной передачи информации о соединении, такой как адрес клиента, через несколько уровней NAT или TCP прокси. Он разработан таким образом, чтобы не требовать значительных изменений в существующих компонентах и ограничить влияние на производительность, вызванное обработкой передаваемой информации.

Настройка

Заметка

Далее в инструкции мы будем работать с объектом инфраструктурного кластера. Для изменения nginx в подчинённом кластере добавьте к имени объекта имя кластера. Например, чтобы поправить объект для кластера с именем demo, поправить объект demo-ingress-nginx

Для активации proxy protocol поправьте объект HelmChartProxy:

kubectl edit ingress-nginx
Пример объекта:
apiVersion: addons.cluster.x-k8s.io/v1alpha1
kind: HelmChartProxy
metadata:
  creationTimestamp: "2023-10-15T17:06:17Z"
  finalizers:
  - helmchartproxy.addons.cluster.x-k8s.io
  generation: 2
  name: ingress-nginx
  namespace: default
  resourceVersion: "17626209"
  uid: a8ed7eae-d05a-4f69-a042-0cc2de8b195d
spec:
  chartName: ingress-nginx
  clusterSelector:
    matchLabels:
      cluster.x-k8s.io/cluster-name: test
  namespace: nginx-ingress
  options:
    install:
      createNamespace: true
    timeout: 5m0s
    wait: true
  releaseName: ingress-nginx
  repoURL: http://museum.default.svc.cluster.local:8080
  valuesTemplate: |
    controller:
      opentelemetry:
        image: harbor.bootsman.host/bootsman-nimbus/common-artifacts/ingress-nginx-opentelemetry:v20230527
      image:
        registry: harbor.bootsman.host/bootsman-nimbus/common-artifacts
        image: ingress-nginx-controller
        digest: ""
      admissionWebhooks:
        patch:
          image:
            registry: harbor.bootsman.host/bootsman-nimbus/common-artifacts
            image: kube-webhook-certgen
            digest: ""
      kind: DaemonSet
      hostPort:
        enabled: true
        ports:
          http: 80
          https: 443
      ingressClassResource:
        default: true
      publishService:
        enabled: true
      service:
        type: ClusterIP
      watchIngressWithoutClass: true
    defaultBackend:
      image:
        registry: harbor.bootsman.host/bootsman-nimbus/common-artifacts
      enabled: true
    rbac:
      create: true
  version: 4.7.1

Нас интересует блок valuesTemplate. Приведите его к виду:

  valuesTemplate: |
    controller:
      config:
        use-forwarded-headers: "true"
        use-proxy-protocol: "true
      opentelemetry:
        image: harbor.bootsman.host/bootsman-nimbus/common-artifacts/ingress-nginx-opentelemetry:v20230527
      image:
        registry: harbor.bootsman.host/bootsman-nimbus/common-artifacts
        image: ingress-nginx-controller
        digest: ""
      admissionWebhooks:
        patch:
          image:
            registry: harbor.bootsman.host/bootsman-nimbus/common-artifacts
            image: kube-webhook-certgen
            digest: ""
      kind: DaemonSet
      hostPort:
        enabled: true
        ports:
          http: 80
          https: 443
      ingressClassResource:
        default: true
      publishService:
        enabled: true
      service:
        type: ClusterIP
      watchIngressWithoutClass: true
    defaultBackend:
      image:
        registry: harbor.bootsman.host/bootsman-nimbus/common-artifacts
      enabled: true
    rbac:
      create: true

Затем добавьте в блок controller следующую конфигурацию:

      config:
        use-forwarded-headers: "true"
        use-proxy-protocol: "true

Сохраните манифест и подождите пару минут, после чего ingress начнёт использовать proxy protocol.