IBM Cloud internet services (CIS)からROKSのpodにアクセスしてみた


## **はじめに**

ROKS(Red Hat OpenShift on IBM Cloud)環境でデプロイしたアプリをインターネットからアクセスする方法をご紹介いたします。今回はROKS上にデプロイしたhtmlを自分のドメインから誰でも閲覧できるようにしてみました。

以下に今回構築する環境のアーキテクチャーを示します。
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1934715/2a1d2af7-88e1-19fb-0a06-3f93aaf310c1.png)


本手順では
**Step1ドメイン名登録（ドメイン名が持ってない方）**
**Step2 CISセットアップ**
**Step3 ROKSのroute設定変更**
の流れで実行します


## **環境・前提**

この説明ではServiceの作成、routeの作成の手順は省略されていますので、追加しないのであれば前提条件にserviceとrouteがあることも追記する必要があると思います。

必要なものは以下です

- IBM CloudとOpenShift利用可能

- ROKS環境で正常にrunningしているpodある

- IBM CLIとOC CLIある

  



## **Step1  ドメイン名登録**

▲ドメイン名の登録が課金されますので、ご注意ください

CISセットアップする時に、ドメイン名を持つ必要がありますので、先にドメインを作成しておいてください。

IBM CloudのDomain Name Registrationで簡単にドメイン名を登録できますので、今回はそれを例をとして、ご紹介いたします。（こちらのリンクからも登録の手順を参照できますhttps://cloud.ibm.com/docs/infrastructure/dns/use-domain-reg-screen.html）



まず、写真の通りに、お好きな方法でDomain Name Registrationの画面を開いてください。
▲Domain Name Registrationを見つけられない、操作できない場合があったら、今使っているアカウントの権限をチェックしてみてください。
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1934715/6c088d8d-fd3f-7637-e51f-24b16b4d04ba.png)
「Register」をクリックして、「Ｄomain Name」に好きなドメイン名を入力して、continueをクリックします。（ここで課金されますので、ご注意ください）
![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1934715/7a31e73e-ae93-55f5-b2fa-06a6c0b209c0.png)

##**Step2  CISセットアップ**
次は、CISをセットアップします。
IBM Cloudカタログに、Internet Servicesを入力して、CISの画面を開いてください。
ここからオーダーします。
![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1934715/6f21393b-d1d9-37d8-93d3-d2475c372c30.png)

CISは結構なお金がかかりますので、操作を練習したい方には無料プランをおすすめです。
![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1934715/10d1363e-f8b2-74f3-e56d-f2a740c921ef.png)

下の写真通りに、ドメインのセットアップの手順に従って、手続きを進めます。
![6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1934715/905f85f0-311a-2269-f903-499abf621ea5.png)

最後の「ドメイン管理」のところで、「new NS records」があります。この「new NS records」をコピーして、今使っているDNS プロバイダーで自分のドメインのDNS設定のNSレコードを更新してください。

本手順では、IBM Cloud Domain Name Registrationでドメインを登録しましたので、前のstep1の「Domains」設定画面で新しいNSレコードで変更します。
![7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1934715/d82dd681-1423-ccf3-b1ac-840b83095758.png)

変更を保存したら、CISに戻って、ドメインの状態は「pending」から「active」になったら、完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1934715/c94f24d0-f67a-5795-ea69-a0ec331a8441.png)

次に、DNSレコードを追加します。CNAMEで名前解決をできて、www.sample.comからROKSにアクセスすることが実現できます。
左側のメニューの「信頼性」→「DNS」をクリックしてください。画面をスクロールして、一番下のところに新しいDNSレコードを設定します。
![9(8没有.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1934715/a3432c94-a872-d9bf-6198-6f76d8b6835f.png)
タイプはCNAME、値はROKSのLoad Balancerのホストです。

>**TIPS：**
> ROKSのLoad Balancerのホスト名を確認するcommand：
> `$ ibmcloud oc nlb-dns ls -c <cluster name>`

ここまで問題がなければ、CISの設定が完了です


##**Step3  ROKSのroute設定変更**
最後にROKSのLoad BalancerからPodにアクセスする方法をご説明いたします。
ここで、routeの役割はserviceを参照しながら、www.sample.comへのリクエストがどのPodに送ればいいのかを判断します。
以下の手順は全部CLIで操作するので、先にCLIでIBM CloudとOpenShiftにログインしておいてください。


```
$ oc get route -n <project name>                       //今のホスト名を確認
$ oc get route <pod name> -o yaml -n <project name>　    //YAMLファイルを確認
$ oc edit route <pod name> -n <project name>　          // YAMLファイルを編集
```
下の写真通りにYAMLファイルのホスト名をwww.sample.comに変更してください
![10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1934715/c8061f7e-2d56-3840-0dce-d0e493611a8d.png)

最後に、ブラウザからアクセスしてみて、問題なく表示されば、すべての設定が完成です。
以上で、自分のドメインにCIS経由でROKSのアプリにアクセスできるようになりました。


##**参考資料**
https://cloud.ibm.com/docs/infrastructure/cis/getting-started.html

https://www.imagazine.co.jp/openshift-net/

https://qiita.com/y_tama/items/9151b4c981abbb65c53d

https://docs.openshift.com/container-platform/3.6/dev_guide/expose_service/expose_internal_ip_load_balancer.html#expose-lb-svc

A huge THANK YOU to 舛谷さん & 山本さん。いろいろ教えてありがとうございます