配置應用程式的自訂網域對映
網域對應提供 URL 路徑,讓您可以在專案中使用 Code Engine 應用程式。 有了 Code Engine,每當您部署應用程式時,這些映射預設會自動建立。 不過,您可以將自己的自訂網域對應到 Code Engine 應用程式,從 Code Engine 主控台或 CLI 將自訂 URL 的要求路由到您的應用程式。
如果您想要以您擁有的網域作為應用程式的目標,則可以使用自訂網域對映。 當您在 Code Engine中設定自訂網域對映時,請在專案中的完整網域名稱 (FQDN) 與 Code Engine 應用程式之間定義 1-to-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 專案頁面,移至您的專案。
-
從「概觀」頁面中,按一下 網域對映。
-
從「網域對映」頁面中,按一下 建立 以建立對映。
-
從「建立網域對映」頁面中,指定要與此網域對映搭配使用的 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 項目。
- 指定自訂網域名稱的完整網域名稱; 例如,
-
按一下 建立,以建立自訂網域對映。
現在您已在 Code Engine中建立網域對映。 不過,傳送至應用程式的要求尚未遞送至自訂網域。 接下來,您必須 使用網域登記員完成自訂網域配置 (在 Code Engine外部)。
使用 CLI 配置自訂網域對映
若要使用 CLI 建立自訂網域對映,請使用 domainmapping create 指令。 此指令需要完整網域名稱 (FQDN),例如 www.example.com、目標應用程式及 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中網域對映的相關資訊,請參閱 使用自訂網域對映。