2017-10-26 5 views
1

私たちの製品にヘルムチャートを書こうとしています。画像はGCRプライベートレポに保存されます。すべてのコンポーネントのチャートは準備ができていますが、imagePullSecretsのチャートにYAMLファイルを書き込もうとしています。gcrからimagePullSecretのチャートを書くには

kubectl create secret docker-registry mydockercfg \ 
     --docker-server "https://eu.gcr.io" \ 
     --docker-username _json_key \ 
     --docker-email [email protected] \ 
     --docker-password=$(cat your_service_account.json) 

しかし、私は値のパスワードに「your_service_account.json」の内容を記入する方法がわからない:私はまたしてimagePullSecretを作成する方法を知っている、hereから

をチャートのヒントを読みましたそのチャートの.yaml。 values.yamlのパスワードを更新するために、 "your_service_account.json"という名前を変更することができます。

次のように現在、私の実装は次のとおりです。secrets.yamlの

$ cat values.yaml 
secretName: gcr-json-key-test 
imageCredentials: 
    registry: us.gcr.io/xxxxx 
    username: _json_key 
    password: 

内容:_helpers.tplの

$ 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" . }} 

内容:

$ 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 }} 

そして

を使用して
$ helm install ./secrets --set imageCredentials.password "$(cat ./my_service_account.json)" 

はエラーが発生します:

Error: This command needs 1 argument: chart name

どのように私はこの問題を解決することができますか?

+0

設定値のフォーマットは次のとおりです。--set = 。 "="を試しましたか? $ helm install ./secrets --set imageCredentials.password = "$(cat ./my_service_account.json)" – kscoder

+0

ありがとうございました。私はまだ私の入力を修正した後に問題があります。文字の制限については、次の答えに出力を置きます。 –

+0

表示されている最新のエラーで質問を更新できますか? また、your_service_account.jsonの形式は何ですか? – kscoder

答えて

1

それが作成され、次の手順を使用して展開することができます。

ステップ:

  1. は、符号化をごdocker_usernameを使用してbase64でエンコードされた文字列を作成し、

    $ echo -n "dokcer_username:docker_password" | base64 
    ZG9rY2VyX3VzZXI6ZG9ja2VyX3Bhc3N3b3Jk 
    
  2. 場所をdocker_password ステップ1で得られた文字列を値fo次のJsonにr authキーを入力し、必要な情報を入力します。

    { 
        "https://eu.gcr.io": 
        { 
        "username":"dokcer_user", 
        "password":"docker_password", 
        "email":"[email protected]", 
        "auth":"ZG9rY2VyX3VzZXI6ZG9ja2VyX3Bhc3N3b3Jk", 
        } 
    } 
    
  3. 単一引用符で囲まれた文字列にこのJSONを減らして次のように上記のJSON文字列のためのbase64でエンコードされた文字列を作成します

    '{"https://eu.gcr.io":{"username":"dokcer_user","password":"docker_password","email":"[email protected]","auth":"ZG9rY2VyX3VzZXI6ZG9ja2VyX3Bhc3N3b3Jk"}}' 
    
  4. $ echo -n '{"https://eu.gcr.io":{"username":"dokcer_user","password":"docker_password","email":"[email protected]","auth":"ZG9rY2VyX3VzZXI6ZG9ja2VyX3Bhc3N3b3Jk"}}' | base64 
    eyJodHRwczovL2V1Lmdjci5pbyI6eyJ1c2VybmFtZSI6ImRva2Nlcl91c2VyIiwicGFzc3dvcmQiOiJkb2NrZXJfcGFzc3dvcmQiLCJlbWFpbCI6ImRvY2tlckBnYW1pbC5jb20iLCJhdXRoIjoiWkc5clkyVnlYM1Z6WlhJNlpHOWphMlZ5WDNCaGMzTjNiM0prIn19 
    
  5. secret.ymlを次の形式で作成します。

    $ 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: 
        .dockercfg: {{ .Values.dockercfg }} 
    
  6. プレイス値でステップ4で得られたエンコードされた文字列。YAML:

    $ cat values.yaml 
    secretName: gcr-json-key-test 
    dockercfg: 
    
  7. 次のコマンドを使用してチャートをインストール:

    $ helm install ./secrets -n realse_name --set dockecfg="eyJodHRwczovL2V1Lmdjci5pbyI6eyJ1c2VybmFtZSI6ImRva2Nlcl91c2VyIiwicGFzc3dvcmQiOiJkb2NrZXJfcGFzc3dvcmQiLCJlbWFpbCI6ImRvY2tlckBnYW1pbC5jb20iLCJhdXRoIjoiWkc5clkyVnlYM1Z6WlhJNlpHOWphMlZ5WDNCaGMzTjNiM0prIn19" --debug 
    

    をまたはファイル(.dockercfg)に格納し、follwingコマンドを使用

    $ helm install ./secrets -n realse_name --set dockecfg="$(cat ./.dockercfg)" 
    

これが役に立つと願っています... !! :)

関連する問題