Я прочитал кучу SO сообщений, статей и документов по GCP на эту тему, но я все еще в замешательстве, в основном потому, что я не человек DevOps. Представляю, используя консоль GCP, я могу щелкнуть несколько вещей, загрузить несколько сертификатов и альт! , мой API работает по HTTPS.
Этот пост заставил меня немного больше понять Ingress , но я также читал статьи, которые с использованием ClusterIP
не годятся для безопасности. Поэтому я продолжаю использовать тип Load Balancer при добавлении поддержки HTTPS, не заходя в терминал. Это возможно?
РЕДАКТ. 1:
Я наткнулся на продукт балансировки нагрузки от GCP и начал его исследовать. Насколько мне известно, это было бы концептуально идеально, но я не могу заставить его работать. Мои шаги:
- Создание балансировщика нагрузки
- Создание серверной службы для этого LB, которая указывает на виртуальную машину Compute Engine, на которой работает GKE
- Создание службы внешнего интерфейса, которая давала мне статический IP-адрес
- Настройка A-записи на моем провайдере DNS для этого IP-адреса
Но я все еще получаю ошибку The server encountered a temporary error and could not complete your request
при попытке посетить мое доменное имя в браузере, которая говорит мне, что каким-то образом мой балансировщик нагрузки, вероятно, работает, но он подключен к моему узлу докер-приложения в GKE.
Кто-нибудь знает, как я могу подключить продукт балансировки нагрузки с HTTPS к GKE? Или мой оригинальный вопрос, как вообще заставить GKE использовать HTTPS?
РЕДАКТИРОВАТЬ 2:
Я закончил тем, что нашел конкретные шаги в документах для настройки Ingress здесь (Шаг 2b). Настройка сработала, но теперь у меня проблемы с нездоровыми бэкэнд-сервисами.
РЕДАКТИРОВАТЬ 3
За много обсуждений для НЕЗДОРОВЫХ бэкэнд-сервисов. Я попытался добавить livenessprobe
и readinessprobe
к моему файлу развертывания yaml следующим образом:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
annotations:
deployment.kubernetes.io/revision: "4"
creationTimestamp: 2019-06-13T00:46:01Z
generation: 4
labels:
app: video-api-alpha
name: video-api-alpha
namespace: video-api
resourceVersion: "926307"
selfLink: /apis/extensions/v1beta1/namespaces/video-api/deployments/video-api-alpha
uid: 9dd774ae-8d74-11e9-aec9-42010af0024b
spec:
progressDeadlineSeconds: 2147483647
replicas: 3
revisionHistoryLimit: 10
selector:
matchLabels:
app: video-api-alpha
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
app: video-api-alpha
spec:
containers:
- image: gcr.io/mc-service-video/service-video:alpha
imagePullPolicy: IfNotPresent
livenessProbe:
failureThreshold: 3
httpGet:
path: /healthcheck
port: 8080
scheme: HTTP
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
name: service-video-sha256
readinessProbe:
failureThreshold: 3
httpGet:
path: /healthcheck
port: 8080
scheme: HTTP
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
status:
availableReplicas: 3
conditions:
- lastTransitionTime: 2019-06-13T00:46:03Z
lastUpdateTime: 2019-06-13T00:46:03Z
message: Deployment has minimum availability.
reason: MinimumReplicasAvailable
status: "True"
type: Available
observedGeneration: 4
readyReplicas: 3
replicas: 3
updatedReplicas: 3
Но все равно не повезло. Есть идеи?