我想在堆栈中管理环境变量,然后服务可以使用它。例如: 我定义了一个evn tracker_ip = 192.168.0.101,然后我想在服务创建中使用它。
我应该怎么做
答案 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
...