Включение 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.

Другие вопросы по тегам