アプリのカスタム・ドメイン・マッピングの構成
ドメインマッピングは、プロジェクト内の Code Engine アプリケーションへの URL ルートを提供します。 Code Engine では、アプリケーションをデプロイするたびに、これらのマッピングがデフォルトで自動的に作成されます。 しかし、独自のカスタムドメインを Code Engine アプリケーションにマッピングすることで、 Code Engine コンソールまたは CLI から、カスタム URL からのリクエストをアプリケーションにルーティングすることができます。
所有するドメインをアプリケーションのターゲットにする場合は、カスタム・ドメイン・マッピングを使用できます。 Code Engineでカスタム・ドメイン・マッピングを設定する場合、プロジェクト内の完全修飾ドメイン・ネーム (FQDN) と Code Engine アプリケーションの間の 1-to-1 マッピングを定義します。
カスタム・ドメイン・マッピングは、1 つのアプリケーションのみを指す必要があります。 ただし、単一のアプリケーションに対して複数のドメイン・マッピングを構成することができます。
プロジェクトごとに最大 80 個のカスタム・ドメイン・マッピングを作成できます。 プロジェクト割り当て量 を参照してください。
Code Engineでカスタム・ドメイン・マッピングを作成する場合、マッピングで使用するドメイン・ネームは地域内で固有でなければなりません。
カスタム・ドメイン・マッピングを作成してセットアップするには、以下の手順を実行します。
- Code Engineでカスタム・ドメイン・マッピングを使用する前の考慮事項 を確認してください。
- カスタム・ドメインをドメイン・レジストラーから取得します (* Code Engine*)。
- アプリケーション用に Code Engine でカスタム・ドメイン・マッピングを構成します (* Code Engine コンソールまたは CLI から*)。
- ドメイン登録機関 (* Code Engine*) でカスタム・ドメイン構成を完了します。
www.example.com と shop.example.com のカスタム・ドメイン・マッピングを作成するとします。 この場合、固有のドメインまたはサブドメインごとにカスタム・ドメイン・マッピングを作成する必要があります。 ただし、TLS シークレットの証明書にカスタム・ドメイン・マッピングで指定されたドメインが含まれている場合は、同じ TLS シークレットを複数のカスタム・ドメイン・マッピングに再使用できます。 これは、TLS
シークレットを複数のドメイン ( www.example.com や shop.example.com など)、またはワイルドカード・ドメイン ( *.example.com など) にマップできることを意味します。
コンソールからのカスタム・ドメイン・マッピングの構成
Code Engine コンソールを使用して、 Code Engine アプリケーションで登録済みドメイン・ネームへのカスタム・ドメイン・マッピングを作成できます。
このシナリオでは、TLS シークレットを使用して、アプリケーションへのカスタム・ドメイン・マッピングを作成します。 例えば、 www.example.com ドメインを myapp アプリケーションにマップするためのカスタム・ドメイン・マッピングを作成します。
開始前に
-
Code Engine Projects ページから、プロジェクトに移動します。
-
「概要」ページで、 「ドメイン・マッピング」 をクリックします。
-
「ドメイン・マッピング」ページで、 「作成」 をクリックしてマッピングを作成します。
-
「ドメイン・マッピングの作成」ページで、このドメイン・マッピングで使用する TLS シークレットを指定します。 Code Engine は、証明書がトラステッド CA によって署名されているかどうか、および証明書が指定されたカスタム・ドメイン名と秘密鍵と一致するかどうかを検証します。
新しい TLS シークレットを作成するには、
- 「作成」 をクリックします。
- ドメインに関連付けられている TLS 証明書 (すべての中間証明書を含む) を追加します。 証明書が別個のファイルとして提供されている場合は、ファイルの内容を連結します。 この情報はファイルに指定できます。
- 証明書に対応する秘密鍵を追加します。 この情報はファイルに指定できます。
証明書チェーンのフォーマットの例
-----BEGIN CERTIFICATE----- ...certificate... -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- ...intermediate-certificate... -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- ...intermediate-certificate... -----END CERTIFICATE-----または、既存の TLS シークレットを使用するには、
- **「選択」**をクリックします。
- 使用する既存のシークレットをリストから選択します。
-
ドメイン名とターゲット・コンポーネントを指定します。
- カスタム・ドメイン・ネームの完全修飾ドメイン・ネーム (例えば、
www.example.com) を指定します。 - 既存のターゲット・アプリケーション (例えば、
myapp) を選択します。 この例では、myappアプリケーションはicr.io/codeengine/helloworldサンプル・イメージを使用します。 この例で使用されるコードについて詳しくは、helloworldを参照してください。 - 「CNAME ターゲット (CNAME target)」 フィールドに注意してください。 この値は、カスタム・ドメインをターゲットとするトラフィックが指定のアプリケーションにルーティングされるように、 ドメイン・レジストラーを使用してカスタム・ドメイン構成を完了する ときに必要な CNAME エントリーです。
- カスタム・ドメイン・ネームの完全修飾ドメイン・ネーム (例えば、
-
「作成」 をクリックして、カスタム・ドメイン・マッピングを作成します。
これで、 Code Engineで作成されたドメイン・マッピングができました。 ただし、アプリケーションに送信される要求は (まだ) カスタム・ドメインにルーティングされません。 次に、 ドメイン・レジストラーを使用してカスタム・ドメイン構成を完了する 必要があります (* Code Engine*)。
CLI を使用したカスタム・ドメイン・マッピングの構成
CLI でカスタム・ドメイン・マッピングを作成するには、 domainmapping create コマンドを使用します。 このコマンドには、 www.example.com などの完全修飾ドメイン名 (FQDN)、ターゲット・アプリケーション、および TLS シークレットが必要です。 オプションの完全なリストについては ibmcloud ce domainmapping create コマンドを参照のこと。
開始前に
- 登録済みドメイン・ネームを取得します。
- カスタム・ドメインの署名付き TLS 証明書と秘密鍵を取得します。
- Code Engine の CLI 環境をセットアップします。
- プロジェクトを作成します。
- アプリを作成します。
ドメイン・ネームが登録され、このドメインの署名付き TLS 証明書とそれに対応する秘密鍵があり、既存の Code Engine アプリケーションがある場合、このアプリケーションにカスタム・ドメイン・マッピングを追加する準備ができます。 CLI で domainmapping create コマンドを使用して、 Code Engine アプリケーションでカスタム・ドメイン・マッピングを作成できます。
-
署名付き 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 -
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.private.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でのドメイン・マッピングについて詳しくは、 カスタム・ドメイン・マッピングの処理 を参照してください。