シークレットの操作
Code Engineでシークレットを処理する方法について説明します。 Code Engine では、環境変数を使用することで、関数やジョブ、アプリケーションで消費できる情報をキーと値のペアとしてシークレットに格納することができます。
秘密とは何か?
Code Engineでは、秘密 (および configmap) はキーと値のペアの集合です。 環境変数にマップされると、環境変数の名前がマップの各項目の「キー」に対応し、環境変数の値がそのキーの「値」になるように NAME=VALUE
の関係が設定されます。
シークレットを使用して、機密性の高い構成情報 (パスワードや SSH 鍵など) をデプロイメントに含めることができます。 シークレットから値を参照することで、デプロイメントから機密情報を切り離し、アプリ、関数、ジョブの移植性を保つことができます。 プロジェクトに対する権限が与えられていれば、どのユーザーもシークレットを表示することができます。したがって、それらのユーザーとシークレット情報が共有される可能性があることを知っておいてください。 シークレットには、キーと値のペアで情報が格納されます。
シークレットとコンフィグマップは似たようなものなので(シークレットがより安全に保存されることを除けば)、シークレットとコンフィグマップの扱い方も似ています。 構成マップについて詳しくは、 構成マップの操作 を参照してください。
Code Engineではどのような種類のシークレットを作成できますか?
Code Engine は、さまざまなシークレットをサポートし、シークレットを作成して処理するためのオプションを提供します。
以下の表に、 Code Engineでサポートされるシークレットを要約します。
名前 | 説明 |
---|---|
基本認証 | username キーと password キーを含むシークレット。ベーシック認証シークレットは、ベーシック認証( HTTP )を必要とするサービスにアクセスするときに使用する。 |
一般 | 単純なキーと値のペアおよび Code Engine を保管するシークレットは、定義されたキーと値のペアについても、シークレットの用途についても想定しません。 サービスにアクセスするための独自のキーと値のペアを定義する場合は、汎用シークレットを使用します。 |
HMAC | access-key-id 、 secret_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 コンソールから、関数、ジョブ、またはアプリで環境変数として使用できる汎用シークレットを作成する方法を学びます。
始めに、プロジェクトを作成します。
- プロジェクトが Active ステータスになったら、 Code Engine Projectsページでプロジェクト名をクリックします。
- 「コンポーネント」ページで、**「シークレットおよび構成マップ (Secrets and configmaps)」**をクリックします。
- 「シークレットおよび構成マップ (Secrets and configmaps)」ページで**「作成」**をクリックして、シークレットを作成します。
- 「シークレットまたは構成マップの作成 (Create secret or configmap)」ページで、以下の手順を実行します。
- 「汎用シークレット」 を選択し、 「次へ」 をクリックします。
- 例えば、
mysecret-generic
。 - **「キーと値のペアを追加 (Add key-value pair)」**をクリックします。 このシークレットのキーと値のペアを 1 つ以上指定します。 例えば、1つのキーを
mysecret1
の値でsecret1
と指定し、もう1つのキーをtarget-secret
の値でsecret2
と指定する。 キーに使用する名前は、環境変数の名前と同じである必要はありません。 キーの値は非表示になっていますが、必要に応じて表示できます。 - **「作成」**をクリックして、シークレットを作成します。
シークレットがコンソールから作成されたので、シークレットとコンフィグマップページに行き、定義されたシークレットとコンフィグマップのリストを見る。 必要に応じて、フィルターを適用してリストをカスタマイズすることができます。
コンソールからHMACシークレットを作成する
Code Engine コンソールから HMAC シークレットを作成し、環境変数としてファンクション、ジョブ、またはアプリで使用する方法について説明します。 これらは、認証を必要とするが、 IBM Cloud® Identity and Access Management APIキーをサポートしていない S3-compatible ツールやライブラリで使用される。
始めに、プロジェクトを作成します。
- プロジェクトが Active ステータスになったら、 Code Engine Projectsページでプロジェクト名をクリックします。
- 「コンポーネント」ページで、**「シークレットおよび構成マップ (Secrets and configmaps)」**をクリックします。
- 「シークレットおよび構成マップ (Secrets and configmaps)」ページで**「作成」**をクリックして、シークレットを作成します。
- 「シークレットまたは構成マップの作成 (Create secret or configmap)」ページで、以下の手順を実行します。
- HMACシークレットを選択し、 Nextをクリックする。
- 例えば、
mysecret-hmac
。 - アクセスキーIDを指定します。
- シークレットアクセスキーを指定します。 キーの値は非表示になっていますが、必要に応じて表示できます。
- **「作成」**をクリックして、シークレットを作成します。
シークレットがコンソールから作成されたので、シークレットとコンフィグマップページに行き、定義されたシークレットとコンフィグマップのリストを見る。 必要に応じて、フィルターを適用してリストをカスタマイズすることができます。
HMACシークレットの詳細については、 IBM Cloud Object Storage- API Key vs HMACを 参照のこと。
コンソールからレジストリ秘密を作成する
Code Engine コンソールからレジストリー・シークレットを作成する方法について説明します。このコンソールは、コンテナー・イメージをプルまたはプッシュするためのアクセスのために、機能、ジョブ、アプリ、またはビルドによって取り込むことができます。
始めに、プロジェクトを作成します。
- プロジェクトが Active ステータスになったら、 Code Engine Projectsページでプロジェクト名をクリックします。
- 「コンポーネント」ページで、**「シークレットおよび構成マップ (Secrets and configmaps)」**をクリックします。
- 「シークレットおよび構成マップ (Secrets and configmaps)」ページで**「作成」**をクリックして、シークレットを作成します。
- 「シークレットまたは構成マップの作成 (Create secret or configmap)」ページで、以下の手順を実行します。
- 「レジストリー・シークレット」 を選択し、 「次へ」 をクリックします。
- 例えば、
mysecret-registry
。 - このシークレットのターゲット・レジストリー ( IBM Cloud Container Registry や Docker Hub など) を指定します。
- レジストリーの場所を指定します。
- ユーザー名を指定します。 このシークレットが IBM Cloud Container Registry用である場合、ユーザー名は
iamapikey
です。 このシークレットが Docker Hub 用の場合は、 Docker ID です。 - ユーザー名の資格情報を入力します。 IBM Cloud Container Registryでは、IAM API キーを使用します。 Docker Hub の場合は、ご使用の Docker Hub パスワードかアクセス・トークンを使用できます。 その他のターゲット・レジストリーの場合は、ユーザー名のパスワードまたは API キーを指定します。
- **「作成」**をクリックして、シークレットを作成します。
シークレットがコンソールから作成されたので、シークレットとコンフィグマップページに行き、定義されたシークレットとコンフィグマップのリストを見る。 必要に応じて、フィルターを適用してリストをカスタマイズすることができます。
イメージ・レジストリーの処理について詳しくは、 コンテナー・レジストリーへのアクセス を参照してください。
コンソールからの SSH シークレットの作成
プライベート・ソース・コード・リポジトリーにアクセスするためにビルドで使用できる SSH シークレットをコンソールから作成する方法について説明します。 SSH 秘密鍵は、 GitHub や GitLabなどの Git リポジトリーへの認証など、SSH 鍵を使用してサービスに対して認証するための資格情報を保管します。
始めに、プロジェクトを作成します。
- プロジェクトが Active ステータスになったら、 Code Engine Projectsページでプロジェクト名をクリックします。
- 「コンポーネント」ページで、**「シークレットおよび構成マップ (Secrets and configmaps)」**をクリックします。
- 「シークレットおよび構成マップ (Secrets and configmaps)」ページで**「作成」**をクリックして、シークレットを作成します。
- 「シークレットまたは構成マップの作成 (Create secret or configmap)」ページで、以下の手順を実行します。
- 「SSH シークレット」 を選択し、 「次へ」 をクリックします。
- 例えば、
mysecret-ssh
。 - このシークレットの SSH 秘密鍵を追加します。
- **「作成」**をクリックして、シークレットを作成します。
シークレットがコンソールから作成されたので、シークレットとコンフィグマップページに行き、定義されたシークレットとコンフィグマップのリストを見る。 必要に応じて、フィルターを適用してリストをカスタマイズすることができます。
Git リポジトリーなどのプライベート・コード・リポジトリーで作業する場合は、SSH シークレットを使用します。 プライベート・コード・リポジトリーへのアクセスを参照してください。
コンソールからTLSシークレットを作成する
Code Engineでカスタム・ドメイン・マッピングを操作するときにアプリで使用できる TLS シークレットをコンソールから作成する方法について説明します。 Transport Layer Security (TLS) シークレットには、署名付き TLS 証明書が含まれます。これには、すべての中間証明書と、認証局 (CA) からの対応する秘密鍵が含まれます。
始めに、プロジェクトを作成します。
- プロジェクトが Active ステータスになったら、 Code Engine Projectsページでプロジェクト名をクリックします。
- 「コンポーネント」ページで、**「シークレットおよび構成マップ (Secrets and configmaps)」**をクリックします。
- 「シークレットおよび構成マップ (Secrets and configmaps)」ページで**「作成」**をクリックして、シークレットを作成します。
- 「シークレットまたは構成マップの作成 (Create secret or configmap)」ページで、以下の手順を実行します。
- 「TLS シークレット」 を選択し、 「次へ」 をクリックします。
- 例えば、
mysecret-tls
。 - 証明書チェーンとその秘密鍵を追加します。 各証明書を新しい行で始めると、連結できることに注意。 この情報はファイルに指定できます。
- **「作成」**をクリックして、シークレットを作成します。
シークレットがコンソールから作成されたので、シークレットとコンフィグマップページに行き、定義されたシークレットとコンフィグマップのリストを見る。 必要に応じて、フィルターを適用してリストをカスタマイズすることができます。
Code Engineで カスタム・ドメイン・マッピング を処理する場合は、TLS シークレットを使用します。
CLIで秘密を作成する
Code Engine 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.txt
、sec1=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-id
と secret_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
シークレットの更新
既存のシークレットのキーと値のペアを変更することができます。
コンソールからのシークレットの更新
定義済みのシークレットのキーと値のペアをコンソールから更新できます。
-
以下のいずれかの方法で、定義済みのシークレットのキーと値のペアをコンソールから更新できます。
- プロジェクトの「シークレットおよび構成マップ (Secrets and configmaps)」ページに移動し、更新するシークレットを見つけます。 更新するシークレットの名前をクリックして開きます。
- あなたのシークレットがアプリ、ジョブ、または関数によって参照される場合は、アプリ、ジョブ、または関数の環境変数タブにある環境変数テーブルのリンクを使用してください。 これらのリンクは、あなたのシークレットに直接つながります。 あるいは、プロジェクトの「シークレットおよび構成マップ (Secrets and configmaps)」ページに移動し、更新するシークレットを見つける方法もあります。 更新するシークレットの名前をクリックして開きます。
-
**「編集」**をクリックして、シークレットを更新します。
-
**「保存」**をクリックして、シークレットに対する変更内容を保存します。
更新されたシークレットがジョブ、機能、またはアプリによって参照されている場合、新しいデータを有効にするにはジョブ、機能、またはアプリを再起動する必要があります。
- アプリ - アプリのページで、**「新規リビジョン (New revision)」をクリックし、「保存してデプロイ (Save and deploy)」**をクリックします。 あるいは、アプリがゼロにスケーリングされるのを待つこともできます。これは、アプリがスケールアップすると、アプリは更新されたシークレットを使用するようになります。
- ジョブ - ジョブのページで**「ジョブの実行依頼」**をクリックしてジョブを実行します。または、ジョブを再実行することもできます。 この新しいジョブ実行で、更新されたシークレットが使用されます。
- 関数-関数のページから、 「関数のテスト」 をクリックします。 ブラウザで URL を開いている場合は、ブラウザを更新してください。
CLI でのシークレットの更新
CLI を使用して、既存のシークレットおよびそのキーと値のペアを更新できます。
-
定義済みのシークレット内の、キーと値のペアの値を変更するには、
secret update
コマンドを使用します。 別のサーバーを使用するようにmysecret-registry
シークレットを更新します。ibmcloud ce secret update --name mysecret-registry --format registry --server <new_server> --username <new_username> --password <password>
-
シークレットが更新されたら、
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
という名前のシークレットを作成します。
-
アプリ、ジョブ、および関数から定義済みのシークレットを参照するには、 環境変数を作成します。 環境変数は、既存のシークレットの全体を参照することも、既存のシークレット内の個々のキーを参照することもできます。 シークレット (または configmap) を完全に参照する場合は、オプションで
prefix
を指定できます。 例えば、myapp
アプリケーションからmysecret
シークレットを完全に参照し、mysecret_
接頭部を使用する場合、シークレット内の各キーの接頭部はmysecret_
になります。 -
環境変数を作成したら、変更を有効にするためにアプリ、ジョブ、関数を再起動する必要があります。 アプリの場合は、アプリを保存してデプロイすることにより、定義した環境変数でアプリを更新します。 ジョブの場合は、ジョブを実行依頼することにより、定義した環境変数でジョブを更新します。
-
アプリケーション、ジョブ、および機能の状況が 「準備完了」 に変わったら、アプリケーションまたは機能をテストしたり、ジョブを実行したりすることができます。 アプリケーションの場合は、アプリケーションのテストをクリックし、「テスト・アプリケーション」ペインで要求の送信をクリックします。 Web ページでアプリケーションを開くには、**「アプリケーション URL (Application URL)」**をクリックします。
myapp
の例では、完全に参照されるmysecret
シークレットに接頭辞が指定されているため、 このシークレットの鍵はすべて環境変数として参照され、接頭辞はmysecret_
となる。 例えば、これらの環境変数はmysecret_secret1=mysecret1
およびmysecret_secret2=mysecret2
として表示されます。
シークレットを参照する環境変数を更新する方法については、環境変数の更新および環境変数を更新する際の考慮事項を参照してください。
シークレットを参照する環境変数を削除する方法については、環境変数の削除を参照してください。
例えば、定義済みの mysecret
シークレット (コンソールから定義したもの) をジョブで使用し、このシークレット全体を環境変数で参照します。
-
ジョブを作成して実行します。 この例では、
icr.io/codeengine/codeengine
イメージを使用するCode Engineジョブを作成してから、そのジョブを実行します。 このサンプルジョブにリクエストが送られると、ジョブはTARGET
環境変数を読み込み、ジョブはHello ${TARGET} from Code Engine
を表示し、環境変数のリストを表示します。TARGET
環境変数が空の場合は、Hello World from Code Engine
が返されます。「ジョブ」ページで、以下のようにします。
- ジョブを作成します (例:
myjob
)。 - イメージ参照として
icr.io/codeengine/codeengine
を指定します。 - **「作成」**をクリックして、ジョブを作成します。
シークレットで使用したいワークロードが既に Code Engine で定義されている場合、アプリケーション、ジョブ、またはファンクションのページに行き、アプリ、ジョブ、またはファンクションの名前をクリックしてコンポーネントを開きます。
- ジョブを作成します (例:
-
ジョブが作成されたら、「ジョブ」ページで、そのジョブの名前をクリックして開きます。
-
ジョブを更新し、シークレットを環境変数として追加します。 **「環境変数」をクリックしてタブを開き、「追加」**をクリックして環境変数を追加します。
-
「環境変数の追加」ページで、以下のようにします。
- 以前に定義したシークレットを使用するには、**「シークレットの完全参照 (Reference full secret)」**を選択します。
- メニューから、目的のシークレットの名前 (例えば、
target-secret
) を選択します。 - 追加をクリックして環境変数を追加します。
- **「保存」**をクリックして、ジョブに対する変更内容を保存します。
-
シークレットを参照する環境変数を使用してジョブを実行するには、**「ジョブの実行依頼」**をクリックします。 この例では、
myjob
ジョブ実行のログにHello Sunshine from Code Engine
と表示され、環境変数 (環境変数で参照されるシークレットの値を含む) が出力されます。
CLI を使用したシークレットの参照
アプリ、ジョブ、関数でシークレットを使用するには、シークレットを完全に参照する環境変数を設定するか、CLIでシークレット内の個々のキーを参照します。
CLI を使用した既存のシークレットの参照
以下の例では、汎用シークレットを参照しています。これは、 --format
オプションが指定されていない場合のデフォルトのシークレットです。 秘密のカテゴリー ( basic_auth
、 generic
、 ssh
、 tls
、 registry
など) を指定するには、 --format
オプションを使用します。
CLIでワークロードにシークレットを使用するには、以下のコマンドで --env-from-secret
オプションを指定する。
以下の例では、CLIを使用してジョブで既存のジェネリック・シークレットを参照する方法を説明します。
-
コマンドを使用する。
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"
-
ジョブを作成し、
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
-
myjob
ジョブを実行します。ibmcloud ce jobrun submit --name myjobrun --job myjob
-
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
-
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
-
ジョブを再実行依頼し、このジョブ実行に
myliteralsecret2
シークレットを使用するように指定します。ibmcloud ce jobrun resubmit --jobrun myjobrun --name myjobrunresubmit --env-from-secret myliteralsecret2
シークレットを完全参照する環境変数でジョブ、アプリ、関数を更新して別のシークレットを完全参照する場合、完全参照は設定された順番で他の完全参照を上書きします(最後に参照されたセットが最初に設定されたセットを上書きします)。
-
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
-
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
-
シークレット内の、キーと値のペアの値を変更するには、
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"
-
ジョブを再実行して、新しいデータを反映させます。 ジョブをもう一度再実行依頼し、このジョブ実行に
myliteralsecret
シークレットを使用するように指定します。
ibmcloud ce jobrun resubmit --jobrun myjobrun --name myjobrunresubmit2 --env-from-secret myliteralsecret
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 を使用してジョブでまだ定義されていないシークレットを参照する方法を示しています。
-
ジョブを作成します。 この例では、
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
-
jobrun submit
コマンドを使用して、myjob
ジョブを実行します。mynewliteralsecret
は存在しないことに注意してください。 **jobrun submit
**コマンドで--no-wait
オプションを使用すると、ジョブ実行が実行依頼され、このジョブ実行のインスタンスが完了するのを待機しません。ibmcloud ce jobrun submit --name myjobrun1 --job myjob --env-from-secret mynewliteralsecret --force --no-wait
-
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
-
シークレットを作成します。
ibmcloud ce secret create --name mynewliteralsecret --from-literal "TARGET=Fun secret"
-
myjobrun1
ジョブ実行を再実行します。ibmcloud ce jobrun resubmit --jobrun myjobrun1 --name myjobrunresubmit1
ibmcloud ce jobrun get -n myjobrunresubmit1
コマンドを実行して、このジョブ実行の状況を確認します。 -
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) を参照してください。
シークレットの削除
秘密が必要なくなったら、削除することができます。
コンソールから秘密を削除する
- コンソールから秘密を削除するには
- Code Engine Projects ページからSecrets and configmapsページにアクセスしてください。
- 削除したい秘密をクリックして、そのページを開きます。
- 特定のシークレットのページで、 「アクション」>「シークレットの削除」 をクリックします。
- コンソールから特定の秘密のキーと値のペアを削除する、
- Code Engine Projects ページからSecrets and configmapsページにアクセスしてください。
- 変更したいシークレットをクリックして、そのページを開きます。
- 特定の秘密のページから、削除したいキーと値のペアを削除します。
シークレットや構成マップを参照する定義済みの環境変数を削除することもできます。 定義された環境変数を削除するには、アプリ、ジョブ、または関数の環境変数タブから、削除したい環境変数を削除します。 定義された環境変数を削除したら、必ず Saveをクリックしてアプリ、ジョブ、または関数に変更を保存してください。 詳しくは、環境変数の削除を参照してください。
CLIによるシークレットの削除
CLI でシークレットを削除するには、secret delete
コマンドを使用します。以下に例を示します。
ibmcloud ce secret delete --name myliteralsecret -f
出力例
Deleting secret myliteralsecret...
OK
CLI を使用して、シークレットや構成マップを参照する環境変数を削除することもできます。