マウント・ファイルとしてのシークレットおよび構成マップの参照 (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
シークレット (または構成マップ) に保管されるデータをマウント・ファイルとしてアプリに追加し、シークレットに保管されているデータを更新しました。 更新された参照シークレットを使用するためにアプリの再始動は不要でした。