IBM Cloud Docs
シークレットの操作

シークレットの操作

Code Engineでシークレットを処理する方法について説明します。 Code Engine では、環境変数を使用することで、関数やジョブ、アプリケーションで消費できる情報をキーと値のペアとしてシークレットに格納することができます。

秘密とは何か?

Code Engineでは、秘密 (および configmap) はキーと値のペアの集合です。 環境変数にマップされると、環境変数の名前がマップの各項目の「キー」に対応し、環境変数の値がそのキーの「値」になるように NAME=VALUE の関係が設定されます。

シークレットを使用して、機密性の高い構成情報 (パスワードや SSH 鍵など) をデプロイメントに含めることができます。 シークレットから値を参照することで、デプロイメントから機密情報を切り離し、アプリ、関数、ジョブの移植性を保つことができます。 プロジェクトに対する権限が与えられていれば、どのユーザーもシークレットを表示することができます。したがって、それらのユーザーとシークレット情報が共有される可能性があることを知っておいてください。 シークレットには、キーと値のペアで情報が格納されます。

シークレットとコンフィグマップは似たようなものなので(シークレットがより安全に保存されることを除けば)、シークレットとコンフィグマップの扱い方も似ています。 構成マップについて詳しくは、 構成マップの操作 を参照してください。

Code Engineではどのような種類のシークレットを作成できますか?

Code Engine は、さまざまなシークレットをサポートし、シークレットを作成して処理するためのオプションを提供します。

以下の表に、 Code Engineでサポートされるシークレットを要約します。

Code Engineの秘密。
名前 説明
基本認証 username キーと password キーを含むシークレット。
ベーシック認証シークレットは、ベーシック認証( HTTP )を必要とするサービスにアクセスするときに使用する。
一般 単純なキーと値のペアおよび Code Engine を保管するシークレットは、定義されたキーと値のペアについても、シークレットの用途についても想定しません。
サービスにアクセスするための独自のキーと値のペアを定義する場合は、汎用シークレットを使用します。
HMAC access-key-idsecret_access_key 鍵を含む秘密。
認証を必要とするが、 IBM Cloud® Identity and Access Management APIキーをサポートしていない S3-compatible ツールやライブラリを使用するには、HMAC認証情報を使用する。
レジストリ― コンテナー・レジストリーにアクセスするための資格情報を保管するシークレット。
コンテナー・イメージにアクセスするために Code Engine アプリまたはジョブで作業する場合は、レジストリー・シークレットを使用します。 または、 Code Engine を使用してコンテナー・イメージを作成します。このレジストリー・シークレットは Code Engine によって使用され、ビルドされたコンテナー・イメージを保管するためにレジストリーにアクセスします。
このシークレットは、CLI では Registry access secret とも呼ばれます。
サービス・アクセス IBM Cloud サービス・インスタンスにアクセスするための資格情報を保管するシークレット。
Code Engine で サービス・バインディングを 使用する場合は、サービス・アクセス・シークレットを使用してください。 Code Engine は、このシークレットを自動的に生成するか、独自のカスタム・サービス・アクセス・シークレットを作成することができます。
SSH SSH 鍵を使用してサービスに対して認証するための資格情報を保管するシークレット。例えば、 GitHub や GitLabなどの Git リポジトリーに対する認証など。
Code Engine でコンテナー・イメージを作成する場合は、SSH シークレットを使用します。 Code Engine は、このシークレットを使用してコード・リポジトリー内のソース・コードにアクセスします。 例えば、 GitHub や GitLabなどのリポジトリー内のソース・コードにアクセスするには、ビルド実行でこのシークレットを使用します。
このシークレットは、CLI では Git repository access secret 、コンソールでは Code repo access としても使用されます。
トランスポート層セキュリティー (TLS) 署名付き TLS 証明書 (すべての中間証明書を含む) および認証局 (CA) からの対応する秘密鍵を含む秘密。
Code Engineで カスタム・ドメイン・マッピング を操作する場合は、TLS シークレットを使用します。

シークレットの作成

アプリ、ジョブ、または機能に機密情報を提供するには、シークレットを使用します。 シークレットはキーと値のペアで定義され、シークレットに格納されたデータはエンコードされます。

コンソールからのシークレットの作成

Code Engine コンソールからシークレットを作成する方法について説明します。

コンソールから以下のタイプのシークレットを作成する方法について説明します。

コンソールからジェネリックシークレットを作成する

Code Engine コンソールから、関数、ジョブ、またはアプリで環境変数として使用できる汎用シークレットを作成する方法を学びます。

始めに、プロジェクトを作成します

  1. プロジェクトが Active ステータスになったら、 Code Engine Projectsページでプロジェクト名をクリックします。
  2. 「コンポーネント」ページで、**「シークレットおよび構成マップ (Secrets and configmaps)」**をクリックします。
  3. 「シークレットおよび構成マップ (Secrets and configmaps)」ページで**「作成」**をクリックして、シークレットを作成します。
  4. 「シークレットまたは構成マップの作成 (Create secret or configmap)」ページで、以下の手順を実行します。
    1. 「汎用シークレット」 を選択し、 「次へ」 をクリックします。
    2. 例えば、 mysecret-generic
    3. **「キーと値のペアを追加 (Add key-value pair)」**をクリックします。 このシークレットのキーと値のペアを 1 つ以上指定します。 例えば、1つのキーを mysecret1 の値で secret1 と指定し、もう1つのキーを target-secret の値で secret2 と指定する。 キーに使用する名前は、環境変数の名前と同じである必要はありません。 キーの値は非表示になっていますが、必要に応じて表示できます。
    4. **「作成」**をクリックして、シークレットを作成します。

シークレットがコンソールから作成されたので、シークレットとコンフィグマップページに行き、定義されたシークレットとコンフィグマップのリストを見る。 必要に応じて、フィルターを適用してリストをカスタマイズすることができます。

コンソールからHMACシークレットを作成する

Code Engine コンソールから HMAC シークレットを作成し、環境変数としてファンクション、ジョブ、またはアプリで使用する方法について説明します。 これらは、認証を必要とするが、 IBM Cloud® Identity and Access Management APIキーをサポートしていない S3-compatible ツールやライブラリで使用される。

始めに、プロジェクトを作成します

  1. プロジェクトが Active ステータスになったら、 Code Engine Projectsページでプロジェクト名をクリックします。
  2. 「コンポーネント」ページで、**「シークレットおよび構成マップ (Secrets and configmaps)」**をクリックします。
  3. 「シークレットおよび構成マップ (Secrets and configmaps)」ページで**「作成」**をクリックして、シークレットを作成します。
  4. 「シークレットまたは構成マップの作成 (Create secret or configmap)」ページで、以下の手順を実行します。
    1. HMACシークレットを選択し、 Nextをクリックする。
    2. 例えば、 mysecret-hmac
    3. アクセスキーIDを指定します。
    4. シークレットアクセスキーを指定します。 キーの値は非表示になっていますが、必要に応じて表示できます。
    5. **「作成」**をクリックして、シークレットを作成します。

シークレットがコンソールから作成されたので、シークレットとコンフィグマップページに行き、定義されたシークレットとコンフィグマップのリストを見る。 必要に応じて、フィルターを適用してリストをカスタマイズすることができます。

HMACシークレットの詳細については、 IBM Cloud Object Storage- API Key vs HMACを 参照のこと。

コンソールからレジストリ秘密を作成する

Code Engine コンソールからレジストリー・シークレットを作成する方法について説明します。このコンソールは、コンテナー・イメージをプルまたはプッシュするためのアクセスのために、機能、ジョブ、アプリ、またはビルドによって取り込むことができます。

始めに、プロジェクトを作成します

  1. プロジェクトが Active ステータスになったら、 Code Engine Projectsページでプロジェクト名をクリックします。
  2. 「コンポーネント」ページで、**「シークレットおよび構成マップ (Secrets and configmaps)」**をクリックします。
  3. 「シークレットおよび構成マップ (Secrets and configmaps)」ページで**「作成」**をクリックして、シークレットを作成します。
  4. 「シークレットまたは構成マップの作成 (Create secret or configmap)」ページで、以下の手順を実行します。
    1. 「レジストリー・シークレット」 を選択し、 「次へ」 をクリックします。
    2. 例えば、 mysecret-registry
    3. このシークレットのターゲット・レジストリー ( IBM Cloud Container Registry や Docker Hub など) を指定します。
    4. レジストリーの場所を指定します。
    5. ユーザー名を指定します。 このシークレットが IBM Cloud Container Registry用である場合、ユーザー名は iamapikey です。 このシークレットが Docker Hub 用の場合は、 Docker ID です。
    6. ユーザー名の資格情報を入力します。 IBM Cloud Container Registryでは、IAM API キーを使用します。 Docker Hub の場合は、ご使用の Docker Hub パスワードかアクセス・トークンを使用できます。 その他のターゲット・レジストリーの場合は、ユーザー名のパスワードまたは API キーを指定します。
    7. **「作成」**をクリックして、シークレットを作成します。

シークレットがコンソールから作成されたので、シークレットとコンフィグマップページに行き、定義されたシークレットとコンフィグマップのリストを見る。 必要に応じて、フィルターを適用してリストをカスタマイズすることができます。

イメージ・レジストリーの処理について詳しくは、 コンテナー・レジストリーへのアクセス を参照してください。

コンソールからの SSH シークレットの作成

プライベート・ソース・コード・リポジトリーにアクセスするためにビルドで使用できる SSH シークレットをコンソールから作成する方法について説明します。 SSH 秘密鍵は、 GitHub や GitLabなどの Git リポジトリーへの認証など、SSH 鍵を使用してサービスに対して認証するための資格情報を保管します。

始めに、プロジェクトを作成します

  1. プロジェクトが Active ステータスになったら、 Code Engine Projectsページでプロジェクト名をクリックします。
  2. 「コンポーネント」ページで、**「シークレットおよび構成マップ (Secrets and configmaps)」**をクリックします。
  3. 「シークレットおよび構成マップ (Secrets and configmaps)」ページで**「作成」**をクリックして、シークレットを作成します。
  4. 「シークレットまたは構成マップの作成 (Create secret or configmap)」ページで、以下の手順を実行します。
    1. 「SSH シークレット」 を選択し、 「次へ」 をクリックします。
    2. 例えば、 mysecret-ssh
    3. このシークレットの SSH 秘密鍵を追加します。
    4. **「作成」**をクリックして、シークレットを作成します。

シークレットがコンソールから作成されたので、シークレットとコンフィグマップページに行き、定義されたシークレットとコンフィグマップのリストを見る。 必要に応じて、フィルターを適用してリストをカスタマイズすることができます。

Git リポジトリーなどのプライベート・コード・リポジトリーで作業する場合は、SSH シークレットを使用します。 プライベート・コード・リポジトリーへのアクセスを参照してください。

コンソールからTLSシークレットを作成する

Code Engineでカスタム・ドメイン・マッピングを操作するときにアプリで使用できる TLS シークレットをコンソールから作成する方法について説明します。 Transport Layer Security (TLS) シークレットには、署名付き TLS 証明書が含まれます。これには、すべての中間証明書と、認証局 (CA) からの対応する秘密鍵が含まれます。

始めに、プロジェクトを作成します

  1. プロジェクトが Active ステータスになったら、 Code Engine Projectsページでプロジェクト名をクリックします。
  2. 「コンポーネント」ページで、**「シークレットおよび構成マップ (Secrets and configmaps)」**をクリックします。
  3. 「シークレットおよび構成マップ (Secrets and configmaps)」ページで**「作成」**をクリックして、シークレットを作成します。
  4. 「シークレットまたは構成マップの作成 (Create secret or configmap)」ページで、以下の手順を実行します。
    1. 「TLS シークレット」 を選択し、 「次へ」 をクリックします。
    2. 例えば、 mysecret-tls
    3. 証明書チェーンとその秘密鍵を追加します。 各証明書を新しい行で始めると、連結できることに注意。 この情報はファイルに指定できます。
    4. **「作成」**をクリックして、シークレットを作成します。

シークレットがコンソールから作成されたので、シークレットとコンフィグマップページに行き、定義されたシークレットとコンフィグマップのリストを見る。 必要に応じて、フィルターを適用してリストをカスタマイズすることができます。

Code Engineで カスタム・ドメイン・マッピング を処理する場合は、TLS シークレットを使用します。

CLIで秘密を作成する

Code Engine CLI でシークレットを作成する方法を学ぶ。シークレットは環境変数としてアプリ、ジョブ、関数で使用できる。

開始前に

CLI バージョン 1.42.0 以降、CLI でのシークレットの定義と操作は secret コマンドグループに統一されました。 ibmcloud ce secret コマンドを参照してください。 basic_auth, generic, hmac, ssh, tls, registry のように秘密のカテゴリーを指定するには --format オプションを使用する。 --format オプションのデフォルト値は generic

secret create コマンドを使用して、さまざまなシークレット形式を作成および管理できます。 さまざまなシークレット・フォーマットの説明については、 What kind of secrets can I create in Code Engine? を参照してください。

CLI を使用して以下のタイプのシークレットを作成する方法について説明します。

CLIで基本認証シークレットを作成する

基本認証シークレットは、ユーザー名とパスワード・キーを含み、基本 HTTP 認証を必要とするサービスにアクセスするために使用される。 以下の例では、 myusername の資格情報を使用して基本認証シークレットを作成します。関連付けられたパスワードは、ローカル・ワークステーション上のファイルで提供されます。

ibmcloud ce secret create --name mysecret-basicauth --format basic_auth --username myusername --password-from-file ./password.txt

この秘密の詳細を表示するには、以下のようにします。

ibmcloud ce secret get --name mysecret-basicauth

出力例

Getting secret 'mysecret-basicauth'...
OK

Name:          mysecret-basicauth
ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Format:        basic_auth
Project Name:  myproject
Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
Age:           66s
Created:       2021-03-10T18:44:18-05:00

Data:    
---
password: REDACTED
username: bXl1c2VybmFtZQ==

この基本認証シークレットのキー username の値がエンコードされ、 password の値が編集されていることに注意してください。 シークレット・データをデコードされた状態で表示するには、--decode コマンドで secret get オプションを使用します。

CLIでジェネリック・シークレットを作成する

汎用シークレットは、単純なキーと値のペアを保管し、 Code Engine は、定義されたキーと値のペアについても、シークレットの用途についても想定しません。

一般的なシークレットは secret create コマンドで作成できます。 デフォルトでは、 --format オプションが指定されていない場合に汎用シークレットが作成されます。

  • --from-literal オプションを KEY=VALUE 形式で使用して、コマンド・ラインからシークレットを直接作成します。 以下に例を示します。

    ibmcloud ce secret create --name myliteralsecret --from-literal "TARGET=My literal secret"
    
  • --from-file オプションを使用してファイルを指して、シークレットを作成します。 このオプションを使用すると、ファイルのすべての内容がキーと値のペアの値になります。 この例では、secrets.txt を含む、my little secret1 という名前のファイルを使用します。

    • 以下の例では、--from-file KEY=FILE コマンドで secret create フォーマットを使用します。

      ibmcloud ce secret create --name mysecretmsg1 --from-file TARGET=secrets.txt
      
    • 以下のコマンド例では、--from-file FILE コマンドで secret create フォーマットを使用します。 この例では、TARGET (拡張子なし) がファイルの名前です。これは、ジョブに認識されている環境変数の名前と同じです。

      ibmcloud ce secret create --name mysecretmsg2  --from-file TARGET
      
  • --from-env-file の形式と一致する行が 1 つ以上含まれるファイルを指す KEY=VALUE オプションを使用して、シークレットを作成します。 指定したファイルにある各行が、キー/値のペアとして追加されます。 指定されたファイル内の、空または#で始まる行はすべて無視されます。 この例では、secrets_multi.txtsec1=mysec1、および sec2=mysec2 のキーと値のペアを含む、sec3=mysec3 という名前のファイルを使用します。

    ibmcloud ce secret create --name mysecretmulti --from-env-file secrets_multi.txt
    

ファイルから汎用シークレットを作成 (または更新) する場合は、 --from-file FILE または --from-file KEY=FILE Code Engineのいずれかの形式で --from-file オプションを使用します。 --from-file オプションを使用してシークレット値を指定すると、ファイル内の すべての 内容がキーと値のペアの値になります。 --from-file KEY=FILE というオプション書式を使う場合、 KEY は、ジョブ、関数、またはアプリが知っている環境変数の名前である。 --from-file FILE というオプション書式を使う場合、 FILE は、ジョブ、関数、またはアプリが知っている環境変数の名前である。 ファイルに 1 つ以上のキーと値のペアが含まれている場合は、--from-env-file オプションを使用して、指定したファイル内のキーと値の各ペアに環境変数を追加します。 指定されたファイルの行が空であるか、 # で始まっている場合は無視される。

汎用シークレット myliteralsecret の詳細を表示するには、以下のようにします。

ibmcloud ce secret get --name myliteralsecret

出力例

Getting secret 'myliteralsecret'...
OK

Name:          myliteralsecret
ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Format:        generic
Project Name:  myproject
Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
Age:           66s
Created:       2023-03-07 21:06:34 +0000 UTC  

Data:    
---
TARGET: TXkgbGl0ZXJhbCBzZWNyZXQ=

このジェネリック・シークレットのキー TARGET の値がエンコードされていることに注目してほしい。 シークレット・データをデコードされた状態で表示するには、--decode コマンドで secret get オプションを使用します。

CLIでHMACシークレットを作成する

HMACシークレットは、 access-key-idsecret_access_key キーを含み、 S3-compatible 認証を必要とするが、 IBM Cloud® Identity and Access Management APIキーをサポートしていないツールやライブラリで使用される。 IBM Cloud® Identity and Access Management API キーまたは HMAC クレデンシャルを使用する場合は、 IBM Cloud Object Storage- API Key vs HMAC を 参照してください。 以下の例では、HMACシークレットを作成する。

ibmcloud ce secret create --name mysecret-hmac --format hmac --access-key-id-prompt --secret-access-key-prompt

この秘密の詳細を表示するには、以下のようにします。

ibmcloud ce secret get --name mysecret-hmac

出力例

Getting secret 'mysecret-hmac'...
OK

Name:          mysecret-hmac
ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Format:        hmac_auth
Project Name:  myproject
Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
Age:           86s
Created:       2025-05-15T12:41:15-05:00

Data:
---
access_key_id: MWEyYjNjNGQ1ZTZmMWEyYjNjNGQ1ZTZmMWEyYjNjNGQK
secret_access_key: REDACTED

このHMAC秘密の鍵 access_key_id の値はエンコードされ、 secret_access_key の値は編集されていることに注意。 シークレット・データをデコードされた状態で表示するには、--decode コマンドで secret get オプションを使用します。

CLIによるレジストリ秘密の作成

レジストリー・シークレットは、コンテナー・レジストリーにアクセスするための資格情報を保管します。

以下の例では、 us.icr.io レジストリー・サーバー上にあり、 username および password の資格情報を指定する IBM Cloud Container Registry インスタンスにアクセスするために、 mysecret-registry という名前のレジストリー・シークレットを作成します。

ibmcloud ce secret create --name mysecret-registry --format registry --server us.icr.io --username iamapikey --password API_KEY

この秘密の詳細を表示するには、以下のようにします。

ibmcloud ce secret get --name mysecret-registry

出力例

Getting secret 'mysecret-registry'...
OK

Name:          mysecret-registry
ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Format:        registry
Project Name:  myproject
Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
Age:           66s
Created:       2023-03-07 20:00:45 +0000 UTC  

Data:    
---
email: ""
password: REDACTED
server: dXMuaWNyLmlv
username: aWFtYXBpa2V5

このレジストリー・シークレットの username キーと server キーの値はエンコードされ、 password の値はリダクションされることに注意してください。 シークレット・データをデコードされた状態で表示するには、--decode コマンドで secret get オプションを使用します。

CLI を使用した SSH シークレットの作成

SSH 秘密鍵は、SSH 鍵を使用してサービスに対して認証するための資格情報を保管します。例えば、 GitHub や GitLabなどの Git リポジトリーに対して認証します。

以下の例では、 /<filepath>/.ssh/<key_name> にある暗号化されていない SSH 秘密鍵ファイルを使用して認証することにより、 known_hosts ファイルに含まれるホストにアクセスするための mysecret-ssh という名前の SSH 秘密鍵を作成します。ここで、 <filepath> はローカル・ワークステーション上のパスです。 このコマンドは、名前とキー・パスを必要とします。また、既知の hosts ファイルへのパスなど、その他のオプション引数も許可します。

ibmcloud ce secret create --name mysecret-ssh --format ssh --key-path ~/.ssh/<key_name> --known-hosts-path  ~/.ssh/known_hosts

この秘密の詳細を表示するには、以下のようにします。

ibmcloud ce secret get --name mysecret-ssh

出力例

Getting secret 'mysecret-ssh'...
OK

Name:          mysecret-ssh'
ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Format:        ssh
Project Name:  myproject
Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
Age:           66s
Created:       2023-03-07 19:19:59 +0000 UTC  

Data:    
---
known_hosts: fDF8bGh0ekpiSFVXdXRxZWg1NUlrWTk4RjdOdjJZPXxsUmhZd0txVmIwd3dSV2xzcjEySFdoWURUTG89IHNzaC1yc2EgQUFBQUIzTnphQzF5YzJFQUFBQUJJd0FBQVFFQXEyQTdoUkdtZG5tOXRVRGJPOUlEU3dCSzZUYlFhK1BYWVBDUHk2cmJUclR0dzdQSGtjY0tycHAweVZocDVIZEVJY0tyNnBMbFZEQmZPTFg5UVVzeUNPVjB3emZqSUpObEdFWXNkbExKaXpIaGJuMm1VanZTQUhRcVpFVFlQODFlRnpMUU5uUEh0NEVWVlVoN1ZmREVTVTg0S2V6bUQ1UWxXcFhMbXZVMzEveU1mK1NlOHhoSFR2S1NDWklGSW1Xd29HNm1iVW9XZjluenBJb2FTakIrd2VxcVVVbXBhYWFzWFZhbDcySitVWDJCKzJSUFczUmNUMGVPelFncWxKTDNSS3JUSnZkc2pFM0pFQXZHcTNsR0hTWlh5MjhHM3NrdWEyU21WaS93NHlDRTZnYk9EcW5UV2xnNyt3QzYwNHlkR1hBOFZKaVM1YXA0M0pYaVVGRkFhUT09CnwxfEpUSjI4MCt0RkFSMGcxZ3VrZW56U3ZBYm5sQT18RDlSUWppenZlR3UxS0FnNjhNeisrUHM3RmZrPSBlY2RzYS1zaGEyLW5pc3RwMjU2IEFBQUFFMlZqWkhOaExYTm9ZVEl0Ym1semRIQXlOVFlBQUFBSWJtbHpkSEF5TlRZQUFBQkJCRW1LU0VOalFFZXpPbXhrWk15N29wS2d3RkI5bmt0NVlScllNak51RzVOODd1UmdnNkNMcmJvNXdBZFQveTZ2MG1LVjBVMncwV1oyWUIvKytUcG9ja2c9CnwxfDhIOXpNb0VORklZVDNPeVZYWlQrY25wb0srND18dVdhVThFV1FPc0ttSDMzREVVd0xnNUtiUk44PSBzc2gtZWQyNTUxOSBBQUFBQzNOemFDMWxaREkxTlRFNUFBQUFJT01xcW5rVnpybTBTZEc2VU9vcUtMc2FiZ0g1Qzlva1dpMGRoMmw5R0tKbAo=
ssh-privatekey: REDACTED

この SSH 秘密鍵の known_hosts 鍵の値がエンコードされ、 ssh-privatekey の値が編集されていることに注意してください。 シークレット・データをデコードされた状態で表示するには、--decode コマンドで secret get オプションを使用します。

CLIでTLSシークレットを作成する

Transport Layer Security (TLS) シークレットには、署名付き TLS 証明書が含まれます。これには、すべての中間証明書と、認証局 (CA) からの対応する秘密鍵が含まれます。 カスタム・ドメイン・マッピングを処理する場合は、TLS シークレットを使用します。

以下の例では、 mysecret-tls という名前の TLS シークレットを作成します。 カスタム・ドメインに対応する証明書チェーンはファイル certificate.txt に含まれ、一致する秘密鍵ファイルはファイル privatekey.txt に含まれます。 この例では、これらのファイルは両方ともローカル・ワークステーションのルート・ディレクトリーにあります。

ibmcloud ce secret create --name mysecret-tls  --format tls  --cert-chain-file certificate.txt --private-key-file privatekey.txt

この秘密の詳細を表示するには、以下のようにします。

ibmcloud ce secret get --name mysecret-tls

出力例

Getting secret 'mysecret-tls'...
OK

Name:          mysecret-tls'
ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Format:        tls
Project Name:  myproject
Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
Age:           66s
Created:       2023-03-07 16:14:46 +0000 UTC  

Data:    
---
tls.crt: REDACTED
tls.key: REDACTED

CLI でのシークレットのリスト

シークレットが作成されたら、 secret list コマンドを使用して、プロジェクト内のすべてのシークレットをリストします。 以下に例を示します。

ibmcloud ce secret list

出力例

Listing secrets...
OK

Name                          Format          Data  Age  
ce-auto-icr-private-us-south  registry        4     333d  
ce-auto-private-icr-us-south  registry        4     335d  
myregistry-seccmd             registry        4     3h31m  
mysecret-basicauth            basic_auth      2     7m37s  
mysecret-generic              generic         1     7m7s  
mysecret-genericfromfile      generic         2     2m29s  
mysecret-hmac                 hmac_auth       2     21m
mysecret-registry             registry        4     111s  
mysecret-ssh                  ssh_auth        2     42m  
mysecret-tls                  tls             2     3h47m

シークレットの更新

既存のシークレットのキーと値のペアを変更することができます。

コンソールからのシークレットの更新

定義済みのシークレットのキーと値のペアをコンソールから更新できます。

  1. 以下のいずれかの方法で、定義済みのシークレットのキーと値のペアをコンソールから更新できます。

    • プロジェクトの「シークレットおよび構成マップ (Secrets and configmaps)」ページに移動し、更新するシークレットを見つけます。 更新するシークレットの名前をクリックして開きます。
    • あなたのシークレットがアプリ、ジョブ、または関数によって参照される場合は、アプリ、ジョブ、または関数の環境変数タブにある環境変数テーブルのリンクを使用してください。 これらのリンクは、あなたのシークレットに直接つながります。 あるいは、プロジェクトの「シークレットおよび構成マップ (Secrets and configmaps)」ページに移動し、更新するシークレットを見つける方法もあります。 更新するシークレットの名前をクリックして開きます。
  2. **「編集」**をクリックして、シークレットを更新します。

  3. **「保存」**をクリックして、シークレットに対する変更内容を保存します。

更新されたシークレットがジョブ、機能、またはアプリによって参照されている場合、新しいデータを有効にするにはジョブ、機能、またはアプリを再起動する必要があります。

  • アプリ - アプリのページで、**「新規リビジョン (New revision)」をクリックし、「保存してデプロイ (Save and deploy)」**をクリックします。 あるいは、アプリがゼロにスケーリングされるのを待つこともできます。これは、アプリがスケールアップすると、アプリは更新されたシークレットを使用するようになります。
  • ジョブ - ジョブのページで**「ジョブの実行依頼」**をクリックしてジョブを実行します。または、ジョブを再実行することもできます。 この新しいジョブ実行で、更新されたシークレットが使用されます。
  • 関数-関数のページから、 「関数のテスト」 をクリックします。 ブラウザで URL を開いている場合は、ブラウザを更新してください。

CLI でのシークレットの更新

CLI を使用して、既存のシークレットおよびそのキーと値のペアを更新できます。

  1. 定義済みのシークレット内の、キーと値のペアの値を変更するには、secret update コマンドを使用します。 別のサーバーを使用するように mysecret-registry シークレットを更新します。

    ibmcloud ce secret update --name mysecret-registry --format registry --server <new_server> --username <new_username> --password <password>
    
  2. シークレットが更新されたら、secret get コマンドを使用して特定のシークレットに関する詳細を表示します。 必要に応じて、 --decode オプションを使用して、デコードされた秘密データを表示します。 以下に例を示します。

    ibmcloud ce secret get --name mysecret-registry --decode
    

    出力例

    Getting generic secret 'mysecret-registry'...
    OK
    
    Name:          mysecret-registry
    ID:            abcdefgh-abcd-abcd-abcd-c88e2775388e
    Project Name:  myproject
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           21m
    Created:       2023-03-07 20:00:45 +0000 UTC  
    
    Data:    
    ---
    email: ""
    password: REDACTED
    server: newserver
    username: newuser
    

シークレットの参照

ジョブ、関数、またはアプリは、環境変数を使用することで、シークレットに格納されている情報を消費して使用することができます。

コンソールからのシークレットの参照

コンソールを使って、シークレットを完全に参照したり、シークレット内の個々のキーを参照したりするアプリ、ジョブ、関数の環境変数を作成できます。

シークレットを参照するためには、事前にそれが存在している必要があります。 シークレットの作成を参照してください。 この例では、TARGET=Sunshineのキーと値のペアを使用して、target-secretという名前のシークレットを作成します。

  1. アプリ、ジョブ、および関数から定義済みのシークレットを参照するには、 環境変数を作成します。 環境変数は、既存のシークレットの全体を参照することも、既存のシークレット内の個々のキーを参照することもできます。 シークレット (または configmap) を完全に参照する場合は、オプションでprefixを指定できます。 例えば、myappアプリケーションからmysecretシークレットを完全に参照し、mysecret_接頭部を使用する場合、シークレット内の各キーの接頭部はmysecret_になります。

  2. 環境変数を作成したら、変更を有効にするためにアプリ、ジョブ、関数を再起動する必要があります。 アプリの場合は、アプリを保存してデプロイすることにより、定義した環境変数でアプリを更新します。 ジョブの場合は、ジョブを実行依頼することにより、定義した環境変数でジョブを更新します。

  3. アプリケーション、ジョブ、および機能の状況が 「準備完了」 に変わったら、アプリケーションまたは機能をテストしたり、ジョブを実行したりすることができます。 アプリケーションの場合は、アプリケーションのテストをクリックし、「テスト・アプリケーション」ペインで要求の送信をクリックします。 Web ページでアプリケーションを開くには、**「アプリケーション URL (Application URL)」**をクリックします。 myapp の例では、完全に参照される mysecret シークレットに接頭辞が指定されているため、 このシークレットの鍵はすべて環境変数として参照され、接頭辞は mysecret_ となる。 例えば、これらの環境変数はmysecret_secret1=mysecret1およびmysecret_secret2=mysecret2として表示されます。

シークレットを参照する環境変数を更新する方法については、環境変数の更新および環境変数を更新する際の考慮事項を参照してください。

シークレットを参照する環境変数を削除する方法については、環境変数の削除を参照してください。

例えば、定義済みの mysecret シークレット (コンソールから定義したもの) をジョブで使用し、このシークレット全体を環境変数で参照します。

  1. ジョブを作成して実行します。 この例では、icr.io/codeengine/codeengineイメージを使用するCode Engineジョブを作成してから、そのジョブを実行します。 このサンプルジョブにリクエストが送られると、ジョブは TARGET 環境変数を読み込み、ジョブは Hello ${TARGET} from Code Engine を表示し、環境変数のリストを表示します。 TARGET 環境変数が空の場合は、Hello World from Code Engine が返されます。

    「ジョブ」ページで、以下のようにします。

    1. ジョブを作成します (例: myjob)。
    2. イメージ参照としてicr.io/codeengine/codeengineを指定します。
    3. **「作成」**をクリックして、ジョブを作成します。

    シークレットで使用したいワークロードが既に Code Engine で定義されている場合、アプリケーション、ジョブ、またはファンクションのページに行き、アプリ、ジョブ、またはファンクションの名前をクリックしてコンポーネントを開きます。

  2. ジョブが作成されたら、「ジョブ」ページで、そのジョブの名前をクリックして開きます。

  3. ジョブを更新し、シークレットを環境変数として追加します。 **「環境変数」をクリックしてタブを開き、「追加」**をクリックして環境変数を追加します。

  4. 「環境変数の追加」ページで、以下のようにします。

    1. 以前に定義したシークレットを使用するには、**「シークレットの完全参照 (Reference full secret)」**を選択します。
    2. メニューから、目的のシークレットの名前 (例えば、target-secret) を選択します。
    3. 追加をクリックして環境変数を追加します。
    4. **「保存」**をクリックして、ジョブに対する変更内容を保存します。
  5. シークレットを参照する環境変数を使用してジョブを実行するには、**「ジョブの実行依頼」**をクリックします。 この例では、myjob ジョブ実行のログに Hello Sunshine from Code Engine と表示され、環境変数 (環境変数で参照されるシークレットの値を含む) が出力されます。

CLI を使用したシークレットの参照

アプリ、ジョブ、関数でシークレットを使用するには、シークレットを完全に参照する環境変数を設定するか、CLIでシークレット内の個々のキーを参照します。

CLI を使用した既存のシークレットの参照

以下の例では、汎用シークレットを参照しています。これは、 --format オプションが指定されていない場合のデフォルトのシークレットです。 秘密のカテゴリー ( basic_authgenericsshtlsregistry など) を指定するには、 --format オプションを使用します。

CLIでワークロードにシークレットを使用するには、以下のコマンドで --env-from-secret オプションを指定する。

以下の例では、CLIを使用してジョブで既存のジェネリック・シークレットを参照する方法を説明します。

  1. コマンドを使用する。 secret create コマンドを使用して、このシナリオ用に以下の2つの一般的な秘密を作成する。 デフォルトでは、 --format オプションが指定されていない場合に汎用シークレットが作成されます。

    ibmcloud ce secret create --name myliteralsecret --from-literal "TARGET=My big literal secret"
    
    ibmcloud ce secret create --name myliteralsecret2 --from-literal "TARGET=My little literal secret"
    
  2. ジョブを作成し、myliteralsecret シークレットを参照します。 この例では、icr.io/codeengine/codeengineイメージを使用するCode Engineジョブを作成してから、そのジョブを実行します。 このサンプルジョブにリクエストが送られると、ジョブは TARGET 環境変数を読み込み、ジョブは Hello ${TARGET} from Code Engine を表示し、環境変数のリストを表示します。 TARGET 環境変数が空の場合は、Hello World from Code Engine が返されます。

    ibmcloud ce job create --name myjob --image icr.io/codeengine/codeengine --array-indices 2-3 --env-from-secret myliteralsecret
    
  3. myjob ジョブを実行します。

    ibmcloud ce jobrun submit --name myjobrun --job myjob
    
  4. jobrun get コマンドを使用して、ジョブ実行のインスタンスを含め、ジョブ実行の詳細を表示します。

    ibmcloud ce jobrun get --name myjobrun
    

    出力例

    Getting jobrun 'myjobrun'...
    Getting instances of jobrun 'myjobrun'...
    Getting events of jobrun 'myjobrun'...
    Run 'ibmcloud ce jobrun events -n myjobrun' to get the system events of the job run instances.
    Run 'ibmcloud ce jobrun logs -f -n myjobrun' to follow the logs of the job run instances.
    OK
    
    Name:               myjobrun
    [...]
    Job Ref:                myjob
    Environment Variables:
        Type                   Name          Value
        Secret full reference  myliteralsecret
    Image:                  icr.io/codeengine/codeengine
    Resource Allocation:
        CPU:                1
        Ephemeral Storage:  4G
        Memory:             4G
    
    Runtime:
        Mode:                  task
        Array Indices:         2-3
        Array Size:            2
        JOP_ARRAY_SIZE Value:  2
        Max Execution Time:    7200
        Retry Limit:           3
    
    Status:
        Completed:          9s
        Instance Statuses:
            Succeeded:  2
        Conditions:
            Type      Status  Last Probe  Last Transition
            Pending   True    13s         13s
            Running   True    9s          9s
            Complete  True    9s          9s
    
    Events:
        Type    Reason     Age                Source                Messages
        Normal  Updated    10s (x4 over 14s)  batch-job-controller  Updated JobRun "myjobrun"
        Normal  Completed  10s                batch-job-controller  JobRun completed successfully
    
    Instances:
        Name          Running  Status     Restarts  Age
        myjobrun-2-0  0/1      Succeeded  0         14s
        myjobrun-3-0  0/1      Succeeded  0         14s
    
  5. myjobrun ジョブ実行のログを表示します。 ジョブ実行のすべてのインスタンスのログを表示したり、ジョブ実行の特定のインスタンスのログを表示したりできます。 今度は、ジョブ実行のすべてのインスタンスのログを表示します。 シークレットで環境変数を使用して指定した、Hello my big literal secret! がログに表示されます。 icr.io/codeengine/codeengineイメージを使用して定義されたこのジョブの場合、ジョブ実行の出力には、環境変数で参照されるシークレットの値を含む環境変数が表示されます。

    ibmcloud ce jobrun logs --jobrun myjobrun
    

    出力例

    Getting logs for all instances of job run 'myjobrun'...
    Getting jobrun 'myjobrun'...
    Getting instances of jobrun 'myjobrun'...
    OK
    
    myjobrun-2-0/myjob:
    Hello from helloworld! I'm a batch job! Index: 2
    
    Hello My big literal secret from:
    . ___  __  ____  ____
    ./ __)/  \(    \(  __)
    ( (__(  O )) D ( ) _)
    .\___)\__/(____/(____)
    .____  __ _   ___  __  __ _  ____
    (  __)(  ( \ / __)(  )(  ( \(  __)
    .) _) /    /( (_ \ )( /    / ) _)
    (____)\_)__) \___/(__)\_)__)(____)
    
    Some Env Vars:
    --------------
    HOME=/root
    HOSTNAME=myjobrun-2-0
    JOB_INDEX=2
    KUBERNETES_PORT=tcp://172.21.0.1:443
    KUBERNETES_PORT_443_TCP=tcp://172.21.0.1:443
    KUBERNETES_PORT_443_TCP_ADDR=172.21.0.1
    KUBERNETES_PORT_443_TCP_PORT=443
    KUBERNETES_PORT_443_TCP_PROTO=tcp
    KUBERNETES_SERVICE_HOST=172.21.0.1
    KUBERNETES_SERVICE_PORT=443
    KUBERNETES_SERVICE_PORT_HTTPS=443
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    PWD=/
    SHLVL=1
    TARGET=My big literal secret
    
    myjobrun-3-0/myjob:
    Hello from helloworld! I'm a batch job! Index: 3
    
    Hello My big literal secret from:
    . ___  __  ____  ____
    ./ __)/  \(    \(  __)
    ( (__(  O )) D ( ) _)
    .\___)\__/(____/(____)
    .____  __ _   ___  __  __ _  ____
    (  __)(  ( \ / __)(  )(  ( \(  __)
    .) _) /    /( (_ \ )( /    / ) _)
    (____)\_)__) \___/(__)\_)__)(____)
    
    Some Env Vars:
    --------------
    HOME=/root
    HOSTNAME=myjobrun-3-0
    JOB_INDEX=3
    KUBERNETES_PORT=tcp://172.21.0.1:443
    KUBERNETES_PORT_443_TCP=tcp://172.21.0.1:443
    KUBERNETES_PORT_443_TCP_ADDR=172.21.0.1
    KUBERNETES_PORT_443_TCP_PORT=443
    KUBERNETES_PORT_443_TCP_PROTO=tcp
    KUBERNETES_SERVICE_HOST=172.21.0.1
    KUBERNETES_SERVICE_PORT=443
    KUBERNETES_SERVICE_PORT_HTTPS=443
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    PWD=/
    SHLVL=1
    TARGET=My big literal secret
    
  6. ジョブを再実行依頼し、このジョブ実行に myliteralsecret2 シークレットを使用するように指定します。

    ibmcloud ce jobrun resubmit  --jobrun myjobrun  --name myjobrunresubmit  --env-from-secret myliteralsecret2
    

    シークレットを完全参照する環境変数でジョブ、アプリ、関数を更新して別のシークレットを完全参照する場合、完全参照は設定された順番で他の完全参照を上書きします(最後に参照されたセットが最初に設定されたセットを上書きします)。

  7. jobrun get コマンドを使用して、ジョブ実行のインスタンスを含め、ジョブ実行の詳細を表示します。 ジョブ実行は myliteralsecret シークレットと myliteralsecret2 シークレットの両方を参照することに注意してください。

    ibmcloud ce jobrun get --name myjobrunresubmit
    

    出力例

    Getting jobrun 'myjobrunresubmit'...
    Getting instances of jobrun 'myjobrunresubmit'...
    Getting events of jobrun 'myjobrunresubmit'...
    [...]
    
    Name:          myjobrunresubmit
    ID:            79f01367-932b-4a76-be18-b1e68790a85b
    Project Name:  myproject
    Project ID:    841f0f38-420d-4388-b5d8-f230657d7dc6
    Age:           14s
    Created:       2021-06-15T21:15:37-04:00
    
    Job Ref:                myjob
        Environment Variables:
        Type                   Name              Value
        Secret full reference  myliteralsecret
        Secret full reference  myliteralsecret2
    Image:                  icr.io/codeengine/codeengine
        Resource Allocation:
        CPU:                1
        Ephemeral Storage:  4G
        Memory:             4G
    
    Runtime:
        Mode:                  task
        Array Indices:         2-3
        Array Size:            2
        JOP_ARRAY_SIZE Value:  2
        Max Execution Time:    7200
        Retry Limit:           3
    
    Status:
        Completed:          11s
        Instance Statuses:
            Succeeded:  2
        Conditions:
            Type      Status  Last Probe  Last Transition
            Pending   True    14s         14s
            Running   True    12s         12s
            Complete  True    11s         11s
    
    Events:
        Type    Reason     Age                Source                Messages
        Normal  Updated    13s (x4 over 16s)  batch-job-controller  Updated JobRun "myjobrunresubmit"
        Normal  Completed  13s                batch-job-controller  JobRun completed successfully
    
    Instances:
        Name                  Running  Status     Restarts  Age
        myjobrunresubmit-2-0  0/1      Succeeded  0         16s
        myjobrunresubmit-3-0  0/1      Succeeded  0         16s
    
  8. myjobrunresubmit ジョブ実行のインスタンスのジョブ実行ログを表示します。 今回は、myjobrunresubmit-3-0 インスタンスのログを表示します。 Hello My little literal secret! シークレットに指定する値である myliteralsecret2 がログに表示されます。 jobrun get コマンドを使用して、ジョブ実行における実行中インスタンスを含め、ジョブ実行の詳細を表示します。

    ibmcloud ce jobrun logs --instance myjobrunresubmit-3-0
    

    出力例

    Getting logs for job run instance 'myjobrunresubmit-3-0'...
    OK
    
    myjobrunresubmit-3-0/myjob:
    Hello from helloworld! I'm a batch job! Index: 3
    
    Hello My little literal secret from:
    . ___  __  ____  ____
    ./ __)/  \(    \(  __)
    ( (__(  O )) D ( ) _)
    .\___)\__/(____/(____)
    .____  __ _   ___  __  __ _  ____
    (  __)(  ( \ / __)(  )(  ( \(  __)
    .) _) /    /( (_ \ )( /    / ) _)
    (____)\_)__) \___/(__)\_)__)(____)
    
    Some Env Vars:
    --------------
    HOME=/root
    HOSTNAME=myjobrunresubmit-3-0
    JOB_INDEX=3
    KUBERNETES_PORT=tcp://172.21.0.1:443
    KUBERNETES_PORT_443_TCP=tcp://172.21.0.1:443
    KUBERNETES_PORT_443_TCP_ADDR=172.21.0.1
    KUBERNETES_PORT_443_TCP_PORT=443
    KUBERNETES_PORT_443_TCP_PROTO=tcp
    KUBERNETES_SERVICE_HOST=172.21.0.1
    KUBERNETES_SERVICE_PORT=443
    KUBERNETES_SERVICE_PORT_HTTPS=443
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    PWD=/
    SHLVL=1
    TARGET=My little literal secret
    
  9. シークレット内の、キーと値のペアの値を変更するには、secret update コマンドを使用します。 myliteralsecret キーの値が TARGET から My big literal secret に変更されるように、My new big literal secret シークレットを更新してみましょう。

    ibmcloud ce secret update --name myliteralsecret --from-literal "TARGET=My new big literal secret"
    
  10. ジョブを再実行して、新しいデータを反映させます。 ジョブをもう一度再実行依頼し、このジョブ実行に myliteralsecret シークレットを使用するように指定します。

ibmcloud ce jobrun resubmit  --jobrun myjobrun  --name myjobrunresubmit2 --env-from-secret myliteralsecret
  1. myjobrunresubmit2 ジョブ実行のログを表示します。 今回は、更新された Hello My new big literal secret! シークレット内の値である myliteralsecret がジョブ・ログに表示されます。 jobrun get コマンドを使用して、ジョブ実行における実行中インスタンスを含め、ジョブ実行の詳細を表示できます。 ジョブ実行における任意の実行中インスタンスのログを表示します。
ibmcloud ce jobrun logs --instance myjobrunresubmit2-2-0

出力例

Getting logs for job run instance 'myjobrunresubmit2-2-0'...
OK

myjobrunresubmit2-2-0/myjob:
Hello from helloworld! I'm a batch job! Index: 2

Hello My new big literal secret from:
. ___  __  ____  ____
./ __)/  \(    \(  __)
( (__(  O )) D ( ) _)
.\___)\__/(____/(____)
.____  __ _   ___  __  __ _  ____
(  __)(  ( \ / __)(  )(  ( \(  __)
.) _) /    /( (_ \ )( /    / ) _)
(____)\_)__) \___/(__)\_)__)(____)

Some Env Vars:
--------------
HOME=/root
HOSTNAME=myjobrunresubmit2-2-0
JOB_INDEX=2
KUBERNETES_PORT=tcp://172.21.0.1:443
KUBERNETES_PORT_443_TCP=tcp://172.21.0.1:443
KUBERNETES_PORT_443_TCP_ADDR=172.21.0.1
KUBERNETES_PORT_443_TCP_PORT=443
KUBERNETES_PORT_443_TCP_PROTO=tcp
KUBERNETES_SERVICE_HOST=172.21.0.1
KUBERNETES_SERVICE_PORT=443
KUBERNETES_SERVICE_PORT_HTTPS=443
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/
SHLVL=1
TARGET=My new big literal secret

要約すると、既存のシークレット全体を参照し、シークレット内のキーを更新したので、これで、ジョブでシークレットを使用する方法を表す基本のシナリオを終えたことになります。

CLI を使用した現時点で定義されていないシークレットの参照

シークレットが参照される前に存在しない場合、参照されたシークレットが作成されるまで、アプリは正常にデプロイされず、ジョブや関数も正常に実行されません。

アプリ、ジョブ、または関数で作業しており、参照されるシークレットがまだ定義されていない場合、参照されるシークレットの存在の検証を避けるために --force オプションを使用してください。 --force オプションは、以下のコマンドで使用できます。

これらのコマンドで --force オプションを使用すると、アプリ、ジョブ、または関数を作成、更新、または実行するアクションが完了します。 しかし、アプリ、ジョブ、または関数は、参照されたシークレットが存在するまで正常に実行されません。 コマンドに --force オプションに加えて --no-wait オプションを追加すると、システムはアクションを完了し、アプリ、ジョブ、または関数が正常に実行されるのを待たない。

以下の例は、CLI を使用してジョブでまだ定義されていないシークレットを参照する方法を示しています。

  1. ジョブを作成します。 この例では、icr.io/codeengine/codeengineイメージを使用するCode Engineジョブを作成してから、そのジョブを実行します。 このサンプルジョブにリクエストが送られると、ジョブは TARGET 環境変数を読み込み、ジョブは Hello ${TARGET} from Code Engine を表示し、環境変数のリストを表示します。 TARGET 環境変数が空の場合は、Hello World from Code Engine が返されます。

    ibmcloud ce job create --name myjob --image icr.io/codeengine/codeengine
    
  2. jobrun submit コマンドを使用して、myjob ジョブを実行します。 mynewliteralsecret は存在しないことに注意してください。 **jobrun submit**コマンドで--no-waitオプションを使用すると、ジョブ実行が実行依頼され、このジョブ実行のインスタンスが完了するのを待機しません。

    ibmcloud ce jobrun submit --name myjobrun1 --job myjob --env-from-secret mynewliteralsecret --force --no-wait
    
  3. jobrun get コマンドを使用して、環境変数の情報など、ジョブ実行の詳細を表示します。 ジョブ実行は pending 状況であることに注意してください。

    ibmcloud ce jobrun get --name myjobrun1
    

    出力例

    Getting jobrun 'myjobrun1'...
    Getting instances of jobrun 'myjobrun1'...
    Getting events of jobrun 'myjobrun1'...
    [...]
    
    Name:          myjobrun1
    [...]
    
    Job Ref:                myjob
    Environment Variables:
        Type                   Name                Value
        Secret full reference  mynewliteralsecret
    Image:                  icr.io/codeengine/codeengine
    Resource Allocation:
        CPU:                1
        Ephemeral Storage:  400M
        Memory:             4G
    
    Runtime:
        Mode:                  task
        Array Indices:         0
        Array Size:            1
        JOP_ARRAY_SIZE Value:  1
        Max Execution Time:    7200
        Retry Limit:           3
    
    Status:
        Instance Statuses:
            Pending:  1
        Conditions:
            Type     Status  Last Probe  Last Transition
            Pending  True    100s        100s
    
    Events:
        Type    Reason   Age                   Source                Messages
        Normal  Updated  108s (x5 over 2m29s)  batch-job-controller  Updated JobRun "myjobrun1"
    
    Instances:
        Name           Running  Status   Restarts  Age
        myjobrun1-0-0  0/1      Pending  0         2m29s
    
  4. シークレットを作成します。

    ibmcloud ce secret create --name mynewliteralsecret --from-literal "TARGET=Fun secret"
    
  5. myjobrun1 ジョブ実行を再実行します。

    ibmcloud ce jobrun resubmit --jobrun myjobrun1 --name myjobrunresubmit1
    

    ibmcloud ce jobrun get -n myjobrunresubmit1 コマンドを実行して、このジョブ実行の状況を確認します。

  6. myjobrunresubmit1 ジョブ実行のログを表示します。 ログに Hello Fun secret from Code Engine と表示されます。これは、ジョブ実行が myliteralsecret シークレットを参照したことを確認するものです。

    ibmcloud ce jobrun logs --jobrun myjobrunresubmit1
    

    出力例

    Getting logs for all instances of job run 'myjobrunresubmit1'...
    Getting jobrun 'myjobrunresubmit1'...
    Getting instances of jobrun 'myjobrunresubmit1'...
    OK
    
    myjobrunresubmit1-0-0/myjob:
    Hello from helloworld! I'm a batch job! Index: 0
    
    Hello Fun secret from:
    . ___  __  ____  ____
    ./ __)/  \(    \(  __)
    ( (__(  O )) D ( ) _)
    .\___)\__/(____/(____)
    .____  __ _   ___  __  __ _  ____
    (  __)(  ( \ / __)(  )(  ( \(  __)
    .) _) /    /( (_ \ )( /    / ) _)
    (____)\_)__) \___/(__)\_)__)(____)
    
    Some Env Vars:
    --------------
    HOME=/root
    HOSTNAME=myjobrunresubmit1-0-0
    JOB_INDEX=0
    KUBERNETES_PORT=tcp://172.21.0.1:443
    KUBERNETES_PORT_443_TCP=tcp://172.21.0.1:443
    KUBERNETES_PORT_443_TCP_ADDR=172.21.0.1
    KUBERNETES_PORT_443_TCP_PORT=443
    KUBERNETES_PORT_443_TCP_PROTO=tcp
    KUBERNETES_SERVICE_HOST=172.21.0.1
    KUBERNETES_SERVICE_PORT=443
    KUBERNETES_SERVICE_PORT_HTTPS=443
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    PWD=/
    SHLVL=1
    TARGET=Fun secret
    

CLI でシークレットおよび構成マップの全体を環境変数として参照したり、参照先データをオーバーライドしたり、参照先データを削除したりすることに関する、より詳細なシナリオについては、シークレットおよび構成マップの参照 (Referencing secrets and configmaps) を参照してください。

シークレットの削除

秘密が必要なくなったら、削除することができます。

コンソールから秘密を削除する

  1. コンソールから秘密を削除するには
    1. Code Engine Projects ページからSecrets and configmapsページにアクセスしてください。
    2. 削除したい秘密をクリックして、そのページを開きます。
    3. 特定のシークレットのページで、 「アクション」>「シークレットの削除」 をクリックします。
  2. コンソールから特定の秘密のキーと値のペアを削除する、
    1. Code Engine Projects ページからSecrets and configmapsページにアクセスしてください。
    2. 変更したいシークレットをクリックして、そのページを開きます。
    3. 特定の秘密のページから、削除したいキーと値のペアを削除します。

シークレットや構成マップを参照する定義済みの環境変数を削除することもできます。 定義された環境変数を削除するには、アプリ、ジョブ、または関数の環境変数タブから、削除したい環境変数を削除します。 定義された環境変数を削除したら、必ず Saveをクリックしてアプリ、ジョブ、または関数に変更を保存してください。 詳しくは、環境変数の削除を参照してください。

CLIによるシークレットの削除

CLI でシークレットを削除するには、secret delete コマンドを使用します。以下に例を示します。

ibmcloud ce secret delete --name myliteralsecret -f

出力例

Deleting secret myliteralsecret...
OK

CLI を使用して、シークレットや構成マップを参照する環境変数を削除することもできます。