首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从gcr为imagePullSecret编写图表

如何从gcr为imagePullSecret编写图表
EN

Stack Overflow用户
提问于 2017-10-26 14:08:47
回答 1查看 5.7K关注 0票数 4

我正在试着为我们的产品写头盔图表。这些图像存储在GCR私有存储库中。所有组件的图表都已准备就绪,但我正尝试在imagePullSecrets的图表中编写一个YAML文件。我读过来自here的图表提示,

我还知道如何使用以下命令创建imagePullSecret:

代码语言:javascript
复制
kubectl create secret docker-registry mydockercfg \
        --docker-server "https://eu.gcr.io" \
        --docker-username _json_key \
        --docker-email not@val.id \
        --docker-password=$(cat your_service_account.json)

但是我不知道如何在该图表的values.yaml密码中填入"your_service_account.json“的内容。更好的做法是,我可以更改名称"your_service_account.json“来更新values.yaml的密码。

目前,我的实现如下:

代码语言:javascript
复制
$ cat values.yaml
secretName: gcr-json-key-test
imageCredentials:
  registry: us.gcr.io/xxxxx
  username: _json_key
  password:

Secrets.yaml的内容:

代码语言:javascript
复制
$ cat templates/secrets.yaml
apiVersion: v1
kind: Secret
metadata:
  name: {{ .Values.secretName }}
    labels:
    app: {{ template "fullname" . }}
    chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
    release: "{{ .Release.Name }}"
    heritage: "{{ .Release.Service }}"
type: kubernetes.io/dockercfg
data:
  .dockerconfigjson: {{ template "imagePullSecret" . }}

_helpers.tpl的内容:

代码语言:javascript
复制
$ cat templates/_helpers.tpl
{{/*
Expand the name of the chart.
*/}}
{{- define "name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited 
to this (by the DNS naming spec).
 */}}
{{- define "fullname" -}}
{{- $name := default .Chart.Name .Values.nameOverride -}}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{- define "imagePullSecret" }}
{{- printf "{\"auths\": {\"%s\": {\"auth\": \"%s\"}}}" .Values.imageCredentials.registry (printf "%s:%s" .Values.imageCredentials.username .Values.imageCredentials.password | b64enc) | b64enc }}
{{- end }}

然后使用

代码语言:javascript
复制
$ helm install ./secrets --set imageCredentials.password "$(cat ./my_service_account.json)"

将导致错误:

错误:此命令需要1个参数:图表名称

我该如何解决这个问题?

EN

回答 1

Stack Overflow用户

发布于 2017-11-25 01:55:13

您可以通过以下步骤创建和部署它:

步骤:

  1. 使用docker_username和docker_password创建base64编码字符串

$ echo ZG9rY2VyX3VzZXI6ZG9ja2VyX3Bhc3N3b3Jk

  • Place -n "docker_username:docker_password“| base64 echo将步骤1中获得的编码字符串作为以下Json中的身份验证密钥的值,并填写所需的详细信息。

{ "https://eu.gcr.io":{ "username":"docker_user","password":"docker_password","email":"docker@gamil.com","auth":"ZG9rY2VyX3VzZXI6ZG9ja2VyX3Bhc3N3b3Jk",}}

  • 将此json缩减为用单引号括起来的字符串:

上述Json字符串的'{"https://eu.gcr.io":{"username":"docker_user","password":"docker_password","email":"docker@gamil.com","auth":"ZG9rY2VyX3VzZXI6ZG9ja2VyX3Bhc3N3b3Jk"}}'

  • Create base64编码字符串如下:

$ eyJodHRwczovL2V1Lmdjci5pbyI6eyJ1c2VybmFtZSI6ImRva2Nlcl91c2VyIiwicGFzc3dvcmQiOiJkb2NrZXJfcGFzc3dvcmQiLCJlbWFpbCI6ImRvY2tlckBnYW1pbC5jb20iLCJhdXRoIjoiWkc5clkyVnlYM1Z6WlhJNlpHOWphMlZ5WDNCaGMzTjNiM0prIn19

$ cat templates/secrets.yaml apiVersion: v1种类:保密元数据:名称:{{ .Values.secretName }}标签: app:{{ template "fullname“。}}图表:"{{ .Chart.Name }}-{{ .Chart.Version }}“版本:"{{ .Release.Name }}”继承:"{{ .Release.Service }}“类型: kubernetes.io/dockercfg data:.dockercfg:{{ .Values.dockercfg }}

  • 将步骤4中获取的编码字符串放入value.yaml:

$ cat密钥:gcr-json- values.yaml -secretName使用以下命令测试图表:

$ helm Install./secrets调试--设置dockecfg="eyJodHRwczovL2V1Lmdjci5pbyI6eyJ1c2VybmFtZSI6ImRva2Nlcl91c2VyIiwicGFzc3dvcmQiOiJkb2NrZXJfcGFzc3dvcmQiLCJlbWFpbCI6ImRvY2tlckBnYW1pbC5jb20iLCJhdXRoIjoiWkc5clkyVnlYM1Z6WlhJNlpHOWphMlZ5WDNCaGMzTjNiM0prIn19“-n release_name

或者将其存储在一个文件( .dockercfg )中,并使用以下命令

$ helm Install./secrets -n release_name --设置dockecfg=“$(cat./.dockercfg )"

希望这将是有用的...!!:)

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46946946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档