すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:ConfigMap の使用

最終更新日:Jan 13, 2026

エンタープライズアプリケーションのデプロイには、広範な構成管理が必要です。アプリケーションイメージに構成をハードコーディングすると、アプリケーションが特定の環境に結合され、環境ごとに新しいイメージをビルドする必要があります。Kubernetes の ConfigMap は、構成をアプリケーションコードから分離することで、この問題を解決します。機密性の低い設定データを外部に保存し、実行時に Pod に挿入できます。これにより、複数の環境で同じアプリケーションイメージを使用できます。機密データには Secret を使用してください。

選択ガイド

  • ボリュームとしてマウント (推奨):このメソッドは、設定データをファイルとして公開します。ConfigMap への変更は、Pod を再起動することなく、マウントされたファイルに自動的に同期されます。このメソッドは、完全な設定ファイルの管理や、動的な更新が必要なシナリオで使用します。

  • 環境変数として挿入:このメソッドは、設定を環境変数としてコンテナーに直接挿入します。このメソッドは、実行時引数や機能フラグなどの単純なキーと値のパラメーターに使用します。

設定項目の作成

このセクションでは、サンプル Nginx Deployment 用の ConfigMap を作成する方法について説明します。

コンソール

  1. Container Service for Kubernetes (ACK) コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。対象クラスターの名前をクリックします。左側のナビゲーションウィンドウで、[構成] > [ConfigMap] を選択します。

  2. サンプルの設定項目を作成します: [名前空間]default に設定し、[作成] をクリックします。

  3. ConfigMap の名前を入力します。次に、[+ 追加] をクリックし、設定項目の [名前][値] を入力して、[OK] をクリックします。

    • ConfigMap名: app-config

    • 名前と値を入力して設定項目を追加します。[ファイルからインポート] をクリックして、JSON ファイルから ConfigMap を作成することもできます。

      nginx.conf

      server {
          listen 80;
          location / {
              root /usr/share/nginx/html;
              index index.html;
          }
          location /health {
              return 200 "healthy\n";
              add_header Content-Type text/plain;
          }
      }

kubectl

  1. kubectl を使用して ACK クラスターに接続します

  2. ConfigMap を作成します。

    kubectl create configmap app-config \
      --namespace=default \
      --from-literal=nginx.conf="$(cat <<'EOF'
    server {
        listen 80;
        location / {
            root /usr/share/nginx/html;
            index index.html;
        }
        location /health {
            return 200 "healthy\n";
            add_header Content-Type text/plain;
        }
    }
    EOF
    )" 
  3. ConfigMap を確認します。出力の DATA: 1 は、設定項目が作成されたことを示します。

    kubectl get configmap app-config

Pod で ConfigMap を使用

ワークロードとそれが使用する ConfigMap は、同じクラスターおよび名前空間にある必要があります。

メソッド 1:ボリュームマウント

コンソールでの設定

  1. ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。対象クラスターの名前をクリックします。左側のナビゲーションウィンドウで、[ワークロード] > [Deployment] を選択します。

  2. Deployment を作成します。

    1. [ステートレス] ページで、[イメージから作成] をクリックします。

    2. [基本情報] ページで、アプリケーションの基本情報を設定します。

      • [名前]nginx-volume-demo[名前空間]default

      • [レプリカ]2[タイプ]ステートレス (Deployment)

      [次へ] をクリックして [コンテナー設定] ページに進みます。

    3. [イメージ名][ポート] を設定します。

      • イメージ名:anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6

      • コンテナーポート:80、プロトコル:TCP。

      重要

      このイメージをプルするには、クラスターがパブリックネットワークにアクセスできる必要があります。クラスターの作成時に、デフォルトで有効になっている[VPC の SNAT を構成]を選択した場合、追加の構成は必要ありません。それ以外の場合、詳細については、「ACK クラスターのインターネットアクセスを有効にする」をご参照ください。

    4. [ボリューム] セクションで、[ローカルストレージの追加] をクリックして ConfigMap のマウントを追加します。情報を設定した後、[次へ] をクリックします。

      • [PV タイプ][ConfigMap][名前]nginx-config[マウントソース]app-config[コンテナーパス]/etc/nginx/conf.d

    5. [詳細設定] ページで、必要に応じてスケーリング、スケジューリング、ラベルとアノテーションを設定し、[作成] をクリックします。

    6. [作成完了] ページで、アプリケーションタスクを表示します。

      [アプリケーション作成タスクが送信されました] パネルで、[アプリケーション詳細の表示] をクリックし、コンテナー化されたアプリケーションのステータスが 実行中 であることを確認します。

  3. ConfigMap ファイルがマウントされていることを確認します。

    ログインするコンテナー (例:nginx-volume-demo-7xxxxxx****) を選択します。[操作] 列で [ターミナル] をクリックし、nginx を選択してコンテナーにログインします。

    1. 出力に nginx.conf ファイルが含まれています。これは ConfigMap がマウントされていることを示します。

      ls -la /etc/nginx/conf.d/
    2. ファイルの内容を確認します。

      cat /etc/nginx/conf.d/nginx.conf

      出力は設定項目の内容と同じです。これは、アプリケーションが ConfigMap をボリュームとしてマウントすることで、ConfigMap データにアクセスできることを示します。

Kubectl での設定

  1. nginx-volume-demo.yaml という名前のファイルを作成します。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-volume-demo
      namespace: default
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: nginx-volume
      template:
        metadata:
          labels:
            app: nginx-volume
        spec:
          containers:
          - name: nginx
            image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
            ports:
            - containerPort: 80
            volumeMounts:
            - name: nginx-config
              mountPath: /etc/nginx/conf.d
          volumes:
          - name: nginx-config
            configMap:
              name: app-config
              items:
              - key: nginx.conf
                path: nginx.conf
  2. Deployment を作成します。

    kubectl apply -f  nginx-volume-demo.yaml
  3. Deployment を確認します。Pod のステータスが 実行中 であれば、アプリケーションは作成されています。

    kubectl get pods -l app=nginx-volume -n default
  4. 出力に nginx.conf ファイルが含まれています。これは ConfigMap がマウントされていることを示します。

    kubectl exec deployment/nginx-volume-demo -n default -- ls -la /etc/nginx/conf.d/
  5. ファイルの内容を確認します。

    kubectl exec deployment/nginx-volume-demo -n default -- cat /etc/nginx/conf.d/nginx.conf

    出力は設定項目の内容と同じです。これは、アプリケーションが ConfigMap をボリュームとしてマウントすることで、ConfigMap データにアクセスできることを示します。

メソッド 2:環境変数インジェクション

コンソールでの設定

  1. ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。対象クラスターの名前をクリックします。左側のナビゲーションウィンドウで、[ワークロード] > [Deployment] を選択します。

  2. Deployment を作成します。

    1. [ステートレス] ページで、[イメージから作成] をクリックします。

    2. [基本情報] ページで、アプリケーションの基本情報を設定します。

      • [アプリケーション名]nginx-env-demo[名前空間]default

      • [レプリカ]2[タイプ]ステートレス (Deployment)

      [次へ] をクリックして [コンテナー設定] ページに進みます。

    3. [イメージ名][ポート] を設定します。

      • イメージ名:anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6

      • コンテナーポート:80、プロトコル:TCP。

      重要

      このイメージをプルする前に、クラスターはパブリックネットワークにアクセスできる必要があります。クラスターの作成時に、デフォルトで有効になっている[VPC の SNAT を構成]を選択した場合、追加の構成は不要です。それ以外の場合は、詳細については「ACK クラスターのインターネットアクセスを有効にする」をご参照ください。

    4. [環境変数] セクションで、[追加] をクリックします。情報を設定した後、[次へ] をクリックします。

      • [タイプ]:設定項目、[名前]CONFIG_[変数/変数参照]app-config

    5. [詳細設定] ページで、必要に応じてスケーリング、スケジューリング、ラベルとアノテーションを設定し、[作成] をクリックします。

    6. [作成完了] ページで、アプリケーションタスクを表示します。

      [アプリケーション作成タスクが送信されました] パネルで、[アプリケーション詳細の表示] をクリックし、コンテナーのステータスが 実行中 であることを確認します。

  3. 環境変数が挿入されていることを確認します。

    ログインするコンテナー (例:nginx-env-demo-7xxxxxx****) を選択します。[操作] 列で [ターミナル] をクリックし、nginx を選択してログインします。

    env | grep CONFIG_

    出力は設定項目の内容と同じです。これは、アプリケーションが環境変数を介して ConfigMap データにアクセスできることを示します。

Kubectl での設定

  1. nginx-env-demo.yaml という名前のファイルを作成します。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-env-demo
      namespace: default
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: nginx-env
      template:
        metadata:
          labels:
            app: nginx-env
        spec:
          containers:
          - name: nginx
            image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
            ports:
            - containerPort: 80
            # ConfigMap からすべてのキーと値のペアを挿入します。
            envFrom:
            - prefix: CONFIG_
              configMapRef:
                name: app-config
    
  2. Deployment を作成します。

    kubectl apply -f nginx-env-demo.yaml
  3. Deployment を確認します。Pod のステータスが 実行中 であれば、アプリケーションは作成されています。

    kubectl get pods -l app=nginx-env -n default
  4. 環境変数が挿入されていることを確認します。

    kubectl exec deployment/nginx-env-demo -n default -- env | grep CONFIG_

    出力は設定項目の内容と同じです。これにより、アプリケーションが環境変数を介して ConfigMap データにアクセスできることが確認されます。

ConfigMap の管理

設定項目を作成した後、[設定項目] ページで次の操作を実行できます:

操作

説明

ConfigMap の編集

対象の ConfigMap の [操作] 列で、[編集] をクリックします。設定項目の [名前][値] を変更できます。

重要

使用中の ConfigMap を変更すると、関連するアプリケーションに直接影響し、サービスの再起動やエラーが発生する可能性があります。変更を行う前に影響を評価し、オフピーク時に操作を実行してください。

設定項目の削除

対象の ConfigMap の [操作] 列で、[削除] をクリックして、使用されなくなった ConfigMap を削除します。

重要

kube-system および kube-public 名前空間にあるシステム生成の ConfigMap (CoreDNS 設定など) は削除しないでください。削除すると、クラスターの安定性に影響する可能性があります。

関連ドキュメント

  • Pod の例外に関する診断プロセス、トラブルシューティング方法、一般的な問題、およびソリューションの詳細については、「Pod の例外のトラブルシューティング」をご参照ください。

  • コンソールと kubectl を使用して ACK クラスターでステートレスアプリケーションを作成する方法の詳細については、「ステートレスな Deployment を作成する」をご参照ください。

  • 詳細については、Kubernetes ドキュメントの「ConfigMaps」をご参照ください。