带有入口控制器 AKS 的自定义域和 Azure Kubernetes

Custom domain and Azure Kubernetes with ingress controller AKS

我遵循了 Microsoft Deploy an HTTPS ingress controller on Azure Kubernetes Service (AKS) 的这篇文档,并成功部署了带有 nginx 入口控制器的托管 Kubernetes 集群 (AKS)。它按预期与 https 一起工作。

但是,响应格式为 subdomain.eastus2.cloudapp.azure.com 的域。但是我想使用我自己的自定义域 www.somedomain.com。然后我将 CNAME 条目添加到我的自定义域,指向由 kubernetes 集群配置的 public ip 地址。

但是,当我这样做时,我在

的浏览器上得到了响应

默认后端 - 404

看来我需要更改 Azure(或某处)中的 public IP 地址,以便它理解自定义域和 azure 子域将使用它。

我看过命令:

az 网络

命令。但是,尚不清楚这是不是正确的命令。有谁知道我如何进行所需的更改,以便我的自定义 FQDN 可以正确路由到我的 kubernetes 集群?

谢谢

'default backend 404' 表示它正在攻击入口控制器。如果它被拒绝或未到达,我希望没有 'default backend' 位的通用 404。此响应意味着它正在访问入口控制器,但入口控制器不知道将其发送到哪里。这是因为没有入口 route/resource 匹配该请求的主机。创建 route/resource 的步骤特定于域,因此入口规则仅匹配 azure 域而不匹配自定义域。我认为您需要返回并为您的自定义域重复入口资源和证书步骤,因为这些步骤是特定于域的。

这是对我有用的 yaml。

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: webapp-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
    certmanager.k8s.io/cluster-issuer: letsencrypt-staging
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  tls:
  - hosts:
    - subdomain.eastus2.cloudapp.azure.com
    - subdomain.domain.com
    secretName: tls-secret
  rules:
  - host: subdomain.eastus2.cloudapp.azure.com
    http:
      paths:
      - path: /
        backend:
          serviceName: aks-helloworld
          servicePort: 80
  - host: subdomain.domain.com
    http:
      paths:
      - path: /
        backend:
          serviceName: aks-helloworld
          servicePort: 80

请参阅此处了解已完成的示例:Deploy an HTTPS ingress controller on Azure Kubernetes Service (AKS)

最近几天我遇到了同样的问题,遇到了一个awesome step-by-step guide,它允许我使用自定义域和配置证书与 Letsencrypt。

如果您想使用自己的自定义证书,您可能需要 follow this article instead