У нас есть вход GKE, который использует приведенный ниже сервис внешнего интерфейса.Вход также завершается.Мы хотим иметь постоянные перенаправления с http на https для любого трафика, поступающего на http.
В приведенной ниже конфигурации у нас все работает и обслуживает трафик как по http, так и по https (без перенаправления).
Контейнер, используемый для развертывания, можно настроить для перезаписи http на https с помощью --https-redirect флаг.Он также уважает и доверяет заголовку X-Forwarded-Proto и будет считать его безопасным, если значение заголовка установлено на https .
Так что наиболееРазумной конфигурацией, которую я вижу для готовности, будет конфигурация ниже, но с закомментированными строками.Однако, как только мы применяем эту версию, мы никогда не переходим в исправное состояние, и вместо этого завершенный домен, настроенный с Ingress, возвращается с 502 и никогда не восстанавливается.
Так что же не так с приведенным ниже подходом?Я протестировал использование переадресации портов как модуля, так и службы, и они оба возвращают 301, если я не предоставляю заголовок X-Forwarded-Proto, и возвращаем 200, если я предоставляю заголовок X-Forwarded-Proto со значением https.
apiVersion: v1
kind: Service
metadata:
name: frontend-service
spec:
type: NodePort
ports:
- port: 8080
selector:
app: frontend
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: frontend
spec:
selector:
matchLabels:
app: frontend
template:
metadata:
labels:
app: frontend
spec:
containers:
- image: eu.gcr.io/someproject/frontend:master
imagePullPolicy: Always
# args:
# - '--https-redirect'
name: frontend
resources:
limits:
memory: 1Gi
cpu: '0.5'
ports:
- containerPort: 8080
name: frontend
readinessProbe:
httpGet:
path: /_readinessProbe
port: 8080
# httpHeaders:
# - name: X-Forwarded-Proto
# value: https