Slide 1

Slide 1 text

OSC2020 Online/Fukuoka 2020.10.28 CNBF(Cloud Native Bright Future) Yutaka Ichikawa これから始める人のための Kubernetes & Cloud Native入門

Slide 2

Slide 2 text

Certification & Community CKA CKAD KCM100 2018 2019 #CNDT2020 Name: Yutaka Ichikawa Twitter/GitHub/Qiita: cyberblack28 Hatena Blog: https://cyberblack28.hatenablog.com/ Slides: https://speakerdeck.com/cyberblack28 Job Educational Solution Architect / Technical Educator Developer Advocate / Technical Evangelist Infrastructure Engineer / Frontend Engineer Profile #cnbfmeetup Cloud Native Bright Future

Slide 3

Slide 3 text

AP Communications Co., Ltd Let’s Start Cloud Native

Slide 4

Slide 4 text

● What’s CNBF ● Myself ● Learn Cloud Native Technology ● Teach Cloud Native Technology ● Summary ● Information Agenda

Slide 5

Slide 5 text

What’s CNBF

Slide 6

Slide 6 text

クラウドネイティブで、企業情報システムに 明るい未来を切り開くMeetup Cloud Native Bright Future(CNBF)とは? これからクラウドネイティブに取り組みたい企業と、クラウドネイティ ブの先進企業の交流によって、中⽴に、企業情報システムが新たな段階 に踏み出すことを⽀援するコミュニティです。 Promotion Movie http://bit.ly/CNBF-Promotion

Slide 7

Slide 7 text

CNBF Community Members Masaya Aoyama Isao Shimizu Makoto Hasegawa Yutaka Ichikawa Maho Takara Daiki Hayakawa

Slide 8

Slide 8 text

Myself

Slide 9

Slide 9 text

Myself 日々この3つの調和を目指して活動しています 極める = エンジニアとして技術を極める 伝える = エバンジェリスト・アドボケートとして技術を提唱する 教える = 技術教育者として技術を教える 極める、伝える、教えるの調和

Slide 10

Slide 10 text

Myself 「極める、伝える、教える」 の根底にあるもの

Slide 11

Slide 11 text

Myself それは、「学び」

Slide 12

Slide 12 text

Myself エンジニアとして技術を極められない... 自身が学ばないと 技 術 を 提 唱 で き な い ... 技 術 を 教 え ら れ な い ...

Slide 13

Slide 13 text

Myself 「学び」をどうしているか?

Slide 14

Slide 14 text

Myself 「何から始めて良いのかわからない」 へのアプローチ

Slide 15

Slide 15 text

Learn Cloud Native Technology

Slide 16

Slide 16 text

Learn Cloud Native Technology Books ここ数年にかけてDocker/Kubernetesに関連する書籍が多数出版されました。 DockerとKubernetesを合わせて学ぶことができます。

Slide 17

Slide 17 text

Learn Cloud Native Technology Books Kubernetesの詳細を学ぶことができます。

Slide 18

Slide 18 text

Learn Cloud Native Technology Books クラウドネイティブアプリケーションを支える技術としてのDocker/Kubernetesから関 連する技術まで、これからのエコシステムについて学ぶことができます。

Slide 19

Slide 19 text

Learn Cloud Native Technology Books Docker/Kubernetes上で稼働させるアプリケーションを プロダクションで利用するにはどうするべきかを学ぶことができます。

Slide 20

Slide 20 text

Learn Cloud Native Technology Web Informations Docker/Kubernetesの公式サイトでは、最新の情報や公式ドキュメントがあります。 https://kubernetes.io/ https://www.docker.com/

Slide 21

Slide 21 text

Learn Cloud Native Technology Web Training 無料でブラウザさえあればハンズオントレーニングを利用できます。 Docker/KubernetesだけでなくたくさんのCloud Native技術コンテンツがあります。 https://www.katacoda.com/

Slide 22

Slide 22 text

Learn Cloud Native Technology Web Training 無料で動画講義を受けることができます。 https://kube.academy/

Slide 23

Slide 23 text

Learn Cloud Native Technology Conference & Event 技術カンファレンスや技術コミュニティ主催のイベントに参加することで キャッチアップできます。 #CNDT2020 #KubeCon #CloudNativeCon #k8sjp KubeFest tokyo

Slide 24

Slide 24 text

Learn Cloud Native Technology Seminar & Training 有料/無料含め、Cloud Native Technologyのセミナーやトレーニングを 利用して学ぶことができます。 Docker Kubernetes

Slide 25

Slide 25 text

Learn Cloud Native Technology Contribute Cloud Native TechnologyはOSSがベースとなっているため ソースコードを読むことで勉強となり、修正をプルリクエストして貢献もできます。 海外のエンジニアともSlackなどで交流できます。 ソースコードは敷居が高い場合があるかもしれません。 公式ドキュメントの翻訳でコントリビュートにチャレンジもできます。

Slide 26

Slide 26 text

Learn Cloud Native Technology Writing 個人ブログ、QiitaなどのWeb執筆、zenn、技術書典などで自主的に書籍を執筆する ことで学びを得ることができます。

Slide 27

Slide 27 text

Learn Cloud Native Technology SNS Twitter、FacebookなどでCloud Native Technologyのインフルエンサーや情報源とな るアカウントをフォローして情報をキャッチアップすることから学びに繋がります。

Slide 28

Slide 28 text

Learn Cloud Native Technology Certificates 資格取得を目指して学ぶのも一つです。 CKA CKAD CKS New!

Slide 29

Slide 29 text

Learn Cloud Native Technology Main business & Side business 本業の仕事で個人またはチームで試行錯誤しながら、 副業で自分よりも優れた人たちと共に学ぶのも一つです。

Slide 30

Slide 30 text

Learn Cloud Native Technology Community 技術コミュニティのミートアップに参加または登壇することで学ぶことができます。 運営メンバーになることで人脈も広がります。

Slide 31

Slide 31 text

Myself コミュニティついて深堀

Slide 32

Slide 32 text

Learn Cloud Native Technology クラウドネイティブの状況は、 パブリッククラウドが騒がれ始めた時に似ています。 クラウドの時代にはコミュニティがエンジニアの成長を支えていくのではないか Publickey 2014.2.21 このクラウドをクラウドネイティブに置き換えると当てはまります。

Slide 33

Slide 33 text

Learn Cloud Native Technology クラウドネイティブ関連技術は、社内や仕事を通して学べる範囲を超えてます!! ● 会社の上司が、こうした新技術を包括的に 教えてくれますか? ● クラウドネイティブにおける DevOps,IoT,Machine Learningなど、多岐 にわたる分野を教えられる人はいますか? ● 「できます、やります、頑張ります!」 に限界がありませんか?

Slide 34

Slide 34 text

Learn Cloud Native Technology 実際の声 “社内に一人でも最新の技術をキャッチアップして、実践して、反映 できる人がいれば良いのですが、現状のIT企業、特に中小企業や最 新技術とは縁遠い部署などでは、最新技術のキャッチアップや技術 取得、社内育成において困難な状況にあります。”

Slide 35

Slide 35 text

Learn Cloud Native Technology コミュニティがエンジニアの成長のための大事な場所に クラウドネイティブ時代の様々な技術を学ぶために社外へ出て行 き、情報収集、情報発信、情報共有を実践してスキルアップや社内 にフィードバックして育成を計る。 ● 国内外カンファレンス ● ミートアップ ● 勉強会/もくもく会 ● セミナー/トレーニング ● コミュニティ運営 ● 技術書籍 ● Web情報/トレーニング ● コントリビュート/Slack ● 技術ブログ/執筆 ● SNS イベントへの参加 情報収集、発信、共有

Slide 36

Slide 36 text

Learn Cloud Native Technology Cloud Native Technology’s Community #k8sjp #dockertokyo #rancherjp #paasjp #cndjp #k8sinternal #k8snovice #cloudnativejp #envoytokyo #prometheustokyo #japanrook #openshiftjp

Slide 37

Slide 37 text

Learn Cloud Native Technology 参加者のメリット ● 最新技術、事例等のキャッチアップ ● 人とのつながり ● 社内フィードバックからの育成 参加者のデメリット ● レベルが高すぎて、ついていけない

Slide 38

Slide 38 text

Learn Cloud Native Technology 一部の声 “最新の技術をどんどん取り入れて、実践している人達の話は参考にな りますが、レベルが高くてついていけない。結局何から始めてよいのか 分からない。” “入門者向けのハンズオン勉強会は、入りやすく、有識者に質問や相談 することができるので非常にありがたい。自分のスキルアップだけでな く、社内へのフィードバック、育成への良いきっかけとなる。”

Slide 39

Slide 39 text

Learn Cloud Native Technology Docker 入門ハンズオン勉強会 札幌、東京、名古屋、 大阪、京都、神戸、 広島、岡山、福岡、沖縄 全29回 1年 約400人 無料 #kujiraya

Slide 40

Slide 40 text

Learn Cloud Native Technology 心の奥底にある声 “できる人に教わりたい、 学びたい、一緒にやりたい”

Slide 41

Slide 41 text

Teach Cloud Native Technology

Slide 42

Slide 42 text

Teach Cloud Native Technology 学んで身に着けた技術を どう教えるか、どう教えてきたか?

Slide 43

Slide 43 text

Teach Cloud Native Technology もちろん、 教えることで学ぶこともあります

Slide 44

Slide 44 text

Teach Cloud Native Technology 技術面だけではなく、 教え方も考えなければならない

Slide 45

Slide 45 text

Teach Cloud Native Technology 伝えるから教える

Slide 46

Slide 46 text

Teach Cloud Native Technology 座学とハンズオン

Slide 47

Slide 47 text

Teach Cloud Native Technology 1. 主催者がPC、環境、教材もすべて準備 a. 受講者にとっては良いが、主催者としては準備労力とコストが発生 2. 受講者にPCも環境セットアップも準備してもらう(教材は主催者) a. 主催者にとって準備労力やコストは抑えられるが、受講者のPC環境差異に よるトラブル率が高まる b. 受講者としては準備労力とコストが発生 ハンズオン環境ってどうしてます?

Slide 48

Slide 48 text

Teach Cloud Native Technology 1. 受講者にクラウド(有料/無料)のアカウントを準備してもらう a. ノートPC(Win/Mac不問)にブラウザだけで、環境差異のトラブルが生じにくい b. 受講者の準備作業はクラウドのアカウント作成 c. 主催者の準備労力とコストを削減 d. クラウドベースの教材にすることで、受講後も同じ環境で復習できる 2. Google Cloud Platform(GCP)、Microsoft AzureのCloud Shellが便利 a. 受講者の事前準備におけるツールのインストールが不要になる b. 全てコマンド操作に集約できる ハンズオン環境はクラウド利用

Slide 49

Slide 49 text

Teach Cloud Native Technology 1. スライド a. 図を多く、文字少なめで簡潔が理想! b. コマンド結果を載せる場合は、説明が必要な場合に! 2. ハンズオン用テキスト a. 手打ちではオペミスによる誤作動率があがります b. 復習の利便性向上 c. コピー&ペースト用のテキストとコマンド結果表示も掲載しておくと良い d. 「クリップボードにコピー」ボタンを用意をオススメ! e. どこで?⇒GitHub、GitLab、Qiita、ブログサービスなど 教材はどうしてます?

Slide 50

Slide 50 text

Teach Cloud Native Technology 1. 座学とハンズオンの組み合わせ 2. ハンズオンのパターン a. 受講者と一緒に行う b. 一定時間を設けて受講者に実習、実習後に解説 3. ハンズオンの前に必ず全体説明 4. ハンズオン中に何をやっているか見失わないようにする トレーニングの流れはどうしてます?

Slide 51

Slide 51 text

Teach Cloud Native Technology 初級講座で Docker/Kubernetesのつまずくポイント

Slide 52

Slide 52 text

Teach Cloud Native Technology 1. 仮想マシンとコンテナの違い 2. 仮想マシンイメージとコンテナイメージ(イメージとコンテナ含む)の違い 3. DockerとContainerRuntimeの関係性 4. Kubernetesってそもそも何? 5. コンテナアプリケーション開発の全体像って? Q&Aでもよく質問されます

Slide 53

Slide 53 text

Teach Cloud Native Technology 仮想マシンとコンテナの違い Virtual Machine Hypervisor Hardware Kernel Library Application Virtual Machine Kernel Library Application Conainer Container Engine Hardware Kernel Library Application Container Library Application 各仮想マシンでカーネルが稼働、隔離性が高いが、 起動が遅く(数分)オーバヘッドが大きい カーネルを共有しているため、隔離性は低いが、 起動が高速(数秒)でオーバヘッドが小さい 仮想マシンは個別のカーネル利用、コンテナはホストのカーネルを共有

Slide 54

Slide 54 text

Virtual Machine Teach Cloud Native Technology 仮想マシンイメージとコンテナイメージの違い Application OS/Library Hypervisor Hardware 仮想マシンイメージがベンダー製品特有 の形式で容量も重く可搬性も低い 仮想マシンイメージ

Slide 55

Slide 55 text

Teach Cloud Native Technology コンテナイメージ 1.ビルド(Build) OS/Library Application OS/Library Container Image Build ● OS/ライブラリとアプリケーションをパッケージイメージ化 ● イメージはこれまでの仮想マシンイメージに比べるとはるかに軽いのでポータビリティ性が高い 2.シップ(Ship) ● イメージをレジストリに保存して共有 OS/Library Container Image OS/Library Image Registry OS/Library Push Pull Image Share/Ship

Slide 56

Slide 56 text

Teach Cloud Native Technology 3.ラン(Run) OS/Library Container Image ● イメージを基にコンテナを起動します。 Run OS/Library Container OS/Library Container コンテナープラットフォーム上でイメージからコンテナを起動して、アプリケーションを稼働させます。 イメージもプラットフォームも特定ベンダー技術に依存しないため、ベンダーロックインもありません。 Container Platform

Slide 57

Slide 57 text

Teach Cloud Native Technology DockerとContainer Runtimeの関係性 コンテナを実際に作るのはDockerではなく、Container Runtimeです。 Docker Docker Client containerd runC Linux cgroups Namespaces Union Filesystem Network Low-level Container Runtime High-level Container Runtime OCI(Open Container Initiative) CRI(Container Runtime Interface) kubelet Container

Slide 58

Slide 58 text

Teach Cloud Native Technology docker CLI dockerd Containerd runC Low-level Container Runtime High-level Container Runtime Docker Engine Client Side Server Side 構成要素 説明 docker CLI コマンドラインインターフェースとしてDockerコマンドを提供します。 dockerd イメージ、ファイルシステム、ネットワークの管理、REST APIの提供するDockerの本体。Mobyとも呼ばれています。 containerd CNCF(CloudNativeComputingFoundation)にホストされているcontainerdは、Dockerのハイレベルコンテナーランタイムとしてコンテナーのラ イフサイクルを担います。KubernetesではCRI(Container Runtime Interface)プラグインに対応してPod用のNICやベースとなるpauseコンテ ナーを作成します。 runC OCI(Open Container Initiative)にホストされているrunCは、Dockerのローレベルコンテナーランタイムとしてシステムリソースの隔離で namespace、制限でcgroups、セキュリティでAppArmor・SELinux・seccomp等、ホストカーネルの機能を利用してコンテナーを作成します。

Slide 59

Slide 59 text

Teach Cloud Native Technology そもそもKubernetesとは? BareMetal Virtual Machine Kubernetesは分散処理基盤 Kubernetes Container

Slide 60

Slide 60 text

Image Repositry Teach Cloud Native Technology コンテナアプリケーション開発の全体像って? OS/Library OS/Library OS/Library Container OS/Library Container Container Platform BareMetal Virtual Machine IaaS Developer Code Repository CI/CD Pipeline Build Ship Run コンテナープラットフォーム へのデプロイ CIパイプラインによる テスト、ビルド、イメージプッシュ イメージ共有 コンテナーの可搬性(Portability)とスピード(Agility)を持ち合わせ、 品質および生産性の高いアプリケーション開発を実現 Infrastructure Engineer Operator Code Dockerfile manifest

Slide 61

Slide 61 text

Image Repositry Teach Cloud Native Technology OS/Library OS/Library OS/Library Container OS/Library Container Container Platform BareMetal Virtual Machine IaaS Developer Code Repository CI/CD Pipeline Build Ship Run コンテナープラットフォーム へのデプロイ CIパイプラインによる テスト、ビルド、イメージプッシュ イメージ共有 傾向として、CDをGitで管理するGitOps手法が取り入られ始めています。 Infrastructure Engineer Operator Config Repository Pull Request GitOps Operator CD Change manifest Change code manifest Code Dockerfile

Slide 62

Slide 62 text

Summary

Slide 63

Slide 63 text

Teach Cloud Native Technology 学ぶと教えるは表裏一体、 継続することが大切です!

Slide 64

Slide 64 text

Information

Slide 65

Slide 65 text

CNBF Next Online Meetup 2021.2.10(Wed) 詳細は決まり次第コンパスで公開します!! https://cnbfmeetup.connpass.com/

Slide 66

Slide 66 text

Thank you !!