nekop's blog

OpenShift / JBoss / WildFly / Infinispanの中の人 http://twitter.com/nekop

OpenShift Origin v3の最新版を試す - Vagrantで構築編

OpenShift Origin v3の最新版はVagrantで簡単に試せるようになっています。現時点でのOpenShift Origin v3はバージョン1.0.3がリリースされたところなので、今回動かすのは1.0.4の開発版ということになります。

Vagrant複数ノード構成を構築することもできるのですが、まずは一台のAll-in-one構成を作ります。基本的な使い方を知るにはこのAll-in-one構成で十分です。

ちなみにOpenShift v3のv3というのはアーキテクチャバージョンであり、実装のバージョンを示しているわけではありません。コードネームのようなものです。実装のソフトウェアバージョンはふつうに0.61.0.3など、よくあるx.y.zの形式です。初見でびっくりするかもしれません。

Vagrantの準備

自分はFedora 22でVagrantのバックエンドはlibvirt/qemu-kvmなので、それらをインストールします。Mac/WindowsではVirtualBoxを使うことになると思うので以下は読み飛ばして環境に合わせたVagrant/VirtualBoxのインストールを行ってください。

libvirtはインストールした後に以下の設定をしておいて都度認証しないようにしておきます。

sudo dnf install -y libvirt qemu-kvm
sudo groupadd libvirt
sudo usermod -aG libvirt nekop
sudo vi /etc/libvirt/libvirtd.conf
  # 以下の設定を有効化
  unix_sock_group = "libvirt"
  unix_sock_ro_perms = "0777"
  auth_unix_ro = "none"
  auth_unix_rw = "none"
sudo systemctl enable libvirtd && sudo systemctl start libvirtd

そしてVagrantをインストールします。

sudo dnf install -y vagrant vagrant-libvirt

OpenShift Origin v3のインストール

OpenShift Originのソースコードを取得します。ソースツリーにVagrantfileが含まれているので、そのままvagrant upするだけでOpenShiftのビルドおよび動作が可能なFedora 21のVMが立ち上がります。最初はboxのダウンロードを行うので少し時間がかかります。デフォルトでVMのメモリは1GBなのですが、ビルドに2GB使うので2GBを設定しておきます。

git clone https://github.com/openshift/origin/
cd ./origin/
cat <<EOF >.vagrant-openshift.json 
{
    "cpus": "4",
    "memory": "2048"
}
EOF
vagrant up
vagrant ssh

もう修正がマージされたので大丈夫だと思いますが、vagrant upMssing required arguments: libvirt_uri (ArgumentError)が出力される場合はFix incorrect ENV["VAGRANT_LIBVIRT_URI"] if statement by nekop · Pull Request #3862 · openshift/origin · GitHubの変更を適用してください。

VMsshしたら、OpenShiftの最新版をビルドします。

cd /data/src/github.com/openshift/origin/ # vagrant ssh後のカレントディレクトリなので移動してなければ不要
make clean build

ビルドが終わったら起動します。systemdの定義ファイルは最初からVagrant環境に配置されており、ビルドしたバイナリを指すようになっています。

sudo systemctl start openshift

OpenShiftは起動時にcertファイルなどを自動生成します。systemctlで起動した場合は/以下に生成され、/openshift.local.configのようなサブディレクトリが3つできます。

Vagrant環境では/etc/profile.d/openshift.shPATHKUBECONFIGが指定されていて、sudoなどを使う場合にちょっとトリッキーな挙動になることに注意してください。vagrantユーザではoc, oadmコマンドにPATHが通してあり、KUBECONFIGがadmin権限のものを指しているのでocコマンドなどの操作はデフォルトでOpenShiftのadmin権限となります。sudoは環境変数を明示的に渡さない限り環境変数を引き継がないですし、profileも読み込まないので、oc/oadmなどの実行時にこの点に引っかかるとoc: command not foundや、KUBECONFIGが必要なのに存在しない場合のError in configuration: default cluster has no server definedというメッセージが表示されます。

初期状態を確認してみましょう。

oc get all

10行くらいいろいろ出力されますが、kubernetesのサービスだけが見えると思います。

インストール後に最初はoadmコマンドを利用してDocker registryをデプロイするのですが、sudoを利用するのでoadmコマンドを事前にwhichに渡してフルパスに変換しています。

sudo `which oadm` registry --create --credentials=/openshift.local.config/master/openshift-registry.kubeconfig --config=/openshift.local.config/master/admin.kubeconfig

もう一度oc get allを実行してみてください。docker-registryがPendingステータスで見えるはずです。ここではdocker pullが行われているので、実際にDocker registryが起動してRunningの状態になるまで2分程度かかると思います。oc get pod, oc get pod --watch, oc get evなどでステータスを確認できます。

次にデフォルトのImageStreamをインポートします。

cat ./examples/image-streams/image-streams-centos7.json | oc create -n openshift -f - 

ここまででAll-in-one構成のOpenShift Origin v3のインストールは完了です。

次回は一般ユーザからこのOpenShiftを利用する手順を紹介します。ちなみに、このVagrant環境上で一般ユーザを試したい場合は、デフォルト設定されているadmin設定ファイルへの参照を消す必要があるので、unset KUBECONFIGを実行する必要があります。unsetした場合のKUBECONFIGのデフォルトは$HOME/.kube/configになります。

Vagrantではなく他の方法としてdockerで動かすというのもありますが、Fedora/RHEL/CentOS以外では動作しないようです。