問題

我正在嘗試部署Redis(透過建立Helm圖)作為Kubernetes叢集中的StatevelSet.我沒有在官方Redis Docker映象之上建立另一個Redis影象,而是我只是試圖在執行時使用官方Redis Docker映象中的預設值,並在執行時提供我的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}不起作用?

  最佳答案

  相同標籤的其他問題

dockerkubernetesredisshkubernetes-helm