Puncte:2

Redirecționați IP-ul solicitantului real în intrarea K3S NGINX

drapel za

Am configurat un mediu K3S Kubernetes în laboratorul meu privat de acasă pe Raspberry PI pentru a mă învăța ceva Kubernetes (Noob-Alert), folosind NGINX ca controler de intrare și sunt oarecum blocat să transmit IP-ul real al solicitărilor către podurile țintă, în cazul meu o instanță Nextcloud. Versiunea K3S este v1.22.5+k3s1.

K3S a fost configurat folosind Docker ca timp de rulare a containerului și cu --no-deploy traefik opțiune.

După aceea am implementat NGINX Ingress Controller folosind

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.1.0/deploy/static/provider/baremetal/deploy.yaml

Apoi, după implementarea podurilor Nextcloud, am implementat Ingress:

apiVersion: networking.k8s.io/v1
fel: Intrare
metadate:
  nume: nginx-ingress
  adnotari:
    nginx.ingress.kubernetes.io/force-ssl-redirect: „adevărat”
specificație:
  tls:
  - gazde:
    - my.own-dns.org
    secretName: foarte-secret-ssl-secret
  ingressClassName: nginx
  reguli:
  - gazdă: my.own-dns.org
    http:
      trasee:
        - cale: /o cale
          pathType: Prefix
          backend:
            serviciu:
              nume: someservice-service
              port:
                număr: 8081
        - cale: /
          pathType: Prefix
          backend:
            serviciu:
              nume: nextcloud-service
              port:
                număr: 80

În implementarea IngressController, am adăugat următoarele intrări în ConfigMap:

apiVersion: v1
fel: ConfigMap
metadate:
  etichete:
    helm.sh/chart: ingress-nginx-4.0.10
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/instance: ingress-nginx
    app.kubernetes.io/versiunea: 1.1.0
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/component: controller
  nume: ingress-nginx-controller
  spațiu de nume: ingress-nginx
date:
  allow-snippet-annotations: „adevărat”
  compute-full-forwarded-for: „adevărat”
  use-forwarded-headers: „adevărat”
  enable-real-ip: „adevărat”
  proxy-add-original-uri-header: „adevărat”
  forwarded-for-header: „X-Forwarded-For”

și a schimbat ServiceType din serviciul http în Echilibrarea greutății, deci Serviciul meu al IngressController arată astfel:

apiVersion: v1
fel: Serviciu
metadate:
  adnotari:
  etichete:
    helm.sh/chart: ingress-nginx-4.0.10
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/instance: ingress-nginx
    app.kubernetes.io/versiunea: 1.1.0
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/component: controller
  nume: ingress-nginx-controller
  spațiu de nume: ingress-nginx
specificație:
  tip: LoadBalancer
  ipFamilyPolicy: SingleStack
  ipFamilies:
    - IPv4
  porturi:
    - nume: http
      port: 80
      protocol: TCP
      targetPort: http
      appProtocol: http
    - nume: https
      port: 443
      protocol: TCP
      targetPort: https
      appProtocol: https
  selector:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/instance: ingress-nginx
    app.kubernetes.io/component: controller

Până acum, e bine, accesarea instanței Nextcloud de pe Internet funcționează grozav, inclusiv redirecționarea către https, etc. Dar jurnalul de audit Nextcloud primește doar un IP intern al clusterului ca IP sursă (în mod surprinzător, nicio IP de la niciun serviciu pe care îl rulez în interiorul clusterului). ), nu realul din lumea exterioară.

Deci ce îmi lipsește? Am încercat să setez utilizați-proxy-protocol la adevărat, dar acest lucru are ca rezultat a ERR_CONNECTION_RESET.

Puncte:0
drapel cn

Ați încercat să setați spec.externalTrafficPolicy la local? Aruncă o privire la documentația kubernetes despre implicații.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.