Slide 1

Slide 1 text

Extra Dojo #2 スケーラブルなWebアプリケーションをKubernetesで構築する Aya Tokura Developer Advocate Tokyo City Team 2020/06/08

Slide 2

Slide 2 text

@ayatokura 2018年5⽉1⽇にIBM Sr. Developer Advocateに転⾝。 セミナーやイベント登壇、授業講師、執筆活動を通じて クラウドネイティブや開発ツールの技術啓蒙を⾏う。 ⼾倉彩(Aya Tokura) Sr. Developer Advocate IBM フォローはお気軽にどうぞ︕

Slide 3

Slide 3 text

新しい取り組み“バッジ取得プログラム”のご案内 IBM Cloud & AI develop Basic Online Developer Dojo ” IBM Cloud & AI develop Basic Online Developer badge“について - 2020年6⽉1⽇より開始のIBM Developer Dojo 12回シリーズと同様の内容のIBM Developer Dojoのクラスが対象 https://www.ibm.com/jp-ja/partnerworld/events/developer-dojo - スキルアップのため全クラスの受講をお奨めします。 - 12回のクラスのうちPAYGアカウントまたはサブスクリプションが必要としない8つのクラスの課題を実施 - 8クラスのうち5クラスの課題について指定された結果を⾃分のアカウントが⾒えるようにスクリーンショットを撮影 - 5クラス分の課題のスクリーンショットをPDFにして以下の宛先に送付 - 提出した課題が承認されるとAcclaimからバッジが発⾏されます。 ※バッジ発⾏のためにこれ以外の処理が発⽣する場合、別途ご連絡させていただきます 2020年6⽉1⽇ お問い合わせは、Online Developer Dojo バッジ事務局 (ビジネス・パートナープログラム ヘルプデスク [email protected]

Slide 4

Slide 4 text

学習の⽬的とゴール ⽬的 コンテナの概要と利⽤⽅法について理解する ゴール IBM Cloud Kubernetes Serviceを利⽤した Webアプリケーション+DBを構築できる このコースを学ぶ⽅の想定スキル IBM Cloud上でコンテナ実⾏環境を初めて利⽤する⽅

Slide 5

Slide 5 text

事前準備のご確認 ※ ワークショップでは有償アカウント(PayG)を使⽤しますが、無料枠のサービス環境で作業します。 従って、今回の有償アカウントへのアップグレードや、ワークショップ参加によって 利⽤料⾦が請求されることはありません ibm.biz/IKSdojo • PayG アカウント登録 • Firefoxブラウザインストール (オプション) • IBM Cloud CLI 関連のインストール • IBM Cloud Kubernetes Service 無料クラスタの作成

Slide 6

Slide 6 text

本イベントでは、 IBM Cloud へのアクセスは上記URLから行ってください ibm.biz/dojo0608 • IBM Cloud ログイン アカウントをすでにお持ちの方は、 こちらからログインしてください • IBM Cloud ライトアカウント作成 アカウントをお持ちでない方は、 ご登録をお願いします 【本⽇のお願い】

Slide 7

Slide 7 text

IBM Cloud CLI インストール後の確認 IBM Cloud CLIバージョンの確認 ibmcloud -v IBM Cloud CLI Plugin の確認 ibmcloud plugin list 表示例 今回のワークショップでは下記の2つのIBM Cloud CLI Pluginを利用します container-registry container-service/kubernetes-service

Slide 8

Slide 8 text

1. [管理]→[アカウント]をクリックする 2. [アカウント設定]をクリックする 3. アカウント・タイプを確認する 【IBM Cloudアカウント種類の確認⽅法】 本⽇のワークショップでは下記のいづれかが必要です。 • PayG(従量課⾦)アカウント • サブスクシプション契約アカウント

Slide 9

Slide 9 text

1. 左上の[IBM Cloud]をクリックし、 「ダッシュボード」を表示 2. ダッシュボードの[リソースの要約]の 配下に表示された[Clusters]をクリック 3. リソース・リストの[Clusters]の ご自身で作成したクラスタ名の [状況]を確認する 【Kubernetesクラスタの状況確認⽅法】 • Kubernetesクラスタ作成にお時間(約20分前後)を要するため、 ワークショップが始まる前に作成をお願いします。 • Kubernetesクラスタの有無および状態の確認方法は下記の通りです。

Slide 10

Slide 10 text

作成したクラスタが無料枠であることの確認

Slide 11

Slide 11 text

2. 画面右上の[Actions]→[Web端末] の順にクリックする。 3. [インストール]をクリックする。 完了後は先ほどの[Web端末]ボタン より利用可能です。 【Kubernetes Webターミナルの導⼊⽅法】(オプション) • Kubernetes Webターミナルのインストールにお時間(約10分前後) を要する場合があります。 • Kubernetesクラスタの有無および状態の確認方法は下記の通りです。 1. リソース・リストの[Clusters]の ご自身で作成したクラスタ情報の ページを表示する。

Slide 12

Slide 12 text

Lab 3 でエディタを利用します。まだお持ちでない方はVisual Studio Codeがお勧めです。 1. Visual Studio Codeサイトへアクセスする (https://code.visualstudio.com/) 2. ダウンロードする 3. Visual Studio Codeを起動する 4. (オプション)YAMLファイル編集に便利な拡張機能もインストールする ① 拡張機能アイコン (ブロックの形) をクリック → ② 検索ボックスで yamlを検索 → ③ YAMLの[インストール]をクリック

Slide 13

Slide 13 text

⽬次 1. コンテナテクノロジーとは 2. IBM Cloud Kubernetes Service の始め⽅ 3. Kubernetesを活⽤したアプリ開発体験 4. おすすめ情報

Slide 14

Slide 14 text

1. コンテナテクノロジーとは なぜ「今」 コンテナ/Docker/Kubernetesなどの テクノロジーが注⽬されているのか

Slide 15

Slide 15 text

コンテナ以前のシステム オンプレ or クラウド 本番 HA1 QA-HA1 DEV#1 本番 HA2 QA-HA2 DEV#2 Storage Disk Array Tape Library Equipment システム管理者 スーパーバイザ 開発者 シスオペ 環境利⽤ スケジュール 環境維持 パッチ適⽤ 不具合修正 セキュリティ チューニング 負荷増対応、資源配分 監視 アプリ・ジョブ運⽤ 基盤運⽤ 監視ソフトの設定 作りこみ 環境取り合い ⼤量ドキュメントと俗⼈的な努⼒ によるシステム開発&運⽤ コンテナ以前の 港湾荷役の様な⼈⼿作業 ITIL準拠の⼿順書を作成

Slide 16

Slide 16 text

ITのコンテナも業務効率を劇的に改善 アプリ コンテナ V1.2 アプリ コンテナ V1.1 品質保証 テスト アプリ コンテナ V1.3a アプリ コンテナ V1.3b デリバリ・パイプライン 本番 サービス 開発中 開発中 デベロッパー デベロッパー テストエンジニア SRE ⾼度に最適化された 現代のコンテナ 配送システム に例えることができる https://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A#/media/File:Dol e_container_is_placed_onto_a_truck.jpg

Slide 17

Slide 17 text

コンテナテクノロジーの特⻑ 1 起動が早い • ホストOSからみると、プロセスが⽴ち上がるだけ • スケールしたときにもすぐにアプリが⽴ち上がる 2 冪等性が保たれる • Infrastructure as Code により、環境構築の⼀連の作業をコード化できる • Immutable Infrastructure により、何度実⾏しても同じ環境が再現される 3 ポータビリティー性がある • アプリの実⾏に必要な依存関係をすべてパッケージングできる • Dockerエンジンが動く環境ならどこでも実⾏できることが保証されている べきとうせい

Slide 18

Slide 18 text

Container Engine 「仮想マシン」と「コンテナ」 出展︓https://docs.docker.com/engine/docker-overview • HWレベルの仮想化 • OSカーネルを専有 • 仮想マシンごとに隔離 • OSレベルの仮想化 • OSカーネルを共有し、プロセスとして起動 • プロセスをグループ化して隔離

Slide 19

Slide 19 text

Docker ∈ コンテナ コンテナを利⽤するための仕組みを提供するプラットフォーム • 「開発者が簡単にアプリケーションを動かす環境を作る」ことができる • コンテナのデファクトスタンダード Build Ship Run イメージの作成 (アプリの開発) イメージの共有 コンテナーの実⾏ Dockerを介してコンテナーのライフサイクルを管理

Slide 20

Slide 20 text

Dockerを使った開発の流れ Dockerfile Docker イメージ コンテナー レジストリ 必要な 設定を記載 開発者 コンテナー イメージ作成 イメージの 登録 開発者 アプリ実⾏ アプリ開発

Slide 21

Slide 21 text

コンテナーのポータビリティ と Docker HUB n コンテナーのポータビリティ –Docker イメージ • アプリケーション稼働に必要な依存ファイルを パッケージングできる • 物理サーバーに固定されない → 同じアーキテクチャの環境であれば ポータビリティが存在ある n Docker HUB システム基盤 (クラウド) ホストOS システム基盤 (オンプレミス) ホストOS コ ン テ ナ エ ン ジ ン App1 Bin/Lib s App2 Bin/Lib s App3 Bin/Lib s 「僕の環境では動いた」 問題が発⽣しない docker pull httpd docker push iwashina/myapp docker pull websphere-liberty 多様なベンダーが提供する コンテナーイメージ (ソリューション)のカタログ コ ン テ ナ エ ン ジ ン App3 Bin/Lib s

Slide 22

Slide 22 text

コンテナー環境におけるシステム開発 nInfrastructure as Code の徹底 – 環境構築の⼀連の作業は Dockerfile にコード化

Slide 23

Slide 23 text

コンテナのはじめ⽅ n CNCFの Cloud Native Trail Map を参照 1. コンテナ化 • ⼀般的には Docker コンテナで実施 • いかなるサイズのアプリケーションも依存性もコンテナ化可能 • 時間が経つにつれ、アプリケーションを分割し マイクロサービス化したくなるだろう 2. CI/CD(継続デリバリの仕組み) • 継続インテグレーション・継続デリバリの仕組みをセットアップ • コード変更が 新しいコンテナ・イメージとして、 ⾃動的にビルドされ、テストされ、デプロイされるように 3. オーケストレーション&アプリ定義 • 互換性試験に合格している Certified Kubernetes 環境を選択 • もっとも複雑なアプリケーションであっても HELMで 定義して、導⼊して更新していくことが可能

Slide 24

Slide 24 text

コンテナを学ぶには nDocker 社のサイトから無償ダウンロード可能 – https://www.docker.com/products/docker-desktop – docker for Mac / docker for Windows nDocker について学ぶ –http://docs.docker.jp/index.html • 有志により Dockerのドキュメントが ⽇本語化されています • まずは Dockerfile をいくつか書いてみましょう︕

Slide 25

Slide 25 text

実現したいことは何でしょう︖ 開発の スピード リリースの スピード 機能改修の スピード 運⽤の ⾃動化 柔軟な スケール

Slide 26

Slide 26 text

3. IBM Cloud Kubernetes Serviceの始め⽅ 従量課⾦(PAYG)またはサブスクリプションのアカウント https://cloud.ibm.com/docs/account?topic=account-accounts&locale=ja

Slide 27

Slide 27 text

27 コンテナ 1つのハードウェア/OSに 分離された空間を作成し 空間ごとに異なるOS環境を提供 = LPARやVMwareなどと同じ 仮想化技術

Slide 28

Slide 28 text

28 Docker Linuxにおいて コンテナ環境 を提供する デファクトスタンダード の ソフトウェア

Slide 29

Slide 29 text

Kubernetes 多くのDocker環境を統合管理してくれる オーケストレーション・ツール

Slide 30

Slide 30 text

IBM Cloud Kubernetes Service (IKS) フルマネージドなKubernetesをご提供 サクッと作れる ・ダッシュボード経由 ・複数のバージョン提供 シンプルに設計 ・ノード台数 ・利⽤するマシンスペック ・仮想サーバー、ベアメタル 100%互換 ・k8sのAPI、ツール ・kubectlを使った操作 監視ツール込み ・ログ収集 ・モニタリング 簡単にサービス連携 ・Watson ・IoT ・Databaseなどなど よりセキュアに ・脆弱性アドバイザー 不適切な設定と脆弱性を検出 ・イメージ署名 ・ 実⾏時の信頼チェック

Slide 31

Slide 31 text

スケールアウト ポリシーベースでの可⽤性 負荷分散 ロールアップデート ネットワーク管理 永続ストレージ管理 CPU/Memory リソース管理 Kubernetes

Slide 32

Slide 32 text

Kubernetesのアーキテクチャのイメージ 理想状態になるよう Node上のコンテナを管理 作成したコンテナーはNode上に配置 管理者 ユーザー

Slide 33

Slide 33 text

Worker Node (OS: Ubuntu) Pod コンテナ動作 1台のNodeで複数のコンテナを動作

Slide 34

Slide 34 text

Worker Node (OS: Ubuntu) Pod Kubernetes 管理下のコンテナ環境 Worker Node (OS: Ubuntu) Worker Node (OS: Ubuntu) Kubernetes クラスター 複数Nodeで Kubernetesクラスターを構成

Slide 35

Slide 35 text

Worker Node (OS: Ubuntu) Pod Worker Node (OS: Ubuntu) Worker Node (OS: Ubuntu) Kubernetes クラスター あるコンテナに問題があれば,別Nodeで新コンテナとして動作 Kubernetes 管理下のコンテナ環境

Slide 36

Slide 36 text

Worker Node (OS: Ubuntu) Pod Worker Node (OS: Ubuntu) Worker Node (OS: Ubuntu) Kubernetes クラスター あるNodeに問題があれば,別Nodeで新コンテナとして動作 Kubernetes 管理下のコンテナ環境

Slide 37

Slide 37 text

Worker Node (OS: Ubuntu) Pod Worker Node (OS: Ubuntu) Worker Node (OS: Ubuntu) Kubernetes クラスター Pod ネットワークで,空きIPを⾒つけて⾃動割当 例) Pod ネットワーク 10.1.0.x .10 .11 .12 .13 .14 .15 .16 .17 .18 .19 Kubernetes 管理下のコンテナ環境

Slide 38

Slide 38 text

マニフェストファイルで状態宣⾔ (例) • コンテナーイメージは︖ • コンテナーの数は︖ • 必要なCPU/Memoryは︖ • 外部アクセスのために開くポートは︖

Slide 39

Slide 39 text

3. Kubernetes を活⽤したアプリ開発体験 ibm.biz/dojokadai1

Slide 40

Slide 40 text

Lab 0 – 1. 操作の補⾜ (1) IBM Cloudにコマンドからログイン時に リソースグループの指定が必要な場合 ibmcloud target –g <リソースグループ名> 例 ibmcloud target –g Default IBM Cloudのリソースグループ名は [管理]→[アカウント]→[アカウント・リソース] から確認できます。

Slide 41

Slide 41 text

IBM Cloud CLIから作成したIKSクラスタリスト を表⽰する⽅法 ibmcloud ks cluster ls Lab 0 – 2. 操作の補⾜ (2) 表示例

Slide 42

Slide 42 text

IBM Cloud CLI Plugin container-service/kubernetes-service (v1.0.8) 利⽤時のKubernetesクラスタへの接続情報を 取得するコマンド ibmcloud ks cluster config --cluster mycluster Lab 0 – 2. 操作の補⾜ (3) 表示例

Slide 43

Slide 43 text

ibmcloud ks cluster workers --cluster mycluster Lab 1 – 1.の4 操作の補⾜ (4) IBM Cloud CLI Plugin container-service/kubernetes-service (v1.0.8) 利⽤時のKubernetesのワーカーノードの パブリックIP アドレスを取得するコマンド

Slide 44

Slide 44 text

作成したクラスタの削除⽅法 Clusters リソースリスト 現在利⽤しているサービスが確認できます。 各サービス右側の(・・・)から削除してください。 クリックすると、以下の メニューが表⽰され編集 や削除ができます

Slide 45

Slide 45 text

4. おすすめ情報 - 開発者向けサイトIBM Developer ibm.biz/IBMDevJP 最新情報やスキルアップに役⽴つ6,000を超える技術記事を提供

Slide 46

Slide 46 text

46 https://ibm.biz/ibmcodejp 解説 + デモ動画 + ソースコードが揃ったアプリ開発パターン集 IBM Code Patterns

Slide 47

Slide 47 text

Extra Dojo シリーズ 47 開催日 タイトル アカウント 事前準備 #1 6月1日(月) はじめてのクラウド ~20分でWebサイトを作成しよう~ ライト★ #2 6月8日(月) スケーラブルなWebアプリケーションをKubernetesで構築する PAYG IBM Cloud CLIのインストール Developer Toolsのインストール Firefoxのインストール IBM Cloud Kubernetes Service(IKS)の クラスタの作成 #3 6月15日(月) OpenShift 入門 ~Watson を使ったWebアプリを試そう~ ライト - #4 6月22日(月) IBM Cloudでビジュアルプログラミング IoT/Node-RED入門 ライト★ - #5 6月29日(月) AI (Watson API) アプリ開発 on OpenShift ライト★ - #6 7月6日(月) Auto AI を使ったらくらく機械学習 ライト★ ChromeまたはFirefoxのインストール #7 7月13日(月) QuarkusでJava モダナイゼーション PAYG - #8 7月 20日(月) Hyperledger Fabricでかんたんにブロックチェーンをはじめよう PAYG - #9 7月 27日(月) Kabaneroを使ったクラウド・ネイティブなアプリ開発を体験 ライト★ - #10 8月3日(月) Watson Discovery を使ったAI検索体験 ライト★ - #11 8月17日(月) IBM Cloud Functionsでサーバレスを始めよう ライト★ - #12 8月24日(月) AI Advance: 公平で説明可能なAI ライト★ コース内容は予定であり、開催までに変更になる可能性があります。アカウント欄︓ライト★がバッジプログラム対象です。 https://ibm-developer.connpass.com/

Slide 48

Slide 48 text

初夏のIBM Developer Dojo 2020 48 開催日 タイトル アカウント 事前準備 #1 5月13日(水) はじめてのクラウド ~20分でWebサイトを作成しよう~ ライト★ #2 5月20日(水) スケーラブルなWebアプリケーションをKubernetesで構築する PAYG IBM Cloud CLIのインストール Developer Toolsのインストール Firefoxのインストール IBM Cloud Kubernetes Service(IKS)の クラスタの作成 #3 5月27日(水) OpenShift 入門 ~Watson を使ったWebアプリを試そう~ ライト - #4 6月 3日(水) IBM Cloudでビジュアルプログラミング IoT/Node-RED入門 ライト★ - #5 6月10日(水) AI (Watson API) アプリ開発 on OpenShift ライト★ - #6 6月17日(水) Auto AI を使ったらくらく機械学習 ライト★ ChromeまたはFirefoxのインストール #7 6月24日(水) QuarkusでJava モダナイゼーション PAYG - #8 7月 1日(水) Hyperledger Fabricでかんたんにブロックチェーンをはじめよう PAYG - #9 7月 8日(水) Kabaneroを使ったクラウド・ネイティブなアプリ開発を体験 ライト★ - #10 7月15日(水) Watson Discovery を使ったAI検索体験 ライト★ - #11 7月22日(水) IBM Cloud Functionsでサーバレスを始めよう ライト★ - #12 7月29日(水) AI Advance: 公平で説明可能なAI ライト★ コース内容は予定であり、開催までに変更になる可能性があります。アカウント欄︓ライト★がバッジプログラム対象です。 https://ibm-developer.connpass.com/

Slide 49

Slide 49 text

Dr. Tedros Adhanom Ghebreyesus WHO Director-General COVID-19 は、⼈々の健康、⽣活、そして存在 そのものを危うくする存在です。 2020年の Call for Code グローバル・チャレンジ では、「気候変動」に加えて「COVID-19」との 闘いにも取り組んでいます。

Slide 50

Slide 50 text

2020 Call for Code グローバル・チャレンジ 今回のテーマは「気候変動」と「COVID-19」 • グローバル規模のアプリ開発コンペティション • 「⼀般向け*」と「IBMer向け」に開催 5/5 (⽕) IBM Think COVID-19 Top3発表 4/27 (⽉) 審査期間 8〜9⽉ 10⽉ 最優秀賞 チーム発表 6/30 (⽕) IBMer 応募受付 締切 7/31 (⾦) ⼀般 応募受付 締切 * IBM Corporationとその法⼈、それらが所有する⼦会社の51%以上および、 Red Hat Inc.とそのすべての⼦会社は「⼀般向け」Call for Code 2020には 参加できませんのでご注意ください。 ⼀般 COVID-19 早期締切 #CallforCode

Slide 51

Slide 51 text

⽇本語情報 ibm.biz/c4cjapan ⽇本語 English ibm.biz/callforcode ハッシュタグ #callforcode

Slide 52

Slide 52 text

免責事項 IBM Developer Dojoは開発者の⽅を対象に、IBM Cloudを主とした技術情報をお伝えする⽬的で開催しています。 講師や運営スタッフにより、開催毎に最適と判断した内容でお届けしています。 現在、ハンズオンを伴う講義はお客様の費⽤負担がない環境と⼿順でご案内しています。講義終了後、不要に なりました制作物はお客様ご⾃⾝で削除をお願いいたします。クレジットカードの登録が伴わない場合、費⽤は ⼀切発⽣致しませんが、ご登録いただいたお客様はご注意ください。 講師陣はみなさまの利⽤状況を個別に確認することはできません。 ご理解とご協⼒をお願いいたします。 利⽤したサービスの削除⽅法については講義の中でご案内します。 ご不明な点がございましたら、当⽇確認をお願いいたします。 講義終了後、 IBM Developer Dojoに関するお問い合わせは「Slack」にお願いします。それ以外のIBM Cloud のお問い合わせにつきましては、弊社サポートセンターまで、次のいづれかの⽅法でお問い合わせください。 IBM Cloudダッシュボードの「サポート」メニューから「Case」を作成し、英語でご記⼊ください IBM Cloudサポートセンター「相談する」ボタンからチャットまたは電話でご連絡ください https://www.ibm.com/jp-ja/cloud/support ご参加ありがとうございました。

Slide 53

Slide 53 text

こちらから、アンケートにご回答をお願いいたします。