Настройка HTTPS в Kubernetes
Перед настройкой HTTPS нет необходимости проводить установку Test IT.
- Подготовьте файлы с сертификатом и ключом. Назвать их можно, например
tls.crt
иtls.key
. - Переведите содержимое файлов в формат base64:
cat tls.crt | base64 | tr -d "\n" > tls-encoded.crt cat tls.key | base64 | tr -d "\n" > tls-encoded.key
- Создайте секрет с закодированными файлами в нужном пространстве имен:
kubectl -n <namespace> create secret tls my-tls-secret --cert=tls-encoded.crt --key=tls-encoded.key
- Настройте ingress для выбранного доменного имени и tls-секрета:
# testit_unichart/values-override.yaml frontend: ingress: main: ingressClassName: "nginx" # Set ingress class name host: "my.hostname.com" # Set the desired hostname you own path: / pathType: Prefix annotations: nginx.ingress.kubernetes.io/ssl-redirect: "True" nginx.ingress.kubernetes.io/proxy-connect-timeout: "300" nginx.ingress.kubernetes.io/proxy-read-timeout: "3600" nginx.ingress.kubernetes.io/proxy-send-timeout: "3600" nginx.ingress.kubernetes.io/proxy-body-size: 100m nginx.ingress.kubernetes.io/proxy-buffer-size: 50m nginx.ingress.kubernetes.io/proxy-buffers-number: "4" tls: true tlsSecretName: my-tls-secret
- Если данная настройка проходит на этапе до установки Test IT, продолжайте следовать описанным шагам.
- Если Test IT был уже установлен, примените изменения:
cd <installation_folder> helm -n <my-namespace> -f testit_unichart/values-override.yaml upgrade testit testit_unichart/ --wait --timeout 10m
- Опционально: Вы можете использовать готовые решения для настройки HTTPS в K8s, например cert-manager + Letsencrypt. Для этого добавьте соответствующие флаги и аннотации в ingress:
# testit_unichart/values-override.yaml frontend: ingress: main: ingressClassName: "nginx" # Set ingress class name host: "my.hostname.com" # Set the desired hostname you own path: / pathType: Prefix annotations: nginx.ingress.kubernetes.io/ssl-redirect: "True" nginx.ingress.kubernetes.io/proxy-connect-timeout: "300" nginx.ingress.kubernetes.io/proxy-read-timeout: "3600" nginx.ingress.kubernetes.io/proxy-send-timeout: "3600" nginx.ingress.kubernetes.io/proxy-body-size: 100m nginx.ingress.kubernetes.io/proxy-buffer-size: 50m nginx.ingress.kubernetes.io/proxy-buffers-number: "4" cert-manager.io/cluster-issuer: letsencrypt-production cert-manager.io/common-name: my.hostname.com tls: true tlsSecretName: my-ssl-secret