Управляемый сертификат GKE не обслуживается по HTTPS - PullRequest
0 голосов
/ 01 июля 2019

Я пытаюсь раскрутить кластер Kubernetes, к которому я могу получить безопасный доступ и, похоже, не могу получить эту последнюю часть. Я следую этому уроку: https://cloud.google.com/kubernetes-engine/docs/how-to/managed-certs

Вот файлы .yaml, которые я использую для своих Ingress, Nodeport и ManagedCertificate

apiVersion: networking.gke.io/v1beta1
kind: ManagedCertificate
metadata:
  name: client-v1-cert
spec:
  domains:
    - api.mydomain.com
---
apiVersion: v1
kind: Service
metadata:
  name: client-nodeport-service
spec:
  selector:
    app: myApp
  type: NodePort
  ports:
    - protocol: TCP
      port: 80
      targetPort: 3000
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: api-ingress
  annotations:
    kubernetes.io/ingress.global-static-ip-name: api-v1
    networking.gke.io/managed-certificates: client-v1-cert
spec:
  backend:
    serviceName: client-nodeport-service
    servicePort: 80

Нет ошибок, которые я вижу в консоли GCP. я также могу получить доступ к своему API из http://api.mydomain.com/, но он не будет работать, когда я попробую https, только не https. Вот уже несколько дней бьюсь головой об этом и просто удивляюсь, есть ли какая-то маленькая вещь, по которой я скучаю.

--- ОБНОВЛЕНИЕ ---

Выход kubectl describe managedcertificate

Name:         client-v1-cert
Namespace:    default
Labels:       <none>
Annotations:  kubectl.kubernetes.io/last-applied-configuration:
API Version:  networking.gke.io/v1beta1
Kind:         ManagedCertificate
Metadata:
  Creation Timestamp:  2019-07-01T17:42:43Z
  Generation:          3
  Resource Version:    1136504
  Self Link:           /apis/networking.gke.io/v1beta1/namespaces/default/managedcer
tificates/client-v1-cert
  UID:                 b9b7bec1-9c27-33c9-a309-42284a800179
Spec:
  Domains:
    api.mydomain.com
Status:
  Certificate Name:    mcrt-286cdab3-b995-40cc-9b3a-28439285e694
  Certificate Status:  Active
  Domain Status:
    Domain:     api.mydomain.com
    Status:     Active
  Expire Time:  2019-09-29T09:55:12.000-07:00
Events:         <none>

1 Ответ

1 голос
/ 02 июля 2019

Я разобрался с решением этой проблемы.Я закончил тем, что вошел в свою консоль GCP, обнаружил балансировщик нагрузки, связанный с Ingress, и затем я заметил, что был только один протокол внешнего интерфейса, и это был HTTP, обслуживающий через порт 80. Поэтому я вручную добавил другой протокол внешнего интерфейса для HTTPS, выбранныйуправляемый сертификат из списка, и подождал около 5 минут, и все заработало.

Я понятия не имею, почему мой ingress.yaml не сделал этого автоматически.Поэтому, хотя проблема решена, если есть кто-то, кто знает то, что я хотел бы знать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...