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

时间:2018-08-14 19:28:51

标签: azure kubernetes azure-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集群配置的公共IP地址。

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

的浏览器上得到响应

默认后端-404

似乎我需要在Azure(或其他地方)中更改公共ip地址,以便它了解自定义域以及azure子域都将使用它。

我看过以下命令:

az网络

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

谢谢

3 个答案:

答案 0 :(得分:2)

“默认后端404”表示它正在攻击入口控制器。如果它被拒绝或没有达到我希望没有“默认后端”位的通用404。此响应表示它正在击中入口控制器,但是inress控制器不知道将其发送到何处。这是因为没有匹配该请求主机的入口路由/资源。创建该路由/资源的步骤是特定于域的,因此入口规则仅适用于蔚蓝的域,而不适用于自定义域。我认为您需要返回并重复自定义域的入口资源和证书步骤,因为这些步骤是特定于域的。

答案 1 :(得分:2)

这是为我工作的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)

答案 2 :(得分:0)

最近几天我一直面临着同样的问题,遇到awesome step-by-step guide,这使我可以使用Letsencrypt来使用自定义域和供应证书。

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