IBM Cloud Docs
マウント・ファイルとしてのシークレットおよび構成マップの参照 (CLI)

マウント・ファイルとしてのシークレットおよび構成マップの参照 (CLI)

Code Engineで、シークレットと構成マップを作成した後、キーと値のペアとして保管されている情報を、マウント・ファイルとしてアプリまたはジョブ・ワークロードで取り込むことができます。 このメソッドは関数では使用できません。

シークレットおよび構成マップをマウント・ファイルとして処理することは、シークレットおよび構成マップを環境変数として処理することと類似しています。

シークレットを処理すると、データはエンコードされたストリングとして保存されます。 環境変数またはマウント・ファイルとして環境にデータを追加するときにはデータはエンコードされません。

CLI でのマウント・ファイルとしてのシークレットの参照

このシナリオでは、シークレットを作成し、icr.io/codeengine/ce-secret-vol イメージを使用するアプリケーションを実行するときに、そのシークレットをマウント・ファイルとして参照します。

サンプル・イメージicr.io/codeengine/ce-secret-volは、/mysecretsディレクトリー内の各ファイルを読み取り、要求ごとにファイルの名前とその内容を標準出力に出力して、出力がアプリ・ログに含まれるようにします。 このサンプル・アプリケーションについて詳しくは、 IBM Cloud Code Engine GitHub リポジトリー内のボリュームとしてのシークレット(secrets-vol)のサンプルを参照してください。

このシナリオではシークレットを使用しますが、コマンドに含まれる configmapsecret に置き換えることによって、同じ手順でマウント・ファイルとして構成マップを参照できます。

  1. mysecret という名前でシークレットを作成し、--from-literal オプションを使用してシークレットのキー/値のペアを指定します。以下に例を示します。

    ibmcloud ce secret create -n mysecret --from-literal apikey=abcdefgh
    
  2. 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
    
  3. 上記出力に含まれている URL をコピーし、curl を使用してアプリケーションを呼び出します。以下に例を示します。

    curl https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloud
    
  4. アプリケーションのログを表示します。 この例では、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
    
  5. mysecret シークレットを更新し、apikey キー/値のペアの値を変更します。以下に例を示します。

    ibmcloud ce secret update -n mysecret --from-literal apikey=qrst
    
  6. アプリケーションを再度呼び出します。

    curl https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloud
    
  7. アプリケーションのログを表示します。

    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
    

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