Implementando a solução alternativa para o redirecionamento http-> https ausente no ingress-gce com GLBC

Estou tentando entender as soluções alternativas sugeridas pela falta de redirecionamento HTTP-> HTTPS interno no ingress-gce, usando GLBC. O que estou enfrentando é como usar esse back-end personalizado, sugerido como uma opção para superar essa limitação (por exemplo, emComo forçar o SSL para o Kubernetes Ingress no GKE)

No meu caso, o aplicativo por trás do balanceador de carga não possui apache ou nginx, e não consigo descobrir como incluir, por exemplo. apache (que eu sei melhor do que o nginx) na instalação. Devo definir o apache na frente do aplicativo como proxy? Nesse caso, pergunto-me o que colocar na configuração do proxy, pois não se pode usar esses nomes de serviço convenientes do k8s lá ...

Ou o apache deve ser configurado como um tipo de back-end separado, que só obteria tráfego quando o cliente usar HTTP simples? Nesse caso, sinto falta da separação de back-end por protocolo no balanceador de carga GCE e, embora eu possa ver como isso pode ser feito manualmente, a entrada precisa ser configurada para isso, e não consigo encontrar nenhum recurso explicando como realmente fazer isso.

Por exemplo, emhttps://github.com/kubernetes/ingress-gce#redirecting-http-to-https o "aplicativo" cuida do anterior (parece ser construído no nginx) e, embora esse exemplo funcione perfeitamente, não é possível fazer a mesma coisa com o aplicativo de que estou falando.

Basicamente, minha configuração atualmente é esta:

http://<public ip>:80    -\
                           >      GCE LB     ->  K8s pod running the application
https://<public_ip>:443  -/   (ingress-gce)

Eu sei que poderia bloquear completamente o HTTP, mas isso arruinaria a experiência do usuário quando alguém digitasse o nome de domínio no navegador.

Atualmente, tenho esses serviços configurados para o LB:

kind: Service
apiVersion: v1
metadata:
  name: myapp
spec:
  type: LoadBalancer
  ports:
  - name: http
    port: 80
    targetPort: myapp
    protocol: TCP
  selector:
    app: myapp

---
kind: Ingress
apiVersion: extensions/v1beta1
metadata:
  name: myapp-ingress
  annotations:
    ingress.kubernetes.io/rewrite-target: /
    kubernetes.io/ingress.global-static-ip-name: "my-ip"
    ingress.gcp.kubernetes.io/pre-shared-cert: "my-cert"
spec:
  backend:
    serviceName: myapp
    servicePort: 80
  rules:
  - host: my.domain.name
    http:
      paths:
      - path: /
        backend:
          serviceName: myapp
          servicePort: 80

Além disso, eu tenho o GLBC empacotado junto com a implantação do aplicativo:

apiVersion: v1
kind: ConfigMap
metadata:
  name: glbc-configmap
data:
  gce.conf: |
    [global]
    node-tags = myapp-k8s-nodepool
    node-instance-prefix = gke-myapp-k8s-cluster

---
kind: Deployment
apiVersion: apps/v1beta2
metadata:
  name: myapp
spec:
  replicas: 1
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      name: myapp
      labels:
        app: myapp
    spec:
      containers:
      # START application container
      - name: myapp
        image: eu.gcr.io/myproject/myapp:latest
        imagePullPolicy: Always
        readinessProbe:
          httpGet:
            path: /ping
            port: 8080
        ports:
        - name: myapp
          containerPort: 8080
      # END application container
      # START GLBC container
      - name: myapp-glbc
        image: gcr.io/google_containers/glbc:0.9.7
        livenessProbe:
          httpGet:
            path: /ping
            port: 8080
            scheme: HTTP
          initialDelaySeconds: 30
          timeoutSeconds: 5
        volumeMounts:
        - mountPath: /etc/glbc-configmap
          name: cloudconfig
          readOnly: true
        args:
        - --apiserver-host=http://localhost:8080
        - --default-backend-service=myapp
        - --sync-period=300s
        - --config-file-path=/etc/glbc-configmap/gce.conf

Eu gostaria muito de receber dicas, além de soluções mais completas.

questionAnswers(1)

yourAnswerToTheQuestion