設定のためのConfigMaps
ConfigMapsを使ってアプリケーション設定をコンテナイメージから分離します。
「設定のためのConfigMaps」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。
ConfigMapの概要
アプリケーションでは、データベース接続文字列や機能フラグなどの設定データが必要になることがよくあります。
この情報をコンテナイメージに直接ハードコードすると、イメージが柔軟性を失い、更新も難しくなります。
ConfigMapを使うと、アプリケーションの機密性のない設定を外部化して一元管理でき、イメージの柔軟性を保てます。
ConfigMapとは
ConfigMapは、機密性のないデータをキーと値のペアで保存するためのKubernetesオブジェクトです。
アプリケーションの設定を一元管理し、Podからアクセスできる場所だと考えるとよいでしょう。
- 設定の分離:設定をアプリケーションコードから分離します。
- 柔軟性:イメージを再ビルドせずに設定を簡単に変更できます。
- 移植性:環境ごとに異なる設定を使って、アプリケーションを別の環境へ移行できます。
ConfigMapの作成:命令型
kubectl create configmapを使うと、コマンドラインからConfigMapをすばやく直接作成できます。
この方法は、単純な一度限りの設定や、簡単なテストに適しています。
ログレベルの設定を含むmy-app-configという名前のConfigMapを作成してみましょう。
kubectl create configmap my-app-config \
--from-literal=log_level=INFOConfigMapの確認
ConfigMapを作成したら、その詳細を表示して内容を確認できます。
-o yamlフラグを付けてkubectl getを使用すると、保存されているデータを含む完全なYAML定義を確認できます。
kubectl get configmap my-app-config -o yaml宣言型ConfigMap(YAML)
本番環境やバージョン管理では、YAMLマニフェストを使ってConfigMapを定義するのが標準的な方法です。
この方法により、設定を再現可能にし、アプリケーションコードと一緒に簡単に管理できます。
ゲームの設定を定義するYAMLの例を見てみましょう。
apiVersion: v1
kind: ConfigMap
metadata:
name: game-config
data:
game.properties: |
level=easy
player_limit=10
ui.properties: |
theme=dark
language=enYAMLからConfigMapを適用する
game-config ConfigMapを作成するには、前のシーンのYAML内容をファイル(例:game-config.yaml)に保存します。
次に、kubectl apply -fを使ってクラスタにデプロイします。
# Save the YAML to game-config.yaml
kubectl apply -f game-config.yaml
kubectl get configmap game-config -o yaml環境変数としてのConfigMap
PodでConfigMapのデータを利用する一般的な方法の1つは、環境変数として注入することです。
公開するキーを個別に指定することも、envFromを使ってConfigMap内のすべてのキーと値のペアを公開することもできます。
単純なアプリケーション設定に適した方法です。
apiVersion: v1
kind: Pod
metadata:
name: my-env-pod
spec:
containers:
- name: my-container
image: busybox
command: ["sh", "-c", "echo Log Level: $LOG_LEVEL && sleep 3600"]
env:
- name: LOG_LEVEL
valueFrom:
configMapKeyRef:
name: my-app-config
key: log_levelデモ:環境変数を使うPod
Pod定義を実行して、LOG_LEVEL環境変数がどのように機能するか確認してみましょう。
PodのYAMLをenv-pod.yamlに保存して適用し、その後Podのログを確認します。
# Save Pod YAML to env-pod.yaml
kubectl apply -f env-pod.yaml
kubectl logs my-env-pod
# Clean up
kubeclt delete pod my-env-podマウントされたボリュームとしてのConfigMap
設定ファイル(例:nginx.conf、application.properties)を必要とするアプリケーションでは、ConfigMapをボリュームとしてマウントできます。
ConfigMap内の各キーと値のペアが、コンテナ内の指定したマウントパスにあるファイルになります。
apiVersion: v1
kind: Pod
metadata:
name: my-volume-pod
spec:
containers:
- name: my-container
image: busybox
command: ["sh", "-c", "echo 'Contents of game.properties:' && cat /etc/config/game.properties && sleep 3600"]
volumeMounts:
- name: config-volume
mountPath: /etc/config
volumes:
- name: config-volume
configMap:
name: game-configデモ:設定をマウントしたPod
ここでは、game-config ConfigMapをボリュームとしてマウントするPodをデプロイしてみましょう。
PodのYAMLをvolume-pod.yamlに保存して適用し、ログを確認してマウントされたファイルの内容を確認します。
# Save Pod YAML to volume-pod.yaml
kubectl apply -f volume-pod.yaml
kubectl logs my-volume-pod
# Clean up
kubeclt delete pod my-volume-pod理解度チェック:ConfigMap
Kubernetes ConfigMapについて、次の記述のうち正しいものはどれですか。
まとめ:ConfigMap
よくできました。ConfigMapを使ってKubernetesの設定を管理する方法を学びました。
- 目的:機密性のない設定データをキーと値のペアで保存します。
- 作成:
kubectl createを使った命令型、またはYAMLを使った宣言型で作成します。 - 利用:Pod内の環境変数またはマウントされたファイルとして利用します。
- メリット:設定をアプリケーションコードから分離し、柔軟性を高めます。
次は、KubernetesのSecretsを使って機密情報を安全に扱う方法を学びます。
よくある質問
「設定のためのConfigMaps」レッスンは無料ですか?
はい。「設定のためのConfigMaps」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。
「設定のためのConfigMaps」で何を学びますか?
ConfigMapsを使ってアプリケーション設定をコンテナイメージから分離します。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
DevOps Bootcampを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「設定のためのConfigMaps」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDevOps Bootcampレッスンでコードを書いて実行できますか?
はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 設定のためのConfigMaps
- 機密データのためのSecrets
- Persistent VolumeとClaim
- StorageClassと動的プロビジョニング