IBM Cloud Docs
環境変数の処理

環境変数の処理

Code Engineで環境変数 (env variables) を処理する方法について説明します。 環境変数は、アプリケーション、ジョブ、または関数で使用できるキーと値のペアとして設定できます。

環境変数の作成と更新

Code Engine を使用して環境変数を作成および管理します。

環境変数はリテラル値として定義することもできますし、既存のシークレットやコンフィグマップを参照することもできます。 Code Engine は環境変数を使用して、 シークレットや コンフィグマップを ジョブ、アプリケーション、または関数で使用できるようにします。

コンソールからの環境変数の作成

Code Engine コンソールを使用して、環境変数を作成および更新します。

コンソールからアプリ、ジョブ、または機能を作成または更新するときに、環境変数を定義できます。

開始前に

  • プロジェクトを作成 する必要があり、 プロジェクト の状況が active でなければなりません。
  • リテラル環境変数を作成するか、既存のシークレットまたは構成マップを参照する環境変数を作成するかを決定します。 環境変数が既存のシークレットまたは構成マップの全体を参照するように設定するか、既存のシークレットまたは構成マップ内の個々のキーを参照するように設定するには、シークレットまたは構成マップが存在している必要があります。 先に進む前に、シークレットの作成または 構成マップの作成を参照して、シークレットや構成マップを定義してください。
  1. 「環境変数の追加」ページで環境変数を定義するダイアログを開くには、以下のいずれかを行います。

    • 「アプリケーションの作成」ページからアプリを作成する場合は、**「環境変数 (オプション)(Environment variables (optional))」**セクションを展開します。 作成するアプリに、1 つ以上の環境変数を追加できます。 **「追加」**をクリックし、「環境変数の追加」ページを開きます。
    • 「ジョブの作成 (Create job)」ページからジョブを作成する場合は、**「環境変数 (オプション)(Environment variables (optional))」**セクションを展開します。 **「追加」**をクリックし、「環境変数の追加」ページを開きます。
    • 関数を作成する 場合は、関数の作成ページから環境変数(オプション) セクションを展開します。 **「追加」**をクリックし、「環境変数の追加」ページを開きます。
    • 既存のワークロードを更新して環境変数を追加する場合は、既存のアプリ、ジョブ、または機能に移動します。 Configuration] タブで [Environment variables ]をクリックします。 アプリ、ジョブ、および機能の場合は、 「環境変数の追加」 をクリックして「環境変数の追加」ページを開きます。
  2. 「環境変数の追加」ページで、以下のいずれかの方法で環境変数を作成します。

    • _リテラル_環境変数を作成するには、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 つだけ参照できます。 構成マップまたはシークレットの複数のキーを参照する必要がある場合は、手順を繰り返して、別のキーを参照する別の環境変数を定義してください。

  3. **「完了 (Done)」をクリックして変更を保存します。 このアクションにより、「環境変数」タブのテーブルに環境変数が追加されます。 引き続き環境変数を追加するには、「追加」**をクリックします。

  4. 定義された環境変数を使って、アプリ、ジョブ、または関数の作成または更新を完了します。

    • ワークロードを作成する場合は、 「作成」 をクリックすると、アプリ、ジョブ、または機能が環境変数とともにデプロイされます。
    • 既存のアプリ、ジョブ、または関数を更新して環境変数を追加する場合は、 [Save and deploy ]をクリックしてアプリを更新するか、[ Save] をクリックしてジョブまたは関数を新しい環境変数で更新します。
  5. アプリ、ジョブ、または関数が Ready 状態になると、環境変数で更新されます。

次の表に、環境変数に関する情報を示します。

環境変数の表
ヘッダー 説明
Name 環境変数の名前。
Defined by 環境変数が、literal タイプか、シークレットまたは構成マップの全体を参照するか、特定のキーを参照するか、を指定します。
Value or reference リテラル値、全体が参照される構成マップまたはシークレット、または構成マップまたはシークレットの参照キーを表示します。

例えば、アプリを作成し、そのアプリに環境変数を設定してみましょう。

  1. icr.io/codeengine/codeengineイメージを使用するmyappという名前のアプリの作成をします。 この hello-world アプリには TARGET 環境変数が含まれており、アプリは Hello ${TARGET} from Code Engine と、環境変数のリストを出力します。 TARGET 環境変数が空の場合は、Hello World from Code Engine が返されます。
  2. コンソールでこのアプリに移動します。
  3. アプリの状態が Ready になったら、アプリをテストできます。 **「アプリケーションのテスト (Test application)」をクリックしてから、「アプリケーションのテスト (Test application)」ペインで「要求の送信」をクリックします。 Web ページでアプリケーションを開くには、「アプリケーション URL (Application URL)」**をクリックします。 myapp アプリは Hello World from Code Engine 応答を返し、このアプリに含まれている環境変数を出力します。
  4. **「環境変数」**タブをクリックします。
  5. 以下の環境変数を作成します。
    • 追加をクリックして「環境変数の追加」ページを開き、_リテラル_環境変数を作成します。 例えば、literalenvvar という名前の、This is my literal という値を持つリテラル環境変数を作成します。 **「完了 (Done)」**をクリックして変更を保存します。
    • 追加 をクリックして「環境変数の追加」ページを開き、_構成マップを完全に参照する_環境変数を作成します。 構成マップを参照するためには、事前にそれが存在している必要があります。 この例では、mycolorconfigmap という名前の構成マップが存在し、キー値ペア key1=bluekey2=green、および key3=yellow が含まれています。 すべてのキーと値のペアを含め、mycolorconfigmap構成マップを完全に参照する環境変数を作成します。 Resulting definition セクションには、構成マップ内のキーの名前が表示されますが、構成マップ内で参照されるキーの実際の値は表示されません。 **「完了 (Done)」**をクリックして変更を保存します。
    • 追加 をクリックして「環境変数の追加」ページを開き、_定義されたシークレットの個々のキーを参照する_別の環境変数を作成します。 シークレットを参照するためには、事前にそれが存在している必要があります。 この例では、mynewsecret という名前のシークレットが存在し、キー値ペア newsec1=mynewsecret1newsec2=mynewsecret2、および newsec3=mynewsecret3 が含まれています。 newsec2 シークレットの mynewsecret キーを参照する環境変数を作成します。 Resulting definition セクションには、シークレット内の選択したキーの名前が表示されますが、シークレット内で参照されるキーの実際の値は表示されません。 **「完了 (Done)」**をクリックして変更を保存します。
  6. **「保存して作成 (Save and create)」**をクリックして、アプリを新しい環境変数で更新します。
  7. アプリの状態が Ready になると、アプリが対象の環境変数で更新されます。
  8. アプリをテストするには、**「アプリケーションのテスト (Test application)」をクリックしてから、「アプリケーションのテスト (Test application)」ペインで「要求の送信」をクリックします。 Web ページでアプリケーションを開くには、「アプリケーション URL (Application URL)」**をクリックします。 このアプリのリビジョンでは、Hello World from Code Engine が出力され、出力には前のステップで追加した環境変数の名前が含まれます。

ワークロードで環境変数を設定する場合、このアクションは新しい環境変数を追加するか、既存の環境変数を上書きします。 同じ_名前の_環境変数があり、以前に定義した環境変数と異なる_値を_指定した場合、更新された環境変数は既存の値を上書きする。 例えば、envvar1 という値を持つ myenvar1 という名前の定義済み環境変数があるとします。envvar1 という同じ名前の別の環境変数を定義し、その値に mynewenvvar1 を指定します。このときに、更新したアプリを保存してデプロイするか、更新したジョブを保存すると、実行するアプリ、またはジョブは値 envvar1mynewenvvar1 環境変数を使用します。

コンソールからの環境変数の更新

  1. 既存の環境変数を更新するには、変更したい環境変数を含むアプリ、ジョブ、または関数に移動し、 環境変数タブをクリックして環境変数のテーブルを表示します。
  2. 環境変数の表で、更新する環境変数をクリックします。
  3. 「環境変数の編集 (Edit environment variable)」ページで、更新を行い、**「完了」をクリックして変更を保存します。 環境変数を編集するときに、「定義元 (Defined by)」**値とそれに対応する必須フィールドを変更できます。
  4. **「保存してデプロイ (Save and deploy)」をクリックして変更済みの内容でアプリケーションをデプロイするか、「保存」**をクリックして変更済みの内容でジョブを実行します。 アプリまたはジョブの状態が Ready になっていれば、アプリまたはジョブは新しい環境変数を使用して更新されています。

CLI での環境変数の作成と更新

Code Engine CLI を使用して、環境変数を作成および管理します。

CLI を使用してアプリ、ジョブ、または関数を作成または更新するときに、環境変数を定義できます。

CLI を使用して環境変数を作成する場合、構成マップまたはシークレットを参照するか、リテラル環境変数を作成することができます。 これらの説明では、CLIを使ったリテラル環境変数の作成と更新について説明します。

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

開始前に

アプリの環境変数の作成および更新

以下の手順に従って、アプリの環境変数を作成および更新します。

  • アプリの環境変数を作成および設定するには、--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
    

ジョブの環境変数の作成および更新

以下の手順に従って、ジョブの環境変数を設定および更新します。

  • ジョブの環境変数を作成および設定するには、--envjob createjob 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
    
  • 既存のジョブの環境変数を更新するには、--envjob 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)を完全参照するように更新すると、完全参照は、設定された順番で他の完全参照を上書きします(最後に参照されたセットは、最初に設定されたセットを上書きします)。
  • あるコンフィグマップ(またはシークレット)のキーを参照する環境変数を持つアプリ、ジョブ、または関数を、別のコンフィグマップ(またはシークレット)の同じキーを参照するように更新すると、最後に参照されたキーが使用されます。
  • コンフィグマップ(またはシークレット)を完全に参照する環境変数を持つアプリ、ジョブ、または関数を更新して、特定のキーへの参照を追加すると、特定のキーへの参照がコンフィグマップ(またはシークレット)の完全な参照より優先されます。

環境変数の削除

不要になった環境変数は削除できます。

コンソールからの環境変数の削除

  1. コンソールから、削除したい環境変数があるアプリ、ジョブ、または関数に移動します。 **「環境変数」**タブをクリックします。
  2. 環境変数の表から、アプリ、ジョブ、または関数から削除したい環境変数を削除します。
  3. 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