Шлем для Rancher не работает с трафиком - PullRequest
0 голосов
/ 08 октября 2018

Я использую traefik в среде docker-compose для маршрутизации трафика на мой контейнер сервера Rancher и мои хосты Kubernetes.Все отлично работает, кроме Хелма.Запуск helm init работал нормально, но как только я пытаюсь что-то установить с Helm, я всегда получаю следующее сообщение об ошибке: Error: forwarding ports: error upgrading connection: Upgrade request required.

Это конфигурация traefik, связанная с сервером Rancher:

version: '3'
services:
  traefik:
    image: traefik:1.7
    environment:
      API_KEY: "asdfadsf"
      API_SECRET: "asdfasdf"
    ports:
      - "80:80"
      - "443:443"
      - "8080:8080"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./traefik-conf:/etc/traefik
      - ./acme.json:/acme.json
    restart: "always"

  rancher-server:
    image: rancher/rancher:v2.0.8
    container_name: rancher-server
    restart: on-failure
    command: --no-cacerts
    volumes:
      - ./rancher-data:/var/lib/rancher
    labels:
      - traefik.backend=rancher
      - traefik.port=80
      - traefik.frontend.rule=Host:rancher2.example.com
      - traefik.frontend.entryPoints=https

В другой настройке я также протестировал nginx перед сервером Rancher.Там Хельм работал как положено.Это конфигурация nginx, которую я использовал:

server {
    listen 80;
    server_name _;
    return 301 https://$host$request_uri;
}

upstream rancher {
    server rancher-server:80;
}

server {
    listen 443 ssl http2;
    server_name rancher2.example.com;

    ssl_certificate /config/keys/letsencrypt/fullchain.pem;
    ssl_certificate_key /config/keys/letsencrypt/privkey.pem;
    ssl_dhparam /config/nginx/dhparams.pem;
    ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
    ssl_prefer_server_ciphers on;

    location / {
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Port $server_port;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://rancher;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "Upgrade";
            # This allows the ability for the execute shell window to remain open for up to 15 minutes. Without this parameter, the default is 1 minute and will automatically close.
            proxy_read_timeout 900s;
    }
}

Я не знаю, нужно ли мне также устанавливать заголовки "Upgrade" и "Connection" в конфигурации traefik.Я пытался, но мне не удалось заставить его работать.

Кто-нибудь знает, как мне нужно настроить traefik, чтобы эта настройка работала?Это похоже на проблему с traefik, а не на проблему Rancher / Helm, потому что такая же настройка работает с nginx.Я хотел бы использовать traefik, потому что он может автоматически регистрировать подстановочные сертификаты letsencrypt.

...