IBM Cloud Docs
アプリのカスタム・ドメイン・マッピングの構成

アプリのカスタム・ドメイン・マッピングの構成

ドメインマッピングは、プロジェクト内のCode EngineアプリケーションへのURLルートを提供します。 Code Engineを使用すると、アプリケーションをデプロイするたびに、これらのマッピングがデフォルトで自動的に作成されます。 しかし、Code EngineCLIからカスタムURLからアプリケーションにリクエストをルーティングするために、Code Engine独自のカスタムドメインをアプリケーションにマッピングすることができる。

所有するドメインをアプリケーションのターゲットにする場合は、カスタム・ドメイン・マッピングを使用できます。 Code Engineでカスタム・ドメイン・マッピングを設定する場合、プロジェクト内の完全修飾ドメイン・ネーム (FQDN) と Code Engine アプリケーションの間の 1-to-1 マッピングを定義します。

カスタム・ドメイン・マッピングは、1 つのアプリケーションのみを指す必要があります。 ただし、単一のアプリケーションに対して複数のドメイン・マッピングを構成することができます。

プロジェクトごとに最大 80 個のカスタム・ドメイン・マッピングを作成できます。 プロジェクト割り当て量 を参照してください。

Code Engineでカスタム・ドメイン・マッピングを作成する場合、マッピングで使用するドメイン・ネームは地域内で固有でなければなりません。

カスタム・ドメイン・マッピングを作成してセットアップするには、以下の手順を実行します。

  1. Code Engineでカスタム・ドメイン・マッピングを使用する前の考慮事項 を確認してください。
  2. カスタム・ドメインをドメイン・レジストラーから取得します (* Code Engine*)。
  3. アプリケーション用に Code Engine でカスタム・ドメイン・マッピングを構成します (* Code Engine コンソールまたは CLI から*)。
  4. ドメイン登録機関 (* Code Engine*) でカスタム・ドメイン構成を完了します。

www.example.comshop.example.com のカスタム・ドメイン・マッピングを作成するとします。 この場合、固有のドメインまたはサブドメインごとにカスタム・ドメイン・マッピングを作成する必要があります。 ただし、TLS シークレットの証明書にカスタム・ドメイン・マッピングで指定されたドメインが含まれている場合は、同じ TLS シークレットを複数のカスタム・ドメイン・マッピングに再使用できます。 これは、TLS シークレットを複数のドメイン ( www.example.comshop.example.com など)、またはワイルドカード・ドメイン ( *.example.com など) にマップできることを意味します。

コンソールからのカスタム・ドメイン・マッピングの構成

Code Engine コンソールを使用して、 Code Engine アプリケーションで登録済みドメイン・ネームへのカスタム・ドメイン・マッピングを作成できます。

このシナリオでは、TLS シークレットを使用して、アプリケーションへのカスタム・ドメイン・マッピングを作成します。 例えば、 www.example.com ドメインを myapp アプリケーションにマップするためのカスタム・ドメイン・マッピングを作成します。

開始前に

  1. Code EngineからProjectsページから、プロジェクトに移動します。

  2. 「概要」ページで、 「ドメイン・マッピング」 をクリックします。

  3. 「ドメイン・マッピング」ページで、 「作成」 をクリックしてマッピングを作成します。

  4. 「ドメイン・マッピングの作成」ページで、このドメイン・マッピングで使用する TLS シークレットを指定します。 Code Engine は、証明書がトラステッド CA によって署名されているかどうか、および証明書が指定されたカスタム・ドメイン名と秘密鍵と一致するかどうかを検証します。

    新しい TLS シークレットを作成するには、

    1. 「作成」 をクリックします。
    2. ドメインに関連付けられている TLS 証明書 (すべての中間証明書を含む) を追加します。 証明書が別個のファイルとして提供されている場合は、ファイルの内容を連結します。 この情報はファイルに指定できます。
    3. 証明書に対応する秘密鍵を追加します。 この情報はファイルに指定できます。

    証明書チェーンのフォーマットの例

    -----BEGIN CERTIFICATE-----
    ...certificate...
    -----END CERTIFICATE-----
    -----BEGIN CERTIFICATE-----
    ...intermediate-certificate...
    -----END CERTIFICATE-----
    -----BEGIN CERTIFICATE-----
    ...intermediate-certificate...
    -----END CERTIFICATE-----
    

    または、既存の TLS シークレットを使用するには、

    1. **「選択」**をクリックします。
    2. 使用する既存のシークレットをリストから選択します。
  5. ドメイン名とターゲット・コンポーネントを指定します。

    • カスタム・ドメイン・ネームの完全修飾ドメイン・ネーム (例えば、 www.example.com) を指定します。
    • 既存のターゲット・アプリケーション (例えば、 myapp) を選択します。 この例では、 myapp アプリケーションは icr.io/codeengine/helloworld サンプル・イメージを使用します。 この例で使用されるコードについて詳しくは、 helloworldを参照してください。
    • 「CNAME ターゲット (CNAME target)」 フィールドに注意してください。 この値は、カスタム・ドメインをターゲットとするトラフィックが指定のアプリケーションにルーティングされるように、 ドメイン・レジストラーを使用してカスタム・ドメイン構成を完了する ときに必要な CNAME エントリーです。
  6. 「作成」 をクリックして、カスタム・ドメイン・マッピングを作成します。

これで、 Code Engineで作成されたドメイン・マッピングができました。 ただし、アプリケーションに送信される要求は (まだ) カスタム・ドメインにルーティングされません。 次に、 ドメイン・レジストラーを使用してカスタム・ドメイン構成を完了する 必要があります (* Code Engine*)。

CLI を使用したカスタム・ドメイン・マッピングの構成

CLI でカスタム・ドメイン・マッピングを作成するには、 domainmapping create コマンドを使用します。 このコマンドには、 www.example.com などの完全修飾ドメイン名 (FQDN)、ターゲット・アプリケーション、および TLS シークレットが必要です。 オプションの完全なリストについては、ibmcloud ce domainmapping create コマンドを参照のこと。

開始前に

ドメイン・ネームが登録され、このドメインの署名付き TLS 証明書とそれに対応する秘密鍵があり、既存の Code Engine アプリケーションがある場合、このアプリケーションにカスタム・ドメイン・マッピングを追加する準備ができます。 CLI で domainmapping create コマンドを使用して、 Code Engine アプリケーションでカスタム・ドメイン・マッピングを作成できます。

  1. 署名付き TLS 証明書と秘密鍵を使用して TLS 秘密を作成します。 この例では、 mycert.txt ファイルに、ドメインに関連付けられているすべての中間証明書を含む TLS 証明書が含まれています。 証明書が別個のファイルとして提供されている場合は、ファイルの内容を連結します。 myprivatekey.txt ファイルには、証明書チェーンに対応する一致する秘密鍵が含まれています。

    ibmcloud ce secret create --name mytlssecret --format tls --cert-chain-file  mycertchain.txt --private-key-file myprivatekey.txt
    

    出力例

    Creating tls secret 'mytlssecret'...
    OK
    
  2. Code Engine myapp アプリケーションとカスタム・ドメイン www.example.com の間のカスタム・ドメイン・マッピングを作成します。 前のステップで作成した TLS シークレットを使用します。

    ibmcloud ce domainmapping create --domain-name www.example.com --target myapp --tls-secret mytlssecret
    

    出力例

    OK
    Domain mapping successfully created.
    

以下の表は、この例で domainmapping create コマンドとともに使用されるオプションをまとめたものである。 コマンドとそのオプションの詳細については、ibmcloud ce domainmapping create コマンドを参照のこと。

コマンドの説明
オプション 説明
--domain-name カスタム・ドメイン・マッピングの名前。 カスタム・ドメインの名前 ( www.example.com など) を指定します。 この値は必須です。
--target 対象となるCode Engineアプリケーションの名前。 この値は必須です。
--tls-secret ドメイン・マッピングのTLSシークレット。 この値は必須です。

これで、 Code Engineで作成されたカスタム・ドメイン・マッピングが作成されました。 ただし、アプリケーションに送信される要求は (まだ) カスタム・ドメインにルーティングされません。 次に、 ドメイン・レジストラーを使用してカスタム・ドメイン構成を完了します (* Code Engine*)。

ドメイン登録機関によるカスタム・ドメイン構成の完了

Code Engine カスタム・ドメイン・マッピングが作成された後、完全修飾ドメイン名に一致する CNAME レコードをカスタム・ドメインの DNS 設定に追加する必要があります。 DNS 設定は、対応するドメイン・レジストラーの構成設定にあります。 このステップを実行して、カスタム・ドメインをターゲットとするトラフィックが、 Code Engine カスタム・ドメイン・マッピングで定義されている Code Engine 関数にルーティングされるようにします。

カスタム・ドメインのテスト

ドメイン・レジストラーを使用してカスタム・ドメイン構成を完了し、CNAME レコードの更新が公開されたら、カスタム・ドメイン・マッピングを使用してアプリケーションをテストできます。

ブラウザーで、 curl を使用して、カスタム・ドメインをターゲットにしてアプリケーションを呼び出します。

curl -v -X GET https://www.example.com

出力例

Hello World from:
     ___  __  ____  ____
    / __)/  \(    \(  __)
   ( (__(  O )) D ( ) _)
    \___)\__/(____/(____)
 ____  __ _   ___  __  __ _  ____
(  __)(  ( \ / __)(  )(  ( \(  __)
 ) _) /    /( (_ \ )( /    / ) _)
(____)\_)__) \___/(__)\_)__)(____)
Some Env Vars:
--------------
CE_API_BASE_URL=https://api.us-south.codeengine.cloud.ibm.com
CE_APP=myapp
CE_DOMAIN=us-south.codeengine.appdomain.cloud
CE_PROJECT_ID=abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
CE_REGION=us-south
CE_SUBDOMAIN=abcdabcdab
HOME=/root
HOSTNAME=myapp-00001-deployment-6db6d89dc7-k6qc7
K_REVISION=myapp-00001
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PORT=8080
PWD=/
SHLVL=1

カスタム・ドメインへの呼び出しの出力は、 icr.io/codeengine/helloworld サンプル・イメージを使用する myapp アプリケーションにマップされます。

Code Engineでのドメイン・マッピングについて詳しくは、 カスタム・ドメイン・マッピングの処理 を参照してください。