はじめに
ヘルムチャートは、Kubernetesリソースを収集し、アプリケーションクラスターを構築するための便利で効率的な方法です。また、ローカルマシンの環境変数を使用して、Kubernetesデプロイメントで使用する値を定義することもできます。
このチュートリアルでは、Kubernetesデプロイメントに環境変数を含めることができるさまざまな方法について説明します。
前提条件
- 端末/コマンドラインへのアクセス
- Minikubeのインストールと構成(UbuntuにMinikubeをインストールする方法とCentOSにMinikubeをインストールする方法に関するガイドを確認してください)
- ヘルムのインストールと構成
Helmで環境変数を使用する方法
Helmチャートで環境変数を使用する方法は2つあります。
- Kubernetesのシークレットオブジェクトを使用して、デプロイに環境変数をマウントします。
- ヘルムチャートにカスタムヘルパーを書き込む。
このチュートリアルでは、 USERNAMEを使用しています およびPASSWORD 環境変数。
Kubernetesデプロイメントでの環境変数のマウント
1.次の行をvalues.yamlに追加します ヘルムチャートのファイル:
username: root
password: password
2. secret.yamlという名前の新しいファイルを作成します それをテンプレートに追加します フォルダ。次のコンテンツをファイルに追加します:
apiVersion: v1
kind: Secret
metadata:
name: {{ .Release.Name }}-auth
data:
password: {{ .Values.password | b64enc }}
username: {{ .Values.username | b64enc }}
3. envを編集します secret.yamlで定義された新しい変数を含めるためのKubernetesデプロイメントのセクション ファイル:
...
containers:
- name: {{ .Chart.Name }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
env:
- name: "USERNAME"
valueFrom:
secretKeyRef:
key: username
name: {{ .Release.Name }}-auth
- name: "PASSWORD"
valueFrom:
secretKeyRef:
key: password
name: {{ .Release.Name }}-auth
...
4.環境変数を目的の値に設定します。たとえば、 USERNAMEを設定します hello_userへの変数 :
export USERNAME=hello_user
5.変数をhelm install と組み合わせて、Helmチャートに適用します。 コマンド:
helm install --set username=$USERNAME [chart name] [chart path] 場所:
-
[グラフ名]使用しているヘルムチャートの名前です。 -
[チャートパス]使用しているヘルムチャートへのパスです。
新しい設定を適用する前にテストする場合は、ドライランを使用してください。 モード:
helm install --dry-run --set username=$USERNAME --debug [chart name] [chart path]
ヘルムにカスタムヘルパーを追加する
1. envを使用します values.yamlのセクション センシティブ変数と非センシティブ変数を定義するファイル。 通常を使用する およびsecret 適切な変数を一覧表示するカテゴリ:
secret:
name: app-env-var-secret
env:
normal:
variable1: value1
variable2: value2
variable3: value3
secret:
variable4: value4
variable5: value5
variable6: value6
次に、このメソッドを使用して、 USERNAMEを追加します。 およびPASSWORD シークレットへの変数 カテゴリ:
…
secret:
USERNAME: [username]
PASSWORD: [password] 場所:
-
[username]ユーザー名に設定する値です 変数。 [パスワード]コード>パスワードに設定する値です 変数。
2.パスをvalues.yamlに追加します .gitignoreの下部にファイルを配置します ファイル:
charts/values.yaml
3. secrets.yamlというファイルを作成します テンプレート フォルダを作成し、次のコンテンツを追加します:
apiVersion: v1
kind: Secret
metadata:
name: {{ .Values.secret.name }}
type: Opaque
data:
{{- range $key, $val := .Values.env.secret }}
{{ $key }}: {{ $val | b64enc }}
{{- end}}
4. helpers.tplを見つけます テンプレート内のファイル フォルダ。ファイルの最後に以下を追加して、新しいヘルパー関数を記述します。
{{- define "helpers.list-env-variables"}}
{{- range $key, $val := .Values.env.secret }}
- name: {{ $key }}
valueFrom:
secretKeyRef:
name: app-env-secret
key: {{ $key }}
{{- end}}
{{- end }}
5. pod.yaml に以下を追加して、作成したヘルパーを呼び出します ファイル:
…
spec:
containers:
- name: mycontainer
image: redis
env:
{{- include "helpers.list-env-variables" . | indent 6 }}
restartPolicy: Never