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-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}"); } }
インテグレーションを実行し、
@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