首页 > 解决方案 > 尝试为 Rancher 2.X 配置 Nginx - 从 Rancher 1.x 迁移

问题描述

目前我在工作中使用rancher 1.x,并且正在迁移到rancher 2x。我很难理解如何将其迁移到 Rancher 2.X,或者我是否需要重新配置所有内容。我使用迁移工具创建了我的 yaml 文件,并为每个应用程序创建了 2 个文件,一个部署和一个服务。

在 Rancher 2.x 上添加服务文件时,它使用集群 Ip 创建了每个服务,端口映射是使用 Publish Service 端口作为我的 Rancher 1x 公共主机端口和目标端口作为我的 Rancher 1.x 私有容器端口创建的

但是,目前我正在为不同版本的应用程序使用 Nginx,并为每个应用程序按环境/堆栈定位它们,以下是我当前 nginx.conf 的示例

worker_processes 1;

error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;

events {
worker_connections 1024;
}

http {

server {
listen 80;

  #Aplication version 1
   location /environment1/applicationStack{
       proxy_pass http://<ipAdress for environment1 host>:3000/;
   }

  #Aplication version 2
   location /environment2/applicationStack{
       proxy_pass http://<ipAdress for environment2 host>:3000/;
   }

   #rancher
   location /rancher {
       rewrite ^([^.]*[^/])$ $1/ permanent;
       rewrite ^/rancher/(.*)$ /$1 break;
       proxy_pass      http://<ipAdress for enviroment with nginx>:8080;
       proxy_redirect  off;
       proxy_set_header Host $host;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   }
}
}

因此,例如,如果我想连接到每个应用程序,它将是 rancherDNS:8080/environmentVersion/stackName 我很难理解如何将其迁移到 Rancher 2.X,或者我是否需要重新配置所有内容。我应该如何配置 nginx 文件?我应该将每个服务 ClusterIp 与目标端口一起使用吗?还是发布端口?或者这个 ClusterIp 甚至不是我应该配置的?

另一件事是我们目前在 Travis 中使用 CI,如果 Travis 在部署中发布了新的 pod,这不会影响我的服务,对吧?

标签: nginxkubernetesrancher

解决方案


1.6.x 中的环境将映射到 2.x 中的多个 Kubernetes 集群。

您可以将 1.6.x 堆栈转换为 2.x 的 Deployment 或 DaemonSet Specs。然后您可以创建一个入口对象来访问它们。创建入口时,您可以直接指定主机名/fqdn,这样您就不必使用当前的 nginx。

如果您更喜欢使用当前的 nginx,则可以跳过在 ingress 对象中指定 fqdn/hostname 并使用集群的主机 IP 地址。

想法:(您需要参考文档以探索各种入口选项并为您的用例选择正确的选项)

#Aplication version 1
   location /app1 {
       proxy_pass http://<ipAdress k8s cluster 1 host>:80/app1;
   }

此外,如果您想详细了解 Ingress,您可能会发现我的演讲录音很有用:


推荐阅读