2017-07-26 58 views
0

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

下面是dev和qa env的入口。

开发入口

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 

QA入口

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 

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

+0

什么是Ingress控制器? –

+0

我正在使用nginx-plus –

+0

每个标记是'default-token-jdnqf'还是'default-token-drk6n'是你自己创建并自签名的TLS证书? – daniely

回答

0

好像你贴here and got your answer。解决方案是为每个名称空间部署不同的Ingress。但是,部署2 Ingress会使问题复杂化,因为一个实例必须在非标准端口上运行(例如,8080,8443)。

我认为使用DNS可以更好地解决这个问题。创建指向cafe.example.com的CNAME记录cafe-qa.example.comcafe-dev.example.com。相应地更新每个Ingress清单。使用DNS有时是分离Dev/QA/Prod环境的标准方式。

+0

嘿尤金,我仍然无法解决这个问题。我试着给不同的主机,但我仍然无法访问这两个名称空间的网站。nginx入口控制器是在QA中运行 –

+0

“不同的主机”是否意味着您使用'cafe-qa.example.com'和'cafe-dev.example.com'?您可以使用新配置更新问题吗? –

+0

还有一件事,我是使用Nginx提供的nginx-plus而不是kubernetes ...所以它会支持这个设施 –

0

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

相关问题