gpt4 book ai didi

docker - 在 k8s 中部署 Redis 时使用 args 设置 requirepass 适用于 $() 但不适用于 ${}

转载 作者:行者123 更新时间:2023-12-02 08:46:03 24 4
gpt4 key购买 nike

我正在尝试将 Redis 部署为 Kubernetes 集群中的 StatefulSet(通过创建 Helm 图表)。我不会在官方 Redis Docker 镜像之上创建另一个 Redis 镜像,而是只是尝试使用 Official Redis Docker image 中提供的默认值。只需在运行时提供我的 redis.confrequirepass 即可。

为了提供 redis.conf,我使用 ConfigMap 并将其安装在容器中的 /config/redis.conf 中。

现在,我想在 Kubernetes 中将 --requirepass 选项作为 args 传递,如下所示:

...
containers: [
{
name: redis,
image: {
repository: redis,
tag: 5.0
},
imagePullPolicy: Always,
workingDir: /data/,
args: [ "/config/redis.conf", "--requirepass", "<password>" ], # line of concern
ports: [
containerPort: 6379
],
env: [
{
name: REDIS_AUTH,
valueFrom: {
secretKeyRef: {
name: redis,
key: password
}
}
}
],
...

以下行失败:

args: [ "/config/redis.conf", "--requirepass", "${REDIS_AUTH}" ]

相反,这有效:

args: [ "/config/redis.conf", "--requirepass", "$(REDIS_AUTH)" ]

尽管 $() 语法用于命令替换,并且 REDIS_AUTH 是一个环境变量而不是可执行文件,但它是如何工作的以及 ${REDIS_AUTH } 不是吗?

最佳答案

这是 Kubernetes 特定的功能,如果您想在 commandargs 字段中扩展环境变量,那么您必须使用 $() 语法而不是 ${} 语法。

检查此链接:https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#use-environment-variables-to-define-arguments

关于docker - 在 k8s 中部署 Redis 时使用 args 设置 requirepass 适用于 $() 但不适用于 ${},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58154806/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com