SlideShare a Scribd company logo
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 動かしてください ...

More Related Content

PDF
βが取れたBluemixのDockerを使ってみる(基本編)
PPTX
BluemixでDockerを試してみる
PDF
アプリ屋もDockerをドカドカ使おう ~ Docker入門
PDF
コンテナ時代だからこそ要注目! Cloud Foundry
PDF
はてなにおける継続的デプロイメントの現状と Docker の導入
PDF
Drone.io のご紹介
PDF
はじめてのコンテナーDocker & Windows & Linux
PDF
DockerとDocker Hubの操作と概念
βが取れたBluemixのDockerを使ってみる(基本編)
BluemixでDockerを試してみる
アプリ屋もDockerをドカドカ使おう ~ Docker入門
コンテナ時代だからこそ要注目! Cloud Foundry
はてなにおける継続的デプロイメントの現状と Docker の導入
Drone.io のご紹介
はじめてのコンテナーDocker & Windows & Linux
DockerとDocker Hubの操作と概念

What's hot (20)

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

Similar to Run Jenkins in IBM Containers. (20)

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

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 動かしてください ...