Включение SSL на кубернатах в GCE
Я нахожусь в процессе включения HTTPS для наших кластеров kubernates в GCE. Я пытаюсь использовать Кубернатс Ingress
У меня есть сертификат и секретный ключ, и я создал секрет с этими добавленными (ssl-secret):
apiVersion: v1
kind: Secret
metadata:
name: ssl-secret
type: Opaque
data:
tls.crt: LS0tLS...
tls.key: Mc0c4t...
У меня также есть Ingress, использующий секрет (ssl-ingress):
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ssl-ingress
spec:
backend:
serviceName: client # Name of the service
servicePort: my-https-port # Fetched from annotations
tls:
- hosts:
- test.domain.se # My domain address
secretName: ssl-secret # Name of my previously created secret
Наконец, я пытаюсь применить их к моему кластеру со следующей настройкой:
apiVersion: v1
kind: Service
metadata:
name: client
annotations:
service.alpha.kubernetes.io/app-protocols: '{"my-https-port":"HTTPS"}' # Must map port-name to HTTPS for the GCP ingress controller
labels:
app: client-pods
spec:
type: NodePort
ports:
- port: 12345 #To my understanding, not used
targetPort: client-https
protocol: TCP
name: my-https-port
selector:
name: client-pods
Итак, моя цель заключается в том, чтобы с помощью этой настройки я смог получить доступ к test.domain.se на https://test.domain.se/. Но это просто время ожидания, а http://test.domain.se/ работает просто отлично.
Описывая Ingress, я получаю следующее:
Name: ssl-ingress
Namespace: default
Address: 35.186.253.27
Default backend: client:my-https-port ()
TLS:
ssl-secret terminates test.domain.se
Rules:
Host Path Backends
---- ---- --------
* * client:my-https-port ()
Annotations:
static-ip: k8s-fw-default-ssl-ingress--59114a8fc664f628
target-proxy: k8s-tp-default-ssl-ingress--59114a8fc664f628
url-map: k8s-um-default-ssl-ingress--59114a8fc664f628
backends: {"k8s-be-31894--59114a8fc664f628":"UNHEALTHY"}
forwarding-rule: k8s-fw-default-ssl-ingress--59114a8fc664f628
Events:
FirstSeen LastSeen Count From SubObjectPath Type Reason Message
--------- -------- ----- ---- ------------- -------- ------ -------
7m 7m 1 loadbalancer-controller Normal ADD default/ssl-ingress
6m 6m 1 loadbalancer-controller Normal CREATE ip: 35.186.253.27
6m 2m 18 loadbalancer-controller Warning GCE googleapi: Error 400: The SSL key could not be parsed.
6m 2m 18 loadbalancer-controller Warning Service failed to identify user specified default backend, couldn't find nodeport for default/client, using system default
Итак, мои вопросы следующие:
Предупреждение GCE googleapi: Ошибка 400: не удалось проанализировать ключ SSL.
1: Похоже, что для Ingress требуется фраза секретного ключа. Как добавить ключевую фразу к секрету (ключ имеет известную ключевую фразу, но как мне сообщить ее секрет?)
Служба предупреждения не смогла определить заданный пользователем бэкэнд по умолчанию, не смогла найти нодпорт для default/client, используя системную настройку
2: Он утверждает, что не смог найти нодпорт для default / client. У меня целевой клиент службы уже запущен, но кажется, что вход добавляет по умолчанию / перед именем службы. Почему и как мне указать клиентский сервис?
1 ответ
Я была такая же проблема. Что я сделал, это было
1) преобразовать закрытый ключ в закрытый ключ RSA
openssl rsa -in private.key -out private_rsa.key
2) создание секрета через командную строку
kubectl create secret tls ingress-ssl --key private_rsa.key --cert certificate.crt
и используя этот секрет в моем Ingress.