nginx - 尝试为 Rancher 2.X 配置 Nginx - 从 Rancher 1.x 迁移

标签 nginx kubernetes rancher

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

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

但是,目前我正在为不同版本的应用程序使用 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 的部署或 DaemonSet 规范。然后您可以创建一个入口对象来访问它们。创建入口时,您可以直接指定主机名/fqdn,这样您就不必使用当前的 nginx。

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

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

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

此外,如果您想详细了解 Ingress,您可能会发现我的演讲录音很有用:
  • Load Balancing with Kubernetes: concepts, use cases, and implementation details
  • Kubernetes Networking Master Class
  • 关于nginx - 尝试为 Rancher 2.X 配置 Nginx - 从 Rancher 1.x 迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57274063/

    相关文章:

    ssl - 如何在 NGINX 中禁用 TLS 1.0?

    kubernetes - 如何设置 Kubernetes Cronjob 在特定的最短时间运行?

    kubernetes - 在 gcloud 计算磁盘调整大小后调整 gkePersistentDisk pod 卷的大小

    docker - docker 群或 Rancher 牛的 celery worker

    docker - 在运行时使用Docker设置vueJS env变量

    ruby-on-rails - 在 HTTPS 中设计 confirmation_url

    nginx - GCE 上的 Kubernetes : Ingress Timeout Configuration

    python - 如何在 django、uwsgi 和 nginx 设置中反射(reflect) python 的变化

    sql-server - 如何在 Kubernetes Pod 中执行 sql 脚本文件?

    docker - [HTCONDOR][kubernetes/k8s] : Unable to start minicondor image within k8s - condor_master not working