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 つのソースに制限することができます。
前提条件
- Setting up your Camel K development environment
- 複数のソースからの値を保持する ConfigMap またはシークレットがある。
手順
ConfigMap またはシークレットのいずれかのリソースだけからの設定値を使用するインテグレーションを作成します。たとえば、以下のインテグレーション(
ResourceConfigmapKeyLocationRoute.javaという名称)はmy-cm-multiConfigMap を参照します。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}"); } }インテグレーションを実行し、
@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
インテグレーションの Pod で、1 つのファイル (例:
my-configmap-key-2) だけが正しい場所 (例:/tmp/app/data) にマウントされていることを確認します。たとえば、以下のコマンドを実行します。oc exec <pod-name> -- cat /tmp/app/data/my-configmap-key-2