アプリのカスタム・ドメイン・マッピングの構成
ドメインマッピングは、プロジェクト内のCode EngineアプリケーションへのURLルートを提供します。 Code Engineを使用すると、アプリケーションをデプロイするたびに、これらのマッピングがデフォルトで自動的に作成されます。 しかし、Code EngineCLIからカスタムURLからアプリケーションにリクエストをルーティングするために、Code Engine独自のカスタムドメインをアプリケーションにマッピングすることができる。
所有するドメインをアプリケーションのターゲットにする場合は、カスタム・ドメイン・マッピングを使用できます。 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.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でのドメイン・マッピングについて詳しくは、 カスタム・ドメイン・マッピングの処理 を参照してください。