第1章 デプロイメント

1.1. アプリケーションのカスタムドメインの設定

1.1.1. アプリケーションのカスタムドメインの設定

カスタムドメインは、OpenShift Dedicated アプリケーションで使用できる特定のワイルドカードドメインです。トップレベルのドメイン (TLD) は、OpenShift Dedicated クラスターを運用しているお客様が所有しています。カスタムドメイン Operator は、2 日の操作としてカスタム証明書を使用して新規 ingresscontroller を設定します。次に、この ingresscontroller のパブリック DNS レコードは外部 DNS で使用され、カスタムドメインで使用するワイルドカード CNAME レコードを作成できます。

注記

Red Hat は API ドメインを制御するため、カスタム API ドメインはサポートされません。ただし、お客様はアプリケーションドメインを変更することができます。プライベート IngressController があるプライベートカスタムドメインの場合は、CustomDomain CR で .spec.scopeInternal に設定します。

前提条件

  • dedicated-admin 権限を持つユーザーアカウント
  • *.apps.<company_name>.io などの一意のドメインまたはワイルドカードドメイン
  • CN=*.apps.<company_name>.io などのカスタム証明書またはワイルドカードカスタム証明書
  • 最新バージョンの oc CLI がインストールされているクラスターへのアクセス
重要

CustomDomain CR の metadata/name: セクションで、予約された名前 default または apps* (appsapps2 など) を使用しないでください。

手順

  1. 秘密鍵および公開証明書から新しい TLS シークレットを作成します。ここで、fullchain.pem および privkey.pem は、公開または秘密のワイルドカード証明書です。

    $ oc create secret tls <name>-tls --cert=fullchain.pem --key=privkey.pem -n <my_project>

  2. 新規の CustomDomain カスタムリソース (CR) を作成します。

    例: <company_name>-custom-domain.yaml

    apiVersion: managed.openshift.io/v1alpha1
    kind: CustomDomain
    metadata:
      name: <company_name>
    spec:
      domain: apps.companyname.io 1
      scope: External
      certificate:
        name: <name>-tls 2
        namespace: <my_project>

    1
    カスタムドメイン
    2
    直前の手順で作成されたシークレット
  3. CR を適用します。

    $ oc apply -f <company_name>-custom-domain.yaml

  4. 新規に作成された CR のステータスを取得します。

    $ oc get customdomains

    出力例

    NAME               ENDPOINT                                                    DOMAIN                       STATUS
    <company_name>     xxrywp.<company_name>.cluster-01.opln.s1.openshiftapps.com  *.apps.<company_name>.io     Ready

  5. エンドポイントの値を使用して、新規のワイルドカード CNAME レコードセットを、Route53、Azure DNS、Google DNS などの管理 DNS プロバイダーに追加します。

    *.apps.<company_name>.io -> xxrywp.<company_name>.cluster-01.opln.s1.openshiftapps.com

  6. 新規アプリケーションを作成し、これを公開します。

    $ oc new-app --docker-image=docker.io/openshift/hello-openshift -n my-project

    $ oc create route edge --service=hello-openshift hello-openshift-tls --hostname hello-openshift-tls-my-project.apps.acme.io -n my-project
    $ oc get route -n my-project
    $ curl https://hello-openshift-tls-my-project.apps.<company_name>.io
    Hello OpenShift!