4.2.2.5. ConfigMap またはシークレットから取得した設定値の絞り込み

ConfigMap およびシークレットは複数のソースを保持できます。たとえば、以下のコマンドは 2 つのソースからシークレット (my-sec-multi) を作成します。

oc create secret generic my-sec-multi --from-literal=my-secret-key="very top secret" --from-literal=my-secret-key-2="even more secret"

--config configmap または --config secret オプションの後に /key 表記を使用して、インテグレーションが取得する情報量を 1 つのソースに制限することができます。

前提条件

手順

  1. ConfigMap またはシークレットのいずれかのソースだけからの設定値を使用するインテグレーションを作成します。

    たとえば、以下のインテグレーション (ConfigSecretKeyRoute.java) は、my-sec-multi シークレット内のいずれかのソースだけからのプロパティーを使用します。

    import org.apache.camel.builder.RouteBuilder;
    
    public class ConfigSecretKeyRoute extends RouteBuilder {
      @Override
      public void configure() throws Exception {
    
        from("timer:secret")
          .setBody()
              .simple("resource:classpath:my-secret-key-2")
          .log("secret content is: ${body}");
      }
    }
  2. --config secret オプションと /key 表記を使用して、インテグレーションを実行します。

    以下に例を示します。

    kamel run --config secret:my-sec-multi/my-secret-key-2 ConfigSecretKeyRoute.java --dev
  3. インテグレーション Pod を確認し、指定されたソース(例: my-secret-key-2)のみがマウントされていることを確認します。

    たとえば、以下のコマンドを実行して Pod のすべてのボリュームを一覧表示します。

    oc set volume pod/<pod-name> --all