マウント・ファイルとしてのシークレットおよび構成マップの参照 (CLI)
Code Engineで、シークレットと構成マップを作成した後、キーと値のペアとして保管されている情報を、マウント・ファイルとしてアプリまたはジョブ・ワークロードで取り込むことができます。 このメソッドは関数では使用できません。
シークレットおよび構成マップをマウント・ファイルとして処理することは、シークレットおよび構成マップを環境変数として処理することと類似しています。
シークレットを処理すると、データはエンコードされたストリングとして保存されます。 環境変数またはマウント・ファイルとして環境にデータを追加するときにはデータはエンコードされません。
CLI でのマウント・ファイルとしてのシークレットの参照
このシナリオでは、シークレットを作成し、icr.io/codeengine/ce-secret-vol イメージを使用するアプリケーションを実行するときに、そのシークレットをマウント・ファイルとして参照します。
サンプル・イメージicr.io/codeengine/ce-secret-volは、/mysecretsディレクトリー内の各ファイルを読み取り、要求ごとにファイルの名前とその内容を標準出力に出力して、出力がアプリ・ログに含まれるようにします。 このサンプル・アプリケーションについて詳しくは、 IBM Cloud Code Engine GitHub リポジトリー内のボリュームとしてのシークレット(secrets-vol)のサンプルを参照してください。
このシナリオではシークレットを使用しますが、コマンドに含まれる configmap を secret に置き換えることによって、同じ手順でマウント・ファイルとして構成マップを参照できます。
-
mysecretという名前でシークレットを作成し、--from-literalオプションを使用してシークレットのキー/値のペアを指定します。以下に例を示します。ibmcloud ce secret create -n mysecret --from-literal apikey=abcdefgh -
icr.io/codeengine/ce-secret-volイメージを使用するmyappアプリケーションを作成します。--mount-secretオプションを使用して、mysecretシークレットの内容を/mysecretsディレクトリー内のアプリにマウントまたは追加します。--min-scale=1オプションを指定すると、このアプリには実行中のインスタンスが必ず含まれ、ゼロにスケーリングされることはありません。 ログを参照するときには、実行中のインスタンスが常に存在するようにアプリを構成すると役に立ちます。 以下に例を示します。ibmcloud ce app create --name myapp --image icr.io/codeengine/ce-secret-vol --mount-secret /mysecrets=mysecret --min-scale 1出力例
Creating application 'myapp'... [...] Run 'C:\Program Files\IBM\Cloud\bin\ibmcloud.exe ce application get -n myapp' to check the application status. OK https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloud -
上記出力に含まれている URL をコピーし、
curlを使用してアプリケーションを呼び出します。以下に例を示します。curl https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloud -
アプリケーションのログを表示します。 この例では、
myappアプリはサンプル・イメージicr.io/codeengine/ce-secret-volを使用します。 このアプリは、/mysecretsディレクトリー内の各ファイルを読み取り、要求ごとにファイルの名前とその内容を標準出力に出力するので、出力がアプリ・ログに含まれます。 ファイルの名前はapikeyです。ibmcloud ce app logs --app myapp出力例
Getting logs for all instances of application 'myapp'... OK myapp-b3gxd-1-deployment-6f45dcf7f4-nw59z/user-container: Listening on port 8080 apikey: abcdefgh -
mysecretシークレットを更新し、apikeyキー/値のペアの値を変更します。以下に例を示します。ibmcloud ce secret update -n mysecret --from-literal apikey=qrst -
アプリケーションを再度呼び出します。
curl https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloud -
アプリケーションのログを表示します。
ibmcloud ce app logs --app myapp出力例
Getting logs for all instances of application 'myapp'... OK myapp-b3gxd-1-deployment-6f45dcf7f4-nw59z/user-container: Listening on port 8080 apikey: abcdefgh apikey: qrst
シークレット (または構成マップ) に保管されるデータをマウント・ファイルとしてアプリに追加し、シークレットに保管されているデータを更新しました。 更新された参照シークレットを使用するためにアプリの再始動は不要でした。