如何在Rancher中管理环境变量

时间:2017-03-21 07:45:55

标签: docker rancher

我想在堆栈中管理环境变量,然后服务可以使用它。例如: 我定义了一个evn tracker_ip = 192.168.0.101,然后我想在服务创建中使用它。

create service

我应该怎么做

3 个答案:

答案 0 :(得分:3)

根据您尝试执行的操作以及如何部署堆栈,可以有多个答案。

使用CLI / Rancher Compose

如果使用命令行,则可以使用变量插值。有关如何操作的说明,请参阅官方文档:

https://docs.rancher.com/rancher/v1.5/en/cli/variable-interpolation/

使用Rancher UI /目录

如果您想通过Rancher UI进行操作,可以通过在目录中创建模板并输入环境变量的问题来实现。有关如何执行此操作的更多详细信息:

https://docs.rancher.com/rancher/v1.5/en/catalog/private-catalog/

您可以在rancher-compose.yml文件中定义问题,如下所示:

version: '2'
catalog:
  name: My Application
  version: v0.0.1
  questions:
  - variable: TRACKER_IP
    label: Tracker IP address
    required: true
    default: 192.168.0.101
    type: string

然后,您可以将答案推送到docker-compose.yml模板的环境部分,以便在图片中使用:

version: '2'
services:
  web:
    image: myimage
    ports:
    - 8000
    environment:
      TRACKER_IP: ${TRACKER_IP}

答案 1 :(得分:0)

没有办法完全按照你的要求去做,因为这样可以编辑正在运行的容器和容器的变量是不可变的。环境变量可以在服务上定义,但不能在堆栈上定义一次,并且可供所有服务使用。

秘密有点像这样,可以跨服务共享,但不能编辑。

答案 2 :(得分:0)

根据tracker_ip的关联位置,您还可以创建外部服务作为堆栈的一部分。外部服务基本上只是在Rancher中创建一个DNS条目。因此,您可以在撰写时将您的服务链接到external_tracker服务,并参考tracker

version: '2'
services:
  myservice:
    ...
    link:
      - tracker_service:tracker
...