在 configmap 上注入 helm 值时出现问题

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

有人可以帮忙吗? 我试图在配置映射上注入舵值,但它破坏了格式。如果我直接使用该值而不是 .Values,它就可以正常工作。

我有什么:

data:
  application.instanceLabelKey: argocd.argoproj.io/instance
  oidc.config: |
    name: Okta
    issuer: https://mycompany.okta.com
    clientID: {{ .Values.okta.clientID }}
    clientSecret: {{ .Values.okta.clientSecret }}
    requestedScopes: ["openid", "profile", "email", "groups"]
    requestedIDTokenClaims: {"groups": {"essential": true}}

结果

data:
  application.instanceLabelKey: argocd.argoproj.io/instance
  oidc.config: "name: Okta\nissuer: https://mycompany.okta.com\nclientID: myClientId \nclientSecret:
    mySecret\nrequestedScopes: [\"openid\", \"profile\",
    \"email\", \"groups\"]\nrequestedIDTokenClaims: {\"groups\": {\"essential\": true}}\n"
kubernetes kubernetes-helm argocd
3个回答
2
投票

它应该与values.yaml一起。它在两个方面都对我有用:

  1. 使用values.yaml中的值

Values.yaml:

okta:
  clientSecret: test1233
  clientID: testnew

配置图

apiVersion: v1
kind: ConfigMap
metadata:
  name: test-config
  namespace: default
  labels:
    app: test
data:
  application.instanceLabelKey: argocd.argoproj.io/instance
  oidc.config: |
    name: Okta
    issuer: https://mycompany.okta.com
    clientID: {{ .Values.okta.clientID }}
    clientSecret: {{ .Values.okta.clientSecret }}
    requestedScopes: ["openid", "profile", "email", "groups"]
    requestedIDTokenClaims: {"groups": {"essential": true}}

使用的命令:

 helm install testchart .\mycharttest --dry-run

-----输出--------------------------------

# Source: mycharttest/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: test-config
  namespace: default
  labels:
    app: test
    product: test
    db: test
data:
  application.instanceLabelKey: argocd.argoproj.io/instance
  oidc.config: |
    name: Okta
    issuer: https://mycompany.okta.com
    clientID: testnew
    clientSecret: test1233
    requestedScopes: ["openid", "profile", "email", "groups"]
    requestedIDTokenClaims: {"groups": {"essential": true}}
  1. 在运行时使用值

---命令--

 helm install test .\mycharttest --dry-run --set okta.clientID=newclientid --set okta.clientSecret=newsecret

----输出---

# Source: mycharttest/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: test-config
  namespace: default
  labels:
    app: test
    product: test
    db: test
data:
  application.instanceLabelKey: argocd.argoproj.io/instance
  oidc.config: |
    name: Okta
    issuer: https://mycompany.okta.com
    clientID: newclientid
    clientSecret: newsecret
    requestedScopes: ["openid", "profile", "email", "groups"]
    requestedIDTokenClaims: {"groups": {"essential": true}

kubernetes版本:1.22 头盔版本: version.BuildInfo{版本:“v3.7.1”,GitCommit:“1d11fcb5d3f3bf00dbe6fe31b8412839a96b3dc4”,GitTreeState:“干净”,GoVersion:“go1.16.9”}


1
投票

最简单的方法是将所有内容存储到文件中并首先直接使用它

文件

oidc.config

name: Okta
issuer: https://mycompany.okta.com
clientID: clientID 
clientSecret: clientSecret
requestedScopes: ["openid", "profile", "email", "groups"]
requestedIDTokenClaims: {"groups": {"essential": true}}

头盔

apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ .Release.Name }}-configmap
data:
  {{- $files := .Files }}
  {{- range tuple "oidc.config" }}
  {{ . }}: |-
        {{ $files.Get . }}
  {{- end }}

参考文档:https://helm.sh/docs/chart_template_guide/accessing_files/

另请查看类似的答案:https://stackoverflow.com/a/56209432/5525824


1
投票

经过多次尝试,当我跳过开头的空格时,它就成功了

data:
  application.instanceLabelKey: argocd.argoproj.io/instance
  oidc.config: |
    name: Okta
    issuer: "https://mycompany.okta.com"
    clientID: {{- .Values.okta.clientId }}
    clientSecret: {{- .Values.okta.clientSecret }}
    requestedScopes: ["openid", "profile", "email", "groups"]
    requestedIDTokenClaims: {"groups": {"essential": true}}
© www.soinside.com 2019 - 2024. All rights reserved.