带有 AGIC 和应用程序网关的 AKS

AKS with AGIC and Application Gateway

我有一个启用了附加 AGIC 的 AKS 集群(将在不久的将来尝试将其转换为基于 Helm 的 AGIC)。目前我在这个集群上有一个应用程序,入口设置为应用程序网关。目前这在端口 80 上完美运行。

如果我想启用 SSL,是否只需要在 App Gateway 添加证书,然后在部署中引用它? (示例取自 https://thewindowsupdate.com/2021/10/19/what-does-it-mean-for-the-application-gateway-ingress-controller-agic-to-assume-full-ownership/

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: aspnetapp
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
    appgw.ingress.kubernetes.io/appgw-ssl-certificate: <name of your certificated added to Application Gateway>
    appgw.ingress.kubernetes.io/ssl-redirect: "true"
spec:
  rules:
  - http:
      paths:
      - path: /
        backend:
          serviceName: aspnetapp
          servicePort: 80

虽然上面设置了服务端口为80,但是App GW会自动申请TLS吗?上面的服务端口应该是80还是443?还是因为设置了 SSL 重定向就没关系了?还有这个自动加密哪些方面?

另外,App GW 的外部是否也需要另一个证书?还是我只需要一个证书?

AGIC 将创建:

  • 2 个侦听器:端口 80 上的 HTTP 和端口 443 上的 HTTPS。HTTPS 侦听器将使用来自 appgw.ingress.kubernetes.io/appgw-ssl-certificate
  • 的 SSL 证书进行配置
  • 2条路由规则:一条将http监听流量重定向到https监听。 https 侦听器将配置为以 AKS 上的后端为目标。

默认情况下,AGIC 将执行 TLS 终止,因此应用程序网关和 aks 集群之间的流量将使用 HTTP(而非 HTTPS)协议。配置的端口将是您服务的 targetPort 中配置的端口。

另外请注意,您之前应该已经看到此警告:

extensions/v1beta1 Ingress is deprecated in v1.14+, unavailable in v1.22+; use networking.k8s.io/v1 Ingress

您应该更新 AGIC 以使用 latest version 并更改您的清单以使用 networking.k8s.io/v1 Ingress:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: aspnetapp
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
    appgw.ingress.kubernetes.io/ssl-redirect: "true"
    appgw.ingress.kubernetes.io/appgw-ssl-certificate: "<name of your certificated added to Application Gateway>"
spec:
  rules:
...