Настройка HTTPS в Kubernetes

Перед настройкой HTTPS нет необходимости проводить установку Test IT.

  1. Подготовьте файлы с сертификатом и ключом. Назвать их можно, например tls.crt и tls.key.
  2. Переведите содержимое файлов в формат base64:
    cat tls.crt | base64 | tr -d "\n" > tls-encoded.crt
    cat tls.key | base64 | tr -d "\n" > tls-encoded.key
    
  3. Создайте секрет с закодированными файлами в нужном пространстве имен:
    kubectl -n <namespace> create secret tls my-tls-secret --cert=tls-encoded.crt --key=tls-encoded.key
    
  4. Настройте ingress для выбранного доменного имени и tls-секрета:
    # testit_frontend/values-override.yaml
    ingress:
      className: nginx
      host: "my.hostname.example.com"
      path: /
      pathType: Prefix
      tls:
        - secretName: "my-tls-secret"
          hosts:
            - "my.hostname.example.com"
    
  5. Если данная настройка проходит на этапе до установки Test IT, продолжайте следовать описанным шагам.
  6. Если Test IT был уже установлен, примените изменения:
    cd ~/testit
    helm -n <namespace> -f testit_frontend/values-override.yaml upgrade testit-frontend testit_frontend/
    
  7. Опционально: Вы можете использовать готовые решения для настройки HTTPS в K8s, например cert-manageropen in new window + Letsencryptopen in new window. Для этого добавьте соответствующие флаги и аннотации в ingress:
    # testit_frontend/values-override.yaml
    ingress:
      service:
        annotations:
          cert-manager.io/cluster-issuer: letsencrypt-production
          cert-manager.io/common-name: "my.hostname.example.com"
      className: nginx
      host: "my.hostname.example.com"
      path: /
      pathType: Prefix
      tls:
        - secretName: "my-generic-tls"
          hosts:
            - "my.hostname.example.com"
    
Обновлено: