2
3

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.

初心者向け Ret Hat OpenShift on IBM Cloud v4.10 クラスターを作成

Last updated at Posted at 2022-05-02

内容

Red Hat OpenShift on IBM Cloud勉強の手始めに、こちらのチュートリアルを実施しました。(日本語訳ページはバージョンが古いようなので英語ページを参照)
学んだことの覚え書き。
Creating an Red Hat OpenShift cluster in your Virtual Private Cloud (VPC)

目標

・ VPC上にRed Hat OpenShift on IBM Cloudクラスターの作成する
・ OpenShiftプロジェクトにアプリをデプロイしてアクセスする

OpenShift ワーカー・ノードは、有料アカウントおよび標準クラスターでのみ使用可能です。課金が発生するようです。

事前準備

権限

 IBM Cloud 管理者権限を持つユーザ

各種コマンド・ライン・ツールをインストール

 Tutorialに記載されているリンク先の情報に従ってセットアップ

  • ibmcloudコマンド
  • ibmcloudコマンドのプラグイン
    • container-service(oc)
    • container-registry(cr)
    • observe-service(ob)
    • infrastructure-service(is) ※VPC操作のため
  • ocコマンド および kubectlコマンド

Step1. IBM Cloud準備〜クラスター作成

IBM Cloud準備

 既存のVPC、サブネット、パブリックゲートウェイを使用。
 今回はロケーション東京2で作成。
 追加でオブジェクトストレージを作成(内部レジストリーのバックアップ先)。

  • VPC : 既存(vpc-fj)
  • サブネット : 既存(sn-fj-2) ※東京2
  • パブリックゲートウェイ : 既存(pgw-fj-2) ※東京2、sn-fj-02に接続
  • オブジェクトストレージ : ibmcloudコマンドで作成(fj-cos)
    ibmcloud resource service-instance-create fj-cos cloud-object-storage standard global

環境のイメージ

image.png

クラスターの作成

 作成パラメータ

  • クラスター名 : roks-fj-cluster
  • ゾーン : 東京2(jp-tok-2)
  • バージョン : 4.10(5/2時点の最新)
  • ワーカーノードスペック(OpenShiftの最小値)
    • 4 cores, 16GB memory
    • 2台

 下記実行してクラスター作成。クラスターができるまでしばらくかかる。(40分くらい)

ibmcloud oc cluster create vpc-gen2 --name fj-cluster --zone jp-tok-2 --version 4.10_openshift --flavor bx2.4x16 --workers 2 --vpc-id <VPCのID> --subnet-id <サブネットのID> --cos-instance <オブジェクトストレージのID>

※オブジェクトストレージのIDは ibmcloud resource service-instances --long コマンドで取得できる。("crn:~"で始まる文字列を指定する)

作成後確認

ibmcloud oc cluster get --cluster <クラスター名> で作成状況を確認。(クラスターの状態が「normal」になること)
ibmcloud oc cluster config --cluster <クラスター名> --admin でクラスターのコンテキスト構成をダウンロード。などなど。

Step2. アプリケーションのデプロイ

Tutorialに沿ってアプリのデプロイを実施。

プロジェクトの作成

oc new-project hello-world

コンテナの作成・デプロイ、サービスの作成

oc new-app --name hello-world https:...
 このコマンドにより以下が行われる。
 ・ Githubリポジトリ上のDockerfileに基づきコンテナイメージを作成
 ・ コンテナをデプロイしPodを起動
 ・ hello-worldサービスを作成

 サービスを確認。

% oc get svc -n hello-world
NAME          TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
hello-world   ClusterIP   172.21.194.214   <none>        8080/TCP   4s
% 

EXTERNAL-IPがなくまだ外部ネットワークからサービスにアクセスできない。以降の作業で設定する。

Step3. 外部ネットワークからアクセスできるようにする

方法

 Tutorialには2つの方法が記載されている
 1. VPCロードバランサを経由してアプリケーションにアクセスする
 2. Red Hat OpenShiftのrouteを利用する(Tip)

方法1. VPCロードバランサを経由してアプリケーションにアクセスする

OpenShift上でLoadbalancerタイプのサービスを作成すると、自動的にVPCにロードバランサが作成されサービスと紐付けられる。VPCロードバランサのURLにアクセスすることでサービスにアクセス可能となる。

作り方

Tutorialのやり方ではdeploy configurationは作成されず、Tutorial通りに実行すると "Error from server (NotFound): deploymentconfigs.apps.openshift.io "hello-world" not found" でエラーとなる。

oc expose dc/hello-world --type=LoadBalancer...
引数の「dc/hello-world」 を 「deployment/hello-world」に変えて実行する。

oc expose deployment/hello-world --type=LoadBalancer --name=hw-lb-svc  --port=8080 --target-port=8080 -n hello-world

この結果、VPC側に自動的にロードバランサが作成される。VPCロードバランサのURLはoc describe service hw-lb-svc -n hello-worldの出力で「LoadBalancer Ingress」の項目で確認できる。

% oc describe service hw-lb-svc -n hello-world

Name:                     hw-lb-svc
Namespace:                hello-world
Labels:                   app=hello-world
                          app.kubernetes.io/component=hello-world
                          app.kubernetes.io/instance=hello-world
Annotations:              <none>
Selector:                 deployment=hello-world
Type:                     LoadBalancer
IP Family Policy:         SingleStack
IP Families:              IPv4
IP:                       172.21.41.11
IPs:                      172.21.41.11
LoadBalancer Ingress:     xxxxxxxx-jp-tok.lb.appdomain.cloud
Port:                     <unset>  8080/TCP
TargetPort:               8080/TCP
NodePort:                 <unset>  32647/TCP
Endpoints:                172.17.9.53:8080
Session Affinity:         None
External Traffic Policy:  Cluster
Events:
  Type    Reason                Age   From                Message
  ----    ------                ----  ----                -------
  Normal  EnsuringLoadBalancer  96s   service-controller  Ensuring load balancer
  Normal  EnsuredLoadBalancer   70s   service-controller  Ensured load balancer
% 
疎通確認

「LoadBalancer Ingress」のURLにアクセス。

% curl xxxxxxxx-jp-tok.lb.appdomain.cloud:8080
Hello world from hello-world-5794dc544c-q2lsz! Your app is up and running in a cluster!
% 

方法2. Red Hat OpenShiftのrouteを利用する(Tip)

OpenShiftのRoute機能を利用してアプリケーションにアクセスする。

作り方

 公開用のサービスとして(hw-rt-svc)を作成する。

oc expose deployment/hello-world --name=hw-rt-svc

 作成したサービスを公開する。(シンプル)

oc expose service hw-rt-svc

 サービスへの経路ができたことを確認する。

% oc get routes
NAME        HOST/PORT                                                                             PATH   SERVICES    PORT   TERMINATION   WILDCARD
hw-rt-svc   hw-rt-svc-hello-world.roks-fj-cluster-xxxx.jp-tok.containers.appdomain.cloud          hw-rt-svc   8080                 None
%
疎通確認

経路情報のHOST/PORTにアクセスする。

% curl hw-rt-svc-hello-world.roks-fj-cluster-xxxx.jp-tok.containers.appdomain.cloud
Hello world from hello-world-5794dc544c-q2lsz! Your app is up and running in a cluster!
% 

接続イメージ

image.png

オプション

hello-worldプロジェクトの削除

削除対象のリスト

% oc get all -l app=hello-world -o name -n hello-world
service/hello-world
service/hw-lb-svc
service/hw-rt-svc
deployment.apps/hello-world
buildconfig.build.openshift.io/hello-world
build.build.openshift.io/hello-world-1
imagestream.image.openshift.io/hello-world
imagestream.image.openshift.io/node
route.route.openshift.io/hw-rt-svc
% 

全て削除

% oc delete all -l app=hello-world -n hello-world
service "hello-world" deleted
service "hw-lb-svc" deleted
service "hw-rt-svc" deleted
deployment.apps "hello-world" deleted
buildconfig.build.openshift.io "hello-world" deleted
imagestream.image.openshift.io "hello-world" deleted
imagestream.image.openshift.io "node" deleted
route.route.openshift.io "hw-rt-svc" deleted
%

※hw-lb-svcの削除によりVPCロードバランサも削除される

以上

2
3
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
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?