lor*_*tol 6 kubernetes kubernetes-helm configmap
我正在我们的 k8s 集群中安装 fluent-bit。我在我们的 repo 上有它的舵图,argo 正在进行部署。
在 helm chart 中的资源中有一个 config-map,其数据值如下:
apiVersion: v1
kind: ConfigMap
metadata:
name: fluent-bit
labels:
app: fluent-bit
data:
...
output-s3.conf: |
[OUTPUT]
Name s3
Match *
bucket bucket/prefix/random123/test
region ap-southeast-2
...
Run Code Online (Sandbox Code Playgroud)
我的问题是如何将存储桶的值外部化,使其不是硬编码的(请注意,存储桶值具有随机数)?由于 s3 存储桶是由在同一主节点上运行的单独应用程序创建的,因此随机生成的 s3 存储桶名称可用作环境变量,例如在节点上执行“echo $s3bucketName”将给出实际值)。
我曾尝试在配置图上执行以下操作,但它不起作用,并且在 pod 上进行检查时只是按原样设置:
bucket $(echo $s3bucketName)
Run Code Online (Sandbox Code Playgroud)
使用 helm,我知道它可以实现如下所示的内容,然后可以使用脚本进行填充,例如helm --set从环境变量中设置值。但是部署是通过 argocd 自动进行的,所以它不像有一个地方可以执行helm --set命令,否则请告诉我。
bucket {{.Values.s3.bucket}}
Run Code Online (Sandbox Code Playgroud)
TIA
使用 FluentBit,您应该能够使用环境变量,例如:
output-s3.conf: |
[OUTPUT]
Name s3
Match *
bucket ${S3_BUCKET_NAME}
region ap-southeast-2
Run Code Online (Sandbox Code Playgroud)
然后,您可以根据 Helm 值设置环境变量。根据您使用的图表以及值的传递方式,您可能需要执行不同的设置,但例如使用官方 FluentBit 图表,如下所示values-prod.yml:
env:
- name: S3_BUCKET_NAME
value: "bucket/prefix/random123/test"
Run Code Online (Sandbox Code Playgroud)
使用 ArgoCD,您可能有一个 Git 存储库,其中定义了 Helm 值文件(如values-prod.yml)和/或直接定义值的 ArgoCD 应用程序。例如,如果您定义了一个 ArgoCD 应用程序,如下所示:
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
# [...]
spec:
source:
# ...
helm:
# Helm values files for overriding values in the helm chart
valueFiles:
# You can update this file
- values-prod.yaml
# Helm values
values: |
# Or update values here
env:
- name: S3_BUCKET_NAME
value: "bucket/prefix/random123/test"
# ...
Run Code Online (Sandbox Code Playgroud)
您应该能够values-prod.yml在 ArgoCD 使用的存储库上更新或直接values:使用环境变量更新
| 归档时间: |
|
| 查看次数: |
101 次 |
| 最近记录: |