Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Kubernetesの良さを活かして開発・運用!Cloud Native入門 / An introductory Cloud Native #osc19tk

602 views

Published on

talked by OpenSourceConference 2019 Tokyo/Fall https://www.ospn.jp/osc2019-fall/modules/eguide/event.php?eid=62

Published in: Technology
  • Be the first to comment

Kubernetesの良さを活かして開発・運用!Cloud Native入門 / An introductory Cloud Native #osc19tk

  1. 1. Kubernetesの良さを活かして 開発‧運⽤! [公開版] 株式会社サイバーエージェント
 技術本部 Private Cloud Group
 Nakanishi Kento @whywaita
 
 技術本部 サービスリライアビリティグループ
 KIRII Yuki
 オープンソースカンファレンス 2019 Tokyo/Fall @ 明星⼤学 1
  2. 2. Nakanishi Kento / whywaita • 株式会社サイバーエージェント 技術本部
 プライベートクラウドグループ 開発チーム • 2019年新卒⼊社 (試⽤期間終わりました!) • 仕事: OpenStack / Kubernetes / 採⽤, 広報 • OSC発表歴: Tokyo/Fall (LT) , Nagoya (東海道LT) • d g 投稿者 みくったーとかその辺の界隈に居たりもします • 執筆書籍: PR-based Preview Env in Kubernetes てっき〜メディア(304)ブースで売ってるらしい!!いますぐ購⼊!!! 2
  3. 3. 3
  4. 4. .はじめに .Cloud Native ⼊⾨ .コンテナオーケストレーションにとどまらな いKubernetesの魅⼒ 4
  5. 5. はじめに
 会社紹介 5
  6. 6. 6
  7. 7. 7 Vision
  8. 8. 8
  9. 9. 9
  10. 10. 10
  11. 11. 11
  12. 12. 12 様々な勉強会にて登壇 (沢⼭) 単著の執筆 (新卒4年⽬) ⾃作システムがメディア掲載 (新卒2年⽬) ベストエンジニア賞受賞
  13. 13. 13
  14. 14. 14
  15. 15. 発表者について 15
  16. 16. 三本柱 •メディア: 動画、ブログ、⾳楽など
 
 •広告: Webやスマホ向けの広告配信 •ゲーム: 主にスマホ向けゲーム 16
  17. 17. 三本柱 •メディア: 動画、ブログ、⾳楽など
 
 •広告: Webやスマホ向けの広告配信 •ゲーム: 主にスマホ向けゲーム 17
  18. 18. それぞれのメイン領域 •どちらもメディア事業部所属 •プライベートクラウド •VMを提供するところまで •特にOpenStackを担当 •サービスリライアビリティ •サービスインフラが動くまで •最近はKubernetesを担当 18
  19. 19. はじめに
 サークル紹介 19
  20. 20. てっき〜メディア • 元翔泳社の編集者で技術書刊⾏に携わって
 いた⽯川⽒が運営するプライベートメディア • 同⼈サークル 兼 株式会社でもある • IT業界向け技術情報をまとめてお届け • 対象分野: コンピューティングインフラ、
 クラウド、CI/CD、OS、ミドルウェア、etc •技術書典8 も参加予定!! 20
  21. 21. CloudNative ⼊⾨ 21
  22. 22. 会場アンケート 🙋 •聞いたこともない •聞いたことぐらいはある •興味はあるがさわっていない •さわったことがある •趣味で使っている •仕事で使っている 22 Cloud Native / Kubernetes を 全ての選択肢で
 ⽐率が同じぐらいでした
  23. 23. 技術書典7では •3冊頒布しました •PR-based Preview Env in Kubernetes • 中⻄建登 / 松⽥正也 著 •はじめるCluster API • 桐井 祐樹 著 •⽇本語版GitLab CIリファレンス • 明⽇から始めるGitLabCIはじめの⼀歩
 @ F : 〜 講師: ⽮野 哲朗 23
  24. 24. PR-based Preview Env in Kubernetes •「Pull Requestをベースに、開発 環境を⾃動で⽣成してみよう!」
 という⼀冊 •Kubernetes / GCP 上に展開された アプリケーションを良い感じに展開 する⽅法まとめ • サンプルコード付きなので再現 しやすい! •てっき〜メディアブースにて
 絶賛販売中!!!!!!急げ!!!!!!!!!!!! 24
  25. 25. Cloud Nativeとは? 25 定義はさまざま 
 
 
 
 [ ]: https://pivotal.io/jp/cloud-native
 [ ]: https://www.redhat.com/ja/topics/cloud-native-apps
  26. 26. Cloud Nativeとは? •Cloud Native Computing Foundation (通称CNCF) によると 26
  27. 27. Cloud Nativeとは? •Cloud Native Computing Foundation (通称CNCF) によると •クラウドネイティブ技術は、パブリッククラウド、プライベートクラ ウド、ハイブリッドクラウドなどの近代的でダイナミックな環境にお いて、スケーラブルなアプリケーションを構築および実⾏するための 能⼒を組織にもたらします。 •このアプローチの代表例に、コンテナ、サービスメッシュ、マイクロ サービス、イミュータブルインフラストラクチャ、および宣⾔型APIが あります。 •これらの⼿法により、回復性、管理⼒、および可観測性のある疎結合 システムが実現します。 これらを堅牢な⾃動化と組み合わせること で、エンジニアはインパクトのある変更を最⼩限の労⼒で頻繁かつ予 測どおりに⾏うことができます。 27
  28. 28. Cloud Nativeとは? 28 ❓🤔❓🤔❓ ⻑くて少し
 分かりづらいですね
  29. 29. Cloud Nativeとは? 「疎結合」「回復⼒」「管理性」「可観測性」 「⾃動化による堅牢 / 柔軟性」なシステム 29 あくまで私の解釈です
  30. 30. Cloud Nativeを実現する材料 •OSSなアプリケーション •Docker / Kubernetes •パブリッククラウドが提供するマネージドな
 ミドルウェアサービス (DB, LB, Storage) •実質無限スケール •MicroServices というアーキテクチャ •考え⽅は以前から存在していたが再注⽬ 30
  31. 31. このあたりの材料を
 組み合わせると
 Cloud Nativeになりえる 31
  32. 32. 今までのアプリケーション •LB - App - DB の⻩⾦な三層構造 •クラウド以前なら全てオンプレ(当たり前) •Varnish / Apache / MySQL など鉄板 •DBレプリケーションなど •Xen登場も影響した現場もあったでしょう •Read / Write⽤のIPアドレスを変えたり •3〜5台冗⻑ぐらいにはなっていたのでは 32
  33. 33. 今までのアプリケーション •前提がいくつか存在 •DBをスケールさせるのには限界がある… •サーバの設定は都度確認が必要 • ansible / itamae / Chef とか
 serverspecとかはあるけど… •アプリケーションのデプロイは⽉1ぐらい • 開発サーバは⼈間より少ないから⼿元で 33
  34. 34. そこでクラウド 34
  35. 35. クラウド時代の到来 •マネージドサービスによりほぼ無限スケール するミドルウェアの登場 •短時間のみ借りる運⽤により、アプリも
 分, 秒単位のスケールイン / アウトが可能に •開発者が開発する時だけインスタンスを
 借りる運⽤なども 35 インスタンス⼀台の⽣存時間が⾮常に短くなった
  36. 36. クラウド時代の到来 . インスタンス短命化→構築の省⼒化が急務 . アプリケーション起動の短縮化必須 . あえて不変的にすることにより、
 アプリケーションの起動を担保する技術で あるコンテナの価値上昇 . より⼿軽にコンテナを展開出来る環境
 Kubernetesなどの出現 36
  37. 37. Kubernetesとは? •Google社製OSS(現在はコミュニティ) •複数台のサーバでクラスタを組み、その上で コンテナを配置 / 適切に起動するシステム •外部からコンテナにL 接続するService、
 クラスタ全台に1つずつコンテナを配置する DaemonSetsなど様々な概念が存在 •エコシステム / サブプロジェクトが豊富に存在 37
  38. 38. Kubernetesの特徴 . Declarative (宣⾔的) API . Reconciliation Loop . Custom Resource / Eco system 38
  39. 39. 特徴1: 宣⾔的API 「この状態であってほしい」という状態を ユーザが宣⾔し、システムが追従する 39
  40. 40. not宣⾔的APIな例 •Nginx インストール / 起動シェルスクリプト 40 宣⾔的の対⽐として
 「命令的」などと呼びます
  41. 41. 宣⾔的APIな例 41
  42. 42. 宣⾔的APIな例 42 • Nginx 台を起動するYAML • ユーザはこれ以上追加操作 が不要 • システムが⾃律して 「Nginx 台起動」
 という状況に⾃動遷移する
  43. 43. 宣⾔的APIな例 43 Deployment ReplicaSet Pod Container ⾃動⽣成 ⾃動⽣成 ⾃動⽣成
  44. 44. 宣⾔的API •なにが嬉しいのか? •YAMLファイルにより状態をクラスタ内に
 定義することが可能となる •何らかの障害が起きた場合も同様に⾃律
 して回復が⾏われる (Reconciliation Loop) • クラスタが状態を持ち、
 クラスタが状態に合わせる 44
  45. 45. Reconciliation Loop 45 Deployment ReplicaSet Pod Container ⾃動⽣成 ⾃動⽣成 ⾃動⽣成
  46. 46. Reconciliation Loop 46 Deployment ReplicaSet Pod Container ⾃動⽣成 ⾃動⽣成 ⾃動⽣成 何らかの要因で
 障害が発⽣し、プロセス終了!
  47. 47. Reconciliation Loop 47 Deployment ReplicaSet Pod ⾃動⽣成 ⾃動⽣成 プロセスが終了したため
 コンテナが消滅してしまう
  48. 48. Reconciliation Loop 48 Deployment ReplicaSet Pod ⾃動⽣成 ⾃動⽣成 Container ⾃動⽣成
  49. 49. Reconciliation Loop 49 Deployment ReplicaSet Pod ⾃動⽣成 ⾃動⽣成 Container ⾃動⽣成
  50. 50. Reconciliation Loop 50 Deployment ReplicaSet Pod ⾃動⽣成 ⾃動⽣成 Container ⾃動⽣成Reconcilation Loopにより
 ⾃動的に復活!
  51. 51. 特徴2: Reconciliation Loop •とある状態を維持 or とある状態への遷移を
 ⾃律的に⾏うためのLoop⾏動 •コンテナのみならず、Kubernetes全体の
 システムに適⽤されている •ex: kube-apiserver etc •これにより容易にコンテナ再起動などが⾏える 51
  52. 52. 特徴3-1: Custom Resource •「宣⾔されたもの」はResourceと呼ばれる •標準Resourceの例 •Pod (コンテナ) •Service (コンテナへのL 接続) •PersistentVolume (永続化ストレージ) •Secret (秘匿情報) •CronJobs (cron設定) 52
  53. 53. 特徴3-1: Custom Resource •拡張されたResource •開発者が⾃由に作ることが可能 •よく使われるCustom Resourceの⼀例 •Ingress (コンテナへのL 接続) •CertificateRequests (SSL証明書要求) •Certificates (SSL証明書のCR版) • Reconciliation Loopも利⽤可能 53
  54. 54. 特徴3-2: Eco System •Kubernetesの宣⾔に乗るエコシステム •Ingress(L ロードバランサー)を作成すると
 インストールしたLBが環境に合わせて⽣成 •AWS: ALB (kubernetes-sigs/aws-alb-ingress-controller) •GCP: GCP HTTP(S) ロードバランサ •オンプレ: Nginx (kubernetes/ingress-nginx) 54
  55. 55. 特徴3-2: Eco System •抽象化された宣⾔を実装に落とし込ための
 コントローラを環境に合わせてカスタマイズ •kubernetes-sigs/external-dns • Route , CloudFlare, RFC (DNS UPDATE) •Container Storage Interface • Amazon EBS, Ceph RBD, hostpath •Container Network Interface • Amazon VPC CNI plugin, Calico, Flannel 55
  56. 56. Cloud Nativeとは?[再掲] 「疎結合」「回復⼒」「管理性」「可観測性」 「⾃動化による堅牢 / 柔軟性」なシステム 56
  57. 57. Cloud Nativeとは?[再掲] 「疎結合」「回復⼒」「管理性」「可観測性」 「⾃動化による堅牢 / 柔軟性」なシステム 57 Kubernetesは「ある程度」実現してくれる
  58. 58. 雑談: kubernetes-sigsとは? •SIG: ざっくり「興味ある奴集まれスレ」 •https://github.com/kubernetes-sigs/ •実験的 / サブプロジェクトと呼ばれるものが 集まっており、エコシステムを加速中 •類似概念: working group (wg) •詳しくは: https://github.com/kubernetes/community 58
  59. 59. Kubernetesで何ができるようになった? •宣⾔的APIで起動できるアプリケーションは 「⽐較的」複製しやすい • もちろんそのように作る必要有 •名前を変えて宣⾔することにより、同じ
 アプリケーションが新しく⽴ち上げられる • 同じクラスタ、別クラスタどちらでも可
 59
  60. 60. Kubernetesで何ができるようになった? •宣⾔的APIで起動できるアプリケーションは 「⽐較的」複製しやすい • もちろんそのように作る必要有 •名前を変えて宣⾔することにより、同じ
 アプリケーションが新しく⽴ち上げられる • 同じクラスタ、別クラスタどちらでも可 •Pull Reqごとに⽣成も簡単に!!! 60
  61. 61. [PR] PR-based Preview Env in Kubernetes •Terraform を⽤いて別クラスタ⽣成 or
 既存クラスタ上でPRコードの環境⽣成! •Google Kubernetes Engineベース •特有の話はしてないのでAWSオンプレも🙆 •実際にPRベースに環境を作るサンプル付き!! •周辺プロダクトの紹介も少しあるぞ!! 61
  62. 62. [PR] PR-based Preview Env in Kubernetes 62アーキテクチャ図
  63. 63. [PR] PR-based Preview Env in Kubernetes •Terraform を⽤いて別クラスタ⽣成 or
 既存クラスタ上でPRコードの環境⽣成! •Google Kubernetes Engineベース •特有の話はしてないのでAWSオンプレも🙆 •実際にPRベースに環境を作るサンプル付き!! •周辺プロダクトの紹介も少しあるぞ!! 63
  64. 64. よくあるCloud Nativeへの誤解 •「コンテナ / Kubernetesを導⼊さえすれば Cloud Native!」ではない 🙅 • あくまで考え⽅、あり⽅の⼀種 •オンプレはCloud Nativeと無縁ではない🙅 • Cloudベースな考えも多いが、オンプレ 転⽤も⼗分に可能 • 実際発表者はオンプレの部署です
 (プライベートクラウドグループ) 64
  65. 65. まとめ •Cloud Nativeの特徴など概要をご紹介 • 様々な考え⽅の下⽣まれた1つのあり⽅ •どうして⼈類はCloud Nativeに⾄ったのか? • クラウドの登場、変化するアプリケーション •Kubernetesに⼈々が注⽬する理由をご紹介 • 3つの特徴、抽象化と具体的の境界線 65
  66. 66. このスライドは発表の前半部分です 後半はこちら:
 https://speakerdeck.com/yukirii/ osc tk-yukirii-k s 66

×