ytooyamaのブログ

サーバ構築とか、仕事で発見したこととか、趣味のこととかを書いています。

OpenShift Origin MinishiftをLinux KVMで動かす

この記事はQiitaからの移行記事です。内容が古い場合があります。

前提知識

  • LPICレベル1程度の知識
  • Linux KVMの構築をしたことがある
  • Dockerを何となく知っている

Red Hat OpenShiftとは

Red Hat OpenShiftはDockerおよびKubernetesを基盤としたPaaSを提供するソフトウェアです。オープンソースで開発されており、Red Hat社によるサポートが提供されます。

OpenShift Origin Minishiftとは

OpenShift Originは上記のオープンソース実装です。MinishiftはOpenShiftをローカルで実行するのに役立つツールです。

今回の構成

ここでは次のような環境を作るのを想定します。

Minishiftホスト

任意のLinuxをインストールます。インストール後、Linux KVM環境を構築します。Linux Bridgeは不要です。

Driver Plug-in

実行する環境によっていくつかのドライバーが存在します。 今回はLinuxを利用するので、KVM Driverを使います。

Minishiftのセットアップ

Minishiftのダウンロード

Githubから最新リリースをダウンロードします。 アーカイブを展開して、/optディレクトリーに展開します。

Bashシェルを使っている場合は、bashrcなどにパスを記述しておきます。記述すべきファイルはLinuxディストリビューションによって異なります。ググりましょう。

KVM Driverをセットアップ

Linuxの場合はKVM Driverがデフォルトです。次のドキュメントにあるようにdocker-machine-driver-kvmプラグインを設定します。

2017/12/4時点ではversion 0.7.0が最新ですので、次のように実行します。

$ sudo curl -L https://github.com/dhiltgen/docker-machine-kvm/releases/download/v0.7.0/docker-machine-driver-kvm -o /usr/local/bin/docker-machine-driver-kvm

$ sudo chmod +x /usr/local/bin/docker-machine-driver-kvm

Virtual Networkのdefaultブリッジを有効化

KVMのdefaultブリッジが必要なので、無効化している場合は有効化します。

Minishiftの起動

ホスト上で次のようにコマンドを実行します。初回実行時は必要なパッケージなどのダウンロードとセットアップなどが行われます。

セットアップ後はLinux KVMに新しいネットワークブリッジが作成され、VMでBoot2Dockerが実行され、コンテナーでOpenShiftの各コンポーネントが実行されます。

$ minishift start

それ以外の操作はminishift --helpで確認します。

OpenShiftコマンドのパスを設定

ホスト上で次のようにコマンドを実行します。OpenShift(oc)コマンドを実行できるようになります。

$ minishift oc-env
$ eval $(minishift oc-env)

eval $(minishift oc-env)はシステム起動ごとに実行するのは面倒なので、basrcなどに書いておくと良いかもしれません。

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

OpenShiftコマンドを実行してアプリケーションをデプロイする前に、ログインします。デフォルトでユーザーdeveloper、パスワードdeveloperのユーザーが存在しますので、そのユーザーでログインします。

$ oc login -u developer -p developer

アプリケーションをデプロイしてみましょう。以下はこちらのスライドの引用です。

Deploy the apps
$ oc new-app https://github.com/openshift/nodejs-ex -l app=myapp

Show Log
$ oc logs -f bc/nodejs-ex

Expose the Service
$ oc expose svc/nodejs-ex

Connections
$ minishift openshift service nodejs-ex -n myproject

Status
$ oc get all

Show the Firefox
ex.
$ firefox http://nodejs-ex-myproject.192.168.42.122.nip.io

アプリケーションの削除

アプリケーションのデプロイ時に-lオプションでapp名を指定しておくと、関連するユニットをいっぺんに削除できる。

$ oc delete all -l app=myapp
buildconfig "nodejs-ex" deleted
imagestream "nodejs-ex" deleted
deploymentconfig "nodejs-ex" deleted
route "nodejs-ex" deleted
service "nodejs-ex" deleted
pod "nodejs-ex-1-hnwqr" deleted

オプションを付け忘れてしまったときは、oc get allコマンドで状況を確認して、不要なユニットを一つずつoc deleteコマンドで削除する。

$ oc get all
NAME           TYPE      FROM      LATEST
bc/nodejs-ex   Source    Git       1

NAME                 TYPE      FROM          STATUS     STARTED         DURATION
builds/nodejs-ex-1   Source    Git@d1af14d   Complete   4 minutes ago   23s

NAME           DOCKER REPO                           TAGS      UPDATED
is/nodejs-ex   172.30.1.1:5000/myproject/nodejs-ex   latest    3 minutes ago

NAME           REVISION   DESIRED   CURRENT   TRIGGERED BY
dc/nodejs-ex   1          1         1         config,image(nodejs-ex:latest)

NAME             DESIRED   CURRENT   READY     AGE
rc/nodejs-ex-1   1         1         1         3m

NAME               HOST/PORT                                   PATH      SERVICES    PORT       TERMINATION   WILDCARD
routes/nodejs-ex   nodejs-ex-myproject.192.168.42.122.nip.io             nodejs-ex   8080-tcp                 None

NAME            CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
svc/nodejs-ex   172.30.223.35   <none>        8080/TCP   4m

NAME                   READY     STATUS      RESTARTS   AGE
po/nodejs-ex-1-build   0/1       Completed   0          4m
po/nodejs-ex-1-c1zk3   1/1       Running     0          3m

QA

Q1.ブラウザーでアクセスするには

MinishiftホストにLinuxデスクトップ環境を導入するか、X11転送をおこなって、X11アプリを転送しましょう。方法や仕組みはここを参照。

Q2.もっと詳しく知りたい

公式のドキュメントに目を通しましょう。

Q3.インストールせずにOpenShiftを使いたい

OpenShift Onlineと言うものがあるようです。

このブログサイトはJavaScriptを使っていますが、読み込んでいるJavaScriptは全てはてなが提供しているものであり、筆者が設置しているものではありません。