2018年3月24日土曜日

OpenShift をサクッと試せる minishift を試してみた

概要

OpenShift は簡単に言ってしまえば kubernetes のエンタープライズ版になります
実際はライセンスを購入する必要がありますが簡単に試せる minishift というツールがあったので試してみました

環境

  • macOS 10.13.2
  • minishift v1.14.0+1ec5877
  • VirtualBox 5.1.30r118389

インストール

  • brew cask install minishift

今回は Mac なのでこれでインストールできます

minishift サーバの起動

  • minishift start --vm-driver=virtualbox

VirtualBox 上に minishift サーバ兼コンテナホスト VM を 1 つ立ててくれます
OS は minishift-b2d-iso という専用の OS を使っているようです
ISO やバイナリ、イメージのダウンロードが実行されるのである程度時間がかかります

Mac 上に Openshift 上のコンテナホストおよびコンテナを制御する oc コマンドがインストールされているので以下のコマンドで PATH に通します

  • eval $(minishift oc-env)

これで oc コマンドが使えるようになります
一応確認で oc version と打ってみてください
後述している証明書のエラーが出なければ完了です

minishift サーバ確認

VirtualBox 上に構築された VM の中を確認してみましょう

  • minishift ssh

で boot2docker のコンテナホストにログインしましょう
docker ps -a で確認するとすでにいくつかのコンテナが起動しているかと思います
minishift を動作させるのに必要なコンテナになるのでそのままにしておきます

管理画面

https://192.168.99.100:8443 にアクセスしてみましょう
192.168.99.100 は構築した minishift サーバのアドレスです

デフォルトは developer ユーザもしくは system ユーザでログインできます
developer ユーザはパスワードなしになっています
system ユーザのパスワードは「admin」です

まだ何もないですが以下のような UI が表示されるはずです
openshift1.png

コンテナを起動してみる

先の程の system ユーザを使って作業します
Mac 上の oc コマンドを使って制御します

まずはログインします
ログインしないで作業すると error: Error from server (Forbidden) というエラーになり進みません

  • oc login -u system

パスワードは admin と入力してください
次に test という名前のプロジェクトを作成します
ちなみにコマンドからプロジェクトを作成すると管理画面でも確認することができます

  • oc new-project test
  • oc project test

ログイン、プロジェクトの選択できたらアプリを作成します
アプリを作成するとコンテナも作成されます

  • oc new-app https://github.com/openshift/nodejs-ex -l name=myapp

-l オプションでラベルを付与することであとで削除しやすくしておきます
イメージの push などがあるので多少時間がかかります
コンテナができているか確認してみましょう

  • oc get pods
NAME                READY     STATUS      RESTARTS   AGE
nodejs-ex-1-build   0/1       Completed   0          3m
nodejs-ex-1-t9z5s   1/1       Running     0          9s

nodejs-ex-1-t9z5s というアプリ陽のコンテナが作成されました
build コンテナは Complelted になっていれば OK です
build コンテナのログを確認してみましょう

  • oc logs -f bc/nodejs-ex

これで「Push successful」 になっていれば OK です
OpenShift 内にあるプライベートリポジトリにイメージを push してそこからコンテナを起動しています
ちなみに bc は buildconfigs の略で OpenShift ではこれをリソースと読んでいます
リソースには様々な種類あり例えば dc は deploymentconfigs の略になります
ちなみに先ほどの new-app で buildconfigs, builds, imagestreams, deploymentconfigs, po, rc, svc のリソースが作成されています

外部からアクセスできるようにする

あとは外部からアクセスできるようにするだけです

  • oc expose svc/nodejs-ex

これで OK です
内部に DNS がありドメインを振ってくれています

  • oc status

でアクセスする URL が確認できます

http://nodejs-ex-test.192.168.99.100.nip.io to pod port 8080-tcp (svc/nodejs-ex)
  dc/nodejs-ex deploys istag/nodejs-ex:latest <-
    bc/nodejs-ex source builds https://github.com/openshift/nodejs-ex on openshift/nodejs:6 
    deployment #1 deployed 4 minutes ago - 1 pod

動作確認

内部のドメインにアクセスしてみましょう
http://nodejs-ex-test.192.168.99.100.nip.io

するとアプリにアクセスできると思います
openshift2.png

  • minishift openshift service nodejs-ex --in-browser -n test

でも確認できます

後処理

  • oc delete all -l name=myapp

で一通りのリソースを削除後

  • minishift stop

で OK です
サーバも不要な場合は minishift delete してください

Tips

Unable to connect to the server: x509: certificate signed by unknown authority

oc コマンド実行時に Unable to connect to the server: x509: certificate signed by unknown authority というエラーが出た場合には ~/.kube ファイルを一旦削除してから minishift start するようにしてください
どうやら oc コマンドが .kube ディレクトリを見ているようで同じホスト上で minikube を先に実行していると .kube ディレクトリがすでに出来ているようで minishift 用の .kube ディレクトリができていないみたいです
またすでに minishift start してしまっている場合は一旦 delete して再度 start する必要があります

  • minishift stop
  • minishift delete
  • rm -rf ~/.minishift
  • rm -rf ~/.kube
  • minishift start

oc login 時の注意

またログインする際に oc login -u system:admin という感じでログインするとユーザ名が「system:admin」という名前になってしまい管理画面などでプロジェクトを確認することができません
パスワードを指定する場合は -p オプションで指定するので注意してください
もしログイン先が間違っていると minishift openshift service nodejs-ex --in-browser -n test したときもそんなプロジェクトないと言われてエラーになってしまいます

コマンド

すべてのリソースを確認

  • oc get all

リソースの詳細を確認

  • oc describe svc/nodejs-ex

指定したリソースの取得

  • oc get svc

現在のプロジェクトの確認

  • oc project

最後に

minishift を Mac + VirtualBox で試してみました
名前からピンと来ている人はいると思いますが minishift は minikube の fork プロジェクトです
コマンドなども少し似ています
なので minikube に慣れている人であれば minishift は簡単に理解できると思います

まだ軽くしか触っていないので詳しくは不明ですが kubernetes にユーザ管理やプロジェクトの概念が追加されている感じです
また事前に準備されているカテゴリからアプリを簡単に展開することもできます
イメージ的には Rancher に近い感じだと思います

参考サイト

0 件のコメント:

コメントを投稿