【问题标题】:How do I make an ingress forward to an ssl port(443) if https traffic如果 https 流量,我如何将入口转发到 ssl 端口(443)
【发布时间】:2019-05-17 13:25:25
【问题描述】:

入口如何将 https 流量转发到服务的 443 端口(最终到我容器上的 8443)?我是否必须对我的入口进行任何更改,或者这是自动完成的。

在 GCP 上,我有一个第 4 层平衡器 -> nginx-ingress 控制器 -> 入口

我的入口是:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-keycloak
  annotations:
    kubernetes.io/ingress.class: "nginx"
    certmanager.k8s.io/issuer: "letsencrypt-prod"
    certmanager.k8s.io/acme-challenge-type: http01


spec:
  tls:
  - hosts:
    - mysite.com
    secretName: staging-iam-tls
  rules:
  - host: mysite.com
    http:
      paths:
      - path: /auth
        backend:
          serviceName: keycloak-http
          servicePort: 80

我在网上搜索过,但没有看到达到 443 的明确示例。它始终是 80(或 8080)

我的服务keycloak-http 是(省略了,我的容器实际上在 8443 监听)

apiVersion: v1
kind: Service
metadata:
  creationTimestamp: 2019-05-15T12:45:58Z
  labels:
    app: keycloak
    chart: keycloak-4.12.0
    heritage: Tiller
    release: keycloak
  name: keycloak-http
  namespace: default
 ..
spec:
  clusterIP: ..
  externalTrafficPolicy: Cluster
  ports:
  - name: http
    port: 80
    protocol: TCP
    targetPort: http
  - name: https
    port: 443
    protocol: TCP
    targetPort: 8443
  selector:
    app: keycloak
    release: keycloak
  sessionAffinity: None
  type: NodePort
status:
  loadBalancer: {}

【问题讨论】:

  • 是什么阻止您使用servicePort: 443?
  • @cookiedough 我试过了,但它不起作用,虽然我可以本地代理到 8443 并直接连接。
  • 你可以尝试端口转发到kubectl port-forward svc/keycloak 8443:443这样的服务

标签: kubernetes kubernetes-ingress nginx-ingress


【解决方案1】:

试试这个:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-keycloak
  annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
    certmanager.k8s.io/issuer: "letsencrypt-prod"
    certmanager.k8s.io/acme-challenge-type: http01
spec:
  tls:
  - hosts:
    - mysite.com
    secretName: staging-iam-tls
  rules:
  - host: mysite.com
    http:
      paths:
      - path: /auth
        backend:
          serviceName: keycloak-http
          servicePort: 443

【讨论】:

  • 这应该被接受,它是正确的答案。具体来说 - nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
  • 谢谢!我几乎放弃了安全的后端配置!
猜你喜欢
  • 2019-04-19
  • 2015-08-07
  • 1970-01-01
  • 2019-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-02
  • 2021-09-17
相关资源
最近更新 更多