如何为 VMWare 的 fluentd operator 安装 ConfigMap 卷?
How do I mount a ConfigMap volume for VMWare's fluentd operator?
我正在尝试为 VMWare 的 Fluentd 运算符 [1] 安装 Kubernetes configmap
。我检查了文档,掌舵图表明您必须指定一个额外的卷作为名为 fluentd.extraVolumeMounts
的参数
我用来安装 Operator 的 helm chart 如下:
#!/bin/sh
# helmenv set to helm3
CHART_URL='https://github.com/vmware/kube-fluentd-operator/releases/download/v1.12.0/log-router-0.3.3.tgz'
# Set environment variables.
REGION='us-east-1'
CLUSTER='dev'
ENV='dev'
IMAGE_TAG='v1.12.0'
VOLUME_MOUNT="
- name: fluentd-es-templates
mountPath: /templates"
EXTRA_VOLUME="
- name: fluentd-es-templates
configMap:
name: fluentd-es-templates"
# Install the fluentd operator in kube-system.
# helm install kfo ${CHART_URL} \
helm upgrade --install kfo ${CHART_URL} \
--set meta.key=metadata \
--set meta.values.region=${REGION} \
--set meta.values.env=${ENV} \
--set meta.values.cluster=${CLUSTER} \
--set rbac.create=true \
--set image.tag=${IMAGE_TAG} \
--set image.repository=vmware/kube-fluentd-operator \
# --set fluentd.extraVolumeMounts=[$EXTRA_VOLUME]
# --set extraVolumes=[${EXTRA_VOLUME}]
当我取消注释设置卷的行时,helm 脚本失败。我的问题是,如何使用正确的 json 或 yaml 填充 VOLUME_MOUNT
和 EXTRA_VOLUME
变量?
我试图在一个文件中完成所有操作,不想将其拆分为多个文件。
您仍然可以通过进程替换使用 shell 脚本中的值文件。这是一个例子:
#!/usr/bin/env bash
CHART_URL='https://github.com/vmware/kube-fluentd-operator/releases/download/v1.12.0/log-router-0.3.3.tgz'
read -r -d '' values << EOF
meta:
key: metadata
values:
region: "us-east-1"
env: "dev"
cluster: "dev"
rbac:
create: true
image:
repository: vmware/kube-fluentd-operator
tag: "v1.12.0"
fluentd:
extraVolumeMounts:
- name: fluentd-es-templates
mountPath: /fluentd/etc/mappings
extraVolumes:
- name: fluentd-es-templates
configMap:
name: fluentd-es-templates
EOF
helm upgrade --install kfo "$CHART_URL" -f <(printf '%s' "$values")
在引擎盖下,这会创建一个命名管道并将文件描述符(例如 /dev/fd/123
传递给 helm install 命令。此功能在某些 shell 中不可用,例如破折号(Debian 中的 /bin/sh
和 Ubuntu)。
我正在尝试为 VMWare 的 Fluentd 运算符 [1] 安装 Kubernetes configmap
。我检查了文档,掌舵图表明您必须指定一个额外的卷作为名为 fluentd.extraVolumeMounts
我用来安装 Operator 的 helm chart 如下:
#!/bin/sh
# helmenv set to helm3
CHART_URL='https://github.com/vmware/kube-fluentd-operator/releases/download/v1.12.0/log-router-0.3.3.tgz'
# Set environment variables.
REGION='us-east-1'
CLUSTER='dev'
ENV='dev'
IMAGE_TAG='v1.12.0'
VOLUME_MOUNT="
- name: fluentd-es-templates
mountPath: /templates"
EXTRA_VOLUME="
- name: fluentd-es-templates
configMap:
name: fluentd-es-templates"
# Install the fluentd operator in kube-system.
# helm install kfo ${CHART_URL} \
helm upgrade --install kfo ${CHART_URL} \
--set meta.key=metadata \
--set meta.values.region=${REGION} \
--set meta.values.env=${ENV} \
--set meta.values.cluster=${CLUSTER} \
--set rbac.create=true \
--set image.tag=${IMAGE_TAG} \
--set image.repository=vmware/kube-fluentd-operator \
# --set fluentd.extraVolumeMounts=[$EXTRA_VOLUME]
# --set extraVolumes=[${EXTRA_VOLUME}]
当我取消注释设置卷的行时,helm 脚本失败。我的问题是,如何使用正确的 json 或 yaml 填充 VOLUME_MOUNT
和 EXTRA_VOLUME
变量?
我试图在一个文件中完成所有操作,不想将其拆分为多个文件。
您仍然可以通过进程替换使用 shell 脚本中的值文件。这是一个例子:
#!/usr/bin/env bash
CHART_URL='https://github.com/vmware/kube-fluentd-operator/releases/download/v1.12.0/log-router-0.3.3.tgz'
read -r -d '' values << EOF
meta:
key: metadata
values:
region: "us-east-1"
env: "dev"
cluster: "dev"
rbac:
create: true
image:
repository: vmware/kube-fluentd-operator
tag: "v1.12.0"
fluentd:
extraVolumeMounts:
- name: fluentd-es-templates
mountPath: /fluentd/etc/mappings
extraVolumes:
- name: fluentd-es-templates
configMap:
name: fluentd-es-templates
EOF
helm upgrade --install kfo "$CHART_URL" -f <(printf '%s' "$values")
在引擎盖下,这会创建一个命名管道并将文件描述符(例如 /dev/fd/123
传递给 helm install 命令。此功能在某些 shell 中不可用,例如破折号(Debian 中的 /bin/sh
和 Ubuntu)。