在 443 (https) 上为 Azure Kubernetes 启用 App Gateway 入口

Enable App Gateway ingress for Azure Kubernetes on 443 (https)

我是 AKS 的新手,正在尝试设置集群并通过应用程序网关入口控制器公开它。虽然我能够使用 az 命令设置集群,并且能够使用 HTTP 部署和访问它。我在通过 443 应用程序内网关入口启用 HTTPS 时遇到了一些挑战,希望获得一些帮助。

  1. 下面是我们的工作流程,我正在尝试在端口 443 上设置应用程序网关侦听器
  2. 下面是我们用于启用入口的 k8。如果我申请时没有 ssl 证书,它会起作用,但如果我提供 ssl 证书,我会得到一个 502 错误的网关。
  3. 证书已上传到 KV,集群已安装 KV 插件。但是我不确定如何将这个特定的 kv 附加到集群以及证书是否应该上传到网关或 Kubernetes。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: frontend-web-ingress
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
    appgw.ingress.kubernetes.io/appgw-ssl-certificate: workspace-dev-cluster-cert
    appgw.ingress.kubernetes.io/cookie-based-affinity: "true"
    appgw.ingress.kubernetes.io/request-timeout: "90"
    appgw.ingress.kubernetes.io/backend-path-prefix: "/"
spec:
  rules:
    - http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: frontend-svc
                port:
                  number: 80

此 link 可以帮助您在 App GW 上获得 KV add-on 证书:https://azure.github.io/application-gateway-kubernetes-ingress/features/appgw-ssl-certificate/

我使用不同的配置在 Appgw 上设置证书。

  1. 我正在通过 akv2k8s 工具获取证书。这会在 k8s 集群上创建秘密。
  2. 然后我在入口配置中使用这些证书。请检查规范下的 tls 定义。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: frontend-web-ingress
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
    appgw.ingress.kubernetes.io/appgw-ssl-certificate: workspace-dev-cluster-cert
    appgw.ingress.kubernetes.io/cookie-based-affinity: "true"
    appgw.ingress.kubernetes.io/request-timeout: "90"
    appgw.ingress.kubernetes.io/backend-path-prefix: "/"
spec:
  tls:
    - hosts:
      - yourdomain.com
      secretName: your-tls-secret-name
  rules:
    - http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: frontend-svc
                port:
                  number: 80