割と新し目の open shift origin で作る自宅 paas 作成記

36
Copyright 2015 Japan OSS Promotion Forum 割と新し目の OpenShift Origin で作る 自宅 PaaS 作成記 0 2015年7月29日 JOPF 嘉彦(@GORO_Neko)

Upload: hara-yoshihiko

Post on 17-Aug-2015

280 views

Category:

Software


6 download

TRANSCRIPT

Page 1: 割と新し目の Open shift origin で作る自宅 paas 作成記

Copyright 2015 Japan OSS Promotion Forum

割と新し目の OpenShift Origin で作る

自宅 PaaS 作成記

0

2015年7月29日

JOPF

原 嘉彦(@GORO_Neko)

Page 2: 割と新し目の Open shift origin で作る自宅 paas 作成記

目次

1. 自己紹介

2. はじめに

3. 構築方法について

4. 今回の構築環境

5. 構築してみる

1. ソースコード等の準備

2. 実行環境(VM)の起動・ログイン

3. OpenShift Origin v3 の構築

4. 環境チェック

5. リリース版への置き換え

6. OpenShift Origin v3 の起動

7. 証明書のパーミッション変更等の実施

8. Private docker registry のデプロイ

6. 動かしてみる

1. ログイン

2. プロジェクトの作成

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

4. アプリケーションへのアクセス

5. 他のユーザでのログイン

6. GUIを使ったプロジェクトの作成

7. GUIを使ったアプリケーションのデプロイ

7. 使って気になったこと

Copyright 2014-2015 Japan OSS Promotion Forum 1

Page 3: 割と新し目の Open shift origin で作る自宅 paas 作成記

Copyright 2015 Japan OSS Promotion Forum 2

1.自己紹介 某ITベンダに勤めています

ソフトウェア開発(近頃は組込向けアプリケー

ションの開発がマイトレンドかも?)が好きで

でも息仔猫と遊んだり、寝たりする方がもっと

好きです

日本OSS推進フォーラム(JOPF;

http://ossforum.jp/) と言う企業系OSS促進

団体に所属しています

CloudFoundryJP

( https://groups.google.com/forum/#!forum/

cloudfoundryjp)を中心に、プログラミング言語

/アプリケーション開発/仮想化系等(要するに

節操無し)のコミュニティで遊んでもらっていま

くぅ

くぅ

くぅ

くぅ

Page 4: 割と新し目の Open shift origin で作る自宅 paas 作成記

Copyright 2015 Japan OSS Promotion Forum 3

2.はじめに

私はOpenShiftの中の人でも、プロでもありません

ここから先の記述は、趣味人が「とにかく色々試行

したらOpenShiftを何とか動かせたよ」の記録をまと

めたものです

でもまぁ・・・ただの趣味人でも動かせたんですから、

「貴方も」「貴方の環境でも」 OpenShiftはきっと動く

はずです!

Page 5: 割と新し目の Open shift origin で作る自宅 paas 作成記

Copyright 2015 Japan OSS Promotion Forum 4

3構築方法について OpenShiftの構成はマスターとノードから成る

OpenShift origin の構築方法は大きく3通り1. 1台のマシン( Dockerコンテナ)にマスターもノードも構築する

2. 1台のマシン(VM)にマスターもノードも構築する

3. 別々のマシン(物理マシン or VM)にマスターとノードを構築する

項番 構築方法解説ページ 備考

1 https://github.com/openshift/origin 構築先のOSがRHEL7.1またはこれに相当するRHEL

ベースのOSであること

2 https://github.com/openshift/origin/tree/master/examples/sam

ple-app

構築先のOSがVagrantおよびプロバイダ(仮想化エンジン)が動くOSであること

3 https://github.com/openshift/openshift-ansible 構築先のOSがRHEL7.1またはこれに相当するRHEL

ベースのOSであること

マシン1 マシン2 マシン3 マシン4

OpenShift-master

OpenShift-node

(infra)

OpenShift-node

(#1)

OpenShift-node

(#2)

Defaultプロジェクト

DNS

Kubernetes

Kubernetes-ro

docker-registry

router

【注意!】

下表3のやり方では、マシン1とマシン2条のそれぞれは同じ1台のマシン上に配備される

マシン3上のDNSは、OpenShift-master

を配備したマシン以外であれば、どこに配備してもよい

Page 6: 割と新し目の Open shift origin で作る自宅 paas 作成記

Copyright 2015 Japan OSS Promotion Forum

4.今回の構築環境

構築環境(ハードウェア): 以下参照

構築方法: 1台のマシン(VM)にマスターもノードも構築する 前頁の2の方法で構築

Host OS: Cent OS 7 64Bit

構築ツール: Vagrant + vagrant-libvirt + KVM

PRIMERGY MX130 S2

AMD Opteron 32802.8GHz(8core)

CPU

メモリ

ストレージ

8GB × 2※ 16GB メモリ

260GB

ネットワーク 1GbE ×1

5

Page 7: 割と新し目の Open shift origin で作る自宅 paas 作成記

Copyright 2015 Japan OSS Promotion Forum

5.構築してみる

6

Page 8: 割と新し目の Open shift origin で作る自宅 paas 作成記

Copyright 2015 Japan OSS Promotion Forum

5.1.ソースコード等の準備

OpenShift v3 開発版のソースコード、サンプルアプリケーション、サンプル設定

ファイル、開発に必要なツール類、運用に必要なDockerやKubernetes等は、以

下の場所から取得できる 開発に必要なツール類、運用に必要なDockerやKubernetes等はダウンロード物に含

まれるVagrantfileによってさらにダウンロードされるVM内に用意されている ダウンロード先: https://github.com/openshift/origin

OpenShift v3 リリース版のバイナリは、以下の場所から取得できる ダウンロード先: https://github.com/openshift/origin/releases openshift(OpenShift本体)、oc(操作コマンド)、oadm(管理者用操作コマンド)の3つ

のバイナリが、 tar.gz形式でアーカイブされている

オペレーション

7

$ git clone https://github.com/openshift/origin.git

Page 9: 割と新し目の Open shift origin で作る自宅 paas 作成記

Copyright 2015 Japan OSS Promotion Forum

5.2.実行環境(VM)の起動・ログイン

5.1.で入手したVagrantfileを利用して、OpenShift v3 構築先として利用する

VMを起動する 作業に先立ち、Vagrantおよびプロバイダ(仮想化エンジン)をホストOSにセットアップ

しておくこと

オペレーション

8

$ cd origin/

$ vi Vagrantfile (※上記の注意を参照)

$ vagrant up --provider=libvirt

$ vagrant ssh

【注意!】

5.1.で入手したVagrantfileをそのまま使って、VMを起動すると、VMに使用可能メモリが1GBしか割りあたらない。このまま利用すると、次頁のOpenShiftのBuild作業が、メモリアロケート失敗で、必ず以上終了する。

Vagrantfileの以下の部分を書き換えてから、 Vagrantfile up すること。---"cpus" => ENV['OPENSHIFT_NUM_CPUS'] || 2,

“memory” => ENV[‘OPENSHIFT_MEMORY’] || 1024, ← ここを4096~8192くらいに変更"sync_folders_type" => nil,

Page 10: 割と新し目の Open shift origin で作る自宅 paas 作成記

Copyright 2015 Japan OSS Promotion Forum

5.3.OpenShift Origin v3 の構築

5.1.で入手したOpenShift v3 開発版のソースコードやMakefileを利用して、

OpenShift v3 の環境を構築する gitコマンドでHostOS上にダウンロードしたoriginディレクトリが、VMの以下のディレク

トリにマウントされている /data/src/github.com/openshift/origin

上記ディレクトリに移動の上、Buildを実施する

オペレーション

9

$ cd /data/src/github.com/openshift/origin

$ make clean build

Page 11: 割と新し目の Open shift origin で作る自宅 paas 作成記

Copyright 2015 Japan OSS Promotion Forum

5.4.環境チェック

5.3.でBuildしたOpenShift v3を構成するバイナリ(openshift(OpenShift本体)、

oc(操作コマンド)、oadm(管理者用操作コマンド) )等は以下のディレクトリに作

成・格納されている /data/src/github.com/openshift/origin/_output/local/go/bin

VM側の設定で、この時点で環境変数PATHに上記ディレクトリが含まれている

ため、PATH指定無しのバイナリ名だけで、OpenShift v3を構成するバイナリを

起動できる

確認オペレーション(例)

10

$ which openshift

/data/src/github.com/openshift/origin/_output/local/go/bin/openshift

$ echo $PATH

/data/src/github.com/openshift/origin/_output/etcd/bin:/data/src/github.

com/openshift/origin/_output/local/go/bin/:/bin:/usr/local/sbin:/sbin:/bin:

/usr/sbin:/usr/bin:/root/bin:/home/vagrant/.local/bin:/home/vagrant/bin

$ openshift version

openshift v1.0.3-140-g9d20f55-dirty

kubernetes v1.0.0

Page 12: 割と新し目の Open shift origin で作る自宅 paas 作成記

Copyright 2015 Japan OSS Promotion Forum

5.5.リリース版への置き換え

5.3.でBuildしたOpenShift v3を構成するバイナリ(openshift(OpenShift本体)、

oc(操作コマンド)、oadm(管理者用操作コマンド) )を、リリース版のものに置き

換える 開発版OpenShift v3は、日々リビジョン番号が上がる勢いで開発が続けられており、

数日前のソースからBuildしたものと本日のソースでBuildしたものの挙動が変わる等、

挙動が不安定(7/26版ではPrivate docker registryが正しく起動しなかった) 2015/07/21時点: v1.0.3-18-g7db1cf9-dirty、 2015/07/25時点: v1.0.3-138-g7037758-dirty、

2015/07/26時点: v1.0.3-140-g9d20f55-dirty

今回は現時点での最新リリース版(v1.0.3:

https://github.com/openshift/origin/releases/download/v1.0.3/openshift-origin-

v1.0.3-1695461-linux-amd64.tar.gz )を利用する

オペレーション

11

$ cd /data/src/github.com/openshift/origin/_output/local/go/bin/

$ wget https://github.com/openshift/origin/releases/download/v1.0.3/openshift-origin-

v1.0.3-1695461-linux-amd64.tar.gz

$ tar zxvf openshift-origin-v1.0.3-1695461-linux-amd64.tar.gz

$ openshift version

openshift v1.0.3

kubernetes v1.0.0

Page 13: 割と新し目の Open shift origin で作る自宅 paas 作成記

Copyright 2015 Japan OSS Promotion Forum

5.6.OpenShift Origin v3 の起動(1/3)

バイナリのOpenShiftをコマンドとして起動することで、OpenShift Origin v3 を起

動する サーバアプリケーションとして起動($ sudo openshift start)する方法と、サービ

スとして起動($ sudo systemctl start openshift) する方法がとれる OpenShift Origin v3 を起動すると、以下の3つのディレクトリが自動的に作成さ

れ、ディレクトリ内に、コマンドやユーザがシステムとやり取りする際に必要とな

る証明書等が配置される。 作成されるディレクトリ名

openshift.local.config openshift.local.etcd openshift.local.volumes

上記ディレクトリは、サーバアプリケーションとして起動した場合は、起動コマンドを実

行したディレクトリ内に、サービスとして起動した場合はトップディレクトリ(/)直下に作

成される

オペレーション

12

$ sudo systemctl start openshift

Page 14: 割と新し目の Open shift origin で作る自宅 paas 作成記

Copyright 2015 Japan OSS Promotion Forum

5.6.OpenShift Origin v3 の起動(2/3)

OpenShiftを起動後、ホストOS上のブラウザで

『https://localhost:8443/console』にアクセスすると、 OpenShiftのWebUIを呼び

出せる。

ゲストOS(vagrantで起動したVM)上で動作している、WebGUIにホストOS上から

アクセスできるのは、Vagrantfileを使って、vagrantがゲストOS側のいくつかの

Portをポートフォワードしているため

13

if vagrant_openshift_config['private_network_ip']

config.vm.network "private_network", ip: vagrant_openshift_config['private_network_ip']

else

config.vm.network "forwarded_port", guest: 80, host: 1080

config.vm.network "forwarded_port", guest: 443, host: 1443

config.vm.network "forwarded_port", guest: 8080, host: 8080

config.vm.network "forwarded_port", guest: 8443, host: 8443

end

Page 15: 割と新し目の Open shift origin で作る自宅 paas 作成記

Copyright 2015 Japan OSS Promotion Forum

5.6.OpenShift Origin v3 の起動(3/3)

【WebGUI】

14

Page 16: 割と新し目の Open shift origin で作る自宅 paas 作成記

Copyright 2015 Japan OSS Promotion Forum

5.7.証明書のパーミッション変更等の実施

OpenShiftのコマンドは、 5.6.で自動作成されたディレクトリ内の証明書を利

用して、動作を行う

各コマンドが証明書を参照できるように環境変数の設定や、証明書のパーミッ

ションの変更を行う必要がある

オペレーション

15

$ export CURL_CA_BUNDLE=/openshift.local.config/master/ca.crt

$ sudo chmod a+rwX /openshift.local.config/master/admin.kubeconfig

$ sudo chmod +r /openshift.local.config/master/openshift-registry.kubeconfig

【注意!】

OpenShiftをサーバアプリケーションとして、トップディレクトリ(/)以外のディレクトリで起動した場合は、環境変数KUBECONFIGの値の修正が必要

デフォルトのKUBECONFIGの値は『/openshift.local.config/master/admin.kubeconfig』

Page 17: 割と新し目の Open shift origin で作る自宅 paas 作成記

Copyright 2015 Japan OSS Promotion Forum

5.8.Private docker registry のデプロイ

OpenShiftのにデプロイされるユーザアプリケーション(をDockerコンテナ化したもの)の

格納先である、Private docker registry のデプロイを行う Private docker registry のデプロイコマンド( oadm registry )を管理者権限で実行する必要があるが、sudo先

にPAHT環境変数等環境変数を引き継げない設定になっているため、コマンドをPath付きで呼び出す必要が

ある

配備作業実施後、配備結果の確認コマンドを投入し、結果出力中の『Endpoints』の値が、

<none>から何らかのIPアドレスに変われば配備完了 配備完了までに、2分程度時間がかかる

オペレーション

16

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

registry.kubeconfig --config=/openshift.local.config/master/admin.kubeconfig

$ oc describe service docker-registry --config=openshift.local.config/master/admin.kubeconfig

$ oc describe service docker-registry --config=openshift.local.config/master/admin.kubeconfig

Name: docker-registry

Namespace: default

Labels: docker-registry=default

Selector: docker-registry=default

Type: ClusterIP

IP: 172.30.217.24

Port: 5000-tcp 5000/TCP

Endpoints: 172.17.0.2:5000 ← <none> と表示されていないことSession Affinity: None

No events.

Page 18: 割と新し目の Open shift origin で作る自宅 paas 作成記

Copyright 2015 Japan OSS Promotion Forum

6.動かしてみる

17

Page 19: 割と新し目の Open shift origin で作る自宅 paas 作成記

Copyright 2015 Japan OSS Promotion Forum

6.1.ログイン

5.で構築したOpenShift v3 にログインする 現在環境変数KUBECONFIGに設定されている値(ファイル)はadmin用のものなの

で、unsetする ゲストOS(vagrantで起動したVM)内でログインコマンド(oc login)を実行する 対話式に、ログインするユーザネームとパスワードを尋ねられるので応答する

この例では、ユーザネーム: test-admin、パスワード: test-admin と入力

オペレーション

18

$ unset $KUBECONFIG

$ oc login

【注意!】

Vagrantによるオールインワン構成OpenShiftの場合、パスワードはなにを指定しても認証されるただし、パスワードに空パスワードを指定すると、認証が失敗する

Page 20: 割と新し目の Open shift origin で作る自宅 paas 作成記

Copyright 2015 Japan OSS Promotion Forum

6.2.プロジェクトの作成(1/2)

ユーザは複数のプロジェクトを所有できる

プロジェクト作成コマンド(oc new-project )実行後、WebGUIにプロジェクトを所

有するユーザでログインすると、プロジェクト作成時に指定したdisplay-name

のプロジェクトが作成されていることを確認できる

オペレーション(例)

19

$ oc new-project test-admin-01 --display-name="test-admin-first-project"

--description="This is test-admin's first project"

Page 21: 割と新し目の Open shift origin で作る自宅 paas 作成記

Copyright 2015 Japan OSS Promotion Forum

6.2.プロジェクトの作成(2/2)

【WebGUI】

20

Page 22: 割と新し目の Open shift origin で作る自宅 paas 作成記

Copyright 2015 Japan OSS Promotion Forum

6.3.アプリケーションのデプロイ(1/2)

ユーザは自分の所有する任意のプロジェクトに、複数のアプリケーションをデプ

ロイできる

アプリケーションのデプロイコマンド( oc new-app )に、デプロイするアプリケー

ション、アプリケーションを動作するために使用する、言語、エンジン等の存在

位置等を記述した json ファイルを指定することで、アプリケーションをデプロイ

する

オペレーション(例)

21

$ oc new-app /data/src/github.com/openshift/origin/examples/sample-

app/application-template-stibuild.json

Page 23: 割と新し目の Open shift origin で作る自宅 paas 作成記

Copyright 2015 Japan OSS Promotion Forum

6.3.アプリケーションのデプロイ(2/2)

【WebGUI】

【デプロイ前】 【デプロイ後】

22

Page 24: 割と新し目の Open shift origin で作る自宅 paas 作成記

Copyright 2015 Japan OSS Promotion Forum

6.4.アプリケーションへのアクセス(1/2)

アプリケーションはゲストVM内で動いている WebGUIで、アプリケーションに割り振られたIPおよびPortを確認し、vagrantの

ポートフォワード機能等で、ホストOS側からアクセスできるように設定し、アクセ

スする1. WebGUIでアプリケーションに振り当てられたIP、ポートを確認2. vagrantのポートフォワード機能等でホストOS側からアクセスできるように設定3. ホストOS上のWebブラウザでアクセス

23

この場合、IP= 172.30.182.252、Port=5432

Page 25: 割と新し目の Open shift origin で作る自宅 paas 作成記

Copyright 2015 Japan OSS Promotion Forum

6.4.アプリケーションへのアクセス(2/2)

24

この場合、IP= 172.30.182.252、Port=5432

【端末を開きoriginディレクトリ下で実施】vagrant ssh -- -L 9999:172.30.182.252:5432

※ ホストOS: localhost:9999

ゲストOS: 172.30.182.252:5432

間をポートフォワード

Page 26: 割と新し目の Open shift origin で作る自宅 paas 作成記

Copyright 2015 Japan OSS Promotion Forum

6.5.他のユーザでのログイン(1/2)

6.1.ログインと同様の方法で、他のユーザでのログインが可能 他のユーザでログイン(WebGUI含む)した場合、別のユーザが作成したプロ

ジェクトやアプリケーションは表示されない 5.で構築したOpenShift v3 にログインする

ゲストOS(vagrantで起動したVM)内でログインコマンド(oc login)を実行する 対話式に、ログインするユーザネームとパスワードを尋ねられるので応答する

この例では、ユーザネーム: yosihiko、パスワード: yosihiko と入力ログイン後、display-name=“yosihiko-first-project” であるプロジェクトも作成する

オペレーション(例)

25

$ oc login

$ oc new-project yosihiko-01 --display-name="yosihiko-first-project" --

description="This is yosihiko's first project"

Page 27: 割と新し目の Open shift origin で作る自宅 paas 作成記

Copyright 2015 Japan OSS Promotion Forum

6.5.他のユーザでのログイン(2/2)

26

ユーザ: yosihiko でログインした場合

• ユーザ: yosihiko としてログインに成功しdisplay-name=“yosihiko-first-project”

であるプロジェクトも確認できる

• ただしユーザ: test-admin の所持するプ

ロジェクトやデプロイ済みアプリケーションの情報は見えない

Page 28: 割と新し目の Open shift origin で作る自宅 paas 作成記

Copyright 2015 Japan OSS Promotion Forum

6.6.GUIを使ったプロジェクトの作成(1/3)

プロジェクトは、WebGUIを使用しても作成可能 プロジェクトを使いたいユーザで、WebGUIにログインする ページ右上の『New Project』ボタンを押下する

27

①ユーザ: test-admin でログイン

② 『New Project』ボタンを押下

Page 29: 割と新し目の Open shift origin で作る自宅 paas 作成記

Copyright 2015 Japan OSS Promotion Forum

6.6.GUIを使ったプロジェクトの作成(2/3)

『New Project』ページでプロジェクトのName等を入力する 入力後画面左下の『Create』ボタンを押下する

28

①プロジェクトのName等を入力

② 『Create』ボタンを押下

Page 30: 割と新し目の Open shift origin で作る自宅 paas 作成記

Copyright 2015 Japan OSS Promotion Forum

6.6.GUIを使ったプロジェクトの作成(3/3)

既に作成済みのプロジェクトに加えて、まだアプリケーションがデプロイされて

いない新規プロジェクトページが表示される 複数プロジェクトを所有している場合、プロジェクトの切り替えは左上部の

『Projecs』タブを使って行う

29

Page 31: 割と新し目の Open shift origin で作る自宅 paas 作成記

Copyright 2015 Japan OSS Promotion Forum

6.7.GUIを使ったアプリケーションのデプロイ(1/4)

GUIを使ってアプリケーションをデプロイする前に、アプリケーションをデプロイす

るプロジェクトに対し、ImageStream(アプリケーションを動作させるための言語

やエンジン、DB等をテンプレート化したもの)を登録しておく必要がある1. CUIでプロジェクトを所有するユーザとしてOpenShiftにログインする2. ImageStream の登録コマンド(osc create –f < ImageStream を定義した json

ファイル名> -n <登録先 Project 名>)を実行する※ Githubから入手したOpenShiftのソース類中に『< ImageStream を定義した json ファイル』

の例(/data/src/github.com/openshift/origin/examples/image-streams/image-streams-

centos7.json)がある※ 上記ファイルを利用して登録を行った場合以下のImageStreamがプロジェクトに登録される

• ruby、nodejs、perl、php、python、wildfly、mysql、postgresql、mongodb、jenkins

上記を実行の後、WebGUIからアプリケーションをデプロイする

オペレーション(例)

30

$ oc login

$ osc create -f /data/src/github.com/openshift/origin/examples/image-

streams/image-streams-centos7.json -n test-admin-02

Page 32: 割と新し目の Open shift origin で作る自宅 paas 作成記

Copyright 2015 Japan OSS Promotion Forum

6.7.GUIを使ったアプリケーションのデプロイ(2/4)

プロジェクトを使いたいユーザで、WebGUIにログインし、アプリケーションを登録

したいプロジェクトを選択する ページ中の『Get Started』ボタンを押下する

31

①ユーザ: test-admin でログイン

② アプリケーションをデプロイしたいプロジェクトを選択

③ 『Get Started』ボタンを押下

Page 33: 割と新し目の Open shift origin で作る自宅 paas 作成記

Copyright 2015 Japan OSS Promotion Forum

6.7.GUIを使ったアプリケーションのデプロイ(3/4)

デプロイしたいアプリケーションを登録したGitリポジトリの情報を入力する

32

デプロイしたいアプリケーションを登録したGitリポジトリの情報を入力

Page 34: 割と新し目の Open shift origin で作る自宅 paas 作成記

Copyright 2015 Japan OSS Promotion Forum

6.7.GUIを使ったアプリケーションのデプロイ(4/4)

アプリケーションを動作させるために使用するImageStream(builder image)を

押下する ImageStream(builder image)の選択が終わるとアプリケーションのデプロイ

作業が開始される

32

使用するImageStream(builder image)を押下する

Page 35: 割と新し目の Open shift origin で作る自宅 paas 作成記

Copyright 2015 Japan OSS Promotion Forum

7.使って気になったこと

jsonファイルの書き方がよくわからない! プロジェクトの作成、アプリケーションのデプロイ、使えるリソースの制約実現

のため等、多々 json ファイルを記述する必要があるが、記述すべき項目や

内容、書式がよくわからない まずは公式ドキュメント

(https://docs.openshift.org/latest/welcome/index.html)を読み込むべき?

Vagrantが起動したVMでSELinux、firewalldが無効化されている OpenShiftは、マルチテナント機能(通信や各ユーザ間のアプリケーションへ

のアクセス制限等)の実現にSELinuxやfirewalldを活用するといってたは

ず、、、なのに?

開発が進むごとにコマンド名が変わって言っているような、、、 ちょっと前まで、 Private docker registry のデプロイって、OpenShiftコマンド

を使って行うものじゃなかったでしたっけ?

33

Page 36: 割と新し目の Open shift origin で作る自宅 paas 作成記

Copyright 2014-2015 Japan OSS Promotion Forum 35