kubernetes中不同命名空间的不同入口

Nik*_*raj 9 namespaces kubernetes

我为不同的环境创建了两个不同的命名空间.一个是devops-qa,另一个是devops-dev.我在不同的命名空间中创建了两个入口.因此,当在devops-qa命名空间中创建qa env的入口时,在qa的入口内写入的规则工作正常.意味着我可以访问qa env的网页.我将在devops-dev命名空间中创建dev env的入口,我将能够访问dev env的网页,但无法访问qa的网页.当我删除dev ingress然后再次我将能够访问qa env网站

以下是dev和qa env的ingree.

Dev Ingress

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: "nginx"
  name: cafe-ingress-dev
  namespace: devops-dev
spec:
  tls:
  - hosts:
    - cafe-dev.example.com
    secretName: default-token-drk6n
  rules:
  - host: cafe-dev.example.com
    http:
      paths:
      - path: /
        backend:
          serviceName: miqpdev-svc
          servicePort: 80
Run Code Online (Sandbox Code Playgroud)

QA Ingress

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: "nginx" 
  name: cafe-ingress-qa
  namespace: devops-qa
spec:
  tls:
  - hosts:
    - cafe-qa.example.com
    secretName: default-token-jdnqf
  rules:
  - host: cafe-qa.example.com
    http:
      paths:
      - path: /greentea
        backend:
          serviceName: greentea-svc
          servicePort: 80
      - path: /blackcoffee
        backend:
          serviceName: blackcoffee-svc
          servicePort: 80
Run Code Online (Sandbox Code Playgroud)

入口文件中提到的令牌是每个命名空间.并且nginx入口控制器在QA命名空间中运行如何运行入口并且能够获得在dev和qa env中部署的所有网站?

Nik*_*raj 5

我实际上解决了我的问题。我做的一切正确。但是我唯一没有做的就是在Route53中用相同的IP映射主机名。我没有使用主机名访问该网站,而是通过IP访问它。现在从主机名访问网站后,我可以访问它了:)


Eug*_*how 4

看来您在这里发帖并得到了答案。解决方案是为每个命名空间部署不同的 Ingress。然而,部署 2 个 Ingress 会使事情变得复杂,因为一个实例必须在非标准端口(例如 8080、8443)上运行。

我认为使用 DNS 可以更好地解决这个问题。创建 CNAME 记录cafe-qa.example.comcafe-dev.example.com都指向cafe.example.com. 相应地更新每个 Ingress 清单。使用 DNS 在某种程度上是分离开发/QA/生产环境的标准方法。