【问题标题】:AKS ingress controller with static ip for a sub-domain具有子域静态 IP 的 AKS 入口控制器
【发布时间】:2021-07-17 19:50:38
【问题描述】:

我一直在执行本教程中的步骤: Create an ingress controller with a static public IP address in Azure Kubernetes Service (AKS)

完成本教程后,我可以浏览到静态 ip 的 DNS 名称标签: https://demo-aks-ingress.eastus.cloudapp.azure.com

我不明白的是,假设我有一个子域 hello.john.com。如何将子域的 DNS 配置为指向 https://demo-aks-ingress.eastus.cloudapp.azure.com,以便它可以与我在上面的 AKS 教程中设置的 https 和 letencrypt 一起使用?

【问题讨论】:

    标签: kubernetes kubernetes-ingress azure-aks


    【解决方案1】:

    基于 k8s github repo 上的this issue comment,如果您执行以下操作,它看起来应该可以工作:

    • hello.john.com 域创建一个CNAME 记录并将其指向demo-aks-ingress.eastus.cloudapp.azure.com
    • 向 ingress 添加第二个域(以便 ingress 知道如何路由它)
    • 将第二个域添加到证书对象(以便 cert-manager 可以为此域生成有效证书)

    入口部分:

    apiVersion: networking.k8s.io/v1beta1
    kind: Ingress
    metadata:
      name: hello-world-ingress
      annotations:
        kubernetes.io/ingress.class: nginx
        cert-manager.io/cluster-issuer: letsencrypt-staging
        nginx.ingress.kubernetes.io/rewrite-target: /$1
        nginx.ingress.kubernetes.io/use-regex: "true"
        nginx.ingress.kubernetes.io/server-alias: "hello.john.com"  #?
    spec:
      tls:
      - hosts:
        - demo-aks-ingress.eastus.cloudapp.azure.com
        - hello.john.com      #?
        secretName: tls-secret
      rules:
      - host: demo-aks-ingress.eastus.cloudapp.azure.com
        http:
          paths:
          - backend:
              serviceName: aks-helloworld
              servicePort: 80
            path: /hello-world-one(/|$)(.*)
          - backend:
              serviceName: ingress-demo
              servicePort: 80
            path: /hello-world-two(/|$)(.*)
          - backend:
              serviceName: aks-helloworld
              servicePort: 80
            path: /(.*)
    

    文档:


    证书部分:

    apiVersion: cert-manager.io/v1alpha2
    kind: Certificate
    metadata:
      name: tls-secret
      namespace: ingress-basic
    spec:
      secretName: tls-secret
      dnsNames:
      - demo-aks-ingress.eastus.cloudapp.azure.com
      - hello.john.com      #?
      acme:
        config:
        - http01:
            ingressClass: nginx
          domains:
          - demo-aks-ingress.eastus.cloudapp.azure.com
          - hello.john.com      #?
      issuerRef:
        name: letsencrypt-staging
        kind: ClusterIssuer
    

    文档:

    【讨论】:

    • 太棒了,谢谢! :-) “为 hello.john.com 域创建 CNAME 记录并将其指向 demo-aks-ingress.eastus.cloudapp.azure.com” 如果 cname 指向集群的 ip 与DNS 名称标签 (demo-aks-ingress.eastus.cloudapp.azure.com)?推荐哪个?
    • CNAME 只能指向其他域。如果要使用IP使用记录A。推荐哪个?它不像它推荐的那样 - 您使用最适合您的用例的一种。只要确保它们都指向 nginx ingres IP。
    猜你喜欢
    • 2019-05-25
    • 2019-01-21
    • 2021-11-23
    • 1970-01-01
    • 2022-06-29
    • 2022-11-05
    • 2018-07-31
    • 1970-01-01
    • 2022-11-04
    相关资源
    最近更新 更多