環境変数の処理
Code Engineで環境変数 (env variables
) を処理する方法について説明します。 環境変数は、アプリケーション、ジョブ、または関数で使用できるキーと値のペアとして設定できます。
環境変数の作成と更新
Code Engine を使用して環境変数を作成および管理します。
環境変数はリテラル値として定義することもできますし、既存のシークレットやコンフィグマップを参照することもできます。 Code Engine は環境変数を使用して、 シークレットや コンフィグマップを ジョブ、アプリケーション、または関数で使用できるようにします。
コンソールからの環境変数の作成
Code Engine コンソールを使用して、環境変数を作成および更新します。
コンソールからアプリ、ジョブ、または機能を作成または更新するときに、環境変数を定義できます。
開始前に
- プロジェクトを作成 する必要があり、 プロジェクト の状況が
active
でなければなりません。 - リテラル環境変数を作成するか、既存のシークレットまたは構成マップを参照する環境変数を作成するかを決定します。 環境変数が既存のシークレットまたは構成マップの全体を参照するように設定するか、既存のシークレットまたは構成マップ内の個々のキーを参照するように設定するには、シークレットまたは構成マップが存在している必要があります。 先に進む前に、シークレットの作成または 構成マップの作成を参照して、シークレットや構成マップを定義してください。
-
「環境変数の追加」ページで環境変数を定義するダイアログを開くには、以下のいずれかを行います。
- 「アプリケーションの作成」ページからアプリを作成する場合は、**「環境変数 (オプション)(Environment variables (optional))」**セクションを展開します。 作成するアプリに、1 つ以上の環境変数を追加できます。 **「追加」**をクリックし、「環境変数の追加」ページを開きます。
- 「ジョブの作成 (Create job)」ページからジョブを作成する場合は、**「環境変数 (オプション)(Environment variables (optional))」**セクションを展開します。 **「追加」**をクリックし、「環境変数の追加」ページを開きます。
- 関数を作成する 場合は、関数の作成ページから環境変数(オプション) セクションを展開します。 **「追加」**をクリックし、「環境変数の追加」ページを開きます。
- 既存のワークロードを更新して環境変数を追加する場合は、既存のアプリ、ジョブ、または機能に移動します。 Configuration] タブで [Environment variables ]をクリックします。 アプリ、ジョブ、および機能の場合は、 「環境変数の追加」 をクリックして「環境変数の追加」ページを開きます。
-
「環境変数の追加」ページで、以下のいずれかの方法で環境変数を作成します。
- _リテラル_環境変数を作成するには、
Literal value
を選択し、リテラル環境変数の名前を指定し、値を指定します。Resulting definition
セクションには、環境変数の名前とその値が表示されます。 - _構成マップを完全に参照する_という環境変数を作成するには、
Reference full configmap
を選択してから、既存の構成マップを選択します。 この場合、選択する構成マップのすべてのキーが環境変数の一部として参照されます。Resulting definition
セクションには、構成マップ内のキーの名前が表示されますが、構成マップ内で参照されるキーの実際の値は表示されません。 - _定義された構成マップの個々のキーを参照する_環境変数を作成するには、
Reference key in configmap
を選択し、必要な既存の構成マップを選択してから、環境変数の一部として参照するキーを選択します。 参照する構成マップ内の個々のキーを選択した後、Resulting definition
セクションには、構成マップ内の選択したキーの名前が表示されますが、構成マップ内で参照されるキーの実際の値は表示されません。 - _シークレットを完全に参照する_という環境変数を作成するには、
Reference full secret
を選択してから、既存のシークレットを選択します。 この場合、選択するシークレットのすべてのキーが環境変数の一部として参照されます。Resulting definition
セクションには、シークレット内のキーの名前が表示されますが、シークレット内で参照されるキーの実際の値は表示されません。 - _定義されたシークレットの個々のキーを参照する_環境変数を作成するには、
Reference key in secret
を選択し、必要な既存のシークレットを選択してから、環境変数の一部として参照するキーを選択します。 参照するシークレット内の個々のキーを選択した後、Resulting definition
セクションには、シークレット内の選択したキーの名前が表示されますが、シークレット内で参照されるキーの実際の値は表示されません。
コンソールからは、環境変数ごとに、定義済みの構成マップまたはシークレットの個々のキーを 1 つだけ参照できます。 構成マップまたはシークレットの複数のキーを参照する必要がある場合は、手順を繰り返して、別のキーを参照する別の環境変数を定義してください。
- _リテラル_環境変数を作成するには、
-
**「完了 (Done)」をクリックして変更を保存します。 このアクションにより、「環境変数」タブのテーブルに環境変数が追加されます。 引き続き環境変数を追加するには、「追加」**をクリックします。
-
定義された環境変数を使って、アプリ、ジョブ、または関数の作成または更新を完了します。
- ワークロードを作成する場合は、 「作成」 をクリックすると、アプリ、ジョブ、または機能が環境変数とともにデプロイされます。
- 既存のアプリ、ジョブ、または関数を更新して環境変数を追加する場合は、 [Save and deploy ]をクリックしてアプリを更新するか、[ Save] をクリックしてジョブまたは関数を新しい環境変数で更新します。
-
アプリ、ジョブ、または関数が
Ready
状態になると、環境変数で更新されます。
次の表に、環境変数に関する情報を示します。
ヘッダー | 説明 |
---|---|
Name |
環境変数の名前。 |
Defined by |
環境変数が、literal タイプか、シークレットまたは構成マップの全体を参照するか、特定のキーを参照するか、を指定します。 |
Value or reference |
リテラル値、全体が参照される構成マップまたはシークレット、または構成マップまたはシークレットの参照キーを表示します。 |
例えば、アプリを作成し、そのアプリに環境変数を設定してみましょう。
icr.io/codeengine/codeengine
イメージを使用するmyapp
という名前のアプリの作成をします。 このhello-world
アプリにはTARGET
環境変数が含まれており、アプリはHello ${TARGET} from Code Engine
と、環境変数のリストを出力します。TARGET
環境変数が空の場合は、Hello World from Code Engine
が返されます。- コンソールでこのアプリに移動します。
- アプリの状態が
Ready
になったら、アプリをテストできます。 **「アプリケーションのテスト (Test application)」をクリックしてから、「アプリケーションのテスト (Test application)」ペインで「要求の送信」をクリックします。 Web ページでアプリケーションを開くには、「アプリケーション URL (Application URL)」**をクリックします。myapp
アプリはHello World from Code Engine
応答を返し、このアプリに含まれている環境変数を出力します。 - **「環境変数」**タブをクリックします。
- 以下の環境変数を作成します。
- 追加をクリックして「環境変数の追加」ページを開き、_リテラル_環境変数を作成します。 例えば、
literalenvvar
という名前の、This is my literal
という値を持つリテラル環境変数を作成します。 **「完了 (Done)」**をクリックして変更を保存します。 - 追加 をクリックして「環境変数の追加」ページを開き、_構成マップを完全に参照する_環境変数を作成します。 構成マップを参照するためには、事前にそれが存在している必要があります。 この例では、
mycolorconfigmap
という名前の構成マップが存在し、キー値ペアkey1=blue
、key2=green
、およびkey3=yellow
が含まれています。 すべてのキーと値のペアを含め、mycolorconfigmap
構成マップを完全に参照する環境変数を作成します。Resulting definition
セクションには、構成マップ内のキーの名前が表示されますが、構成マップ内で参照されるキーの実際の値は表示されません。 **「完了 (Done)」**をクリックして変更を保存します。 - 追加 をクリックして「環境変数の追加」ページを開き、_定義されたシークレットの個々のキーを参照する_別の環境変数を作成します。 シークレットを参照するためには、事前にそれが存在している必要があります。 この例では、
mynewsecret
という名前のシークレットが存在し、キー値ペアnewsec1=mynewsecret1
、newsec2=mynewsecret2
、およびnewsec3=mynewsecret3
が含まれています。newsec2
シークレットのmynewsecret
キーを参照する環境変数を作成します。Resulting definition
セクションには、シークレット内の選択したキーの名前が表示されますが、シークレット内で参照されるキーの実際の値は表示されません。 **「完了 (Done)」**をクリックして変更を保存します。
- 追加をクリックして「環境変数の追加」ページを開き、_リテラル_環境変数を作成します。 例えば、
- **「保存して作成 (Save and create)」**をクリックして、アプリを新しい環境変数で更新します。
- アプリの状態が
Ready
になると、アプリが対象の環境変数で更新されます。 - アプリをテストするには、**「アプリケーションのテスト (Test application)」をクリックしてから、「アプリケーションのテスト (Test application)」ペインで「要求の送信」をクリックします。 Web ページでアプリケーションを開くには、「アプリケーション URL (Application URL)」**をクリックします。 このアプリのリビジョンでは、
Hello World from Code Engine
が出力され、出力には前のステップで追加した環境変数の名前が含まれます。
ワークロードで環境変数を設定する場合、このアクションは新しい環境変数を追加するか、既存の環境変数を上書きします。 同じ_名前の_環境変数があり、以前に定義した環境変数と異なる_値を_指定した場合、更新された環境変数は既存の値を上書きする。 例えば、envvar1
という値を持つ myenvar1
という名前の定義済み環境変数があるとします。envvar1
という同じ名前の別の環境変数を定義し、その値に
mynewenvvar1
を指定します。このときに、更新したアプリを保存してデプロイするか、更新したジョブを保存すると、実行するアプリ、またはジョブは値 envvar1
のmynewenvvar1
環境変数を使用します。
コンソールからの環境変数の更新
- 既存の環境変数を更新するには、変更したい環境変数を含むアプリ、ジョブ、または関数に移動し、 環境変数タブをクリックして環境変数のテーブルを表示します。
- 環境変数の表で、更新する環境変数をクリックします。
- 「環境変数の編集 (Edit environment variable)」ページで、更新を行い、**「完了」をクリックして変更を保存します。 環境変数を編集するときに、「定義元 (Defined by)」**値とそれに対応する必須フィールドを変更できます。
- **「保存してデプロイ (Save and deploy)」をクリックして変更済みの内容でアプリケーションをデプロイするか、「保存」**をクリックして変更済みの内容でジョブを実行します。 アプリまたはジョブの状態が
Ready
になっていれば、アプリまたはジョブは新しい環境変数を使用して更新されています。
CLI での環境変数の作成と更新
Code Engine CLI を使用して、環境変数を作成および管理します。
CLI を使用してアプリ、ジョブ、または関数を作成または更新するときに、環境変数を定義できます。
CLI を使用して環境変数を作成する場合、構成マップまたはシークレットを参照するか、リテラル環境変数を作成することができます。 これらの説明では、CLIを使ったリテラル環境変数の作成と更新について説明します。
CLI でシークレットおよび構成マップの全体を環境変数として参照したり、参照先データをオーバーライドしたり、参照先データを削除したりすることに関する、詳細なシナリオについては、シークレットおよび構成マップの参照 (Referencing secrets and configmaps) を参照してください。
開始前に
- Code Engine の CLI 環境をセットアップします。
- プロジェクトを作成して使用できるようにします。
アプリの環境変数の作成および更新
以下の手順に従って、アプリの環境変数を作成および更新します。
-
アプリの環境変数を作成および設定するには、
--env
コマンドまたはapp create
コマンドでapp update
オプションを使用します。 以下の例では、icr.io/codeengine/codeengine
イメージを使用するmyapp
アプリケーションを作成し、envA
環境変数とenvB
環境変数を定義します。ibmcloud ce application create --name myapp --image icr.io/codeengine/codeengine --env envA=A --env envB=B
-
既存のアプリケーションの環境変数を更新するには、
app update
コマンドで--env
オプションを使用します。 以下の例では、myapp
アプリケーションを更新してenvA
の値を上書きし、envC
環境変数を追加します。ibmcloud ce application update --name myapp --env envA=AA --env envC=C
ジョブの環境変数の作成および更新
以下の手順に従って、ジョブの環境変数を設定および更新します。
-
ジョブの環境変数を作成および設定するには、
--env
、job create
、job update
、またはjobrun submit
の各コマンドでjobrun resubmit
オプションを使用します。 以下の例では、icr.io/codeengine/codeengine
イメージを使用するmyjob
ジョブを作成し、envA
環境変数を定義します。ibmcloud ce job create --name myjob --image icr.io/codeengine/codeengine --env envA=A
-
既存のジョブの環境変数を更新するには、
--env
、job update
、またはjobrun submit
の各コマンドでjobrun resubmit
オプションを使用します。
例 1
以下の例では、myjob
ジョブを更新して envA
の値を上書きし、envB
環境変数を追加します。
ibmcloud ce job update --name myjob --env envA=AA --env envB=B
job get
コマンドを実行して、その環境変数を含む、ジョブの詳細を表示します。
ibmcloud ce job get --name myjob
出力例
Getting job 'myjob'...
OK
Name: myjob
[...]
Environment Variables:
Type Name Value
Literal envA AA
Literal envB B
Image: icr.io/codeengine/codeengine
[...]
例 2
以下の例では、myjob
ジョブを実行し、envA
の値を上書きし、このジョブ実行に envD
環境変数を追加します。
ibmcloud ce jobrun submit --job myjob --name myjobrun1 --env envB=BB --env envC=C
jobrun get
コマンドを実行して、その環境変数を含む、ジョブ実行の詳細を表示します。
ibmcloud ce jobrun get --name myjobrun1
出力例
[...]
Name: myjobrun1
[...]
Job Ref: myjob
Environment Variables:
Type Name Value
Literal envA AA
Literal envB BB
Literal envC C
Image: icr.io/codeengine/codeengine
[...]
Instances:
Name Running Status Restarts Age
myjobrun1-0-0 0/1 Succeeded 0 17s
関数の環境変数の作成と更新
以下のように、関数用の環境変数を設定・更新する。
-
関数の環境変数を作成して設定するには、
function create
またはfunction update
コマンドで--env
オプションを使用します。 以下の例では、https://github.com/IBM/CodeEngine
ソース・コードを使用し、envA
環境変数を定義するmyfunction
関数を作成します。ibmcloud ce function create --name myfunction --runtime nodejs --build-source https://github.com/IBM/CodeEngine --build-context-dir /helloworld-samples/function-nodejs --env envA=A
fn get
コマンドの出力例。Environment Variables: Type Name Value Literal envA A
-
既存の関数の環境変数を更新するには、
--env
オプションをfunction update
オプションを使ってください。 以下の例では、envA
の値を上書きするようにmyfunction
関数を更新し、envC
環境変数を追加している。ibmcloud ce fn update --name myfunction --env envA=AA --env envC=C
fn get
コマンドの出力例。Environment Variables: Type Name Value Literal envA AA Literal envC C
環境変数を使用してワークロードを更新する際の考慮事項
configmapsまたはsecretを参照する環境変数を持つアプリ、ジョブ、または関数を更新するときは、以下の情報を考慮してください。
- configmap(またはsecret)を完全参照する環境変数を持つアプリ、ジョブ、または関数を、別のconfigmap(またはsecret)を完全参照するように更新すると、完全参照は、設定された順番で他の完全参照を上書きします(最後に参照されたセットは、最初に設定されたセットを上書きします)。
- あるコンフィグマップ(またはシークレット)のキーを参照する環境変数を持つアプリ、ジョブ、または関数を、別のコンフィグマップ(またはシークレット)の同じキーを参照するように更新すると、最後に参照されたキーが使用されます。
- コンフィグマップ(またはシークレット)を完全に参照する環境変数を持つアプリ、ジョブ、または関数を更新して、特定のキーへの参照を追加すると、特定のキーへの参照がコンフィグマップ(またはシークレット)の完全な参照より優先されます。
環境変数の削除
不要になった環境変数は削除できます。
コンソールからの環境変数の削除
- コンソールから、削除したい環境変数があるアプリ、ジョブ、または関数に移動します。 **「環境変数」**タブをクリックします。
- 環境変数の表から、アプリ、ジョブ、または関数から削除したい環境変数を削除します。
- Save and deployをクリックしてアプリを更新するか、 Saveをクリックして新しい環境変数でジョブや関数を更新します。 アプリ、ジョブ、または関数が
Ready
状態になると、現在の環境変数で更新されます。
CLI での環境変数の削除
CLI を使用して環境変数を扱う場合、既存の構成マップまたはシークレットを参照するか、リテラル環境変数を使用することができます。 CLIを使ったリテラル環境変数の削除について説明します。
CLI によるシークレットおよび構成マップの参照先全体の削除については、シークレットおよび構成マップの参照を参照してください。
アプリの環境変数の削除
アプリの環境変数を削除するには、app update
コマンドで--env-rm
オプションを使用します。 以下の例では、myapp
アプリケーションを更新して envA
環境変数を削除します。
ibmcloud ce application update --name myapp --env-rm envA
ジョブの環境変数の削除
ジョブの環境変数を削除するには、job update
コマンドまたはjobrun resubmit
コマンドで--env-rm
オプションを使用します。
--env-rm
コマンドで job update
オプションを使用して、ジョブに設定されている環境変数を削除します。 --env-rm
コマンドで jobrun resubmit
オプションを使用して、指定したジョブ実行に設定されている環境変数を削除します。
-
以下の例では、
myjob
ジョブを更新してenvA
環境変数を削除します。ibmcloud ce job update --name myjob --env-rm envA
job get
コマンドを使用して、その環境変数を含む、ジョブの詳細を表示します。 -
以下の例では、
myjobrun1
ジョブ実行を再実行依頼して、envC
環境変数を削除します。ibmcloud ce jobrun resubmit --jobrun myjobrun1 --name jobrun2resuba--env-rm envC
jobrun get
コマンドを実行して、その環境変数を含む、ジョブ実行の詳細を表示します。ibmcloud ce jobrun get --name jobrun2resuba
出力例
Getting jobrun 'jobrun2resuba'... Getting instances of jobrun 'jobrun2resuba'... Getting events of jobrun 'jobrun2resuba'... [...] Name: jobrun2resuba [...] Job Ref: myjob Environment Variables: Type Name Value Literal envB BB Image: icr.io/codeengine/codeengine [...] Instances: Name Running Status Restarts Age jobrun2resuba-0-0 0/1 Succeeded 0 21s
関数の環境変数を削除する
自分の関数の環境変数を削除するには、 --env-rm
オプションを function update
オプションを使ってください。 以下の例では、 myfunction
関数を更新し、 envA
環境変数を削除している。
ibmcloud ce function update --name myfunction --env-rm envA