4.2.3.5. ConfigMap またはシークレットデータの絞り込み

ConfigMap またはシークレットの作成時に、複数の情報ソースを指定できます。たとえば、以下のコマンドは、2 つのソースから ConfigMap (my-cm-multi という名前) を作成します。

oc create configmap my-cm-multi --from-literal=my-configmap-key="configmap content" --from-literal=my-configmap-key-2="another content"

--resource オプションでインテグレーションを実行すると、ConfigMap またはシークレットは複数のソースで作成され、デフォルトでは両方のソースがマテリアル化されます。

ConfigMap またはシークレットからリカバリーする情報量を制限する場合は、ConfigMap またはシークレット名の後に --resource オプションの /key 表記を指定できます。例: --resource configmap:my-cm/my-key または --resource secret:my-secret/my-key

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

前提条件

手順

  1. ConfigMap またはシークレットのいずれかのリソースだけからの設定値を使用するインテグレーションを作成します。たとえば、以下のインテグレーション( ResourceConfigmapKeyLocationRoute.java という名称)は my-cm-multi ConfigMap を参照します。

    import org.apache.camel.builder.RouteBuilder;
    
    public class ResourceConfigmapKeyLocationRoute extends RouteBuilder {
      @Override
      public void configure() throws Exception {
    
        from("file:/tmp/app/data/?fileName=my-configmap-key-2&noop=true&idempotent=false")
           .log("resource file content is: ${body} consumed from
            ${header.CamelFileName}");
    
      }
    }
  2. インテグレーションを実行し、@path 構文で --resource オプションを使用して、リソースの内容 (ファイル、ConfigMap、または Secret のいずれか) をマウントする場所を指定します。

    たとえば、以下のコマンドは ConfigMap 内に含まれるソースのいずれか (my-configmap-key-2@) のみを使用し、/tmp/app/data ディレクトリーを使用してマウントすることを指定します。

    kamel run --resource configmap:my-cm-multi/my-configmap-key-2@/tmp/app/data ResourceConfigmapKeyLocationRoute.java --dev
  3. インテグレーションの Pod で、1 つのファイル (例: my-configmap-key-2) だけが正しい場所 (例: /tmp/app/data) にマウントされていることを確認します。たとえば、以下のコマンドを実行します。

    oc exec <pod-name> -- cat /tmp/app/data/my-configmap-key-2