nginx - 尝试为 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,这不会影响我的服务,对吧?
解决方案
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,您可能会发现我的演讲录音很有用:
推荐阅读
- c# - 在 ASP.NET MVC 中创建的新项目中的默认控制器。如何安全删除
- javascript - 对每个数组索引值调用函数
- wordpress - 当用户从 PaidMemebership Pro wordpress 插件取消订阅时,取消 Stripe 订阅不起作用
- batch-file - 在 Windows 10 上使用 Robocopy 的脚本在 W7 上不起作用
- r - 将 ggsave() 纵横比设置为 RStudio 的“缩放”按钮给出的比例?
- javascript - javascript:如何停止播放页面上的所有 youtube 嵌入视频?
- postgresql - 创建包含 Postgis 功能的数据库
- maven - maven 生成 pom.properties 文件添加日期属性
- django - 通道 websocket AsyncJsonWebsocketConsumer 未达到断开连接
- javascript - 如何将嵌套数组中的元素转换为具有名称和值属性的对象数组?