ConfigMap を使ったアプリケーションの構成

KubernetesKubernetesBeginner
オンラインで実践に進む

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、Kubernetes で ConfigMaps を使用してアプリケーションを構成する方法を学びます。ConfigMaps は、アプリケーションコードから構成データを分離する方法を提供し、アプリケーション自体を変更することなく、アプリケーションの構成を管理および更新することを容易にします。

これは Guided Lab です。学習と実践を支援するためのステップバイステップの指示を提供します。各ステップを完了し、実践的な経験を積むために、指示に注意深く従ってください。過去のデータによると、この 初級 レベルの実験の完了率は 100%です。学習者から 95% の好評価を得ています。

Minikube クラスタを起動する

リソースを作成する前に、動作中の Kubernetes クラスタが必要です。Minikube は、ローカル マシン上で動作する軽量の Kubernetes 環境です。

  1. 作業ディレクトリに移動する:

    ターミナルを開き、デフォルトのプロジェクト フォルダに移動します。

    cd /home/labex/project
  2. Minikube を起動する:

    Minikube を起動して Kubernetes クラスタを初期化します。

    minikube start
    • このコマンドは、ローカル マシン上に単一ノードの Kubernetes クラスタをセットアップします。
    • Minikube の起動には、システムの性能に応じて数分かかる場合があります。
  3. Minikube が動作していることを確認する:

    Minikube クラスタの状態を確認します。

    minikube status
    • kubeletapiserver などのコンポーネントが Running と表示されていることを確認します。
    • クラスタが動作していない場合は、minikube start を再度実行します。

Minikube の起動に問題がある場合は、必要に応じて minikube delete を使用して環境をリセットします。

ConfigMap を作成する

このステップでは、アプリケーションの構成データを含む 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 を使用する

このステップでは、アプリケーションで 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 を更新して、それがアプリケーションにどのような影響を与えるかを見てみます。

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 を更新してそれがアプリケーションにどのような影響を与えるかを見ました。また、構成がアプリケーションに適用されたことを確認する方法と、実験で作成したリソースをクリーンアップする方法も学びました。