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