はじめに
NginxのWebサーバをたててアクセスする手順を紹介する記事が多いですが、ROKS(Red Hat OpenShift on IBM Cloud))で構築する手順はあまり多くなかったので、今回はゼロからIBM Cloud VPC環境にROKSのクラスターを構成しNginx Podをデプロイする手順をご紹介します。
IBM Cloudやcontainerを操作した経験のない初心者の方に向けた手順です。
では、一緒にやってみましょう。
本手順では、
Step1 VPC環境の構築
Step2 ROKSのオーダー
Step3 ROKSクラスターへのログイン
Step4 Nginxサーバ作成、アクセス
の流れで実施します。
前提・環境
必要な物は以下です
-
IBM Cloudアカウント
-
IBM Cloud CLI
(インストール:https://cloud.ibm.com/docs/cli?topic=cli-getting-started ) -
OC CLI
(インストール:https://docs.openshift.com/container-platform/4.7/cli_reference/openshift_cli/getting-started-cli.html#installing-openshift-cli ) -
Plug-in (下記コマンドでインストール)
$ install vpc-infrastructure $ ibmcloud plugin install container-service $ ibmcloud plugin install container-registry $ ibmcloud plugin install observe-service
本手順の環境はwindows 10です。
準備完了したら、構築手順を進めていきましょう。
Step1 VPC環境の構築
まず、IBM Cloudにログインします。
本手順では、API key でログインしていますが、他の方法でもできます。お好きな方法でログインしてください。
$ ibmcloud login --apikey <API_KEY> -g <RESOURCE_GROUP_NAME> -r jp-tok
例:$ ibmcloud login --apikey <API_KEY> -g rg-common -r jp-tok
API エンドポイント: https://cloud.ibm.com
認証中です...
OK
Tips:
API keyを獲得する方法はこちらのリンクに参照してください↓
https://www.ibm.com/docs/en/app-connect/containers_cd?topic=servers-creating-cloud-api-keyhttps://www.ibm.com/docs/en/app-connect/containers_cd?topic=servers-creating-cloud-api-key
step1ではvpc、subnet、public gateway(ROKS用security group)、cloud object storage(データ保管用)、これら4つのサービスをオーダーします。オーダーする方法を1つずつご紹介いたします。
今回は1つのIBM Cloudの中に3つのゾーンを作り、各ゾーンに1つROKS用subnetとpublic gatewayを作成します。以下に環境のアーキテクチャーを示します。
以下に設定項目を示します。
項目 | 数量 | 設定 |
---|---|---|
IBM Cloud: Zone | 3 | jp-tok-1, jp-tok-2, jp-tok-3 (region: Japan) |
IBM Cloud: recourse group | 1 | rg-common |
VPC | 1 | vpc-common |
Subnet | 3 | subnet-common1, subnet-common-2, subnet-common-3 |
Public Gateway | 3 | pgw-common-tok1, pgw-common-tok2, pgw-common-tok3 |
IBM Cloud Object Storage | 1 | objectstorage-common |
1.1 vpc
##vpc作成
$ ibmcloud is vpc-create <VPC_NAME>
例:$ ibmcloud is vpc-create vpc-common
1.2 subnet
##subnet作成
$ ibmcloud is subnet-create <SUBNET_NAME> <VPC_ID> --zone jp-tok-1 --ipv4-address-count ADDR_COUNT --resource-group-name <RESOURCE_GROUP_NAME>
例:$ ibmcloud is subnet-create subnet-common1 r022-xxxxxxx --zone jp-tok-1 --ipv4-address-count 256 --resource-group-name rg-common
3つのsubnetが必要なので、commandを繰り返して入力してください。
1.3 public gateway
public gatewayをオーダーしていきます。
オーダー方法は二つがあります。一つ目は、GUI(IBM cloud console画面)で直接オーダーできます。二つ目はCLIでcommandを打ってオーダーします。本手順では、CLIからオーダーする方法をご説明いたします。
##public gateway作成
$ ibmcloud is public-gateway-create <PUBLIC_GATEWAY_NAME> <VPC_ID> <ZONE_NAME>
例:$ ibmcloud is public-gateway-create pgw-common-tok1 r022-xxxxxxxx jp-tok-1
##作ったpublic gatewayをsubnetに繋げる
$ ibmcloud is subnet-update <SUBNET_ID> --public-gateway-id <PUBLIC_GATEWAY_ID>
例:$ ibmcloud is subnet-update 02f7-xxxxxx --public-gateway-id r022-393xxxxxxxxxxxxx
subnetの個数分繰り返します。
1.4 object storage
最後にobject storageをオーダーします。GUIから非常に作りやすいので、IBM Cloudでオーダーしましょう。
右上の「カタログ」→「object storage」と入力→「object storage」をクリックしてください。
このobject storageはVPC環境に構築されるROKSのデータを格納するために利用します。ライトプランではこの目的での利用ができないため、最低でもstandardプランでのオーダーが必要となります。
Step2 ROKSのオーダー
ROKSのオーダーもGUIから実施します。
「カタログ」→「openshift」と入力→「Red Hat OpenShift on IBM CLoud」をクリックしてください。
以下にROKSの設定情報をしめします。 以下の画像通りに進めてください。
項目 | 設定 |
---|---|
クラスターname | ROKS-common |
Infrastructure | VPC |
Cloud object storage | objectstorage-common |
Zone | jp-tok-1, jp-tok-2, jp-tok-3 |
Worker pool | 1(ゾーンあたりワーカー・ノード) |
Subnet | subnet-common1, subnet-common-2, subnet-common-3 |
Security Group | default SG |
右下の「作成」をクリックして、ROKSのオーダーは完了です。
Step3 ROKSクラスターへのログイン
次に、CLIからROKSクラスターへログインする方法をご説明いたします。
クラスターへのログイン方法は二つがあります。
一つ目は、IBM Cloud の IAM のでAPI キーを作成し、その API キーを使用してROKSクラスターにログインできます。こちらの資料に参照してください → https://cloud.ibm.com/docs/openshift?topic=openshift-access_cluster#access_api_key
$ oc login -u apikey -p <API_KEY>
二つ目は、openshift web consoleから、ログインcommandをコピーして、CLIにペーストします。
「OpenShift Web コンソール」→右上の「IAM#ACCOUNT_NAME」→「Copy Login Command」→「Display Token」→「Log in with this token」
では、CLIからクラスターへログインします。
# amdin権限でkubeconfig取得
$ ibmcloud oc cluster config --cluster <ROKS_NAME> --admin
例:$ ibmcloud oc cluster config --cluster roks-common --admin
#kubeconfigをダウンロード
$ ibmcloud oc cluster config -c <ROKS_NAME>
例:$ ibmcloud oc cluster config -c roks-common
# クラスターへログイン
#方法1:
$ oc login -u apikey -p <API_KEY>
Login successful.
You have access to 67 projects, the list has been suppressed. You can list all projects with 'oc projects'
Using project "default".
#方法2:
$ oc login --token=<XXXXXX> --server=<XXXXXX>
Logged into "XXXXXXX" as "IAM#xxxxxxx" using the token provided.
You have access to 67 projects, the list has been suppressed. You can list all projects with 'oc projects'
Using project "default".
次に、security groupにROKS用の設定を追加します。
# SecurityGroupのIDを取得
$ ibmcloud is security-groups
# SecurityGroupにROKS用のルールを追加
$ ibmcloud is security-group-rule-add <SECURITY-GROUP-ID> inbound tcp --port-min 30000 --port-max 32767
$ ibmcloud is security-group-rule-add <SECURITY-GROUP-ID> inbound udp --port-min 30000 --port-max 32767
例:$ ibmcloud is security-group-rule-add r022-xxxxxx inbound tcp --port-min 30000 --port-max 32767
例:$ ibmcloud is security-group-rule-add r022-xxxxxx inbound udp --port-min 30000 --port-max 32767
projectを作成します。
$ oc new-project <project_name> --description="<DESCRIPTION>" --display-name="<DISPLAY-NAME>
例:$ oc new-project test-common --description="this is a test page" --display-name="test-common"
二回目以降は、先に使いたいprojectを選択します
$ oc project <PROJECT-NAME>
例:$ oc project test-common
Now using project "test-common" on server "https://xxxxxx".
以上で、ROKSクラスターへのログイン、またprojectへのログインについてのご紹介を終わります。
Step4 Nginxサーバ作成、アクセス
projectへログインして、nginxサーバを作成して、アクセスしてみます。
#Pod作成、Service作成
$ oc run nginx --image=nginx --restart=Never --expose --port=80
#ServiceをRouteに紐付け
$ oc expose service nginx
OR ($ oc expose svc nginx)
#新しく作成されたRouteを確認
$ oc get route
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD
nginx xxxxxxxxxxxxxxxxx nginx 80 None
openshfit web consoleから「developer」→「topology」→podの右上の矢印をクリックして、nginxを確認してみます。
以上が、ゼロからIBM CloudのROKS環境を構築し、Nginxを建て、アクセスする方法になります。
ご参考になれば幸いです。
参考資料
https://rheb.hatenablog.com/entry/2021/07/01/Red_Hat_OpenShift_on_IBM_Cloud_%28ROKS%29_