在 Azure 中为 kubernetes 配置两个环境

Configure two environment for kubernetes within Azure

Azure kubernetes 服务允许我只为一个集群分配一个IP 地址。我在这个集群中创建了两个命名空间,我想通过 url 区分这两个命名空间作为环境。

命名空间

对这些命名空间的期望访问类似于 {namespace}.cloudapp.azure.com

在每个命名空间中定义入口控制器时,会分配相同的 IP 地址。通常我应该如何实现这种分离但保持相同的集群?

对于您的用例,您只需要一个入口控制器。 IE。 https://kubernetes.github.io/ingress-nginx/

为此,您需要为通向单个集群 IP 的命名空间添加 DNS 条目。 如果您只想访问两个 DNS 名称:

  • stage.cloudapp.azure.com
  • dev.cloudapp.azure.com

如果您只想在这些名称空间中使用一个应用程序,则添加两个条目可能就足够了。如果您想在命名空间中部署多个应用程序,您应该考虑为以下内容添加通配符 DNS 条目:

  • *.stage.cloudapp.azure.com
  • *.dev.cloudapp.azure.com

通过此设置,您可以添加以下格式的入口:

  apiVersion: networking.k8s.io/v1
  kind: Ingress
  metadata:
    name: ingress-example-with-hostname
    namespace: dev
  spec:
  rules:
  - host: dev.cloudapp.azure.com
    http:
      paths:
      - pathType: Prefix
        path: "/"
        backend:
          service:
            name: service
            port:
              number: 80

有关更多信息,请查看此文档:https://kubernetes.io/docs/concepts/services-networking/ingress/#name-based-virtual-hosting