「Jenkins ユーザ・カンファレンス 2018 東京」に行ってきた
昨日、掲題のイベントに行ってきました。
下がイベントのページです。
以下、聴講したセッションのログや感想などを記します。
- 聴講したセッションとその資料
- 基調講演 @kohsukekawa
- Accelerate with Jenkins X @jdrawlings
- Continuous Delivery Best Practices with Jenkins and GKE @yuki_iwnr
- AWSとJenkinsを活用して1年間で約500回商用デプロイした話とKubernetes活用 @takamii228
- LT: Jenkinsを簡単運用ツールとして活用して非エンジニアに喜ばれた話 @morihaya55
- LT: DevOps World | Jenkins World 2018の参加報告 by 坂本さん
- LT: Jenkinsで運用業務の改善をしてみて気づいたこと @y0shirak0
- LT: JenkinsとCodeBuildとCloudBuildと私 @irotoris
- 感想
- SPECIAL THANKS
- 参考
- 聴講ログ
聴講したセッションとその資料
タイムテーブルはこちらの通りでした。
メインセッションの一部は2トラックになっていましたが、自分は最初から最後までずっとA会場であるメインホールの方にいました。
自分が聴講したセッションの資料を、把握している限り貼っておきます。
なお、セッション資料は後ほどとりまとめて日本Jenkinsユーザ会からシェアされるようです。
基調講演 @kohsukekawa
資料見当たらず。
Accelerate with Jenkins X @jdrawlings
資料見当たらず。
Continuous Delivery Best Practices with Jenkins and GKE @yuki_iwnr
資料見当たらず。
AWSとJenkinsを活用して1年間で約500回商用デプロイした話とKubernetes活用 @takamii228
LT: Jenkinsを簡単運用ツールとして活用して非エンジニアに喜ばれた話 @morihaya55
LT: DevOps World | Jenkins World 2018の参加報告 by 坂本さん
資料見当たらず。
LT: Jenkinsで運用業務の改善をしてみて気づいたこと @y0shirak0
LT: JenkinsとCodeBuildとCloudBuildと私 @irotoris
感想
このイベントはタイムラインか何かで見かけたのがきっかけで、「お、Jenkinsの大きめのユーザ会があるみたいだ。Jenkins使うし、行っとくか」ぐらいのノリで参加しました。
…が、(良い意味で)意外に濃密な学び・気づきがあり、参加して良かったなーと思っています。
まず、基調講演ではJenkinsの生みの親であり、Cloud Bees社CTOのKawaguchi氏から、Jenkinsコミュニティの現状や、直近リリースしたJenkinsの機能や、いま走っている主なプロジェクトの紹介がありました。
これからという点では、「Configuration as Code」「Evergreen」「Cloud Native Jenkins」そして「Jenkins X」は特に注目度の高いプロジェクトだと思います。
話を聞いてて思ったのが、「Jenkins開発チームは、Jenkins運用のつらみ(〜Jenkinsの課題)をよく理解している」ということでした。
だからこそ上のようなプロジェクトが動いており、今後そういったつらみは解消されていくだろうなと思いました。
懇親会では、Jenkins XメインコミッタのRawlings氏の隣に座って色々話すことができました。
また、ノベルティとしてステッカーとTシャツを頂きました。
ありがとうございました!!
次の大きなイベントとしては、10/16に「Jenkins Day Japan 2018」があるそうです。
気になる方は是非足を運んでみてはいかがでしょうか。
SPECIAL THANKS
参考
- Togetterまとめ: Jenkinsユーザ・カンファレンス 東京 2018 - Togetter
聴講ログ
まだネット上で資料が確認できていないセッションについて、手元に書いていたログを貼っておきます。
基調講演 @kohsukekawa
- 自己紹介
- Kohsuke Kawaguchi
- CTO at CloudBees, Inc.
- Digital Darwinism
- ソフトウェア環境における変化が大きい
- 製品における役割が大きく
- いかに高い品質で速く届けるか
- 例) airbnb, テスラ
- Jenkins自身も進化しないといけない
- ソフトウェア環境における変化が大きい
- Jenkins開発について
- 最初は趣味プロジェクトだったらしい
- Jenkins Area Meetups
- 24K members
- CloudBees
- Jenkins Features / 注目プロジェクト
- Pipelineについて
- JenkinsファイルをGit管理
- コアの部分の書き換えをやってる => よりロバストに
- 直列と並列のフローを柔軟につなげるように
- Blue Ocean
- 展望
- plugin化
- Jenkinsの中に取り込む
- Blue Oceanという特別な名前をなくす
- 展望
- Evergreen
- 最初から必要なプラグイン等が組み込まれている
- batteries included
- installして5クリック以内(5分以内)で何かできる
- plugin更新の手間なども削減する
- SaaS CIがライバル
- 最初から必要な機能を満たすようにする
- 設定も環境に応じていい感じになるようにしたい
- 例) AWS使ってたらS3に設定を保存するとか
- Jenkins Coreがkernelなら、EvergreenはLinux Distribution
- Chromeのように自動アップグレードを実現する
- どのプラグインのどのバージョンをバンドルするかは、コミュニティが責任を持って配信する
- 問題が起こったら30分以内に対応できるように
- Jenkinsそのものを継続的デリバリする
- Configuration as Code
- Cloud Native Jenkins
- Jenkins X
- 詳しくはRawlings氏のセッションで
- Webアプリ開発にフォーカス
- 余計なものは見せない
- 「車に乗る人にエンジンルームの中身は見せないようにする」
- 全体の複雑度は部品の複雑さの合計より下がっている
- Jenkins - 車
- Jenkins X - 新幹線
- 細かく選べないけど、より速く目的地に着ける
- Pipelineについて
- 複数のプロジェクト間の関連
- Cloud Native JenkinsとConfiguration as Codeは切っても切れない間柄になってる。
参考:
Accelerate with Jenkins X @jdrawlings
- James Rawlings氏
- Jenkins X知ってる人ー?
- Jenkins Xとは
- Accelerateの本
- 読むといいよ
- DevOpsに関する様々な会社を調査したもの
- 過去数年に渡るDevOpsの現状
- どのくらいの頻度でデプロイするか
- コードがデプロイされるまでのリードタイム
- deployにどのくらいの割合で失敗するのか
- バージョン管理
- Jenkins XではGitOpsを自動的に実現する
- 全部設定をGitで管理する
- Jenkins XではGitOpsを自動的に実現する
- デプロイの自動化
- Jenkinsfileを使ってパイプラインを自動化
- アプリのプレビュー環境を作る
- trunkベースの開発を推奨
- ゆるやかに結合されたアーキテクチャー
- Microservicesを簡単に実現
- 開発者が余計なことに煩わされないように
- ダイアグラム
- GitHubからwebhook送信
- なぜK8s?
- どういうコンテナオーケストレーションツール使ってるか
- K8sは難しい
- デモ
jx create cluster gke --prow
jx get env
- requirements.yml
- どのアプリケーションがインストールされるか
jx env
... 環境を切り替えることができるjx logs
- ログ見るjx create quickstart
- golang-httpを選択- Project name:
tokyo-2
- Project name:
- GitHubリポジトリが作られる
- Bitbucket等とも連携可能
- デプロイしたりテストするジョブが作られる
- git pushして
jx get activity...
でパイプラインの状況がわかる/approve
とコメントすると本番にデプロイされる
- JenkinsXはK8sをラップしてWebアプリ開発〜デプロイのフローを整備してくれる。 ブートストラップの手間を省いて初速を上げるだけでなく、GitOpsによるCI/CDを整える ことで、開発/リリースプロセスも矯正されそう。
参考:
JenkinsXはK8sをラップしてWebアプリ開発〜デプロイのフローを整備してくれる。ブートストラップの手間を省いて初速を上げるだけでなく、GitOpsによるCI/CDを整えることで、開発/リリースプロセスも矯正されそう。 #jenkinsstudy
— progrhyme (@progrhyme) 2018年9月23日
Continuous Delivery Best Practices with Jenkins and GKE @yuki_iwnr
- 自己紹介
- アジェンダ
- Jenkins Journey
- CD wi/ Jenkins & Spinnaker
- Jenkins who?
- Build server
- Pluggable architecture
- The Jenkins Journey
- Day 1 - はじまり
- Problem:
- 開発者のマシンでスクリプトを動かしている
- Solution:
- 使えるマシンにJenkinsを入れて動かす
- Problem:
- Day 100 - 多数のエージェント
- 問題:
- ビルドが低速
- ビルドキューが多い
- 解決策:
- より多くのマシン
- Jenkins Agent Nodes
- 問題:
- Day 150 - Diskが足りない
- 問題:
- 単一のマシン(master)で保持できない
- 解決策:
- GCSやS3にアーティファクトを保存
- 問題:
- Day 300 - ビルド依存性の狂気
- 問題:
- 各ジョブで必要な依存が増えていく
- ジョブごとに依存が異なる
- 解決策:
- ビルド環境をコンテナ化する
- Docker pluginを使う
- 問題:
- Day 310 - ジョブ設定が困ったことに
- 問題:
- ジョブ設定がJenkins内だけ。維持、更新、ロールバックが困難に
- 解決策:
- Pipelineで書いてGitに入れる
- 問題:
- Day 365 - スケールがつらい
- 問題:
- 新しいノードを追加するのにうんざり。利用されていない時間もスケールダウンしない
- 解決策:
- ビルドエージェントのDockerイメージを作る
- エージェントをGKEで動かす
- 問題:
- Day 412 複数のJenkinsインストールを管理
- 問題:
- 各チームがそれぞれ互換性のないプラグインを必要とする
- 解決策:
- Jenkinsのインストールを再現可能にする
- Helmとか
- Jenkinsのインストールを再現可能にする
- 問題:
- Day 1 - はじまり
- HelmでJenkinsをデプロイしよう
- values.yaml に変数を注入
- インストールするplugin
- values.yaml に変数を注入
- AgentをK8sで管理
- オートスケール
- プリエンプティブノード
- Jenkinsfile
pipeline { agent { kubernetes { label '...' defaultContainer 'jnlp' yaml """ apiVersion: v1 kind: Pod : """ } stages { : } } }
- Agentのbase imageの管理
- CloudBuild使うといいよ
- Cloud Storageにビルド成果物を保存
- pluginがある
- Demo
- どうやったらカナリアリリースできるの?
- K8sには複数クラスタがあるよ
- Kubernetes CLI Plugin
- どのクレデンシャルIDを使うか
- 向き先とユーザを切り替えることができる
- Blue/Green Deployment
- Pipeline Scriptに記述
- Spinnakerについて
LT: DevOps World | Jenkins World 2018の参加報告 by 坂本さん
- DevOps World | Jenkins World
- CloudBee, Inc主催のJenkins/DevOpsに関する世界最大規模のイベント
- 39か国からの参加者
- Jenkins World => DevOps Worldに改名された
- 印象
* as Code
の波- コンテナのCI/CD
- DevSecOps
- Ephemeral Jenkins
- コンテナのセキュリティ
- sysdig falco - https://sysdig.com/opensource/falco/