はじめに
この実験では、Kubernetes で ConfigMaps を使用してアプリケーションを構成する方法を学びます。ConfigMaps は、アプリケーションコードから構成データを分離する方法を提供し、アプリケーション自体を変更することなく、アプリケーションの構成を管理および更新することを容易にします。
💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください
この実験では、Kubernetes で ConfigMaps を使用してアプリケーションを構成する方法を学びます。ConfigMaps は、アプリケーションコードから構成データを分離する方法を提供し、アプリケーション自体を変更することなく、アプリケーションの構成を管理および更新することを容易にします。
リソースを作成する前に、動作中の Kubernetes クラスタが必要です。Minikube は、ローカル マシン上で動作する軽量の Kubernetes 環境です。
作業ディレクトリに移動する:
ターミナルを開き、デフォルトのプロジェクト フォルダに移動します。
cd /home/labex/project
Minikube を起動する:
Minikube を起動して Kubernetes クラスタを初期化します。
minikube start
Minikube が動作していることを確認する:
Minikube クラスタの状態を確認します。
minikube status
kubelet
や apiserver
などのコンポーネントが Running
と表示されていることを確認します。minikube start
を再度実行します。Minikube の起動に問題がある場合は、必要に応じて minikube delete
を使用して環境をリセットします。
このステップでは、アプリケーションの構成データを含む ConfigMap を作成します。
/home/labex/project/
ディレクトリに、以下の内容を持つ configmap.yaml
という名前のファイルを作成します。
apiVersion: v1
kind: ConfigMap
metadata:
name: my-config
data:
DATABASE_URL: postgres://user:password@host:port/dbname
この ConfigMap には、キーが DATABASE_URL
で値が PostgreSQL データベース接続文字列である単一のキーバリュー ペアが含まれています。
ConfigMap を作成するには、次のコマンドを実行します。
kubectl apply -f configmap.yaml
このステップでは、アプリケーションで ConfigMap を使用します。
/home/labex/project/
ディレクトリに、以下の内容を持つ deployment.yaml
という名前のファイルを作成します。
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 1
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: nginx:latest
env:
- name: DATABASE_URL
valueFrom:
configMapKeyRef:
name: my-config
key: DATABASE_URL
このデプロイメントでは、アプリケーションを実行する単一のコンテナが指定されており、PostgreSQL データベースに接続するために DATABASE_URL
環境変数を使用しています。DATABASE_URL
の値は、my-config
ConfigMap から取得されます。
デプロイメントを作成するには、次のコマンドを実行します。
kubectl apply -f deployment.yaml
このステップでは、構成がアプリケーションに適用されたことを確認します。
まず、次のコマンドを実行して、アプリケーションを実行しているポッドの名前を見つけます。
kubectl get pods -l app=my-app
アプリケーションを実行している単一のポッドが表示されるはずです。ポッドの名前をメモしておきます。
次に、アプリケーションを実行しているコンテナ内でシェル セッションを開くには、次のコマンドを実行します。
kubectl exec -it pod-name -- /bin/sh
<pod-name>
を、先ほどメモしたポッドの名前に置き換えます。
シェル セッションに入ったら、次のコマンドを実行して DATABASE_URL
環境変数の値を表示します。
echo $DATABASE_URL
ConfigMap で設定したデータベース接続文字列を表示するはずです。
このステップでは、ConfigMap を更新して、それがアプリケーションにどのような影響を与えるかを見てみます。
configmap.yaml
ファイルを更新して、DATABASE_URL
キーの新しい値を設定します。
apiVersion: v1
kind: ConfigMap
metadata:
name: my-config
data:
DATABASE_URL: postgres://newuser:newpassword@newhost:newport/newdbname
これにより、DATABASE_URL
キーが新しい値に更新されます。
ConfigMap を更新するには、次のコマンドを実行します。
kubectl apply -f configmap.yaml
このステップでは、ConfigMap の更新がアプリケーションに適用されたことを確認します。
まず、次のコマンドを実行して、アプリケーションを実行しているポッドの名前を見つけます。
kubectl get pods -l app=my-app
アプリケーションを実行している単一のポッドが表示されるはずです。ポッドの名前をメモしておきます。
次に、アプリケーションを実行しているコンテナ内でシェル セッションを開くには、次のコマンドを実行します。
kubectl exec -it pod-name -- /bin/sh
<pod-name>
を、先ほどメモしたポッドの名前に置き換えます。
シェル セッションに入ったら、次のコマンドを実行して DATABASE_URL
環境変数の値を表示します。
echo $DATABASE_URL
設定が反映されていないことがわかります。以前と同じデータです。次のコマンドで Deployment を再起動する必要があります。
kubectl rollout restart deployment my-app
再起動が完了したら、再度コンテナ内に入り、上記のコマンドを使用して設定を確認します。
更新されたデータベース接続文字列が表示されるはずです。
この実験では、Kubernetes で ConfigMap を使用してアプリケーションを構成する方法を学びました。構成データを含む ConfigMap を作成し、アプリケーションで ConfigMap を使用し、ConfigMap を更新してそれがアプリケーションにどのような影響を与えるかを見ました。また、構成がアプリケーションに適用されたことを確認する方法と、実験で作成したリソースをクリーンアップする方法も学びました。