LoginSignup
25
13

More than 3 years have passed since last update.

Red Hat OpenShift on IBM CloudがGAしたので早速使ってみた

Last updated at Posted at 2019-08-02

0. この投稿がきっかけで記事を書きました。(2019年10月27日追記)

最速で評価して書いたこのQiitaの記事をきっかけに、アットマークITに記事を書く機会をいただきました。
この記事では、Tok02だけのシングルサイトですが、記事では3つのデーターセンターを使った構成になってます。よかったら、記事の方もご一読頂けたら嬉しいです。

IBMのRed Hat買収の成果「Red Hat OpenShift on IBM Cloud」によって、複雑なマルチゾーンのOpenShiftクラスタの構築はどれほど簡単になるのか?
https://www.atmarkit.co.jp/ait/articles/1910/21/news003.html

1. はじめに

2019年8月1日に IBM Cloudの 「 Red Hat OpenShift on IBM Cloud 」がサービスインしました。
早いもの好きの1ユーザーとして、早速、OpenShiftのクラスターを作成してみます。

2. Red Hat OpenShift on IBM Cloud クラスター の作成

IBM Cloudポータルから「 Red Hat OpenShift Cluster 」を作成する

  1. IBM Cloudポータルから「 カタログ 」、 「 コンテナ 」、「 Red Hat OpenShift Cluster 」、「作成」の順番に遷移します。

  2. 「 Create a new OpenShift cluster 」が表示されます。
    スクリーンショット 2019-08-01 23.24.33.png

  • 「クラスタ名」を入力
  • 「リージョン」、「ロケーション」、OpenShiftのワーカーノードを展開する「ワーカーゾーン」を選択
    今回は、評価目的なので、ロケーションはtokyoで、ワーカーゾーンはtok02のみにしました。
  • デーフォルトのワーカープールで使用するフレーバを選択する。
    今回は最小の4vCPU,16GB RAM RHELを選択
  • ゾーンごとに作成するワーカーノード数を設定します。(デフォルト3)
  • 「クラスターの作成」をクリックしてクラスターの作成開始

「クラスターの作成」をクリックしてから約30分から45分でOpenShiftのクラスターが起動します。

リソースの一覧の中から気になったところは主に以下の4つです。

  • OpenShiftのバージョンは3.11
  • このサービスはAZ(アベイラビリティーゾーン)対応のロケーションでサービスインされていてる。 例えば、ロケーションをtokyoを選択すると、ワーカーゾーンは tok02, tok04, tok05の3つ利用できる。
  • ワーカーノードで選択できるマシンは、仮想・共有、仮想・専用、ベア・メタル(物理サーバ)と用途に合わせて選択できて便利  オンプレミスと違って、後から、ユースケースに合わせてワーカーノードを追加・削除できる
  • GPUのマシンも選べる

OpenShiftのCLI環境の準備

OpenShift clusterデプロイ中に、CLIの環境を準備します。

  1. IBM Cloud Developer Tools をインストールします。
$ curl -sL https://ibm.biz/idt-installer | bash
[main] --==[ IBM Cloud Developer Tools for Linux/MacOS - Installer, v1.2.3 ]==--
  1. oc clientをダウンロードして設置します。
$ curl -LO https://github.com/openshift/origin/releases/download/v3.11.0/openshift-origin-client-tools-v3.11.0-0cbc58b-mac.zip
$ unzip openshift-origin-client-tools-v3.11.0-0cbc58b-mac.zip
Archive:  openshift-origin-client-tools-v3.11.0-0cbc58b-mac.zip
  inflating: oc                      
  inflating: kubectl                 
  inflating: README.md               
  inflating: LICENSE                 
$ cp oc /usr/local/bin/
$ cp kubectl /usr/local/bin/
$ which oc
/usr/local/bin/oc

3. OpenShift Clusterデプロイ後の確認

OpenShift Webコンソールへのアクセス

  1. OpenShift clusterのデプロイ終了後、「 OpenShift Webコンソール 」をクリックすることで 「 OpenShift Webコンソール 」が表示されます。 スクリーンショット 2019-08-02 0.29.02.png
  • 「 OpenShift Webコンソール 」画面
    スクリーンショット 2019-08-02 1.15.49.png

OpenShiftへのCLIでのログイン

  1. OpenShiftのCLI操作をするために、まずは上記、 「 OpenShift Webコンソール 」画面の右上のユーザ名をクリックして表示された「Copy Login Command」をクリックして、クリップボードにコピーします。

  2. コピーしたコマンド「oc login https://c100-e.jp-tok.containers.cloud.ibm.com:31532 --token=<< ログイン用のAPI token >>」をターミナルで実行してログインします。

$ oc login https://c100-e.jp-tok.containers.cloud.ibm.com:31532 --token=<< ログイン用のAPI token >>

Logged into "https://c100-e.jp-tok.containers.cloud.ibm.com:31532" as "IAM#kjchingu@gmail.com" using the token provided.

You have access to the following projects and can switch between them with 'oc project <projectname>':

  * default
    ibm-cert-store
    ibm-system
    kube-proxy-and-dns
    kube-public
    kube-service-catalog
    kube-system
    openshift
    openshift-ansible-service-broker
    openshift-console
    openshift-infra
    openshift-monitoring
    openshift-node
    openshift-template-service-broker
    openshift-web-console

Using project "default".

4. 初めてのアプリケーションの作成

1. 「 oc new-project <<プロジェクト名>>でOpenShiftのプロジェクトを作成します。

$ oc new-project sample
Now using project "sample" on server "https://c100-e.jp-tok.containers.cloud.ibm.com:31532".

You can add applications to this project with the 'new-app' command. For example, try:

    oc new-app centos/ruby-25-centos7~https://github.com/sclorg/ruby-ex.git

to build a new example application in Ruby.

2. oc new-appコマンドを使って、プロジェクト作成時に出力されたRubyのサンプルアプリケーションを作成します。 今回は、centos/ruby-25というイメージを使用してアプリケーション[ https://github.com/sclorg/ruby-ex.git ]をビルドします。

$ oc new-app centos/ruby-25-centos7~https://github.com/sclorg/ruby-ex.git
--> Found Docker image cb490f3 (4 months old) from Docker Hub for "centos/ruby-25-centos7"
--> Creating resources ...
    imagestream.image.openshift.io "ruby-25-centos7" created
    imagestream.image.openshift.io "ruby-ex" created
    buildconfig.build.openshift.io "ruby-ex" created
    deploymentconfig.apps.openshift.io "ruby-ex" created
    service "ruby-ex" created
--> Success
    Build scheduled, use 'oc logs -f bc/ruby-ex' to track its progress.
    Application is not exposed. You can expose services to the outside world by executing one or more of the commands below:
     'oc expose svc/ruby-ex' 
    Run 'oc status' to view your app.

3. oc get allコマンド実行してデプロイの結果を確認します。 -o wide オプションをつけると ノード名が表示されます。   
  pod/ruby-ex-1-q4jmbのSTATUSがRunningになっているのでデプロイは正常に終了しています。

$ oc get all -o wide
NAME                  READY     STATUS      RESTARTS   AGE       IP              NODE            NOMINATED NODE
pod/ruby-ex-1-build   0/1       Completed   0          12m       172.30.152.71   10.129.139.47   <none>
pod/ruby-ex-1-q4jmb   1/1       Running     0          9m        172.30.152.72   10.129.139.47   <none>

NAME                              DESIRED   CURRENT   READY     AGE       CONTAINERS   IMAGES                                                                                                       SELECTOR
replicationcontroller/ruby-ex-1   1         1         1         9m        ruby-ex      172.21.210.124:5000/sample/ruby-ex@sha256:c2c95649aa6624cce585cf09ad7c0b52d0e35ace9ff0c2eff69011c17854cdc1   app=ruby-ex,deployment=ruby-ex-1,deploymentconfig=ruby-ex

NAME              TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE       SELECTOR
service/ruby-ex   ClusterIP   172.21.180.60   <none>        8080/TCP   12m       app=ruby-ex,deploymentconfig=ruby-ex

NAME                                         REVISION   DESIRED   CURRENT   TRIGGERED BY
deploymentconfig.apps.openshift.io/ruby-ex   1          1         1         config,image(ruby-ex:latest)

NAME                                     TYPE      FROM      LATEST
buildconfig.build.openshift.io/ruby-ex   Source    Git       1

NAME                                 TYPE      FROM          STATUS     STARTED          DURATION
build.build.openshift.io/ruby-ex-1   Source    Git@c00ecd7   Complete   12 minutes ago   3m7s

NAME                                             DOCKER REPO                                               TAGS      UPDATED
imagestream.image.openshift.io/ruby-25-centos7   docker-registry.default.svc:5000/sample/ruby-25-centos7   latest    12 minutes ago
imagestream.image.openshift.io/ruby-ex           docker-registry.default.svc:5000/sample/ruby-ex           latest    9 minutes ago

4. oc new-appコマンドでは、外部アクセス用のrouteは作成されないので、作成してアクセスします。

$ oc expose svc ruby-ex
route.route.openshift.io/ruby-ex exposed

$ oc get route
NAME      HOST/PORT                                                                                                 PATH      SERVICES   PORT       TERMINATION   WILDCARD
ruby-ex   ruby-ex-sample.mycluster-980608-148bd19a50ab440a3dbebb29a6cc6e69-0001.jp-tok.containers.appdomain.cloud             ruby-ex    8080-tcp                 None

$ curl http://ruby-ex-sample.mycluster-980608-148bd19a50ab440a3dbebb29a6cc6e69-0001.jp-tok.containers.appdomain.cloud
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  <title>Welcome to OpenShift</title>
 [以下省略]

HTMLのタイトル「Welcome to OpenShift」が出力されました。

デフォルトのホストネームのフォーマットは'< service_name>-< namespace>.< cluster_name>-< random_ID>.< region>.containers.appdomain.cloud' と、とても長いのですが、 oc exposeをする際に --hostname= オプションを使うと独自ドメインを使用することもできます。

5. 外部アクセス用のrouteを削除して、独自ドメインでアクセスできるrouteを作成してアクセスします。

(前提)下図の様に独自ドメインのDNS設定に  Ingresssサブドメインをポイントするcloudapps(任意の名前) のワイルドカード DNS エントリーを作成します。
スクリーンショット 2019-08-03 3.09.18.png

$ oc delete route ruby-ex
route.route.openshift.io "ruby-ex" deleted

$ oc expose svc ruby-ex --hostname ruby-ex-sample.cloudapps.example.com
route.route.openshift.io/ruby-ex exposed

$ oc get route
NAME      HOST/PORT                                  PATH      SERVICES   PORT       TERMINATION   WILDCARD
ruby-ex   ruby-ex-sample.cloudapps.example.com                 ruby-ex    8080-tcp                 None

$ curl http://ruby-ex-sample.cloudapps.example.com
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  <title>Welcome to OpenShift</title>
 [以下省略]

独自ドメインでも、HTMLのタイトル「Welcome to OpenShift」が出力されました。

  • 2019年8月3日時点で Ingressサブドメインのフォーマットが、tutorialのドキュメント、IBMCloudポータルのOpenShiftの概要、OpenShiftからの返却値が、一致してなくて混乱しますが、 いずれ改修されるはずですが、現時点では、oc get routeコマンドで出力される Ingressサブドメインが正しいです。

5.最後に

サポートがあると言ってもオンプレミスでOpenShiftを運用することは大変でした。

例)

  • 3ヶ月に1回のペースでバージョンがあがっていくのを追っかけなければならない
  • 何でもできるエンジニアがいつもいるわけでないので、メンバーの育成しないといけないけど、難しいとか

今回、IBM CloudのフルマネージドのOpenShiftを使うことによって、インフラの部分の負担は軽減されて、アプリケーションのリリースにリソースを割くことができることでしょう♪ 今後の展開をとっても期待してます!

25
13
3

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
25
13