この記事は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と言うものがあるようです。