SlideShare une entreprise Scribd logo
1  sur  67
Jenkins x Kubernetesが
簡単だと思ったら
大変だった話
Japan Container Days v18.12
2018/12/05
山本 誠樹
株式会社SRIA
自己紹介
2
Masaki YAMAMOTO
Twitter:@nnasaki
Microsoft MVP
for Microsoft Azure
2014.7 〜 2019.6
CI/CDとは?
• Continuous Integration(CI)
– 継続的インテグレーション
– 自動ビルド・テスト
– エクストリーム・プログラミング (XP) のプラクティスの一つ
• Continuous Delivery(CD)
– 継続的デリバリー
– CI実行後、テスト環境や本番環境へデプロイ
本日のゴール
• CI/CDを実運用した体験の共有
• 皆様の苦労を少しでも減らしたい
• 俺の屍を超えていけ
CI/CD導入
なぜCI/CDが必要か?
• プロダクトをより迅速に正確にリリースしたい
• DevOpsの実現に必須
• クラウドネイティブなアプリケーション作成に必須
• CNCF Cloud Native Trail Map の2番目に登場
Cloud Native
Trail Map
1. CONTAINARIZATION
2. CI/CD
3. ORCHESTRATION &
APPLICATION DEFINITION
4. OBSERVABILITY &
ANALYSIS
5. … And more!
https://github.com/cncf/landscape/blob/master/README.md
Cloud Native Trail Map
• コンテナー化の次にCI/CD
• CI/CDを用意する重要性が高まっている
CI/CD設計
CI/CDの基本
BTS
Git
CI CD
テスト
環境
本番
環境
成果物
CI/CDの基本
BTS
Git
CI CD
テスト
環境
本番
環境
成果物
• 各機能は独立して動く
• 機能間のプロトコルは様々
• HTTP, SSH, RPC
• SaaSを組み合わせて使うことも増えてきた
• CNCF Cloud Native Interactive Landscape
• 前述のCloud Native Trail Mapで使用するツール郡
• 605個(2018/12/1現在)
• https://landscape.cncf.io/
• CI/CDだけで33個
• すべて使用する必要はない
• 必要に応じて選択して使う
CIを動かす
BTS
Git
CI CD
テスト
環境
本番
環境
成果物
1.
ソースコード
をプッシュ
2.
プルリクエスト 3.
トリガー
CIが動く
BTS
Git
CI CD
テスト
環境
本番
環境
成果物
1.
ソースコード
を取得
2.
ビルド
3.
成果物を
格納
CDを動かす
BTS
Git
CI CD
テスト
環境
本番
環境
成果物
1.
プルリクエスト
をマージ
2.
トリガー
CDが動く
BTS
Git
CI CD
テスト
環境
本番
環境
成果物
1.
成果物を
取得
2.
デプロイ
CI/CDに必要なもの(例)
BTS
Git
CI CD
テスト
環境
本番
環境
成果物
CI/CDに必要なもの(例)
BTS
Git
CI CD
テスト
環境
本番
環境
成果物
CI/CDに必要なもの(例)
BTS
Git
CI CD
テスト
環境
本番
環境
成果物
今回の構成
BTS
Git
CI CD
テスト
環境
本番
環境
成果物
1.
REST API
Webhook
2.
kubectl
今回の構成(BTS, Git)
BTS
Git
CI CD
テスト
環境
本番
環境
成果物
• GitHubのBTSとGitを使う
• 他のCI/CDツールとも連携が豊富
• プルリクエストにCIの結果が統合
されるので、見やすい
• SaaSなので管理の手間が無い
今回の構成(CI, CD)
BTS
Git
CI CD
テスト
環境
本番
環境
成果物
• Jenkinsを使用
• 枯れてる
• GitHubとの連携は
Webhook
• IaaSなので管理が
大変
• パッチ当て
• スケール監視
今回の構成(テスト環境, 本番環境)
BTS
Git
CI CD
テスト
環境
本番
環境
成果物
• Kubernetesを使用
• Azureで構成(AKS)
• マスターはPaaSなので手間いらず
• ノードはIaaSなので管理が大変
• パッチ当て
• ノードの再起動
CI/CD運用
CI/CD運用
• SaaSの場合、ほとんど気にする必要は無い
– ただしスケールを上げると高額になる
– 高ワークロードの場合IaaSのほうが安くなる
• IaaSの場合、ケアする範囲が広くなる
– パッチ当て(OS、ミドル、アプリなど)
– サービス再起動
– ディスク容量
– 死活監視
– スケールアウトのケア(自動起動など)
Jenkinsの運用
• IaaSゆえの悩みが多かった
• パッチ当て、ディスク容量、死活監視などもれなく苦労
した
• GUIの設定が多く煩雑になりがちだった
Declarative Pipelineを使う
• ファイルを用意する(Jenkinsfileが一般的)
• GUIの設定無しにビルドをコードで定義
– Groovyスクリプト
• CircleCIなどのyamlの定義より細かな制御可能
• Docker, Terraform, kubectlなど周辺ツールが利用可能
Declarative Pipeline サンプルコード
pipeline {
agent { docker 'maven:3-alpine' }
stages {
stage('Example Build') {
steps {
sh 'mvn -B clean verify'
}
}
}
}
• pipelineの宣言
Declarative Pipeline サンプルコード
pipeline {
agent { docker 'maven:3-alpine' }
stages {
stage('Example Build') {
steps {
sh 'mvn -B clean verify'
}
}
}
}
• ビルドするエージェントを指定
• mavenのdockerイメージを使用
Declarative Pipeline サンプルコード
pipeline {
agent { docker 'maven:3-alpine' }
stages {
stage('Example Build') {
steps {
sh 'mvn -B clean verify'
}
}
}
}
• ビルドのステージを使用する宣言
Declarative Pipeline サンプルコード
pipeline {
agent { docker 'maven:3-alpine' }
stages {
stage('Example Build') {
steps {
sh 'mvn -B clean verify'
}
}
}
}
• ビルドのステージ定義
• 「Example Build」を指定
Declarative Pipeline サンプルコード
pipeline {
agent { docker 'maven:3-alpine' }
stages {
stage('Example Build') {
steps {
sh 'mvn -B clean verify'
}
}
}
}
• ビルドの実行ステップを記載
• Shellでmavenを実行
Declarative Pipeline サンプルコード
pipeline {
agent any
stages {
stage('Build‘) { ... }
stage('Test’) { ... }
stage('Deploy’) { ... }
}
}
• 複数のステージを記載可能
• ビルド、テスト、デプロイ
• 途中で失敗すると止まる
Declarative Pipeline サンプルコード
pipeline {
agent any
stages {
stage('No-op') { ... }
}
post {
always { ... }
success { echo 'I succeeeded!' }
unstable { echo 'I am unstable :/' }
failure { echo 'I failed :(' }
changed { echo 'Things were different before...' }
}
} • ビルド結果に応じてクリーンアップ可能
• dockerイメージやtempファイルなど消せる
Declarative Pipelineの良いところ
• 数100個のリポジトリに対して一つ一つJenkinsプロジェ
クトを作る必要がなくなった
– 各リポジトリにJenkinsfileのテンプレートを用意
– 個別のビルド手順をデベロッパーが記載
• ビルド手順のブラックボックス化がなくなった
– すべてJenkinsfileに記載
– 「Jenkins職人」化を防げた
Declarative Pipelineの悪いところ
• 情報が少ない
– ググってもなかなか出てこない
– やりたいことを試行錯誤
• Groovyスクリプトに慣れが必要
– 追加の学習コスト
– 文字列や日付の扱いに戸惑うことがある
JENKINS X KUBERNETES
JenkinsからKubernetesへデプロイ
BTS
Git
CI CD
テスト
環境
本番
環境
成果物
kubectl
Jenkins で kubectl
• kubectl先の設定方法
– 複数のKubernetesクラスタを使う
– 複数の設定情報が必要
– KUBERNETES_MASTER環境変数とパラメーターを使用
– 詳細は後述
• デプロイ用のファイルは別途準備
– CI用のJenkinsfileとCD用のJenkinsfileは別
– 環境ごとにk8sのDeployment用yamlを分ける
• ベストプラクティスかどうかはわからない
– spinnakerとかを使用したほうが良いかも
Dockerイメージ保存
BTS
Git
CI CD
テスト
環境
本番
環境
成果物
Azure
Container
Registry
(ACR)
Dockerイメージ作成
• Dockerビルド用イメージとリリース用イメージは別
• できるだけリリース用イメージは軽くする
– イメージが軽いほどコンテナアプリの起動が早くなる
– スケールアウトに強くなる
– マルチステージビルドの活用
Dockerイメージ保存
• Jenkins上ではなく専用のサービスを使う
– Docker Hub(無料版はパブリックのみ)
– Amazon Elastic Container Registry
– Azure Container Registry(ACR)
– GCP Container Registry
• ビルド機能が備わっているサービスもある
• イメージの脆弱性スキャン機能なども
Declarative Pipelineでの認証情報
• そのまま書くと平文でLogに出力される
• Jenkinsの認証プロバイダーにKeyValueで保存
• スクリプト上でwithCredentialsを使用して読み込む
Declarative Pipeline サンプルコード
stage('deploy') {
steps {
script {
withCredentials([string(credentialsId: 'k8s-dev', variable: 'master'),
file(credentialsId: 'k8s-dev-client-cert', variable: 'cert'),
file(credentialsId: 'k8s-dev-client-key', variable: 'key')]) {
sh """
export KUBERNETES_MASTER=${master}
kubectl apply -f deploy.yaml --client-certificate=${cert} --client-
key=${key}
"""
}
}
}
}
• 認証情報をJenkinsの認証プロバイダーから
読み込む
Declarative Pipeline サンプルコード
stage('deploy') {
steps {
script {
withCredentials([string(credentialsId: 'k8s-dev', variable: 'master'),
file(credentialsId: 'k8s-dev-client-cert', variable: 'cert'),
file(credentialsId: 'k8s-dev-client-key', variable: 'key')]) {
sh """
export KUBERNETES_MASTER=${master}
kubectl apply -f deploy.yaml --client-certificate=${cert} --client-
key=${key}
"""
}
}
}
}
• 複数行のShellはヒアドキュメント形式
• 環境変数が適用されないため複数行にする
Declarative Pipeline サンプルコード
stage('deploy') {
steps {
script {
withCredentials([string(credentialsId: 'k8s-dev', variable: 'master'),
file(credentialsId: 'k8s-dev-client-cert', variable: 'cert'),
file(credentialsId: 'k8s-dev-client-key', variable: 'key')]) {
sh """
export KUBERNETES_MASTER=${master}
kubectl apply -f deploy.yaml --client-certificate=${cert} --client-
key=${key}
"""
}
}
}
}
実運用で困ったこと
ビルド時にtoo many linksエラー
• なぜかCI中にビルドエラーが起きます!と連絡
• ローカル環境では問題なし
• Jenkinsのログを調べてみるとCIでDockerイメージビル
ド中に「 too many links」エラーと出て失敗する
• エラーログ
– link /lib/docker/overlay/(省略)/checksum_type
/lib/docker/overlay/(省略)/checksum_type: too many
links
Jenkins
Docker
Kubernetes
ビルド時にtoo many linksエラー
• ハードリンクが使いつくされ、i-nodeが枯渇
• Jenkins上でDocker Imageのクリーンアップが行われて
いなかった
• 約3000イメージファイルが存在
• とあるイメージは2GBを超えていた
Jenkins
Docker
Kubernetes
ビルド時にtoo many linksエラー
• Dockerイメージの削除を実施
– docker image prune だと 削除時にdockerd が応答しなくな
るほどのメモリ、CPU負荷が発生
– docker image ls | grep -v “” | awk ‘{print $1“:”$2}’ |
xargs docker rmi で少しずつ削除
Jenkins
Docker
Kubernetes
ビルド時にtoo many linksエラー
• cronで定期的にDocker Image削除を実施
– docker image prune
• Overlay2ドライバを使用(未実施)
– 当時はOverlayドライバを使用していた
– Overlay2ドライバを使用することで解消するかも
– https://docs.docker.com/storage/storagedriver/overlayfs
-driver/#how-the-overlay2-driver-works
Jenkins
Docker
Kubernetes
マルチステージビルドに失敗する
• Dockerのマルチステージビルドがたまに失敗する
• 失敗する理由が毎回違う
Jenkins
Docker
Kubernetes
マルチステージビルドに失敗する
• docker-workflowプラグインの問題っぽい
• https://issues.jenkins-ci.org/browse/JENKINS-
44609 の問題っぽい
Jenkins
Docker
Kubernetes
マルチステージビルドに失敗する
• Shellで直接実行することにした
• 修正前
– docker.build(”hogehoge:hoge", ". -f Dockerfile")
• 修正後
– sh "docker build . -f Dockerfile –t hogehoge:hoge”
– docker.image(”hogehoge:hoge")
Jenkins
Docker
Kubernetes
マルチステージビルドに失敗する
• 現状なし
• Issueは修正中のように見えるけど。。。
Jenkins
Docker
Kubernetes
Jenkinsファイルの文法チェックをしたい
• Jenkinsfile はデベロッパーが書いていた
• カッコのとじ忘れなど軽微なミスが多かった
• Jenkinsfile の動作チェックがローカルで行えなかった
• 動作確認のたびにCIを回す必要がありストレスだった
Jenkins
Docker
Kubernetes
Jenkinsファイルの文法チェックをしたい
• curlでチェックできるようにした
• curl -X POST -H $JENKINS_CRUMB -F
"jenkinsfile=<Jenkinsfile" $JENKINS_URL/pipeline-
model-converter/validate
• 詳細は下記参照
• https://jenkins.io/doc/book/pipeline/development/
#linter
Jenkins
Docker
Kubernetes
特定のコマンドを実行したい
• Terraform, Azure-CLIなど
• JenkinsのホストOSにインストールされていない
• ホストOSに余計なコマンドやミドルは入れたくない
Jenkins
Docker
Kubernetes
特定のコマンドを実行したい
• コマンド実行用のDockerイメージを用意
stage('cli-sample') {
agent { dockerfile { docker 'hogehoge' } }
steps { sh 'hogehoge' }
}
Jenkins
Docker
Kubernetes
共通ライブラリを扱いたい
• Gitのサブモジュールが利用できない環境
• 数100リポジトリから共通的に参照
• 手間なく運用したい
Jenkins
Docker
Kubernetes
共通ライブラリを扱いたい
• サブディレクトリを作成しGitをチェックアウト
dir('hogehoge-repo') {
git url: "hogehoge/common.git", branch: "master",
credentialsId: credentialsId
}
Jenkins
Docker
Kubernetes
まとめ
パブリッククラウドの比較
• Jenkinsを扱うのにパブリッククラウドの比較をすると書
いていましたが…
• IaaSになるので各社変わらずという結論
– 料金面、IOPSなど細かい違いはありますが…
• Kubernetesなど利用したい環境に応じて設置すればよい
のではないでしょうか?
よりよいCI/CDライフを!
Creating with you
アンケートのご協力をお願いします!
https://jp.surveymonkey.com/r/ZRV6NNK

Contenu connexe

Tendances

Tendances (20)

コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
 
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
 
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
 
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
 
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
 
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
 
3分でわかるAzureでのService Principal
3分でわかるAzureでのService Principal3分でわかるAzureでのService Principal
3分でわかるAzureでのService Principal
 
[Cloud OnAir] BigQuery の仕組みからベストプラクティスまでのご紹介 2018年9月6日 放送
[Cloud OnAir] BigQuery の仕組みからベストプラクティスまでのご紹介 2018年9月6日 放送[Cloud OnAir] BigQuery の仕組みからベストプラクティスまでのご紹介 2018年9月6日 放送
[Cloud OnAir] BigQuery の仕組みからベストプラクティスまでのご紹介 2018年9月6日 放送
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
 
OCIランタイムの筆頭「runc」を俯瞰する
OCIランタイムの筆頭「runc」を俯瞰するOCIランタイムの筆頭「runc」を俯瞰する
OCIランタイムの筆頭「runc」を俯瞰する
 
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーKubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法について
 
KeycloakでAPI認可に入門する
KeycloakでAPI認可に入門するKeycloakでAPI認可に入門する
KeycloakでAPI認可に入門する
 
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
 
Dockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクルDockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクル
 
Rootlessコンテナ
RootlessコンテナRootlessコンテナ
Rootlessコンテナ
 

Similaire à Jenkins x Kubernetesが簡単だと思ったら大変だった話

Awsで実現するseleniumテスト高速術
Awsで実現するseleniumテスト高速術Awsで実現するseleniumテスト高速術
Awsで実現するseleniumテスト高速術
finoue
 

Similaire à Jenkins x Kubernetesが簡単だと思ったら大変だった話 (20)

GKEで半年運用してみた
GKEで半年運用してみたGKEで半年運用してみた
GKEで半年運用してみた
 
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
 
Qlik TechFest C-5 Qlikエンジンのサーバーサイド拡張(SSE)の 基礎から実装まで
Qlik TechFest C-5  Qlikエンジンのサーバーサイド拡張(SSE)の 基礎から実装までQlik TechFest C-5  Qlikエンジンのサーバーサイド拡張(SSE)の 基礎から実装まで
Qlik TechFest C-5 Qlikエンジンのサーバーサイド拡張(SSE)の 基礎から実装まで
 
ビルドサーバで使うDocker
ビルドサーバで使うDockerビルドサーバで使うDocker
ビルドサーバで使うDocker
 
AWSとGCPを使用したインフラ環境
AWSとGCPを使用したインフラ環境AWSとGCPを使用したインフラ環境
AWSとGCPを使用したインフラ環境
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
 
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
 
Awsで実現するseleniumテスト高速術
Awsで実現するseleniumテスト高速術Awsで実現するseleniumテスト高速術
Awsで実現するseleniumテスト高速術
 
AKS と ACI を組み合わせて使ってみた
AKS と ACI を組み合わせて使ってみたAKS と ACI を組み合わせて使ってみた
AKS と ACI を組み合わせて使ってみた
 
社内勉強会資料(Varnish Module)
社内勉強会資料(Varnish Module)社内勉強会資料(Varnish Module)
社内勉強会資料(Varnish Module)
 
Introduction to Magnum (JP)
Introduction to Magnum (JP)Introduction to Magnum (JP)
Introduction to Magnum (JP)
 
Azure Arc Jumpstart Update - HCIBox Edition
Azure Arc Jumpstart Update - HCIBox EditionAzure Arc Jumpstart Update - HCIBox Edition
Azure Arc Jumpstart Update - HCIBox Edition
 
Getting Start for Azure Pipelines
Getting Start for Azure PipelinesGetting Start for Azure Pipelines
Getting Start for Azure Pipelines
 
Application Deployment on AWS
Application Deployment on AWSApplication Deployment on AWS
Application Deployment on AWS
 
Server side Swift & Photo Booth
Server side Swift & Photo Booth Server side Swift & Photo Booth
Server side Swift & Photo Booth
 
Circle ci and docker+serverspec
Circle ci and docker+serverspecCircle ci and docker+serverspec
Circle ci and docker+serverspec
 
Amazon EC2 Container Service Deep dive
Amazon EC2 Container Service Deep diveAmazon EC2 Container Service Deep dive
Amazon EC2 Container Service Deep dive
 
Java on Kubernetes on Azure
Java on Kubernetes on AzureJava on Kubernetes on Azure
Java on Kubernetes on Azure
 
AWS Black Belt Tech シリーズ 2015 - AWS CodeCommit & AWS CodePipeline & AWS CodeD...
AWS Black Belt Tech シリーズ 2015 - AWS CodeCommit & AWS CodePipeline & AWS CodeD...AWS Black Belt Tech シリーズ 2015 - AWS CodeCommit & AWS CodePipeline & AWS CodeD...
AWS Black Belt Tech シリーズ 2015 - AWS CodeCommit & AWS CodePipeline & AWS CodeD...
 
Kube con + cloudnativecon 2017 社内報告会(外部公開用)
Kube con + cloudnativecon 2017 社内報告会(外部公開用)Kube con + cloudnativecon 2017 社内報告会(外部公開用)
Kube con + cloudnativecon 2017 社内報告会(外部公開用)
 

Plus de Masaki Yamamoto

Plus de Masaki Yamamoto (18)

Microsoft の AI と Azure と OpenAI について
Microsoft の AI と Azure と OpenAI についてMicrosoft の AI と Azure と OpenAI について
Microsoft の AI と Azure と OpenAI について
 
クラウドセキュリティについて考える
クラウドセキュリティについて考えるクラウドセキュリティについて考える
クラウドセキュリティについて考える
 
Cloud Nativeとは?
Cloud Nativeとは?Cloud Nativeとは?
Cloud Nativeとは?
 
Running Kubernetes on Azure
Running Kubernetes on AzureRunning Kubernetes on Azure
Running Kubernetes on Azure
 
Ruby on Rails on Azure
Ruby on Rails on AzureRuby on Rails on Azure
Ruby on Rails on Azure
 
Running Kubernetes on Azure
Running Kubernetes on AzureRunning Kubernetes on Azure
Running Kubernetes on Azure
 
Azure使いから見たAWSの良いところ
Azure使いから見たAWSの良いところAzure使いから見たAWSの良いところ
Azure使いから見たAWSの良いところ
 
Azure Web Apps と Azure Mobile Apps
Azure Web Apps とAzure Mobile AppsAzure Web Apps とAzure Mobile Apps
Azure Web Apps と Azure Mobile Apps
 
Azure Mobile Services と Azure Mobile Apps
Azure Mobile ServicesとAzure Mobile AppsAzure Mobile ServicesとAzure Mobile Apps
Azure Mobile Services と Azure Mobile Apps
 
Microsoft Azure で始める サクサク Android開発 in jazug青森
Microsoft Azureで始めるサクサクAndroid開発 in jazug青森Microsoft Azureで始めるサクサクAndroid開発 in jazug青森
Microsoft Azure で始める サクサク Android開発 in jazug青森
 
Microsoft Azure で スマホからIoTまで
Microsoft AzureでスマホからIoTまでMicrosoft AzureでスマホからIoTまで
Microsoft Azure で スマホからIoTまで
 
Microsoft Azure と Swift で開発をする
Microsoft Azure と Swift で開発をするMicrosoft Azure と Swift で開発をする
Microsoft Azure と Swift で開発をする
 
今日から使える Microsoft Azure
今日から使える Microsoft Azure今日から使える Microsoft Azure
今日から使える Microsoft Azure
 
Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション
Windows Azure と Xamarin で作るマルチプラットフォームアプリケーションWindows Azure と Xamarin で作るマルチプラットフォームアプリケーション
Windows Azure と Xamarin で作るマルチプラットフォームアプリケーション
 
最新 Windows azure モバイル・サービス 活用法
最新 Windows azure モバイル・サービス 活用法最新 Windows azure モバイル・サービス 活用法
最新 Windows azure モバイル・サービス 活用法
 
COD2013 Windows Azure Mobile Service を用いたiOS/Android開発
COD2013 Windows Azure Mobile Service を用いたiOS/Android開発COD2013 Windows Azure Mobile Service を用いたiOS/Android開発
COD2013 Windows Azure Mobile Service を用いたiOS/Android開発
 
Devlove仙台20130309 レガシープロジェクト脱出大作戦
Devlove仙台20130309 レガシープロジェクト脱出大作戦Devlove仙台20130309 レガシープロジェクト脱出大作戦
Devlove仙台20130309 レガシープロジェクト脱出大作戦
 
DDD読書会 アナリシスパターン
DDD読書会 アナリシスパターンDDD読書会 アナリシスパターン
DDD読書会 アナリシスパターン
 

Jenkins x Kubernetesが簡単だと思ったら大変だった話