Red Hat OpenShift on IBM CloudがGAしたので早速使ってみた
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 」を作成する
IBM Cloudポータルから「 カタログ 」、 「 コンテナ 」、「 Red Hat OpenShift Cluster 」、「作成」の順番に遷移します。
- 「クラスタ名」を入力
- 「リージョン」、「ロケーション」、OpenShiftのワーカーノードを展開する「ワーカーゾーン」を選択
今回は、評価目的なので、ロケーションはtokyoで、ワーカーゾーンはtok02のみにしました。
- デーフォルトのワーカープールで使用するフレーバを選択する。
今回は最小の4vCPU,16GB RAM RHELを選択
- ゾーンごとに作成するワーカーノード数を設定します。(デフォルト3)
- 「クラスターの作成」をクリックしてクラスターの作成開始
IBM Cloudポータルから「 カタログ 」、 「 コンテナ 」、「 Red Hat OpenShift Cluster 」、「作成」の順番に遷移します。
今回は、評価目的なので、ロケーションはtokyoで、ワーカーゾーンはtok02のみにしました。
今回は最小の4vCPU,16GB RAM RHELを選択
「クラスターの作成」をクリックしてから約30分から45分でOpenShiftのクラスターが起動します。
リソースの一覧の中から気になったところは主に以下の4つです。
- OpenShiftのバージョンは3.11
- このサービスはAZ(アベイラビリティーゾーン)対応のロケーションでサービスインされていてる。 例えば、ロケーションをtokyoを選択すると、ワーカーゾーンは tok02, tok04, tok05の3つ利用できる。
- ワーカーノードで選択できるマシンは、仮想・共有、仮想・専用、ベア・メタル(物理サーバ)と用途に合わせて選択できて便利 オンプレミスと違って、後から、ユースケースに合わせてワーカーノードを追加・削除できる
- GPUのマシンも選べる
OpenShiftのCLI環境の準備
OpenShift clusterデプロイ中に、CLIの環境を準備します。
- IBM Cloud Developer Tools をインストールします。
$ curl -sL https://ibm.biz/idt-installer | bash
[main] --==[ IBM Cloud Developer Tools for Linux/MacOS - Installer, v1.2.3 ]==--
- 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コンソールへのアクセス
OpenShiftへのCLIでのログイン
OpenShiftのCLI操作をするために、まずは上記、 「 OpenShift Webコンソール 」画面の右上のユーザ名をクリックして表示された「Copy Login Command」をクリックして、クリップボードにコピーします。
コピーしたコマンド「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#[email protected]" 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. 初めてのアプリケーションの作成
OpenShiftのCLI操作をするために、まずは上記、 「 OpenShift Webコンソール 」画面の右上のユーザ名をクリックして表示された「Copy Login Command」をクリックして、クリップボードにコピーします。
コピーしたコマンド「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#[email protected]" 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".
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 エントリーを作成します。
$ 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を使うことによって、インフラの部分の負担は軽減されて、アプリケーションのリリースにリソースを割くことができることでしょう♪ 今後の展開をとっても期待してます!
Author And Source
この問題について(Red Hat OpenShift on IBM CloudがGAしたので早速使ってみた), 我々は、より多くの情報をここで見つけました https://qiita.com/daihiraoka/items/7f40605984b3b28a6a0d著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .