kubernets on bluemix + devopsでコンテナciやってみた
TRANSCRIPT
![Page 1: Kubernets on Bluemix + DevOpsでコンテナCIやってみた](https://reader034.vdocuments.site/reader034/viewer/2022051504/5a647a8c7f8b9a3b568b48b5/html5/thumbnails/1.jpg)
Kubernets on Bluemix + DevOpsでコンテナCIやってみたPumpkin Heads Co.,Ltd. Shoichiro Sakaigawa
BMXUG つきじ#1
![Page 2: Kubernets on Bluemix + DevOpsでコンテナCIやってみた](https://reader034.vdocuments.site/reader034/viewer/2022051504/5a647a8c7f8b9a3b568b48b5/html5/thumbnails/2.jpg)
自己紹介境川 章一郎
インフラ系SE
時々開発します(Java/PHP/Python)
最近はnode-red / kubernets+bluemix / OpenShift Origin界隈で学習しています。
Qiitaに忘れた頃に寄稿します。
![Page 3: Kubernets on Bluemix + DevOpsでコンテナCIやってみた](https://reader034.vdocuments.site/reader034/viewer/2022051504/5a647a8c7f8b9a3b568b48b5/html5/thumbnails/3.jpg)
Docker使ったことあるかたどのくらいいますか?
![Page 4: Kubernets on Bluemix + DevOpsでコンテナCIやってみた](https://reader034.vdocuments.site/reader034/viewer/2022051504/5a647a8c7f8b9a3b568b48b5/html5/thumbnails/4.jpg)
Kubernetes on Bluemix 知っている方はどのくらいいますか?
![Page 5: Kubernets on Bluemix + DevOpsでコンテナCIやってみた](https://reader034.vdocuments.site/reader034/viewer/2022051504/5a647a8c7f8b9a3b568b48b5/html5/thumbnails/5.jpg)
今日話すことKubernetes Bluemixの基礎知識
Kubernetesのすごいところ
Bluemix on Kubernetesのすごいところ
Bluemix DevOps
デモ
![Page 6: Kubernets on Bluemix + DevOpsでコンテナCIやってみた](https://reader034.vdocuments.site/reader034/viewer/2022051504/5a647a8c7f8b9a3b568b48b5/html5/thumbnails/6.jpg)
Kubernets on Bluemix
©BMXUG Illustration by 竹花ノート
![Page 7: Kubernets on Bluemix + DevOpsでコンテナCIやってみた](https://reader034.vdocuments.site/reader034/viewer/2022051504/5a647a8c7f8b9a3b568b48b5/html5/thumbnails/7.jpg)
Kubernetesってどんなもの?簡素にまとめると
Docker実行環境のクラスタ化
耐障害性
コンテナの冗長化
複数の要素の集合体
Master Node
クラスタ全体の管理基盤
Worker Node
実際のコンテナが動作する場所
出典: Kubernetes Building High-Availability Clusters https://kubernetes.io/docs/admin/high-availability/
![Page 8: Kubernets on Bluemix + DevOpsでコンテナCIやってみた](https://reader034.vdocuments.site/reader034/viewer/2022051504/5a647a8c7f8b9a3b568b48b5/html5/thumbnails/8.jpg)
Bluemix on Kubernets のすごいところマネージドである。
Kubernetes MasterはBluemixが管理してくれる
Kubernetes Nodeをクラスタとして提供してくれる
利用者端末からkubernetesクラスタへはOpenVPNでつなげる。
コンテナのセキュリティ診断
Bluemix PaaSとの連携 (Watson/CloudFoundry)
![Page 9: Kubernets on Bluemix + DevOpsでコンテナCIやってみた](https://reader034.vdocuments.site/reader034/viewer/2022051504/5a647a8c7f8b9a3b568b48b5/html5/thumbnails/9.jpg)
Bluemix on Kubernetesこんなときは?
DBにデータを保存したい-> PaaSのDBサービスを利用する Cloundantなど多くはCloudFoundoryベース
ファイルを保存したい-> IBM Cloud Object Storage(ICOS)に保存する-> NFS永続ボリュームを作成・契約し保存する
PaaSと接続したいService Bindingを利用する
![Page 10: Kubernets on Bluemix + DevOpsでコンテナCIやってみた](https://reader034.vdocuments.site/reader034/viewer/2022051504/5a647a8c7f8b9a3b568b48b5/html5/thumbnails/10.jpg)
Bluemix DevOps ©BMXUG Illustration by 竹花ノート
![Page 11: Kubernets on Bluemix + DevOpsでコンテナCIやってみた](https://reader034.vdocuments.site/reader034/viewer/2022051504/5a647a8c7f8b9a3b568b48b5/html5/thumbnails/11.jpg)
Bluemix DevOps使ったことある方どのくらいますか?
![Page 12: Kubernets on Bluemix + DevOpsでコンテナCIやってみた](https://reader034.vdocuments.site/reader034/viewer/2022051504/5a647a8c7f8b9a3b568b48b5/html5/thumbnails/12.jpg)
今日のデモsecure-kube-toolchain サンプルをベースにDevOps CI部分を登録する
http://bit.ly/tsukiji-toolchain 今回のカスタマイズ版
http://bit.ly/2xPUZE0
オリジナルの”tsukiji-container”をtoolchainでビルドする
http://bit.ly/tsukiji-container
“tsukiji-container”のビルドが完了したらPaaS連携を行って画像認識を行う
![Page 13: Kubernets on Bluemix + DevOpsでコンテナCIやってみた](https://reader034.vdocuments.site/reader034/viewer/2022051504/5a647a8c7f8b9a3b568b48b5/html5/thumbnails/13.jpg)
今日のデモ 資料URLsecure-kube-toolchain サンプルをベース
http://bit.ly/tsukiji-toolchain 今回のカスタマイズ版(fork)
http://bit.ly/2xPUZE0 IBM 公式版
オリジナルの”tsukiji-container”をtoolchainでビルドする
http://bit.ly/tsukiji-container
![Page 14: Kubernets on Bluemix + DevOpsでコンテナCIやってみた](https://reader034.vdocuments.site/reader034/viewer/2022051504/5a647a8c7f8b9a3b568b48b5/html5/thumbnails/14.jpg)
役割分担(toolchain)
secure-kube-toolchain Bluemix DevOpsの CIフローを定義する ここでgitレポジトリ 指定・ビルド・ 開発環境を定義して dockerコンテナの 実行まで管理
![Page 15: Kubernets on Bluemix + DevOpsでコンテナCIやってみた](https://reader034.vdocuments.site/reader034/viewer/2022051504/5a647a8c7f8b9a3b568b48b5/html5/thumbnails/15.jpg)
役割分担(tsukiji-container)
tsukiji-container dockerコンテナと kubernetesへの デプロイ指示を ファイルのまとまり として提供docker container
Dockerfile
kubernetes deploy.yaml
Application Source Code
![Page 16: Kubernets on Bluemix + DevOpsでコンテナCIやってみた](https://reader034.vdocuments.site/reader034/viewer/2022051504/5a647a8c7f8b9a3b568b48b5/html5/thumbnails/16.jpg)
ToolChain作成に必要なものAPIキー
名前空間(namespace)
kubernetsクラスタ
bxコマンド+プラグイン
$ bx plugin install container-service -r Bluemix
$ bx plugin install conainer-registry -r Bluemix
kubectlコマンド
![Page 17: Kubernets on Bluemix + DevOpsでコンテナCIやってみた](https://reader034.vdocuments.site/reader034/viewer/2022051504/5a647a8c7f8b9a3b568b48b5/html5/thumbnails/17.jpg)
デモンストレーション
![Page 18: Kubernets on Bluemix + DevOpsでコンテナCIやってみた](https://reader034.vdocuments.site/reader034/viewer/2022051504/5a647a8c7f8b9a3b568b48b5/html5/thumbnails/18.jpg)
secure-kube-toolchainからCreate toolchainを実行する
![Page 19: Kubernets on Bluemix + DevOpsでコンテナCIやってみた](https://reader034.vdocuments.site/reader034/viewer/2022051504/5a647a8c7f8b9a3b568b48b5/html5/thumbnails/19.jpg)
ツールチェーン名を適宜指定する
![Page 20: Kubernets on Bluemix + DevOpsでコンテナCIやってみた](https://reader034.vdocuments.site/reader034/viewer/2022051504/5a647a8c7f8b9a3b568b48b5/html5/thumbnails/20.jpg)
containerのソースレポジトリを指定
githubのレポジトリを指定する。レポジトリ名はbluemixプライベートレポジトリ名になります。
![Page 21: Kubernets on Bluemix + DevOpsでコンテナCIやってみた](https://reader034.vdocuments.site/reader034/viewer/2022051504/5a647a8c7f8b9a3b568b48b5/html5/thumbnails/21.jpg)
namespace
api-key
kubernetes cluster
ネームスペースと、APIキー、クラスタ名を指定。アプリ名は適宜自由に設定可能。
![Page 22: Kubernets on Bluemix + DevOpsでコンテナCIやってみた](https://reader034.vdocuments.site/reader034/viewer/2022051504/5a647a8c7f8b9a3b568b48b5/html5/thumbnails/22.jpg)
![Page 23: Kubernets on Bluemix + DevOpsでコンテナCIやってみた](https://reader034.vdocuments.site/reader034/viewer/2022051504/5a647a8c7f8b9a3b568b48b5/html5/thumbnails/23.jpg)
Issuesの画面サンプル
![Page 24: Kubernets on Bluemix + DevOpsでコンテナCIやってみた](https://reader034.vdocuments.site/reader034/viewer/2022051504/5a647a8c7f8b9a3b568b48b5/html5/thumbnails/24.jpg)
gitの画面サンプル
![Page 25: Kubernets on Bluemix + DevOpsでコンテナCIやってみた](https://reader034.vdocuments.site/reader034/viewer/2022051504/5a647a8c7f8b9a3b568b48b5/html5/thumbnails/25.jpg)
IDEの画面サンプル
![Page 26: Kubernets on Bluemix + DevOpsでコンテナCIやってみた](https://reader034.vdocuments.site/reader034/viewer/2022051504/5a647a8c7f8b9a3b568b48b5/html5/thumbnails/26.jpg)
PIPELINEの画面サンプル ビルド成功すると全てグリーンに
![Page 27: Kubernets on Bluemix + DevOpsでコンテナCIやってみた](https://reader034.vdocuments.site/reader034/viewer/2022051504/5a647a8c7f8b9a3b568b48b5/html5/thumbnails/27.jpg)
DEPLOYの画面サンプル ログの最下部までスクロール
![Page 28: Kubernets on Bluemix + DevOpsでコンテナCIやってみた](https://reader034.vdocuments.site/reader034/viewer/2022051504/5a647a8c7f8b9a3b568b48b5/html5/thumbnails/28.jpg)
DEPLOYの画面サンプル デプロイ結果のURLをクリックすると
![Page 29: Kubernets on Bluemix + DevOpsでコンテナCIやってみた](https://reader034.vdocuments.site/reader034/viewer/2022051504/5a647a8c7f8b9a3b568b48b5/html5/thumbnails/29.jpg)
実行結果が 表示されます
![Page 30: Kubernets on Bluemix + DevOpsでコンテナCIやってみた](https://reader034.vdocuments.site/reader034/viewer/2022051504/5a647a8c7f8b9a3b568b48b5/html5/thumbnails/30.jpg)
補足資料:
![Page 31: Kubernets on Bluemix + DevOpsでコンテナCIやってみた](https://reader034.vdocuments.site/reader034/viewer/2022051504/5a647a8c7f8b9a3b568b48b5/html5/thumbnails/31.jpg)
Kubernetes on Bluemixへの接続bluemixへのログイン
$ bx login
$ bx target —cf
kubernetesクラスタへの接続
$ bx cs init
$ bx cs cluster-config {ClusterName}
返却された変数をexportする
![Page 32: Kubernets on Bluemix + DevOpsでコンテナCIやってみた](https://reader034.vdocuments.site/reader034/viewer/2022051504/5a647a8c7f8b9a3b568b48b5/html5/thumbnails/32.jpg)
Kubernetes on Bluemixへの接続kubernetes GUIへの接続
$ ./kubectl proxyStarting to serve on 127.0.0.1:8001
ブラウザで接続
![Page 33: Kubernets on Bluemix + DevOpsでコンテナCIやってみた](https://reader034.vdocuments.site/reader034/viewer/2022051504/5a647a8c7f8b9a3b568b48b5/html5/thumbnails/33.jpg)
kubernets 管理画面サンプル
![Page 34: Kubernets on Bluemix + DevOpsでコンテナCIやってみた](https://reader034.vdocuments.site/reader034/viewer/2022051504/5a647a8c7f8b9a3b568b48b5/html5/thumbnails/34.jpg)
APIキーの入手下準備
$ bx iam api-key-create {Key Name}
![Page 35: Kubernets on Bluemix + DevOpsでコンテナCIやってみた](https://reader034.vdocuments.site/reader034/viewer/2022051504/5a647a8c7f8b9a3b568b48b5/html5/thumbnails/35.jpg)
Bluemix PaaS Watson Visual Recognitionに接続する
![Page 36: Kubernets on Bluemix + DevOpsでコンテナCIやってみた](https://reader034.vdocuments.site/reader034/viewer/2022051504/5a647a8c7f8b9a3b568b48b5/html5/thumbnails/36.jpg)
PaaS連携
Kubernetes on BluemixとPaaSとのつながりは設定が必要です。(サービスのバインディング)
APIをcurlなどで叩くことも可能ですが、API-KEYを埋め込んだりと煩雑になるため、サービスバインディングを使うとJSONで自動連携可能です。
![Page 37: Kubernets on Bluemix + DevOpsでコンテナCIやってみた](https://reader034.vdocuments.site/reader034/viewer/2022051504/5a647a8c7f8b9a3b568b48b5/html5/thumbnails/37.jpg)
サービスバインディング例) Watson Visual Recognitionサービス
サービス名に「スペース」が含まれているとうまく設置できなかったので注意必要。
$ bx cs cluster-service-bind {kube cluster} default {serviceName}
![Page 38: Kubernets on Bluemix + DevOpsでコンテナCIやってみた](https://reader034.vdocuments.site/reader034/viewer/2022051504/5a647a8c7f8b9a3b568b48b5/html5/thumbnails/38.jpg)
サービスバインディング後の結果サンプル
![Page 39: Kubernets on Bluemix + DevOpsでコンテナCIやってみた](https://reader034.vdocuments.site/reader034/viewer/2022051504/5a647a8c7f8b9a3b568b48b5/html5/thumbnails/39.jpg)
deployment.ymlに追記 env: - name: WATSON_VR valueFrom: secretKeyRef: name: binding-visualrecognition-15 key: binding
このあたりに追記
![Page 40: Kubernets on Bluemix + DevOpsでコンテナCIやってみた](https://reader034.vdocuments.site/reader034/viewer/2022051504/5a647a8c7f8b9a3b568b48b5/html5/thumbnails/40.jpg)
画像をwatson visual recognition で解析すると・・・
![Page 41: Kubernets on Bluemix + DevOpsでコンテナCIやってみた](https://reader034.vdocuments.site/reader034/viewer/2022051504/5a647a8c7f8b9a3b568b48b5/html5/thumbnails/41.jpg)
Tips
![Page 42: Kubernets on Bluemix + DevOpsでコンテナCIやってみた](https://reader034.vdocuments.site/reader034/viewer/2022051504/5a647a8c7f8b9a3b568b48b5/html5/thumbnails/42.jpg)
TipsBluemix Container Registoryの容量問題
標準はFreeプラン。 Storage 500MBまで Pull 5GB/月まで
Standardプランは無制限 Storage 500MBまで Pull 5GB/月まで
大きめのimageをビルドする時にはStandardへアップグレード推奨。こまめに不要なイメージをbxコマンドで削除することも 有用。
![Page 43: Kubernets on Bluemix + DevOpsでコンテナCIやってみた](https://reader034.vdocuments.site/reader034/viewer/2022051504/5a647a8c7f8b9a3b568b48b5/html5/thumbnails/43.jpg)
Tipsdocker-registryのimage削除が上手くいかない
DevOps ToolChainでBuildしたimageは権限が足りないエラーで”bx cr image-rm {imageID}”が失敗する
乱暴だがnamespaceごと削除することで削除が可能
$ bx cr namespace-rm {registryNameSpace}
$ bx cr namespace-add {registryNameSpace}
削除直後は同じ名前が使えないエラーがでるが、数秒で再作成可能
![Page 44: Kubernets on Bluemix + DevOpsでコンテナCIやってみた](https://reader034.vdocuments.site/reader034/viewer/2022051504/5a647a8c7f8b9a3b568b48b5/html5/thumbnails/44.jpg)
Tips
Security Validateがwaiting imagesで止まる
docker-registryのnamespaceが正しくない
単純に時間がかかっている場合もある
再実行で治る場合もある
![Page 45: Kubernets on Bluemix + DevOpsでコンテナCIやってみた](https://reader034.vdocuments.site/reader034/viewer/2022051504/5a647a8c7f8b9a3b568b48b5/html5/thumbnails/45.jpg)
Tips
Security Validateがwaiting imagesで止まる
docker-registryのnamespaceが正しくない
単純に時間がかかっている場合もある
再実行で治る場合もある
![Page 46: Kubernets on Bluemix + DevOpsでコンテナCIやってみた](https://reader034.vdocuments.site/reader034/viewer/2022051504/5a647a8c7f8b9a3b568b48b5/html5/thumbnails/46.jpg)
ありがとうございました