SlideShare una empresa de Scribd logo
1 de 17
Descargar para leer sin conexión
1
Blue Jenkins
IBM Containers で Jenkins を動かす
2016/4/11
S.Hanai
2
おことわり
本資料の記載内容は、私が個人的に調べた内容であり、正式な日本 IBM のテストやレビューを
受けておりません。内容について、できる限り正確を期すよう努めてはおりますが、いかなる明示
または暗黙の保証も責任も負いかねます。本資料の情報は、使用先の責任において使用される
べきものであることを、あらかじめご了承ください。
3
モチベーション
 Bluemix には、 Build & Deploy があるけど、使い慣
れた Jenkins を使いたい
 現在のところ IBM Containers は、 365 GB 時間 /
月まで無料なので、メモリを抑えればタダで
Jenkins 様を雇える(* 1 )
(* 1 )料金情報は常に最新を確認してください: https://console.ng.bluemix.net/pricing/
4
Docker 版 Jenkins
 公式
https://hub.docker.com/_/jenkins/
5
IBM Containers での注意
 Docker だから、そのまま動いちゃうのでは?
 残念ながら、そのままではうまくいかない
 ボリュームの権限の問題
 ボリュームのスピードの問題
6
権限の問題
 IBM Containers のボリュームは、 NFS で実装され
ており、デフォルトでは root ユーザでないと書き込
めないが、 Jenkins の Docker 版はセキュリティを
考慮して、 jenkins ユーザで起動している
 一度、 jenkins ユーザを root グループに入れて、
ディレクトリをボリューム上に作ってから、 jenkins
ユーザを root グループから外すという hack が必
要
参考 : http://stackoverflow.com/questions/31290202/can-i-
change-owner-of-directory-that-is-mounted-on-volume-in-ibm-
containers/32666280#32666280
7
スピードの問題
 IBM Container のボリュームは、 IOP=0.25 に制限
されている。お金を払えば IOP=4 まで上がるが、上
限はそこまで
root@instance-0020f249:/mnt/volume/jenkins# dd if=/dev/zero of=/mnt/volume/ttt bs=1M count=1
1+0 records in
1+0 records out
1048576 bytes (1.0 MB) copied, 32.7045 s, 32.1 kB/s
root@instance-0020f249:/mnt/volume/jenkins# dd if=/dev/zero of=/mnt/volume/ttt bs=100k count=1
1+0 records in
1+0 records out
102400 bytes (102 kB) copied, 0.600598 s, 170 kB/s
ssh で入って、速度を測ってみた結果
参考:自分の PC( 一世代前の SATA-SSD)
$ dd if=/dev/zero of=/tmp/xxx bs=1M count=100 oflag=dsync,sync
100+0 レコード入力
100+0 レコード出力
104857600 バイト (105 MB) コピーされました、 1.23954 秒、 84.6 MB/ 秒
単純に jenkins ディレクトリをボ
リュームに割り当てたところ、起
動の際の WAR 展開が 1 時間
たっても終わらないので諦め。
8
作戦変更
IBM Containers(jenkins)
jenkins
ディレクトリ
速度の観点から、 jenkins ディレクトリ
は、ボリューム上に置かない
ボリューム
(バックアップ)rsync
アプリケーション起動時に、ボリュームか
ら、 jenkins ディレクトリに内容を復元する
su -c "rsync -av $JENKINS_VOLUME/backup/_jenkins /var" jenkins
rsync -auv --delete --include jobs/*/config.xml --exclude war
--exclude jobs/*/* /var/_jenkins /var/jenkins_home/backup
定期的に rsync でボリュームにバックアッ
プ。初回は遅いが、次からは差分コピーな
ので速い。更にワークスペース、ビルドディ
レクトリは対象から外すことで高速化
9
動かしてみる
 以下に材料を置きました
https://github.com/ruimo/blue-jenkins
git clone するなりブラウザで Download ZIP する
なりしてください
 Bluemix のアカウント登録とか、 cf tools/plugin の
設定などは省略します。以下のドキュメントなどを参
照してください
http://www.slideshare.net/unokichi/bluemixdock
er-50127214
10
ボリュームを作る
 以下のコマンドでボリュームを作成します
$ cf ic volume create jenkins
11
イメージを作成する
 build.sh.sample というファイルが入っているので、
これを build.sh に変更して中身を自分用に書き換
えます
$ cf ic build -t YOUR_DOCKER_NAMESPACE/blue-jenkins .
YOUR_DOCKE_NAMESPACE のところを、自分
の Bluemix 上の Docker registry の名前空間名に
変更します。 chmod +x build.sh で実行ビットを立
てたら実行してください。これでイメージができます
12
イメージの作成
 cf ic images を実行すると、イメージを確認できます
$ cf ic images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry.ng.bluemix.net/ruimo/blue-jenkins latest eb3d733d3c19 4 hours ago 720.5 MB
13
実行
 run.sh.sample を run.sh にリネームして中を書き
換えます
cf ic group create --name YOUR_HOST_NAME -p 8080 -m 2048 -v jenkins:/var/jenkins_home --min 1 --max
1 --desired 1 -n YOUR_CONTAINER_NAME -d mybluemix.net
registry.ng.bluemix.net/YOUR_DOCKER_NAMESPACE/blue-jenkins
YOUR_HOST_NAME は、 url の先頭部分で
Bluemix 内で一意である必要があります
YOUR_CONTAINER_NAME は任意の名前です
YOUR_DOCKER_NAMESPACE は、 build.sh の
時と同じです
build.sh の時と同様、実行ビットを立てて実行すれ
ば container が上がります
なおメモリは 2GB(-m 2048) になっているので、課
金を避けたい場合は適宜修正(減らして ) ください
14
実行
 cf ic ps コマンドで状況を確認します
$ cf ic ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS
PORTS NAMES
efd502f8-1bf registry.ng.bluemix.net/ruimo/blue-jenkins:latest "" 4 hours ago Running 4
hours ago 10.142.187.57:8080->8080/tcp ru-pbpl-iqpv5ivzc4fq-sysmt5rpefcw-server-kzgunlpyk3hq
 ステータスが Running になれば起動しています
https://HOST_NAME.mybluemix.net/ をブラウザ
で開いてください。 HOST_NAME のところ
は、 run.sh の中で指定した YOUR_HOST_NAME
です
初回は割と速いと思いますが、次回以降はボリュー
からのリストアが実行されるため、 10 分くらい起動
に要すると思います
15
バックアップジョブ
 Jenkins が起動したら、バックアップジョブを作って
おきましょう。 Jenkins のジョブの作成方法は省略
します
 最初の実行には時間がかかります(全部をボリュー
ムにコピーするので)
rsync -auv --delete --include jobs/*/config.xml --exclude war --exclude jobs/*/* /var/_jenkins
/var/jenkins_home/backup
16
注意
 cf ic run の自動リカバリ・オプション (--auto) は使
わないでください。起動の際のボリュームからのリ
ストアに時間がかかるため、ハングしたと誤認され、
削除、開始の無限ループになってしまいます
 Jenkins 設定を変更した後、バックアップが走る前
に何らかの原因でコンテナが再起動されると、変更
内容は失われます
17
まとめ
 (半ば無理矢理) Jenkins を IBM Containers で動
かしてみました
 自分で証明書を取らなくても https で動くので、そ
の点は良いかもしれません
 誰か Jenkins2 動かしてください ...

Más contenido relacionado

La actualidad más candente

とある社内ビックデータ基盤にバッチ用コンテナ基盤を構築してみた
とある社内ビックデータ基盤にバッチ用コンテナ基盤を構築してみたとある社内ビックデータ基盤にバッチ用コンテナ基盤を構築してみた
とある社内ビックデータ基盤にバッチ用コンテナ基盤を構築してみたHiroshi Toda
 
Dockerライフサイクルの基礎 地雷を踏み抜けろ!
Dockerライフサイクルの基礎 地雷を踏み抜けろ!Dockerライフサイクルの基礎 地雷を踏み抜けろ!
Dockerライフサイクルの基礎 地雷を踏み抜けろ!Masahito Zembutsu
 
Dockerで開発環境をデリバる
Dockerで開発環境をデリバるDockerで開発環境をデリバる
Dockerで開発環境をデリバるDaigou Harada
 
捕鯨!詳解docker
捕鯨!詳解docker捕鯨!詳解docker
捕鯨!詳解docker雄哉 吉田
 
Re: 運用に自動化を求めるのは間違っているだろうか
Re: 運用に自動化を求めるのは間違っているだろうかRe: 運用に自動化を求めるのは間違っているだろうか
Re: 運用に自動化を求めるのは間違っているだろうかMasahito Zembutsu
 
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方Yuichi Ito
 
Docker地雷n本勝負
Docker地雷n本勝負Docker地雷n本勝負
Docker地雷n本勝負RyutaKoide
 
今日から始めるDigitalOcean
今日から始めるDigitalOcean今日から始めるDigitalOcean
今日から始めるDigitalOceanMasahito Zembutsu
 
Dockerについて
DockerについてDockerについて
Dockerについて74th
 
開発環境をVagrantからdockerに移行してみた
開発環境をVagrantからdockerに移行してみた開発環境をVagrantからdockerに移行してみた
開発環境をVagrantからdockerに移行してみたpyar6329
 
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014Masahiro Nagano
 
Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築
Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築
Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築gree_tech
 
JAWS-UG コンテナ支部 Docker入門 ハンズオン
JAWS-UG コンテナ支部 Docker入門 ハンズオンJAWS-UG コンテナ支部 Docker入門 ハンズオン
JAWS-UG コンテナ支部 Docker入門 ハンズオンRyo Nakamaru
 
DockerコンテナでGitを使う
DockerコンテナでGitを使うDockerコンテナでGitを使う
DockerコンテナでGitを使うKazuhiro Suga
 
Docker最新動向2017秋+セキュリティの落とし穴
Docker最新動向2017秋+セキュリティの落とし穴Docker最新動向2017秋+セキュリティの落とし穴
Docker最新動向2017秋+セキュリティの落とし穴Masahito Zembutsu
 
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまでDockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまでRyo Nakamaru
 
Dockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクルDockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクルMasahito Zembutsu
 
Vagrant & Dockerによるイマドキの開発環境構築
Vagrant & Dockerによるイマドキの開発環境構築Vagrant & Dockerによるイマドキの開発環境構築
Vagrant & Dockerによるイマドキの開発環境構築Nakazawa Yuichi
 

La actualidad más candente (20)

とある社内ビックデータ基盤にバッチ用コンテナ基盤を構築してみた
とある社内ビックデータ基盤にバッチ用コンテナ基盤を構築してみたとある社内ビックデータ基盤にバッチ用コンテナ基盤を構築してみた
とある社内ビックデータ基盤にバッチ用コンテナ基盤を構築してみた
 
Dockerライフサイクルの基礎 地雷を踏み抜けろ!
Dockerライフサイクルの基礎 地雷を踏み抜けろ!Dockerライフサイクルの基礎 地雷を踏み抜けろ!
Dockerライフサイクルの基礎 地雷を踏み抜けろ!
 
Dockerで開発環境をデリバる
Dockerで開発環境をデリバるDockerで開発環境をデリバる
Dockerで開発環境をデリバる
 
Jenkins with Docker
Jenkins with DockerJenkins with Docker
Jenkins with Docker
 
捕鯨!詳解docker
捕鯨!詳解docker捕鯨!詳解docker
捕鯨!詳解docker
 
Re: 運用に自動化を求めるのは間違っているだろうか
Re: 運用に自動化を求めるのは間違っているだろうかRe: 運用に自動化を求めるのは間違っているだろうか
Re: 運用に自動化を求めるのは間違っているだろうか
 
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方
 
Docker地雷n本勝負
Docker地雷n本勝負Docker地雷n本勝負
Docker地雷n本勝負
 
今日から始めるDigitalOcean
今日から始めるDigitalOcean今日から始めるDigitalOcean
今日から始めるDigitalOcean
 
Dockerについて
DockerについてDockerについて
Dockerについて
 
開発環境をVagrantからdockerに移行してみた
開発環境をVagrantからdockerに移行してみた開発環境をVagrantからdockerに移行してみた
開発環境をVagrantからdockerに移行してみた
 
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
 
Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築
Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築
Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築
 
Dockerと継続的インテグレーション
Dockerと継続的インテグレーションDockerと継続的インテグレーション
Dockerと継続的インテグレーション
 
JAWS-UG コンテナ支部 Docker入門 ハンズオン
JAWS-UG コンテナ支部 Docker入門 ハンズオンJAWS-UG コンテナ支部 Docker入門 ハンズオン
JAWS-UG コンテナ支部 Docker入門 ハンズオン
 
DockerコンテナでGitを使う
DockerコンテナでGitを使うDockerコンテナでGitを使う
DockerコンテナでGitを使う
 
Docker最新動向2017秋+セキュリティの落とし穴
Docker最新動向2017秋+セキュリティの落とし穴Docker最新動向2017秋+セキュリティの落とし穴
Docker最新動向2017秋+セキュリティの落とし穴
 
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまでDockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
 
Dockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクルDockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクル
 
Vagrant & Dockerによるイマドキの開発環境構築
Vagrant & Dockerによるイマドキの開発環境構築Vagrant & Dockerによるイマドキの開発環境構築
Vagrant & Dockerによるイマドキの開発環境構築
 

Similar a Run Jenkins in IBM Containers.

Bluemix体験レポート@第3回soft layer勉強会 20140901_ver.2
Bluemix体験レポート@第3回soft layer勉強会 20140901_ver.2Bluemix体験レポート@第3回soft layer勉強会 20140901_ver.2
Bluemix体験レポート@第3回soft layer勉強会 20140901_ver.2YoshiyukiKonno
 
Google Container Engine (GKE) & Kubernetes のアーキテクチャ解説
Google Container Engine (GKE) & Kubernetes のアーキテクチャ解説Google Container Engine (GKE) & Kubernetes のアーキテクチャ解説
Google Container Engine (GKE) & Kubernetes のアーキテクチャ解説Samir Hammoudi
 
Bluemix体験レポート@第3回札幌SoftLayer勉強会 20140901
Bluemix体験レポート@第3回札幌SoftLayer勉強会 20140901Bluemix体験レポート@第3回札幌SoftLayer勉強会 20140901
Bluemix体験レポート@第3回札幌SoftLayer勉強会 20140901YoshiyukiKonno
 
SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜
SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜
SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜Daiki Kawanuma
 
Pro aspnetmvc3framework chap23
Pro aspnetmvc3framework chap23Pro aspnetmvc3framework chap23
Pro aspnetmvc3framework chap23Hideki Hashizume
 
LibreOffice を Windows 上でビルドする UPDATE
LibreOffice を Windows 上でビルドする UPDATELibreOffice を Windows 上でビルドする UPDATE
LibreOffice を Windows 上でビルドする UPDATETomofumi Yagi
 
JViews Diagrammer チュートリアル (JSF 2)
JViews Diagrammer チュートリアル (JSF 2)JViews Diagrammer チュートリアル (JSF 2)
JViews Diagrammer チュートリアル (JSF 2)RWSJapan
 
Yocto Project ハンズオン プレゼン用資料
Yocto Project ハンズオン プレゼン用資料Yocto Project ハンズオン プレゼン用資料
Yocto Project ハンズオン プレゼン用資料Nobuhiro Iwamatsu
 
Bluemixハンズオン資料
Bluemixハンズオン資料Bluemixハンズオン資料
Bluemixハンズオン資料YUSUKE MORIZUMI
 
cf-containers-broker を使ってローカル環境もサービスの恩恵をうける
cf-containers-broker を使ってローカル環境もサービスの恩恵をうけるcf-containers-broker を使ってローカル環境もサービスの恩恵をうける
cf-containers-broker を使ってローカル環境もサービスの恩恵をうけるTakeshi Morikawa
 
IBM Eclipse tools for Bluemix の構成手順
IBM Eclipse tools for Bluemix の構成手順IBM Eclipse tools for Bluemix の構成手順
IBM Eclipse tools for Bluemix の構成手順Hiroaki Komine
 
INF-015_そこのコンテナ、うまく積めてるね! ~Windows アプリケーション コンテナの展開と運用~
INF-015_そこのコンテナ、うまく積めてるね! ~Windows アプリケーション コンテナの展開と運用~INF-015_そこのコンテナ、うまく積めてるね! ~Windows アプリケーション コンテナの展開と運用~
INF-015_そこのコンテナ、うまく積めてるね! ~Windows アプリケーション コンテナの展開と運用~decode2016
 
Japan Container Day 2018
Japan Container Day 2018Japan Container Day 2018
Japan Container Day 2018Yoshio Terada
 
Bluemixの基本を知る -仕組みと使い方-
Bluemixの基本を知る -仕組みと使い方-Bluemixの基本を知る -仕組みと使い方-
Bluemixの基本を知る -仕組みと使い方-IBMソリューション
 
アプリ開発したい人必見!Swiftを使ってiPhoneアプリに広告実装!【appC cloud school】
アプリ開発したい人必見!Swiftを使ってiPhoneアプリに広告実装!【appC cloud school】アプリ開発したい人必見!Swiftを使ってiPhoneアプリに広告実装!【appC cloud school】
アプリ開発したい人必見!Swiftを使ってiPhoneアプリに広告実装!【appC cloud school】schoowebcampus
 
パーソナルデータのあり方を変える!オープンソース分散型PDS「Personium」を使ってみよう!
パーソナルデータのあり方を変える!オープンソース分散型PDS「Personium」を使ってみよう!パーソナルデータのあり方を変える!オープンソース分散型PDS「Personium」を使ってみよう!
パーソナルデータのあり方を変える!オープンソース分散型PDS「Personium」を使ってみよう!泰史 栃折
 
20121115 fukuoka sublime0_kuroneko
20121115 fukuoka sublime0_kuroneko20121115 fukuoka sublime0_kuroneko
20121115 fukuoka sublime0_kuronekoKohki Nakashima
 
True Cloud Native Batch Workflow for .NET with MicroBatchFramework
True Cloud Native Batch Workflow for .NET with MicroBatchFrameworkTrue Cloud Native Batch Workflow for .NET with MicroBatchFramework
True Cloud Native Batch Workflow for .NET with MicroBatchFrameworkYoshifumi Kawai
 
Ecs cli love docker-compose
Ecs cli love docker-composeEcs cli love docker-compose
Ecs cli love docker-composeKeitaIwatani
 
kpackによるコンテナイメージのビルド
kpackによるコンテナイメージのビルドkpackによるコンテナイメージのビルド
kpackによるコンテナイメージのビルドMasanori Nara
 

Similar a Run Jenkins in IBM Containers. (20)

Bluemix体験レポート@第3回soft layer勉強会 20140901_ver.2
Bluemix体験レポート@第3回soft layer勉強会 20140901_ver.2Bluemix体験レポート@第3回soft layer勉強会 20140901_ver.2
Bluemix体験レポート@第3回soft layer勉強会 20140901_ver.2
 
Google Container Engine (GKE) & Kubernetes のアーキテクチャ解説
Google Container Engine (GKE) & Kubernetes のアーキテクチャ解説Google Container Engine (GKE) & Kubernetes のアーキテクチャ解説
Google Container Engine (GKE) & Kubernetes のアーキテクチャ解説
 
Bluemix体験レポート@第3回札幌SoftLayer勉強会 20140901
Bluemix体験レポート@第3回札幌SoftLayer勉強会 20140901Bluemix体験レポート@第3回札幌SoftLayer勉強会 20140901
Bluemix体験レポート@第3回札幌SoftLayer勉強会 20140901
 
SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜
SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜
SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜
 
Pro aspnetmvc3framework chap23
Pro aspnetmvc3framework chap23Pro aspnetmvc3framework chap23
Pro aspnetmvc3framework chap23
 
LibreOffice を Windows 上でビルドする UPDATE
LibreOffice を Windows 上でビルドする UPDATELibreOffice を Windows 上でビルドする UPDATE
LibreOffice を Windows 上でビルドする UPDATE
 
JViews Diagrammer チュートリアル (JSF 2)
JViews Diagrammer チュートリアル (JSF 2)JViews Diagrammer チュートリアル (JSF 2)
JViews Diagrammer チュートリアル (JSF 2)
 
Yocto Project ハンズオン プレゼン用資料
Yocto Project ハンズオン プレゼン用資料Yocto Project ハンズオン プレゼン用資料
Yocto Project ハンズオン プレゼン用資料
 
Bluemixハンズオン資料
Bluemixハンズオン資料Bluemixハンズオン資料
Bluemixハンズオン資料
 
cf-containers-broker を使ってローカル環境もサービスの恩恵をうける
cf-containers-broker を使ってローカル環境もサービスの恩恵をうけるcf-containers-broker を使ってローカル環境もサービスの恩恵をうける
cf-containers-broker を使ってローカル環境もサービスの恩恵をうける
 
IBM Eclipse tools for Bluemix の構成手順
IBM Eclipse tools for Bluemix の構成手順IBM Eclipse tools for Bluemix の構成手順
IBM Eclipse tools for Bluemix の構成手順
 
INF-015_そこのコンテナ、うまく積めてるね! ~Windows アプリケーション コンテナの展開と運用~
INF-015_そこのコンテナ、うまく積めてるね! ~Windows アプリケーション コンテナの展開と運用~INF-015_そこのコンテナ、うまく積めてるね! ~Windows アプリケーション コンテナの展開と運用~
INF-015_そこのコンテナ、うまく積めてるね! ~Windows アプリケーション コンテナの展開と運用~
 
Japan Container Day 2018
Japan Container Day 2018Japan Container Day 2018
Japan Container Day 2018
 
Bluemixの基本を知る -仕組みと使い方-
Bluemixの基本を知る -仕組みと使い方-Bluemixの基本を知る -仕組みと使い方-
Bluemixの基本を知る -仕組みと使い方-
 
アプリ開発したい人必見!Swiftを使ってiPhoneアプリに広告実装!【appC cloud school】
アプリ開発したい人必見!Swiftを使ってiPhoneアプリに広告実装!【appC cloud school】アプリ開発したい人必見!Swiftを使ってiPhoneアプリに広告実装!【appC cloud school】
アプリ開発したい人必見!Swiftを使ってiPhoneアプリに広告実装!【appC cloud school】
 
パーソナルデータのあり方を変える!オープンソース分散型PDS「Personium」を使ってみよう!
パーソナルデータのあり方を変える!オープンソース分散型PDS「Personium」を使ってみよう!パーソナルデータのあり方を変える!オープンソース分散型PDS「Personium」を使ってみよう!
パーソナルデータのあり方を変える!オープンソース分散型PDS「Personium」を使ってみよう!
 
20121115 fukuoka sublime0_kuroneko
20121115 fukuoka sublime0_kuroneko20121115 fukuoka sublime0_kuroneko
20121115 fukuoka sublime0_kuroneko
 
True Cloud Native Batch Workflow for .NET with MicroBatchFramework
True Cloud Native Batch Workflow for .NET with MicroBatchFrameworkTrue Cloud Native Batch Workflow for .NET with MicroBatchFramework
True Cloud Native Batch Workflow for .NET with MicroBatchFramework
 
Ecs cli love docker-compose
Ecs cli love docker-composeEcs cli love docker-compose
Ecs cli love docker-compose
 
kpackによるコンテナイメージのビルド
kpackによるコンテナイメージのビルドkpackによるコンテナイメージのビルド
kpackによるコンテナイメージのビルド
 

Run Jenkins in IBM Containers.

  • 1. 1 Blue Jenkins IBM Containers で Jenkins を動かす 2016/4/11 S.Hanai
  • 3. 3 モチベーション  Bluemix には、 Build & Deploy があるけど、使い慣 れた Jenkins を使いたい  現在のところ IBM Containers は、 365 GB 時間 / 月まで無料なので、メモリを抑えればタダで Jenkins 様を雇える(* 1 ) (* 1 )料金情報は常に最新を確認してください: https://console.ng.bluemix.net/pricing/
  • 4. 4 Docker 版 Jenkins  公式 https://hub.docker.com/_/jenkins/
  • 5. 5 IBM Containers での注意  Docker だから、そのまま動いちゃうのでは?  残念ながら、そのままではうまくいかない  ボリュームの権限の問題  ボリュームのスピードの問題
  • 6. 6 権限の問題  IBM Containers のボリュームは、 NFS で実装され ており、デフォルトでは root ユーザでないと書き込 めないが、 Jenkins の Docker 版はセキュリティを 考慮して、 jenkins ユーザで起動している  一度、 jenkins ユーザを root グループに入れて、 ディレクトリをボリューム上に作ってから、 jenkins ユーザを root グループから外すという hack が必 要 参考 : http://stackoverflow.com/questions/31290202/can-i- change-owner-of-directory-that-is-mounted-on-volume-in-ibm- containers/32666280#32666280
  • 7. 7 スピードの問題  IBM Container のボリュームは、 IOP=0.25 に制限 されている。お金を払えば IOP=4 まで上がるが、上 限はそこまで root@instance-0020f249:/mnt/volume/jenkins# dd if=/dev/zero of=/mnt/volume/ttt bs=1M count=1 1+0 records in 1+0 records out 1048576 bytes (1.0 MB) copied, 32.7045 s, 32.1 kB/s root@instance-0020f249:/mnt/volume/jenkins# dd if=/dev/zero of=/mnt/volume/ttt bs=100k count=1 1+0 records in 1+0 records out 102400 bytes (102 kB) copied, 0.600598 s, 170 kB/s ssh で入って、速度を測ってみた結果 参考:自分の PC( 一世代前の SATA-SSD) $ dd if=/dev/zero of=/tmp/xxx bs=1M count=100 oflag=dsync,sync 100+0 レコード入力 100+0 レコード出力 104857600 バイト (105 MB) コピーされました、 1.23954 秒、 84.6 MB/ 秒 単純に jenkins ディレクトリをボ リュームに割り当てたところ、起 動の際の WAR 展開が 1 時間 たっても終わらないので諦め。
  • 8. 8 作戦変更 IBM Containers(jenkins) jenkins ディレクトリ 速度の観点から、 jenkins ディレクトリ は、ボリューム上に置かない ボリューム (バックアップ)rsync アプリケーション起動時に、ボリュームか ら、 jenkins ディレクトリに内容を復元する su -c "rsync -av $JENKINS_VOLUME/backup/_jenkins /var" jenkins rsync -auv --delete --include jobs/*/config.xml --exclude war --exclude jobs/*/* /var/_jenkins /var/jenkins_home/backup 定期的に rsync でボリュームにバックアッ プ。初回は遅いが、次からは差分コピーな ので速い。更にワークスペース、ビルドディ レクトリは対象から外すことで高速化
  • 9. 9 動かしてみる  以下に材料を置きました https://github.com/ruimo/blue-jenkins git clone するなりブラウザで Download ZIP する なりしてください  Bluemix のアカウント登録とか、 cf tools/plugin の 設定などは省略します。以下のドキュメントなどを参 照してください http://www.slideshare.net/unokichi/bluemixdock er-50127214
  • 11. 11 イメージを作成する  build.sh.sample というファイルが入っているので、 これを build.sh に変更して中身を自分用に書き換 えます $ cf ic build -t YOUR_DOCKER_NAMESPACE/blue-jenkins . YOUR_DOCKE_NAMESPACE のところを、自分 の Bluemix 上の Docker registry の名前空間名に 変更します。 chmod +x build.sh で実行ビットを立 てたら実行してください。これでイメージができます
  • 12. 12 イメージの作成  cf ic images を実行すると、イメージを確認できます $ cf ic images REPOSITORY TAG IMAGE ID CREATED SIZE registry.ng.bluemix.net/ruimo/blue-jenkins latest eb3d733d3c19 4 hours ago 720.5 MB
  • 13. 13 実行  run.sh.sample を run.sh にリネームして中を書き 換えます cf ic group create --name YOUR_HOST_NAME -p 8080 -m 2048 -v jenkins:/var/jenkins_home --min 1 --max 1 --desired 1 -n YOUR_CONTAINER_NAME -d mybluemix.net registry.ng.bluemix.net/YOUR_DOCKER_NAMESPACE/blue-jenkins YOUR_HOST_NAME は、 url の先頭部分で Bluemix 内で一意である必要があります YOUR_CONTAINER_NAME は任意の名前です YOUR_DOCKER_NAMESPACE は、 build.sh の 時と同じです build.sh の時と同様、実行ビットを立てて実行すれ ば container が上がります なおメモリは 2GB(-m 2048) になっているので、課 金を避けたい場合は適宜修正(減らして ) ください
  • 14. 14 実行  cf ic ps コマンドで状況を確認します $ cf ic ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES efd502f8-1bf registry.ng.bluemix.net/ruimo/blue-jenkins:latest "" 4 hours ago Running 4 hours ago 10.142.187.57:8080->8080/tcp ru-pbpl-iqpv5ivzc4fq-sysmt5rpefcw-server-kzgunlpyk3hq  ステータスが Running になれば起動しています https://HOST_NAME.mybluemix.net/ をブラウザ で開いてください。 HOST_NAME のところ は、 run.sh の中で指定した YOUR_HOST_NAME です 初回は割と速いと思いますが、次回以降はボリュー からのリストアが実行されるため、 10 分くらい起動 に要すると思います
  • 15. 15 バックアップジョブ  Jenkins が起動したら、バックアップジョブを作って おきましょう。 Jenkins のジョブの作成方法は省略 します  最初の実行には時間がかかります(全部をボリュー ムにコピーするので) rsync -auv --delete --include jobs/*/config.xml --exclude war --exclude jobs/*/* /var/_jenkins /var/jenkins_home/backup
  • 16. 16 注意  cf ic run の自動リカバリ・オプション (--auto) は使 わないでください。起動の際のボリュームからのリ ストアに時間がかかるため、ハングしたと誤認され、 削除、開始の無限ループになってしまいます  Jenkins 設定を変更した後、バックアップが走る前 に何らかの原因でコンテナが再起動されると、変更 内容は失われます
  • 17. 17 まとめ  (半ば無理矢理) Jenkins を IBM Containers で動 かしてみました  自分で証明書を取らなくても https で動くので、そ の点は良いかもしれません  誰か Jenkins2 動かしてください ...