冬のIBM Dojo #2 スケーラブルなWebアプリケーションをKubernetesで構築する 当日のセッション資料 https://ibm-developer.connpass.com/event/159743/
dz}#&?:?¦R̼Î{052½ÍR¤ËÒ$D25A>5C5BxƉǟmAya TokuraDeveloper AdvocateTokyo City Team
View Slide
IBMInternet 無線LAN アクセス無線LANのご利⽤およびワークショップの際はFirefoxブラウザをご利⽤ください。お配りしたユーザ名とパスワードを⼊⼒して「利⽤条件に同意」いただき、サインオンしてください。ログインページが表⽰されない場合は、Webブラウザで http://www.research.ibm.comサイトにアクセスしてください。iPhone での表⽰例
本⽇のタイムテーブル14:00-14:05(5min)オープニング14:05-15:00(55min)冬のIBM Dojo #2スケーラブルなWebアプリケーションをKubernetesで構築する<座学>⽇本アイ・ビー・エム株式会社デベロッパーアドボケイト⼾倉 彩15:00-17:00(120min)Kubernetesチャレンジ<ワークショップ>⽇本アイ・ビー・エム株式会社デベロッパーアドボケイト⼾倉 彩17:00-17:30(30min)クロージング
学習の⽬的とゴール⽬的コンテナの概要と利⽤⽅法について理解するゴールIBM Cloud Kubernetes Serviceを利⽤したWebアプリケーション+DBを構築できるこのコースを学ぶ⽅の想定スキルIBM Cloud上でコンテナ実⾏環境を初めて利⽤する⽅
ayatokuraŻǑ Ȃ (Aya Tokura)IBM Sr. Developer Advocate¨Ä³R¾Ò±ƶȄJNJÞǨƾJǴǪŘĔþlwJĄëã}ñQ| IBM Cloud Watson}żƖȁȇß_K
ŰÞVŻǑȂW ¯´Î̪Ræǿǹ Software DesignČǤVVisual Studio Code ǯǁìŘW
m.BM= IBM Cloud "-287 P~URL({ ibm.biz/dojo20200122! IBM Cloud K3.M-1/M=, hi ((K3.M ! IBM Cloud H.=-1/M=Sg-1/M=, hi t, %XØÓ}aǧ^
áóũŲ}iśņZÑR¤Ë½x~ŚǚÒ±ŗďkmcJŸŞǝ÷xʼnÞkmKƼuwJĀú}ŚǚÒ±}½ÏR²JÑR¤Ë½űĭ|uwĮďŞàcƧňjhy~]oibm.biz/IKSdojo! PayG Ò±ƶƣ! 9A56?G¼Ì£Ò¦±RÎ! IBM Cloud CLI Ò¦±RÎ! IBM Cloud Kubernetes Service ʼnģ
1. [wr]![-1/M=],2I<2* 2. [-1/M=`],2I<2* 3. -1/M=N:.A,u*X#&mjLO25Gd}! PayG(c )-1/M=! 4@725A5GM]x-1/M=
1. aP[IBM Cloud],2I<2;<5FDO>,|v2. ;<5FDO>[I9O7}x]Q|v+[Clusters],2I<23. I9O7NI7=[Clusters]zSg2H7:Z[qn],u*X$D25A>5C5B̦ª}žƪśņñā! Kubernetes2H7:Sg k(x20UWb),}*&LO25G! Kubernetes2H7:lp '!qfuio Q~)
2. 2H7:e[CO6[Web terminal],2I<2*3. [Install],2I<2.M7=OJ,^*_Rb T$[Web terminal]')VsXyX$D25A>5C5B 052ªRijÎ}ƃïñā(0A5GM)! Kubernetes Web:OE?J.M7=OJ k(x10UWb),}*\Y)%! Kubernetes2H7:lp '!qfuio Q~)1. I9O7NI7=[Clusters]zSg2H7:Z[qn],u*
⽬次1. コンテナが注⽬されている理由2. コンテナのテクノロジーとは3. IBM Cloud Kubernetes Service の始め⽅4. Kubernetes チャレンジ <ワークショップ>
1. コンテナが注⽬されている理由なぜ「今」コンテナ/Docker/Kubernetesなどのテクノロジーが注⽬されているのか
Ò¯³Ĭó}¤¦¯ÅÒ½Ï or ̲âHA1QA-HA1DEV#1âHA2QA-HA2DEV#2StorageDiskArrayTapeLibraryEquipment¤¦¯ÅƎĎã¦R¹R¸£Ąëã ¤¦¿ƜƕĮď¦¥ÉRÎƜƕǗij¹¬ǁďĖǀäƷ΍Éͯ¬ÉR´ÒſǷĺðųJĉNjƊçŹƌ½ÍM¥Ë¼ŎďŀǙŎďŹƌ©»±}ĥõʼnh ƜƕĘä^Ôƚ²ÉÆÒ±yȅÙö{džý|¤¦¯ÅĄë&Ŏď½ÍM¥Ë¼ŎďÒ¯³Ĭó}ƯǘǷŽ}Ʀ{ÙèʼnÞITILũǖ}èǓŕʼnģ
IT} Ò¯³ÞĤƥŵǸö|Ļƺ½ÍÒ¯³V1.2½ÍÒ¯³V1.1ŢƏċő¯¦±½ÍÒ¯³V1.3a½ÍÒ¯³V1.3b°Í¸ÍM¹½ÌÒØƘ¢Rº¦ĄëÚĄëÚ½Í ½Í ½Í ½Í°¾Ð¹R °¾Ð¹R ¯¦±Ò¥´ SRE íĂ|ęǁĊjrĦđ} Ò¯³ƊƇ¤¦¯Å|Ơ`hycxdhttps://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A#/media/File:Dole_container_is_placed_onto_a_truck.jpg
どちらを⽬指しますか︖https://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A#/media/File:Dole_container_is_placed_onto_a_truck.jpghttp://military.wikia.com/wiki/Battle_of_Pusan_Perimeter_logistics
ĈĦkr^hy~ƛxk_O¡Rl~7w7lRl~7w¬ÌÅïRl~7w
2. コンテナのテクノロジーとは1 起動が早い• ホストOSからみると、プロセスが⽴ち上がるだけ• スケールしたときにもすぐにアプリが⽴ち上がる2冪等性が保たれる• Infrastructure as Code により、環境構築の⼀連の作業をコード化できる• Immutable Infrastructure により、何度実⾏しても同じ環境が再現される3ポータビリティー性がある• アプリの実⾏に必要な依存関係をすべてパッケージングできる• Dockerエンジンが動く環境ならどこでも実⾏できることが保証されているべきとうせい
"#gtx v}·R²(,|çƲjrŶôʼnģkŶôiy|lj{(,ƜƕŊƟ %)+/&F1A5{zyîl üå£×á
$%+'!-%9>DG|a^wgtxäà ŊƟmu\dvlop7w }©»±
&'()*+(,-./(0+(,VǵƞäÒWyV Ò¯³WÜƩNhttps://docs.docker.com/engine/docker-overview! "0ϾÎ}ǵƞĊ! (,RµÎƳŚ! ǵƞäÒiy|ȃƲ! (,ϾÎ}ǵƞĊ! (,RµÎŧŚkJ½Ð¨¦ykwƅĔ! ½Ð¨¦ÎR½ĊkwȃƲ
?3;5A \ Ò¯³Ò¯³Įďmr}ƬĶ ŊƟm½Ì±»RÅ! VĄëãcǮDž|½ÍR¤ËÒĔbmƜƕʼnWhycxd! Ò¯³}°»±¦ªÒ«R² ÆR¥}ʼnģT½Í}ĄëUÆR¥}ŧŚ Ò¯³R}Ĉß+'!-[èIMgtx7R_h_d[ß§
Ò¯³R}ÂRªºÍ¯ y ?3;5A".! Ò¯³R}ÂRªºÍ¯1?3;5AÆR¥! ½ÍR¤ËÒȀƴ|ūĜ{Ǣư»Î¹R¥Òxd! ĽĎ¢R¸R|ǐõj{^[ îlR¯¬È}Ɯƕx]ÂRªºÍ¯cưŭ]! ?3;5A". '+,("%! '+,*$)&%!*#**VǼ}Ɯƕx~Ĕ^rWĠİcëìk{^ ĸƦ{¾Ò«RcŊƟmÒ¯³RÆR¥T©ÍÉR¤ËÒU}ªÐ*#**
Ò¯³RƜƕ|ag¤¦¯ÅĄë!Infrastructure as Code }ǭǜ1 ƜƕƉǟ}ÝČ}ʼnÞ~ Dockerfile | R²Ċ
?3;5AŗurĄë}ź?3;5A69<5 ?3;5AÆR¥Ò¯³RÏ¥¦±ÍūĜ{ĥõŇǤĄëãÒ¯³RÆR¥ʼnģÆR¥}ƶƣĄëã½ÍĈß½ÍĄë
コンテナのはじめ⽅n CNCFの Cloud Native Trail Map を参照1. コンテナ化• ⼀般的には Docker コンテナで実施• いかなるサイズのアプリケーションも依存性もコンテナ化可能• 時間が経つにつれ、アプリケーションを分割しマイクロサービス化したくなるだろう2. CI/CD(継続デリバリの仕組み)• 継続インテグレーション・継続デリバリの仕組みをセットアップ• コード変更が 新しいコンテナ・イメージとして、⾃動的にビルドされ、テストされ、デプロイされるように3. オーケストレーション&アプリ定義• 互換性試験に合格している Certified Kubernetes 環境を選択• もっとも複雑なアプリケーションであってもHELMで 定義して、導⼊して更新していくことが可能
Ò¯³ē|~!?3;5Aâ}¢±bŸǚ«ÒÐR²ŷŔ1 https://www.docker.com/products/docker-desktop1 docker for Mac / docker for Windows!?3;5A|v^wē1http://docs.docker.jp/index.html! Śnj| ?3;5A}²ÉÆÒ±c ÓØƒĊjw^m! n~ ?3;5A69<5 ^evbŕ^w k_P
ĈĦkr^hy~ƛxk_O¡Rl~7w7lRl~7w¬ÌÅïRl~7wʨR«£ýþPlf7
3. IBM Cloud Kubernetes Service}ŜñƼƚƗà(PAYG)r~¢¼¦Í½¤ËÒ}Ò±
gtx×á5ñÒ£TR RXÂU̲µ¯¼M½ÍƹũĊƤƮö|įĉ?3;5A$D25A>5C5B}ı$D25A>5C5B¾R¦}Ò¯³ŀǙ©ÍÉR¤ËÒ ÕæL#& !??7<5{zĐ}ŁÞLłącĥü Ò¯³żƖ Ò¯³ƎĎ234 !"#$%567,-(,),8.9,-:+;,.<259=¢Rº¦Æ¤É!A1651B¢Rº¦Æ¤É¢Rº¦Æ¤É!A1651B¢Rº¦Æ¤É¢Rº¦Æ¤É!A1651B!A1651B¢Rº¦Æ¤É!A1651B¢Rº¦Æ¤É¢Rº¦Æ¤É¢Rº¦Æ¤É¢Rº¦Æ¤É234 !"#$%>-+:*),.<2&>=Ýnv`a]RgtxÔ[ìº)#?>>53CL01CB?>?=@1A5?=@-A1>B6?A=1C9?>4E9B?AL&93A?3<9=1C5L(&L,;H49E5L#&/?935!1C5F1HL052,@85A5L .A21>?45 5@&*L##L@@?>>53CL1C1)?F5ALq}DŽĸī
234 !"#$%567,-(,),8.9,-:+;,!"#$%234 !"#$%>-+:*),!"&'%h7}lykwŊƟjz7kwƜƕ_7vƜƕ|Ò¯³ƜƕƉǟMŎďm&''7l}©»±234 !"#$% 234 !"#$%
IBM Cloud Kubernetes Service (IKS)»ÎõR¥²{$D25A>5C5BiŊƟhdrOÈZYM«¤ÉÁR²ĒŬMǡī}¸R¥ËÒŊƟjQ·ÃM¶R²ŐīMĮďmäҦ¿Mǵƞ¢R¸RJ¾ÆªÎ=<<:øðMk8s}APIJ®RÎMkubectlŗurǬʼnÖÞs7ÆUMÐŦŪMÇ´ªÍÒúòQh7}l¥íMWatsonMIoTMDatabase{z{zVXmc]QMȈǦ̲¸£RĖǁŖ{ĥõyȈǦĢļÜMÆR¥LJĿM Ĉßò}Ĩǂ¬
©¿Àµ¼Ru7omo7QMh7}lÉæã u7omo7 Áĩ¥ ! ?@0%$! 8(0%"! )'@%$! A'(0.5'(0! B'@C'! 9+(0*D'-,Š¥ ! E,F%"! 8CG%"! 8CG%H! 4,F7'6-(,! 9CG(,CƱƋÚƻ ! *E8%I! J-*%$! E+F%"! D*-%"! KE8),-G*E! L-*(@J6-)! 4+F*(! >*-+8ƭÖŠø ! F'(%$! F'(%H! M'(G'(ăÖéø ! E'(%"! )'-%"! NG;%O! NG;%P! 4'()-,*F! B'-'()'! Q*8?+(0)'(R.S&ăÖŠø ! G*F"%! G*F"$! G*F"I! ?'6%"! 8*'%"! S*FF*8! A'68)'(! 9*'.>*6F'https://console.bluemix.net/docs/containers/cs_regions.html#regions-and-locations
ýþPdlo7·Ãh7|7êÐ ë鮦ÇÍç8=(#%)9®¦ÇÍç8?(#%)* ÎðÏ+ǵƞ¢R¸R$STO &>UHS$H$...V3.WK4X"$Yòô X$ZPĝYæƳŚǵƞ¢R¸R$STO &>UHS$H$...V3.WK4XITYòô XPZ[ĝYæĽĎ¢R¸RHS$[ &>UI$ST"$.V3.WK4X[%R$%%Yæ X$HĝYæéěS& $%"[ÕHæĦŭ}Ơ! ÑRRM¶R²}Ȁƴòô|ųlrƼƚƗà! æªRM¶R²~Ɨàðƍġ! LQ9)'-*0,J>'-)*7F,.2>{zūĜ|ųlwšǒƝĭ
] oÛ¶567,-(,),8æªRM¶R²TĞLjƎĎU567,-(,),8ÑRRM¶R²567,-(,),8ÑRRM¶R²,-.ß§BîéHOQlo76{7w[Éæ4,-.ß§/01(QȶBîéß§BîéD y7CWh7|7[¢ù4Bîé/01(Qȶ567,-(,),8ÑRRM¶R²
0!-*!/!.0!-*!/!.ÄFR+'!-äà[Øß§IMFZYb7flv7j6s7
¦RαÂͤR¾R¦x}ŷďĢſǷçǞ ÐRν°R±µ±ÑRƎĎǃħ¦±ÏR¥ƎĎ).&5=?AHÍ©R¦ƎĎ0!-*!/!.
Kubernetes}R¯¬ÈĎƞžƆ|{_'?45Û} Ò¯³ƎĎʼnģkr Ò¯³R~'?45Û|ƊťƎĎãÊR£R
Pod!Kubernetes |agęč}ƎĎDžĹ1+ }Ú|~ =L¼ } Ò¯³cƢ1)?4DžĹx¦RÎÒM¦Rαm1)?4iy|#)²Ï¦c¢Òj)?4#)()*(*+),*-. ()*(*+),*(+/
2#34)35(#%)6&'7589$:;$+Ò¯³Īś|~PodxmcJƐÿǮǠĊ}r Ò¯³ykmKgtx«È1ËRNodeN÷»Rgtx[«È
ReplicaSet!)?4ƎĎmr}õƈ1)?4}ūĜȀƴīõƈ1$,} $! 0(!- c z}¶R²|¢Òmb~ōǥkwe)?4#)()*(*+),*-.()*(*+),*(()!,(%!/ Ó°»> ¸ ¶R² ¶R²
2#34)35(#%)6&'7589$:;$+Ò¯³Īś|~PodxmcLƐÿǮǠĊ}r Ò¯³ykmKKubernetes ß§ Rgtxäà2#34)35(#%)6&'7589$:;$+2#34)35(#%)6&'7589$:;$+0!-*!/!.dlo7÷»NodeN Kubernetesdlo7[Û¶
2#34)35(#%)6&'7589$:;$+Ò¯³Īś|~PodxmcLƐÿǮǠĊ}r Ò¯³ykmK2#34)35(#%)6&'7589$:;$+2#34)35(#%)6&'7589$:;$+0!-*!/!.dlo7@YgtxQ²¾D@ZS5ÐNodeNgtxOIM«ÈKubernetes ß§ Rgtxäà
2#34)35(#%)6&'7589$:;$+Ò¯³Īś|~PodxmcLƐÿǮǠĊ}r Ò¯³ykmK2#34)35(#%)6&'7589$:;$+2#34)35(#%)6&'7589$:;$+0!-*!/!.dlo7@YNodeQ²¾D@ZS5ÐNodeNgtxOIM«ÈKubernetes ß§ Rgtxäà
Node Port!0!-*!/!.³b -)#)x¨¦mr}õƈ1$,̦ª÷x±OPY7vc¢Òj1$,̦ª}z}¶R²b¨¦kwĚȆ¢Rº¦|ÎR¯Òj)?4#)()*(*+),*-.()*(*+),*(()¶R² ¶R²I%%"% I%%"%
2#34)35(#%)6&'7589$:;$+Ò¯³Īś|~PodxmcLƐÿǮǠĊ}r Ò¯³ykmK2#34)35(#%)6&'7589$:;$+2#34)35(#%)6&'7589$:;$+0!-*!/!.dlo7Pod zrv7dN5ÕEIP[LGM«Ñ¯ç) Pod zrv7d 10.1.0.x.10 .11 .12 .13 .14 .15 .16 .17 .18.19Kubernetes ß§ Rgtxäà
Deployment!ęÝǕö{ÑRÐR²õƈą1)?41+5@<931,5C11'?45)?AC)?4#)()*(*+),*-.()*(*+),*(() *#-!.. !,(+3)!*/
ô»¦±»ÎxžƆǣĴTƠU! Ò¯³RÆR¥! Ò¯³R}ī! ūĜ{).&5=?AH! ġø¨¦}r|ĄeÂR±~
Video: KubernetesRollout/Rollback demo今さら⼈に聞けない Kubernetes とは︖https://qiita.com/MahoTakara/items/85096f8b2632c802ab22
Video:Kubernetes rollout / rollbackVideo:Kubernetes rollout / rollback
まとめ0201 コンテナとは︖Dockerとは︖03 Kubernetesとは︖04 コンテナのはじめ⽅• Linux上の隔離された空間で実⾏されるプロセス• アプリの実⾏に必要な依存関係をすべてパッケージングできる• コンテナーの作成・共有・実⾏をするためのツール• 冪等性やポータビリティー性といったメリットがある• コンテナーのオーケストレーション・ツール• 理想状態を宣⾔すると、その状態を維持しようとしてくれる• Kubernetesは必要な機能だけを絞って動かしてみる
áóũŲsaĵ x{^ñZÑR¤Ë½x~ŚǚÒ±ŗďkmcJŸŞǝ÷xʼnÞkmKƼuwJĀú}ŚǚÒ±}½ÏR²JÑR¤Ë½űĭ|uwĮďŞàcƧňjhy~]oibm.biz/IKSdojo! PayG Ò±ƶƣ! 9A56?G¼Ì£Ò¦±RÎ! IBM Cloud CLI Ò¦±RÎ! IBM Cloud Kubernetes Service ʼnģ
4. Kubernetes R²¬ÈÏÒ¥ ibm.biz/dojokadai1Y Kubernetes bē
4. Kubernetes コードチャレンジ (1) 補⾜ibm.biz/dojokadai1■ Lab 5Helmオプションに関するエラーが発⽣した場合は、オプションを除いて実⾏してください。例 helm install –name jpetstore ./mmssearchhelm install jpetstore ./mmssearch/例 helm delete jpetstore –purgehelm delete jpetstore
4. Kubernetesコードチャレンジ (2)Watson APIを呼び出すアプリをKubernetesで動かそうibm.biz/dojokadai2無料範囲でWordPressサイトをKubernetesで動かそうibm.biz/dojokadai3
4. Kubernetes コードチャレンジ (3)ibm.biz/docker101jp■ Docker から学ぶLab 0 – DockerのインストールLab 1 – 初めてコンテナを実⾏Lab 2 – カスタムDockerイメージLab 3 – オーケストレーション⼊⾨
IBM Code Patternshttps://ibm.biz/ibmcodejpńƐ °ÇĔŤ ©R¦ R²cȊur½ÍĄë¹ªRÒŪ
Y åǍŕ}iǻơV?3;5Abï$D25A>5C5BWíƂŏǽǶ Í¯Ï Å
¡½Gh_v IBM Developeribm.biz/IBMDevJPęùŅı¦Î½|Žüvƨ`żƖŇáŊƟ