如何从Helm依赖中获取Redis URL

问题描述 投票:0回答:1

在我正在处理的舵图的

Charts.yaml
中,我有一个 Redis 依赖项

dependencies:
  - name: redis
    version: "18.4.0"
    repository: https://charts.bitnami.com/bitnami

现在,我想构建一个 Redis URL 用作其他资源的秘密。

因此,我希望能够在我的部署中设置类似的内容

env:
- name: REDIS_URL
  valueFrom:
    secretKeyRef:
      name: {{ .Values.secret.secretName }}
      key: REDIS_URL

我现在的问题是,如何获取 Redis URL,使其看起来像

  REDIS_URL="rediss://<user_name>:<user_pw>@<redis host>:<port>"

  REDIS_URL="redis://<user_name>:<user_pw>@<redis host>:<port>"

理想情况下,它是集群内和同一命名空间内的连接。

kubernetes redis kubernetes-helm
1个回答
0
投票

Helm 没有一个好的通用方法将计算值从依赖关系图传递到其父级。通常,最好的答案是检查依赖关系图并查看它正在创建什么。

对于 bitnami/redis 图表,您可以发现 主要服务 最终被命名为

{{ .Release.Name }}-redis-master
;它的Secret只是
{{ .Releae.Name }}-redis
,并且只有一个密钥
redis-password
;并且图表中的任何位置都没有特定的用户名设置。 Redis 的“默认密码身份验证模式”使用单个共享密码。正如容器环境中的典型情况一样,该端口始终是标准 Redis 端口 6379。 但是,您不能直接将一个 Secret 值合并到另一个 Secret 中,并且尝试从 Helm 图表代码读回 Secret 通常不是一个好的做法。如果您只是想以这种格式将 URL 放入您的应用程序中,我会将其构造为一组环境变量,这些变量可以从 Secrets 动态设置或连接:

{{- define "myapp.env.redis" -}} - name: REDIS_HOST value: {{ .Release.Name }}-redis-master - name: REDIS_PASSWORD valueFrom: secretKeyRef: name: {{ .Release.Name }}-redis key: redis-password - name: REDIS_URL value: redis://redis:$(REDIS_PASSWORD)@$(REDIS_HOST):6379/0 {{- end -}} env: {{ include "myapp.env.redis | indent 2 }}

请注意,Redis 图表有几种不同的方法来设置该 Secret。例如,您可以尝试读取 
.Values.redis.auth.password

,但不一定已设置。

    

© www.soinside.com 2019 - 2024. All rights reserved.