すばやくOpenShiftを使うためのSandbox利用手順

# はじめに
RedHatのサンドボックスでOpenShiftを触ったので覚書です。
kubernetesの基礎知識はあった方がスムーズかと思います。
こちらの学習を始めた時の私のkubernetesの学習状況は、[こちら](https://qiita.com/c3drive/items/fd91e2d16f2a400be277)。
本当に基礎ですが、PodやRoute、createとapplyの違いなどはkubernetesの情報をもとに進めました。
サンドボックスは無料ですぐにOpenShiftが使い始められる環境です。利用期限あり。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/380300/fe873db2-e392-7397-0900-c3a1cb1f4f54.png)
サンドボックスの詳細は、[こちら](https://blog.desdelinux.net/ja/developer-sandbox-un-entorno-de-desarrollo-para-openshift-de-red-hat-para-impulsar-el-desarrollo-de-aplicaciones-de-kubernetes/)

## RedHatアカウント登録
まずは、以下URLからRedHatアカウントを作成します。
https://developers.redhat.com/about


## Sandboxの利用を開始
期間の制限はありますが、無料の使用が可能です。
ここでは開発者サンドボックス（利用期間30日）を利用します。

1. 以下URLにアクセスし、「無料トライアルを始める」を押下
https://www.redhat.com/ja/technologies/cloud-computing/openshift/get-started 

2. 開発者サンドボックスの「無料トライアルを始める」を押下

3. 以下の画面にて「Get started in the Sandbox」タブの「Launch your Developer Sandbox for Red Hat OpenShift」を押下
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/380300/16e54ee1-4ad5-9591-e37b-c0c404968c94.png)

4. 電話番号を「81」「9011112222」の形式で入力して認証します。（090-1111-2222の電話番号の場合）

5. webコンソールが開きます。

## CLIツールのインストール
ツールはバージョンごとに細かく分かれているのでまずはwebコンソールでバージョンを確認します。

1. 左ペインの上部が「Administrator」になっていることを確認し、「管理」-「クラスター設定」を押下
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/380300/c27963ef-2952-d95f-402e-e7da3a082379.png)

2. 現在のクラスターに表示されている数字がバージョンです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/380300/99b100ab-2dd9-eb38-a971-91680baaf4e6.png)

3. 以下URLにアクセスし、先ほど確認したOpenShiftのバージョンに合致するリンクを押下し、ホスト端末の環境に該当するインストーラーをDL
https://mirror.openshift.com/pub/openshift-v4/clients/ocp/

4. DLしたインストーラーを使って端末にインストール

5. ターミナルを開き以下コマンドでバージョンが確認できればインストール成功
```bash
> oc version
```
## CLIツールのログイン
1. webコンソールにアクセスし、右上のユーザ名から「ログインコマンドのコピー」を押下
2. DevSendBoxを押下
3. Deploy Tokenを押下
4. Log In with this tokenに表示されたコマンドをコピーしてターミナルで実行するとログインできます
```bash
> oc login --token=XXXXXXXXXXXXXXXXX --server=https://api.sandbox.x8i5.p1.openshiftapps.com:6443
Logged into "https://api.sandbox.x8i5.p1.openshiftapps.com:6443" as "ユーザ名" using the token provided.
```

## プロジェクト作成
webコンソールやCLI（`oc new-project my-project`）で作成することができますが、
Sandboxでは、新規にプロジェクトを作成することができないため、すでに用意されているプロジェクトを利用します。

## webコンソールからアプリを作成してみる
地図が表示できるwebアプリをデプロイします。

1. webコンソールにログインし、左ペインで「Developer」を選択
2. 左ペインから「追加」を押下
3. 追加できるリソースが表示されます。ここではDocker Hub ImageのPodを追加してみます。「コンテナ-イメージ」を押下
4. 以下の情報を入力し、「作成」を押下
　　外部レジストリーからのイメージ名：docker.io/openshiftroadshow/parksmap-katacoda:1.2.0
　　名前：任意
5. TOP画面に戻りPodが作成されているのを確認（真ん中のものがPod)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/380300/d3c2e52d-1144-1f89-c1ca-3622cfe6a70f.png)
6. Podを押下すると表示される以下の画面の「^」でPod数を増加できます。逆は減らせます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/380300/bade9bbc-7a65-4ba6-c467-d0f21195e4af.png)
この数値は、Podのあるべき姿なので、2と定義して起動しているものを1つ削除した場合、自動的に追加のPodが起動して2になるようになります。

7. このイメージはすでに「Route」が定義されているため丸の右上のリンクマークを押下するとアプリが確認できます。（地図のアプリです）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/380300/436d193f-a308-9cf8-cb1c-51837d7c2448.png)
 
## CLIからアプリを作成してみる
Jenkinsでパイプライン構築を行ってみます。
こちらの手順は、こちらの[ブログ](https://developers.redhat.com/blog/2019/05/02/get-started-with-jenkins-ci-cd-in-red-hat-openshift-4#where_are_we_)を参考にしています。
1. ターミナルにて以下コマンドでテンプレートの確認。
```bash
> oc get templates -n openshift
```
2. ターミナルにて以下コマンドでアプリケーションを作成。今回は表示されたテンプレートの中からJenkinsを選択。
```bash
> oc new-app jenkins-ephemeral
```
3.yamlからPodを作成
```bash
> oc create -f https://raw.githubusercontent.com/openshift/origin/master/examples/jenkins/pipeline/nodejs-sample-pipeline.yaml
```

4.JenkinsPiplineをビルドします。
```bash
> oc start-build nodejs-sample-pipeline
```

5.Routeの確認
```bash
>oc get routes
NAME                        HOST/PORT                                                                         PATH   SERVICES                    PORT       TERMINATION     WILDCARD
jenkins                     jenkins-yuko-kanai-dev.apps.sandbox.x8i5.p1.openshiftapps.com                            jenkins                     <all>      edge/Redirect   None
nodejs-postgresql-example   nodejs-postgresql-example-yuko-kanai-dev.apps.sandbox.x8i5.p1.openshiftapps.com          nodejs-postgresql-example   <all>                      None
```

6.Routeで確認したjenkinsのURL（`jenkins-yuko-kanai-dev.apps.sandbox.x8i5.p1.openshiftapps.com`)へアクセスするとJenkinsを確認
nodejs-postgresql-exampleのURLは、サンプルのCRUDアプリへ接続します。

## その他のコマンド
yamlの適用（createで使ったyamlからの変更なども）
```bash
> oc apply -f pod.yaml
```

そのほか

https://access.redhat.com/documentation/ja-jp/openshift_container_platform/4.3/html/cli_tools/cli-developer-commands

# おわりに
前段にKubernetesの学習をしていたこともあり、Pod、Routeなどの意味は分かっていましたが、Kubernetesとの違いがあまり分かっていないため学習を進めたいです。
アプリケーションとして追加できる対象はバリエーションが多く、自身の開発状況にあったものを選べないか見てみようと思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/380300/d8434051-9d19-089d-bdb4-d2eb75560d7d.png)

ありがとうございました。