Jenkins Rancher CLI更新loadbalancer

Jenkins Rancher CLI更新loadbalancer,jenkins,kubernetes,rancher,Jenkins,Kubernetes,Rancher,我正在使用Rancher over Kubernetes创建我们的测试/开发环境。首先,它是一个很棒的工具,我对它如何简化此类环境的管理感到惊讶 这就是说,我有一个问题(可能更多的是牧场主缺乏知识)。我尝试通过Jenkins自动化部署,因为我们的测试环境中有几个堆栈,所以我希望动态更新loadbalancer实例,以便使用Rancher CLI从Jenkins为新环境添加路由 目前,我只是尝试运行以下命令: rancher --url http://myrancher_server:8080 -

我正在使用Rancher over Kubernetes创建我们的测试/开发环境。首先,它是一个很棒的工具,我对它如何简化此类环境的管理感到惊讶

这就是说,我有一个问题(可能更多的是牧场主缺乏知识)。我尝试通过Jenkins自动化部署,因为我们的测试环境中有几个堆栈,所以我希望动态更新loadbalancer实例,以便使用Rancher CLI从Jenkins为新环境添加路由

目前,我只是尝试运行以下命令:

rancher --url http://myrancher_server:8080 --access-key <key> --secret-key <secret> --env dev-test stack create kubernetes-ingress-lbs -r loadbalancer-rancher-service.yml
我的rancher compose文件如下所示:

version: '2'
services:
  dev-test-lb:
    scale: 4
    lb_config:
      port_rules:
      - source_port: 82
        path: /products
        target_port: 8086
        service: products
      - source_port: 82
        path: /
        target_port: 4201
        service: frontend
  health_check:
    port: 42
    interval: 2000
    unhealthy_threshold: 3
    healthy_threshold: 2
    response_timeout: 2000
现在,当我执行此操作时,我有以下响应:

Bad response statusCode [422]. Status [422 status code 422]. Body: [code=NotUnique, fieldName=name, baseType=error] from [http://myrancher_server:8080/v2-beta/projects/1a21/stacks]
显然,我无法编辑一个已经存在服务的现有堆栈。你知道这样做是否是最好的做法吗?我检查了man,我只看到“rancher stack”上的“create”操作,所以我想知道我们是否可以更新

我的rancher服务器是v1.5.10,我所有的rancher代理和Kubernetes驱动程序都是最新的


非常感谢您的帮助:)

好的,我只是想了解一下,我发现这可以通过Rancher的RESTAPI实现

检查以下链接:

一开始我没有发现,因为我在谷歌上搜索的都是rancher cli。但由于它仍然是测试版,我们不能通过RESTAPI做同样的事情

基本上,只需发送更新资源查询:

将rancherserver/v2 beta/projects/1a12/services/

{
    "description": "Loadbalancer for our test env",
    "lbConfig": {
        "portRules": [
            {
                "hostname": "",
                "protocol": "http",
                "source_port": "80",
                "targetPort": "4200",
                "path": "/"
            }
        ]
    },
    "name": "kubernetes-ingress-lbs"
}
{
    "description": "Loadbalancer for our test env",
    "lbConfig": {
        "portRules": [
            {
                "hostname": "",
                "protocol": "http",
                "source_port": "80",
                "targetPort": "4200",
                "path": "/"
            }
        ]
    },
    "name": "kubernetes-ingress-lbs"
}