11
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

IBM Cloud Advent Calendar 2022

Day 13

カスタム・ドメインを使ってIBM Cloud Code Engineのアプリを公開してみる

Posted at

IBM Cloud Code Engineでアプリ公開すると標準ではIBM提供のアドレス https://xxx.xxx.codeengine.appdomain.cloud/ が利用されますが、エンドユーザー向けのアプリなど独自のドメインでアプリ公開したいときもあると思います
今回は、新たに追加されたドメイン・マッピングの機能を使って、カスタム・ドメインでのアプリ公開を試してみたいと思います

Untitled.png

事前準備

カスタムドメインを使ってアプリにアクセスする流れ

  1. アプリの確認
  2. ドメインマッピングの作成
  3. DNSの設定と確認
  4. カスタムドメインのURLを使ってアプリにアクセス

1. アプリの確認

まずはCode Engineにデプロイしたアプリが標準のドメイン(appdomain.cloud)にて正常にアクセスできるか確認しておきます

Untitled 1.png

2. CodeEngineでのドメインマッピングの作成

それではカスタムドメインでCode Engine上のアプリにアクセスできるように設定してみます。

まずは、左のメニュから 「ドメイン・マッピング」 を選択肢、 「作成」 をクリックします

Untitled 2.png

「ドメイン・マッピングの作成」 ダイアログが表示されるので必要事項を入力します。

  • TLSシークレット
    • Certificate chain: 中間証明書を含むfullchainのCA証明書の内容
      (let's encryptの場合はfullchain.pemの内容)
    • Private key: プライベートキーの内容
      (let's encryptの場合はprivkey.pemの内容)
  • Domain name and target application
    • カスタム・ドメイン・ネーム: アプリ公開に利用したいURL(私はhelloworld.handson-lab.comと指定)
    • ターゲット・コンポーネント: ターゲットとなるCode Engine上のアプリを選択

Untitled 3.png

必要事項の入力が完了したら、DNS設定に利用する 「CNAME target」 をコピーした後、 「作成」 をクリックします

マッピング状況が 「デプロイ中」 から 「準備完了」 に変わればCode Engine上での設定は完了です

私のときは1−2分で準備完了となりました

Untitled 4.png

3. DNSの設定と確認

次にDNSの設定をしていきます

アプリ公開に利用したいURLへのリクエストに対して、CNAME targetを返す用に設定します

レコードの内容

  • Type: CNAME
  • Name: アプリ公開に利用したい名前(私はhelloworld.handson-lab.comと指定)
  • Target: 手順2でコピーしたCNAME target(私の場合はcustom.thgi94tqudy.us-south.codeengine.appdomain.cloud)

※ 実際の設定方法はご利用のDNSのガイドを確認してください。

例:IBM CloudのクラシックインフラのDNSを利用した場合

Untitled 5.png
(Points To に記載するCNAMEの最後に . を追加しないとだめです。私はハマりました。例:custom.thgi94tqudy.us-south.codeengine.appdomain.cloud.)

DNSの設定が反映されるまで待ち、名前解決ができるか確認します

$ nslookup -type=CNAME {アプリのURL}

# 例
$ nslookup -type=CNAME helloworld.handson-lab.com
  • 成功した場合

    ❯ nslookup -type=CNAME helloworld.handson-lab.com
    Server:		2404:1a8:7f01:b::3
    Address:	2404:1a8:7f01:b::3#53
    
    Non-authoritative answer:
    helloworld.handson-lab.com	canonical name = custom.thgi94tqudy.us-south.codeengine.appdomain.cloud.
    
    Authoritative answers can be found from:
    
  • 失敗した場合

    ❯ nslookup -type=CNAME helloworld.handson-lab.com
    Server:		2404:1a8:7f01:b::3
    Address:	2404:1a8:7f01:b::3#53
    
    ** server can't find helloworld.handson-lab.com: NXDOMAIN
    

    DNSの設定が伝播していない可能性もあるのでもう少し待ってから再度チェックしてみてください

    DNSの伝播には数分から数時間かかる場合があります

    それでもだめな場合はDNSの設定にてHOST名やCNAME Targetがただしいか確認してみてください

4. カスタムドメインのURLを使ってアプリにアクセス

最後に接続確認として、設定したカスタムドメインのURLを利用してアプリにアクセスします

正常にアプリが表示されれば成功です!

httpsにてアクセスできており、証明書も設定したものが利用されています

Untitled 6.png

以上でカスタムドメインを利用したアプリ公開でした!

Code Engine上での設定はとてもシンプルでサクッと設定できました

個人的にはlet's encryptでの証明書の発行が面倒でしたが、カスタムドメインでアプリ公開をされたい方々はすでにドメインと証明書をお持ちの方も多いと思いますので、**「ドメイン・マッピング」**試してみてください

お掃除

  • Code Engine上
    • 「ドメイン・マッピング」 にて設定削除
    • 「シークレットおよび configmap」 にてTLSのシークレットを削除
  • DNS上
    • CNAMEのレコードを削除

より詳しく

11
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?