Upgrade to Pro — share decks privately, control downloads, hide ads and more …

スケーラブルなWebアプリケーションをKubernetesで構築する / Extradojo_Kubernetes

スケーラブルなWebアプリケーションをKubernetesで構築する / Extradojo_Kubernetes

Extra Dojo #2 スケーラブルなWebアプリケーションをKubernetesで構築する
・イベント情報 (connpass)
https://ibm-developer.connpass.com/event/176765/
・IBM Cloud アカウント登録
https://ibm.biz/dojo0608

8065fe5a0d33908c6f71c5ae28939dcd?s=128

Aya Tokura

June 08, 2020
Tweet

More Decks by Aya Tokura

Other Decks in Technology

Transcript

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

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

    Developer Advocate IBM フォローはお気軽にどうぞ︕
  3. 新しい取り組み“バッジ取得プログラム”のご案内 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 バッジ事務局 (ビジネス・パートナープログラム ヘルプデスク pprogram@jp.ibm.com )
  4. 学習の⽬的とゴール ⽬的 コンテナの概要と利⽤⽅法について理解する ゴール IBM Cloud Kubernetes Serviceを利⽤した Webアプリケーション+DBを構築できる このコースを学ぶ⽅の想定スキル

    IBM Cloud上でコンテナ実⾏環境を初めて利⽤する⽅
  5. 事前準備のご確認 ※ ワークショップでは有償アカウント(PayG)を使⽤しますが、無料枠のサービス環境で作業します。 従って、今回の有償アカウントへのアップグレードや、ワークショップ参加によって 利⽤料⾦が請求されることはありません ibm.biz/IKSdojo • PayG アカウント登録 •

    Firefoxブラウザインストール (オプション) • IBM Cloud CLI 関連のインストール • IBM Cloud Kubernetes Service 無料クラスタの作成
  6. 本イベントでは、 IBM Cloud へのアクセスは上記URLから行ってください ibm.biz/dojo0608 • IBM Cloud ログイン アカウントをすでにお持ちの方は、

    こちらからログインしてください • IBM Cloud ライトアカウント作成 アカウントをお持ちでない方は、 ご登録をお願いします 【本⽇のお願い】
  7. 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
  8. 1. [管理]→[アカウント]をクリックする 2. [アカウント設定]をクリックする 3. アカウント・タイプを確認する 【IBM Cloudアカウント種類の確認⽅法】 本⽇のワークショップでは下記のいづれかが必要です。 •

    PayG(従量課⾦)アカウント • サブスクシプション契約アカウント
  9. 1. 左上の[IBM Cloud]をクリックし、 「ダッシュボード」を表示 2. ダッシュボードの[リソースの要約]の 配下に表示された[Clusters]をクリック 3. リソース・リストの[Clusters]の ご自身で作成したクラスタ名の

    [状況]を確認する 【Kubernetesクラスタの状況確認⽅法】 • Kubernetesクラスタ作成にお時間(約20分前後)を要するため、 ワークショップが始まる前に作成をお願いします。 • Kubernetesクラスタの有無および状態の確認方法は下記の通りです。
  10. 作成したクラスタが無料枠であることの確認

  11. 2. 画面右上の[Actions]→[Web端末] の順にクリックする。 3. [インストール]をクリックする。 完了後は先ほどの[Web端末]ボタン より利用可能です。 【Kubernetes Webターミナルの導⼊⽅法】(オプション) •

    Kubernetes Webターミナルのインストールにお時間(約10分前後) を要する場合があります。 • Kubernetesクラスタの有無および状態の確認方法は下記の通りです。 1. リソース・リストの[Clusters]の ご自身で作成したクラスタ情報の ページを表示する。
  12. Lab 3 でエディタを利用します。まだお持ちでない方はVisual Studio Codeがお勧めです。 1. Visual Studio Codeサイトへアクセスする (https://code.visualstudio.com/)

    2. ダウンロードする 3. Visual Studio Codeを起動する 4. (オプション)YAMLファイル編集に便利な拡張機能もインストールする ① 拡張機能アイコン (ブロックの形) をクリック → ② 検索ボックスで yamlを検索 → ③ YAMLの[インストール]をクリック
  13. ⽬次 1. コンテナテクノロジーとは 2. IBM Cloud Kubernetes Service の始め⽅ 3.

    Kubernetesを活⽤したアプリ開発体験 4. おすすめ情報
  14. 1. コンテナテクノロジーとは なぜ「今」 コンテナ/Docker/Kubernetesなどの テクノロジーが注⽬されているのか

  15. コンテナ以前のシステム オンプレ or クラウド 本番 HA1 QA-HA1 DEV#1 本番 HA2

    QA-HA2 DEV#2 Storage Disk Array Tape Library Equipment システム管理者 スーパーバイザ 開発者 シスオペ 環境利⽤ スケジュール 環境維持 パッチ適⽤ 不具合修正 セキュリティ チューニング 負荷増対応、資源配分 監視 アプリ・ジョブ運⽤ 基盤運⽤ 監視ソフトの設定 作りこみ 環境取り合い ⼤量ドキュメントと俗⼈的な努⼒ によるシステム開発&運⽤ コンテナ以前の 港湾荷役の様な⼈⼿作業 ITIL準拠の⼿順書を作成
  16. 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
  17. コンテナテクノロジーの特⻑ 1 起動が早い • ホストOSからみると、プロセスが⽴ち上がるだけ • スケールしたときにもすぐにアプリが⽴ち上がる 2 冪等性が保たれる •

    Infrastructure as Code により、環境構築の⼀連の作業をコード化できる • Immutable Infrastructure により、何度実⾏しても同じ環境が再現される 3 ポータビリティー性がある • アプリの実⾏に必要な依存関係をすべてパッケージングできる • Dockerエンジンが動く環境ならどこでも実⾏できることが保証されている べきとうせい
  18. Container Engine 「仮想マシン」と「コンテナ」 出展︓https://docs.docker.com/engine/docker-overview • HWレベルの仮想化 • OSカーネルを専有 • 仮想マシンごとに隔離

    • OSレベルの仮想化 • OSカーネルを共有し、プロセスとして起動 • プロセスをグループ化して隔離
  19. Docker ∈ コンテナ コンテナを利⽤するための仕組みを提供するプラットフォーム • 「開発者が簡単にアプリケーションを動かす環境を作る」ことができる • コンテナのデファクトスタンダード Build Ship

    Run イメージの作成 (アプリの開発) イメージの共有 コンテナーの実⾏ Dockerを介してコンテナーのライフサイクルを管理
  20. Dockerを使った開発の流れ Dockerfile Docker イメージ コンテナー レジストリ 必要な 設定を記載 開発者 コンテナー

    イメージ作成 イメージの 登録 開発者 アプリ実⾏ アプリ開発
  21. コンテナーのポータビリティ と 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
  22. コンテナー環境におけるシステム開発 nInfrastructure as Code の徹底 – 環境構築の⼀連の作業は Dockerfile にコード化

  23. コンテナのはじめ⽅ n CNCFの Cloud Native Trail Map を参照 1. コンテナ化

    • ⼀般的には Docker コンテナで実施 • いかなるサイズのアプリケーションも依存性もコンテナ化可能 • 時間が経つにつれ、アプリケーションを分割し マイクロサービス化したくなるだろう 2. CI/CD(継続デリバリの仕組み) • 継続インテグレーション・継続デリバリの仕組みをセットアップ • コード変更が 新しいコンテナ・イメージとして、 ⾃動的にビルドされ、テストされ、デプロイされるように 3. オーケストレーション&アプリ定義 • 互換性試験に合格している Certified Kubernetes 環境を選択 • もっとも複雑なアプリケーションであっても HELMで 定義して、導⼊して更新していくことが可能
  24. コンテナを学ぶには nDocker 社のサイトから無償ダウンロード可能 – https://www.docker.com/products/docker-desktop – docker for Mac /

    docker for Windows nDocker について学ぶ –http://docs.docker.jp/index.html • 有志により Dockerのドキュメントが ⽇本語化されています • まずは Dockerfile をいくつか書いてみましょう︕
  25. 実現したいことは何でしょう︖ 開発の スピード リリースの スピード 機能改修の スピード 運⽤の ⾃動化 柔軟な

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

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

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

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

  30. IBM Cloud Kubernetes Service (IKS) フルマネージドなKubernetesをご提供 サクッと作れる ・ダッシュボード経由 ・複数のバージョン提供 シンプルに設計

    ・ノード台数 ・利⽤するマシンスペック ・仮想サーバー、ベアメタル 100%互換 ・k8sのAPI、ツール ・kubectlを使った操作 監視ツール込み ・ログ収集 ・モニタリング 簡単にサービス連携 ・Watson ・IoT ・Databaseなどなど よりセキュアに ・脆弱性アドバイザー 不適切な設定と脆弱性を検出 ・イメージ署名 ・ 実⾏時の信頼チェック
  31. スケールアウト ポリシーベースでの可⽤性 負荷分散 ロールアップデート ネットワーク管理 永続ストレージ管理 CPU/Memory リソース管理 Kubernetes

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

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

  34. Worker Node (OS: Ubuntu) Pod Kubernetes 管理下のコンテナ環境 Worker Node (OS:

    Ubuntu) Worker Node (OS: Ubuntu) Kubernetes クラスター 複数Nodeで Kubernetesクラスターを構成
  35. Worker Node (OS: Ubuntu) Pod Worker Node (OS: Ubuntu) Worker

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

    Node (OS: Ubuntu) Kubernetes クラスター あるNodeに問題があれば,別Nodeで新コンテナとして動作 Kubernetes 管理下のコンテナ環境
  37. 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 管理下のコンテナ環境
  38. マニフェストファイルで状態宣⾔ (例) • コンテナーイメージは︖ • コンテナーの数は︖ • 必要なCPU/Memoryは︖ • 外部アクセスのために開くポートは︖

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

  40. Lab 0 – 1. 操作の補⾜ (1) IBM Cloudにコマンドからログイン時に リソースグループの指定が必要な場合 ibmcloud

    target –g <リソースグループ名> 例 ibmcloud target –g Default IBM Cloudのリソースグループ名は [管理]→[アカウント]→[アカウント・リソース] から確認できます。
  41. IBM Cloud CLIから作成したIKSクラスタリスト を表⽰する⽅法 ibmcloud ks cluster ls Lab 0

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

    cluster config --cluster mycluster Lab 0 – 2. 操作の補⾜ (3) 表示例
  43. ibmcloud ks cluster workers --cluster mycluster Lab 1 – 1.の4

    操作の補⾜ (4) IBM Cloud CLI Plugin container-service/kubernetes-service (v1.0.8) 利⽤時のKubernetesのワーカーノードの パブリックIP アドレスを取得するコマンド
  44. 作成したクラスタの削除⽅法 Clusters リソースリスト 現在利⽤しているサービスが確認できます。 各サービス右側の(・・・)から削除してください。 クリックすると、以下の メニューが表⽰され編集 や削除ができます

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

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

  47. 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/
  48. 初夏の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/
  49. Dr. Tedros Adhanom Ghebreyesus WHO Director-General COVID-19 は、⼈々の健康、⽣活、そして存在 そのものを危うくする存在です。 2020年の

    Call for Code グローバル・チャレンジ では、「気候変動」に加えて「COVID-19」との 闘いにも取り組んでいます。
  50. 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
  51. ⽇本語情報 ibm.biz/c4cjapan ⽇本語 English ibm.biz/callforcode ハッシュタグ #callforcode

  52. 免責事項 IBM Developer Dojoは開発者の⽅を対象に、IBM Cloudを主とした技術情報をお伝えする⽬的で開催しています。 講師や運営スタッフにより、開催毎に最適と判断した内容でお届けしています。 現在、ハンズオンを伴う講義はお客様の費⽤負担がない環境と⼿順でご案内しています。講義終了後、不要に なりました制作物はお客様ご⾃⾝で削除をお願いいたします。クレジットカードの登録が伴わない場合、費⽤は ⼀切発⽣致しませんが、ご登録いただいたお客様はご注意ください。 講師陣はみなさまの利⽤状況を個別に確認することはできません。

    ご理解とご協⼒をお願いいたします。 利⽤したサービスの削除⽅法については講義の中でご案内します。 ご不明な点がございましたら、当⽇確認をお願いいたします。 講義終了後、 IBM Developer Dojoに関するお問い合わせは「Slack」にお願いします。それ以外のIBM Cloud のお問い合わせにつきましては、弊社サポートセンターまで、次のいづれかの⽅法でお問い合わせください。 IBM Cloudダッシュボードの「サポート」メニューから「Case」を作成し、英語でご記⼊ください IBM Cloudサポートセンター「相談する」ボタンからチャットまたは電話でご連絡ください https://www.ibm.com/jp-ja/cloud/support ご参加ありがとうございました。
  53. こちらから、アンケートにご回答をお願いいたします。