LoginSignup
5
4

More than 5 years have passed since last update.

OpenShift Origin Minishift を CentOS 7.3 on VMware Workstationに入れてみた

Last updated at Posted at 2017-06-25

OpenShift Origin Minishiftとは

RedHat社が提供するOpenShift環境のOrigin(RedHatからみたfedora的な位置づけのOSSプロダクト)、検証環境です。

オフィシャルサイト: OpenShift Origin - Minishift

OpenShiftでは、PaaS開発環境としてS2Iという機能がある他、
Docker + Kubernetesの上に成り立つプラットフォームで、コンテナオーケストレーションがすごいプロダクトです。
盛大な開発環境を用意しなくとも、minimumでこのopenshiftを使えますよ。というものです。

KVMや、Hyper-V、xhyveなど仮想環境上に、VMをロードし、仮想マシン+コンテナを動かして、
OpenShiftのコンポーネントさえもdockerイメージで動かしてしまうようです。
(このあたりの概要はまだ完全な理解で無いため、意図が正しくない場合はすいません)

Minishiftのインストールできるバリエーション

どれがオススメというわけではありませんが、1、2は私が実際に導入までこぎつけました。
3,4,は私の環境特有の問題ということで、断念です。

  1. macbook(xhyve)に入れる。
    home brewを使ってインストール出来るので割りと考慮点なくサクッと入ったイメージ。
    実は初めて使ったのですがxhyveという仮想環境をhomebrewの上で構築されます。
    後日書く予定。

  2. KVM based linuxに入れる。
    今回の記事。
    ただし、実機ではなく、VMware Workstation上に。
    この記事ではOpenShift Originを入れることをメインに書きますが、
    VMware Workstationなどの仮想環境に入れた際に考慮するポイントを書きます。

  3. Windows Hyper-V上に入れる
    実はVMware Workstationに入れようとしてうまく行かなくて、
    Hyper-VとVMware Workstation共存環境作ろうとしたのですが・・・ 諦めました。
    (Device Guardまわりで、VMware Workstationの方に影響したので)

  4. Windows Virtual Boxに入れる
    3と理由は同じで検討しましたが、Hyper-V入れたあとVMware WorkstationのVMが全て動かなくなり、
    半泣きになったので諦めました。

実際にはmacbookで遊んでいるのですが、広いデスクトップでもopenshiftであそびたーい!ということで、Windows10上にVMで立ててみることとしました。
今回はうまくWindows nativeに建てられなかったので、もう少し課題が残っていますが起動するところまではこぎつけたので記録と紹介を兼ねてUpです。

インストールに使用した環境

ホストOS

環境 構成
Host OS Windows 10 Pro 64 Bit
Hypervisor VMware Workstation Pro12

ゲストOS

環境 構成
GustOS CentOS 7.3 64bit
Guest vCPU 2core
Guest vMem 8GB
Guest vHDD 100GB
Guest vNIC Bridge

ゲストOSのインストール

ゲストVMの設定

  1. 新規マシンウィザードからVM生成を開始します。
    「カスタム」を選択し、「次へ」をクリックします。
    image.png

  2. 仮想マシンのハードウェア互換性の選択
    ハードウェア互換性を「Workstation 12.x」のままで「次へ」をクリックします。
    image.png

  3. ゲストOSのインストール
    「後でOSをインストール」を選択し、「次へ」をクリックします。
    image.png

  4. ゲストOSの選択
    ゲストOS「Linux」、バージョン「CentOS 64 ビット」を選択し、「次へ」をクリックします。
    image.png

  5. 仮想マシンの名前
    適当な名前、適当な場所を指定します。
    image.png

  6. プロセッサ構成
    プロセッサ数「2」、プロセッサごとのコア数「1」としますが、
    環境と必要数にそって変更してください。
    指定後、「次へ」をクリックします。
    image.png

  7. 仮想マシンのメモリ
    今回は8GB分、「8192 MB」を指定し、「次へ」をクリックします。
    image.png

  8. ネットワークの種類
    「ブリッジ ネットワークを使用」を選択し、「次へ」をクリックします。
    image.png

  9. I/Oコントローラタイプの選択
    デフォルトのままとします。
    image.png

  10. ディスクタイプの選択
    デフォルトのままとします。
    image.png

  11. ディスクの選択
    「仮想ディスクの新規作成」とします。
    image.png

  12. ディスク容量の指定
    ディスクサイズはまず100GBとしました。
    I/Oパフォーマンスを重視して、「今すぐ全ディスク容量を割り当てる」と選択し、
    「仮想ディスクを単一ファイルとして格納」を選択後、「次へ」をクリックします。
    image.png

  13. ディスク ファイルの指定
    デフォルトのままとします。
    image.png

  14. 仮想マシンを作成する準備完了
    ハードウェアをカスタマイズします。
    image.png

  15. ハードウェアのカスタマイズ#1 プロセッサ
    非常に重要です!
    VMware上に、Hypervisorを更に載せて仮想化するため、
    「Intel VT-x/EPT または AMD-V/RVIを仮想化」をクリックし有効にします。
    これを実行しないとKVMが有効になりません。
    image.png

  16. ハードウェアのカスタマイズ#2 CD-ROM
    ISOイメージから"CentOS-7-x86_64-Minimal-1611.iso"を選びます。
    選択後、「閉じる」をクリック、「完了」をクリックします。
    image.png

ゲストOSのインストール

VMをパワーオンしてインストールを開始します。

  1. CentOSのインストール
    image.png

  2. Press ENTER
    image.png

  3. 言語の選択
    image.png

  4. インストールの概要
    image.png
    image.png

  5. インストール先の選択
    インストール先のディスクを選択して完了をクリックします。
    image.png

  6. ネットワークとホスト名
    ホスト名を入力して、「適用」をクリック
    イーサネットの「オフ」をクリックして「オン」にする。
    「設定」をクリックする。
    image.png

  7. ネットワークとホスト名(IF設定ー>全般)
    「この接続が利用可能になったときは自動に接続する」をクリックする。
    image.png

  8. ネットワークとホスト名(IF設定ー>IPv4のセッティング)
    静的IPアドレスを設定して、「保存」(画面上では切れて「保」のみですが・・・)をクリック
    image.png

  9. ネットワークとホスト名(確認)
    「完了」をクリック
    image.png

  10. インストールの開始
    「インストールの開始」をクリック。
    インストールが始まりますが、rootユーザ、一般ユーザのパスワード入力を求められるので適宜変更します。
    image.png

  11. 再起動
    インストール完了後、「再起動」のボタンが表示されるので再起動します。

ゲストOSの設定

パッケージのアップデート

ここは有無言わずにまずはパッケージのアップデートです。

# yum -y update

基礎パッケージの導入

VMware WorkstationのVMですので、vmware-toolsを使います。
ここの所個人的には純正のVMware-toolsを使わず、RPMのみでお手軽導入できるopen-vm-toolsを利用します。

# yum install -y open-vm-tools

wgetの導入

個人的に欲しくて入れてますが、ご自由に
※minishiftパッケージがうまく落とせなくて、私はwgetを利用しました

# yum install -y wget

KVMのインストール

  • KVMまわりのパッケージ

kvmとインターフェースをブリッジするツールをインストールします。

# yum -y install qemu-kvm libvirt virt-install bridge-utils virt-manager
  • KVMの起動・有効化 KVMインストール後はデフォルトで自動起動になっているので、 起動のみ行います。
# systemctl start libvirtd
  • KVM有効の確認 以下のようにkvmのモジュールがロードされていることを確認します。 ゲストVMの設定で「Intel VT-x/EPT または AMD-V/RVIを仮想化」を忘れると、 このモジュールが読み込まれません。
# lsmod | grep kvm
kvm_intel             170181  0
kvm                   554609  1 kvm_intel
irqbypass              13503  1 kvm

KVMのインターフェース設定

KVM(libvirt)のインストールが終わると、仮想NICが追加されます。
デフォルトインストールでは、インターフェースがブリッジされず、外と通信できません。
このままでは、minishiftで立ち上がってくるコンテナが見えないため、
ブリッジの設定を行います。

  • インターフェースの確認
# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:72:82:31 brd ff:ff:ff:ff:ff:ff
    inet 192.168.xxx.172/24 brd 192.168.xxx.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::39e2:465f:f926:cbae/64 scope link
       valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN qlen 1000
    link/ether 52:54:00:1a:9b:8f brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN qlen 1000
    link/ether 52:54:00:1a:9b:8f brd ff:ff:ff:ff:ff:ff
  • IPv4ブリッジの為、パケット転送を許可する
# sysctl -w net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1
# echo 'net.ipv4.ip_forward=1' > /etc/sysctl.d/10-ipv4.conf

CentOS 7.xからNetworkManagerが主流なので、逆らわずにnmtuiで管理する

ifcfg-ethXが無い!と嘆いていないで、時代の流れに逆らわずにnmtui使いましょう。

  • インターフェースの管理状態の確認 デフォルトではbridgeとなるNICはあるものの(virbr0)、設定が無いので通信できません。
# nmcli device
デバイス    タイプ    状態      接続
virbr0      bridge    接続済み  virbr0
ens33       ethernet  接続済み  ens33
lo          loopback  管理無し  --
virbr0-nic  tun       管理無し  --
  • ブリッジインターフェースの作成 virbr0はあくまでも内部用とし、外部用のブリッジインターフェースを作成します。 br0という名前のインターフェースとします。
# nmcli con add type bridge ifname br0
接続 'bridge-br0' (cae264d7-c4d5-42ee-bd40-d343b3a5bc76) が正常に追加されました。
  • スパニングツリープロトコルを無効化 いらないので止めておく。
# nmcli con modify bridge-br0 bridge.stp no
  • インターフェースIPなどの設定 インターフェースの設定をします。 ens33へOS導入時に設定したIPアドレスと同じものをbr0に割り当てます。 割当完了後、最後にens33のIPを消して入れ替えます。
# nmcli con modify bridge-br0 ipv4.method manual ipv4.address "192.168.xxx.172/24" ipv4.gateway "192.168.xxx.252" ipv4.dns 192.168.xxx.112
  • VMブリッジインターフェースをbridgeデバイスに所属させる
# nmcli con add type bridge-slave ifname ens33 master bridge-br0
接続 'bridge-slave-ens33' (b90a8052-abca-48fb-a872-ecc1ce28126f) が正常に追加されました。
  • VMブリッジインターフェースのIP設定を削除し、NetworkManagerの再起動を行う。 元のインターフェースとIPが重複するため、SSHなどでログインしている現IPの設定を削除して、 NetworkManagerを再起動します。delだけだと、繋がらなくなったり怖いので、;区切りでリスタートをしました。
# nmcli con del ens33; systemctl restart NetworkManager
接続 'ens33' (9b003d45-7b3a-4c99-86f0-97145c71eff6) が正常に削除されました。
  • VMインターフェースの確認
# nmcli device
デバイス    タイプ    状態      接続
br0         bridge    接続済み  bridge-br0
virbr0      bridge    接続済み  virbr0
ens33       ethernet  接続済み  bridge-slave-ens33
lo          loopback  管理無し  --
virbr0-nic  tun       管理無し  --

KVM関連ユーザの作成

# usermod -a -G libvirt root
# newgrp libvirt

docker-machine-driver-kvmを導入

  • Docker Machine Driver KVM のバイナリをダウンロード
# curl -L https://github.com/dhiltgen/docker-machine-kvm/releases/download/v0.10.0/docker-machine-driver-kvm-centos7 > /usr/local/bin/docker-machine-driver-kvm
  • 実行権限を付与する
# chmod +x /usr/local/bin/docker-machine-driver-kvm

minishiftのダウンロード

curlでダウンロードしていたのですが、リダイレクトを追随してくれなかったりなど(curlオプション勉強不足で)不便を感じたので、wgetでダウンロードしました。

  • 作業ディレクトリの作成
# mkdir -p /opt/minishift
# cd /opt/minishift
  • wgetでパッケージのダウンロード
# wget https://github.com/minishift/minishift/releases/download/v1.1.0/minishift-1.1.0-linux-amd64.tgz
  • パッケージの解凍

回答してあっけにとられたのですが、これだけ???

# tar xzvf minishift-1.1.0-linux-amd64.tgz
LICENSE
README.adoc
minishift
  • 環境変数へパスを通す
# export PATH=$PATH:/opt/minishift
# cd ~/
# echo "export PATH=$PATH:/opt/minishift" >> .bashrc

minishift の起動

minishiftコマンドを利用して、minishiftを起動する。
初回はISOのダウンロードやdockerコンテナのデプロイやらで少しまたされます。
管理IPなどが出てきたら成功です。

# minishift start
Starting local OpenShift cluster using 'kvm' hypervisor...
Downloading ISO 'https://github.com/minishift/minishift-b2d-iso/releases/download/v1.0.2/minishift-b2d.iso'
 40.00 MiB / 40.00 MiB [===========================================================================================================================================================] 100.00% 0s
Downloading OpenShift binary 'oc' version 'v1.5.1'
 19.96 MiB / 19.96 MiB [===========================================================================================================================================================] 100.00% 0s
-- Checking OpenShift client ... OK
-- Checking Docker client ... OK
-- Checking Docker version ... OK
-- Checking for existing OpenShift container ... OK
-- Checking for openshift/origin:v1.5.1 image ...
   Pulling image openshift/origin:v1.5.1
   Pulled 0/3 layers, 3% complete
   Pulled 1/3 layers, 73% complete
   Pulled 2/3 layers, 99% complete
   Pulled 3/3 layers, 100% complete
   Extracting
   Image pull complete
-- Checking Docker daemon configuration ... OK
-- Checking for available ports ... OK
-- Checking type of volume mount ...
   Using Docker shared volumes for OpenShift volumes
-- Creating host directories ... OK
-- Finding server IP ...
   Using 192.168.42.29 as the server IP
-- Starting OpenShift container ...
   Creating initial OpenShift configuration
   Starting OpenShift using container 'origin'
   Waiting for API server to start listening
   OpenShift server started
-- Adding default OAuthClient redirect URIs ... OK
-- Installing registry ... OK
-- Installing router ... OK
-- Importing image streams ... OK
-- Importing templates ... OK
-- Login to server ... OK
-- Creating initial project "myproject" ... OK
-- Removing temporary directory ... OK
-- Checking container networking ... OK
-- Server Information ...
   OpenShift server started.
   The server is accessible via web console at:
       https://192.168.42.29:8443

   You are logged in as:
       User:     developer
       Password: developer

   To login as administrator:
       oc login -u system:admin

だがしかし、繋がらない(2017/06/25現在)

どうやら、「docker-machines」のvirbr1配下のとなったようなので、外からはアクセスできない。
※当然といえば当然。
このため、VMの外からは現状アクセスできない。

NATとかha-proxyとかでなんとかすればつながるのかもしれないが、今日は断念。。

TODO:

  • Windows 10上に直接minishiftをデプロイする方法をもう少し考える(virtualbox共存とか)
  • OpenShift WebConsoleをVM外からアクセスする為に firewalldでnatを試す
  • OpenShift WebConsoleをVM外からアクセスする為に ha-proxyで管理画面を外にだす

参考にしたサイト

Qiita: OpenShift Origin MinishiftをCentOS7にインストールしてみた
既に同じ内容で書かれていたようですが、補完の意も含めてこの記事書かせて頂きました。

Qiita: KVM環境で仮想マシンを外部ネットワークと接続する

hosiiのメモ帳:CentOS7.2でブリッジインタフェースを作る

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4