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

带有入口控制器AKS的自定义域和Azure Kubernetes,azure,kubernetes,azure-aks,Azure,Kubernetes,Azure Aks,我遵循了微软的这篇文档,并成功地使用nginx入口控制器部署了一个托管Kubernetes集群(AKS)。它可以像预期的那样使用https 但是,响应格式为subdomain.eastus2.cloudapp.azure.com的域。但是,我想使用自己的自定义域www.somedomain.com。然后,我向自定义域添加一个CNAME条目,指向kubernetes集群配置的公共ip地址 但是,当我这样做时,我会在的浏览器上得到响应 默认后端-404 看起来我需要更改Azure(或其他地方)中的公

我遵循了微软的这篇文档,并成功地使用nginx入口控制器部署了一个托管Kubernetes集群(AKS)。它可以像预期的那样使用https

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

但是,当我这样做时,我会在的浏览器上得到响应

默认后端-404

看起来我需要更改Azure(或其他地方)中的公共ip地址,以便它了解自定义域以及Azure子域将使用该地址

我看了一下命令:

az网络

指挥部。然而,目前还不清楚这是否是正确的命令。有人知道如何进行所需的更改,以便将自定义FQDN正确路由到kubernetes群集吗


谢谢,

默认后端404表示它正在访问入口控制器。如果它被拒绝或没有达到我希望一个通用404没有'默认后端'位。此响应意味着它正在命中入口控制器,但inress控制器不知道将其发送到何处。这是因为没有与该请求的主机匹配的入口路由/资源。创建路由/资源的步骤特定于域,因此入口规则只匹配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

请参见此处了解已完成的示例:

在过去几天中,我一直面临相同的问题,并遇到了一个允许我在Letsencrypt中使用自定义域和设置证书的问题


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

Great-它可以工作Ryan:-)。谢谢。我只是用新域向yaml文件添加了另一个路由。我之前设置了CNAME,因此入口控制器立即开始正确路由。我已经在下面添加了完整的yaml,以防它对其他人有帮助。您可以尝试将自定义FQDN指向Kubernetes群集的Azure FQDN。感谢链接。令人遗憾的是,微软正在推广Azure DNS,而不是指导如何与外部DNS提供商解决问题。您好,首先感谢您发布完整的yml。您是否必须创建Azure DNS资源等?或者使用外部DNS并将A记录指向入口控制器就足够了?