https://ibm-developer.connpass.com/event/154633/
IBM Developer DojoOpenShift + Watson ñƮAya TokuraDeveloper AdvocateTokyo City Team
View Slide
事前準備まだお済みでない⽅1. IBM Cloudアカウント(無料)の取得☆操作解説動画: https://ibm.biz/action12. IBM Cloud 従量課⾦アカウントへのアップグレード(オプション)☆操作解説動画: https://ibm.biz/action2※ ワークショップでは無料枠内で作業します。従って、今回の有償アカウントへのアップグレードや、ワークショップに参加によって利⽤料⾦が請求されることはありません
本⽇のタイムテーブル14:00-14:05(5min)オープニング14:05-15:00(55min)OpenShift概要⽇本アイ・ビー・エム株式会社デベロッパーアドボケイト⼾倉 彩15:00-17:00(120min)OpenShiftワークショップ⽇本アイ・ビー・エム株式会社デベロッパーアドボケイト⼾倉 彩17:00-17:30(30min)クロージング
学習の⽬的とゴール⽬的OpenShift概要について理解するゴールAIを組み込んだWebアプリをOpenShiftで動かすこのコースを学ぶ⽅の想定スキルコンテナ実⾏環境を初めて利⽤する⽅
ayatokuraƑǿ ȳ (Aya Tokura)IBM Developer Advocate«È¶RÂÖ´ǤȶMǷàȔǬMȢȘŪęānxMćíå~óQ} IBM Cloud Watson~ƓƱȲȺáaN
G .5+IBM Cloud #)(8OURLNibm.biz/dojo20191218! IBM Cloud 3$ 5"!5+ CD3$ 5! IBM Cloud 1 +"!5+;B"!5+CDMSU YÛ×~cȓ`
⽬次1. コンテナ概要2. Kubernetesとは3. Red Hat OpenShiftとは4. Minishift ワークショップ
1. コンテナ概要なぜ「今」コンテナ/Docker/Kubernetesなどのテクノロジーが注⽬されているのか
WȣƼǧÖ+"XzW£Ö²¶X£Ö²¶ȣƼǧÖ+"}ƒxѬR©DžƉe`©¢RÒ´eȞDz
@4<6C ^£Ö²¶£Ö²¶ĵĒos~ǎĽŗƽoÁа´¿RÉ! WćíåeȞDz}ÁÑ¢R§ÏÖędoƹƯŖXjzeyf! £Ö²¶~³¿ ´©Ö®Rµ ÊR¨~ŖĨUÁÑ~ćíVÊR¨~ŹŬ £Ö²¶~ċá0$,&2Z¼INdmp
£Ö²¶ŧvsćí~ƐDockerfile|{ DockerÊR¨|{£Ö²¶RÓ¨©´ÑÇ·¿©´y£Ö²¶çĈ~Ȩǻœǒćíå£Ö²¶RÊR¨ŖĨÊR¨~ǤǂćíåÁÑċáÁÑćíǑǭ~ÁÔ«©
コンテナーのポータビリティü アプリケーション稼働に必要な依存ファイルをパッケージングできるü 物理サーバーに固定されない→ 同じアーキテクチャの環境であればポータビリティが存在するシステム基盤(クラウド)ホストOSシステム基盤(オンプレミス)ホストOSコンテナエンジンApp1Bin/LibsApp2Bin/LibsApp3Bin/Libs「僕の環境では動いた」問題が発⽣しないコンテナエンジンApp3Bin/Libs
What is Container (コンテナ)?https://youtu.be/1PPPUPcUkSs
コンテナのはじめ⽅n CNCFの Cloud Native Trail Map を参照1. コンテナ化• ⼀般的には Docker コンテナで実施• いかなるサイズのアプリケーションも依存性もコンテナ化可能• 時間が経つにつれ、アプリケーションを分割しマイクロサービス化したくなるだろう2. CI/CD(継続デリバリの仕組み)• 継続インテグレーション・継続デリバリの仕組みをセットアップ• コード変更が 新しいコンテナ・イメージとして、⾃動的にビルドされ、テストされ、デプロイされるように3. オーケストレーション&アプリ定義• 互換性試験に合格している Certified Kubernetes 環境を選択• もっとも複雑なアプリケーションであってもHELMで 定義して、導⼊して更新していくことが可能
コンテナのまとめ• 仮想マシン(VM)に⽐べてリソース効率がよい• ボータビリティーが⾼い• スケールアウトが容易• 3段階のプロセスを使⽤することで、よりアジャイルなDevOpsと継続的インテグレーションおよびデリバリーが可能になる
2. Kubernetesとはコンテナーの運⽤実⾏と管理を⾏うオーケストレーションツール• コンテナーが⼤量になってくると管理しきれない部分をカバー• 複数のDockerホストの管理• 死活監視• スケジューリング• スケーリング• 障害時のリカバリー• アプリ実⾏に必要なインフラリソースを管理• 永続的なストレージ• ネットワーク• クレデンシャル情報 etc…• 宣⾔的設定モデル• 「あるべき状態」を記述すると、それを実現し続けようとしてくれる• 障害時も⾃動で復旧作業を実施
Kubernetesの代表的な機能スケールアウト 負荷分散 バージョン管理(ロールアウト)ネットワーク管理永続ストレージ管理死活監視⾃⼰復旧CPU / Memory リソース管理
Pod"Kubernetes }chğĐ~ƧđDzŅ0%~Ü} AM ~ £Ö²¶eǀ%@5DzŅy©¢RÒÖP©¢RÒ´o%@5kz}%µÓ©e¥Öl%@5%!"#!#$"%#&' !"#!#$"%#!$(
ReplicaSet"%@5Ƨđos~øƝ%@5~ƀĢȱǝİøƝ (~ $)&%5-&2 e{~¹Rµ}¥ÖodśȒmxg%@5%!"#!#$"%#&'!"#!#$"%#!!"&1-*$"&4 «B ¹Rµ ¹Rµ
Node Port"5#&2/&4&3d )%%y «©os~øƝ ( Щúy PQXx ( Щ~{~¹Rµd «©mxĠȸ¥R½©}ÒR²Ö¡l%@5%!"#!#$"%#&'!"#!#$"%#!!"¹Rµ ¹Rµ"##$# "##$#
Deployment"ÕR ÔRµøƝĈ%@5'6A=:42(6E=FDE6C%D#@56%@CE ?8C6DD%@5%!"#!#$"%#&'!"#!#$"%#!!"=FDE6C% /(2&33 &1-09.&/4
What is Kubernetes?https://youtu.be/zGXYRQ-8pU0
IBM~£Ö²¶ƓƱMǦŻč~ĞĽÐµ¸²ÀPÁÑǦŻčDŽǓù}ĶČ@4<6C F36C?6E6D~£È°´F36C?6E6DÂR©~£Ö²¶Ŋȅ¬ÑÍR§ÏÖ ÙèO" @@8=6|{Ĕ ~ŋàOōĈeĪÿ £Ö²¶ƓƱ £Ö²¶Ƨđ%&' !"#$%()*+,-+.+/01+,234+05%(16¥R½©Ê°§ÍC2762D¥R½©Ê°§Í¥R½©Ê°§ÍC2762D¥R½©Ê°§Í¥R½©Ê°§ÍC2762DC2762D¥R½©Ê°§ÍC2762D¥R½©Ê°§Í¥R½©Ê°§Í¥R½©Ê°§Í¥R½©Ê°§Í¥R½©Ê°§Í%&' !"#$%7,328.+05%976³juo]^[SdmpZ¾%@??64EO,2ED@?@>A2C6@>A=JO)C2?D7@C>2E:@?5G:D@CO":4C@4=:>2E6O$"O(,63(A96C6O *C32?@56 6A=@JO%"O3 O"&OOAA@??64EO2E2%@H6COr~DZŃİ
Kubernetesのまとめ• コンテナーのオーケストレーション・ツール• 理想状態を宣⾔すると、その状態を維持しようとしてくれる• 3つの主要コンポーネント• Pod, Deployment, Service• PodはDeploymentによって作成され、管理されます。Deploymentによって作成されたPodへのアクセスは、Serviceを使⽤することで容易になります。
3. Red Hat OpenShiftz
© 2019 IBM CorporationOpenShiftMKubernetesz~ȕǥħȄĺm|eMCICDĝŦĦčMćíå}ĕvxM½ÒµMÑÆ¨´ÑǤǂM³ÁÔçęċámoNOPENSHIFTĝŦǢưOpenShift CICDĵĒÁÑ¢R§ÏÖU£Ö²¶VKubernetesÁÑ¢R§ÏÖU£Ö²¶VUbuntu / CentOS… LinuxKubernetesÁÑ¢R§ÏÖU£Ö²¶V£Ö²¶ ÐÖÉLinux OS£Ö²¶R¢©´ÓR§ÏÖKubernetes~ǦŻĝŦyƟȋmsÁÑ¢R§ÏÖ{uyęŖƌŦRHEL / RHCOS£Ö²¶ ÐÖÉF36C?6E6Dz$A6?(9:7E
What is OpenShift?https://youtu.be/KTN_QBuDplo
KuberneteszOpenShift~ƫ`
KubernetesとOpenShiftの違い まとめ• Deploy:ソースコードからコンテナ作成とデプロイまでの⾃動化• Manage:Webコンソールとコマンドラインの両⽅から操作可能。実⾏状態のメトリックス監視とログ分析も提供• 運⽤:Ansible Playbookを使ってオートスケーリングが可能• Security:Project単位で簡単に管理可能
Kubernetes and OpenShift: What's the Difference?https://youtu.be/cTPFwXsM2po
ワークショップ5-1. IBM CloudでOpenShiftを使う5-2. Minishift とは5-3. OpenShift ワークショップ
Red Hat OpenShift on IBM Cloud zIBM Cloud™Ý~RedHat®OpenShift®MïĆ}©¢RÐÀÒyįǯħ~ï`IBMCloudÁа´¿RÉyǵē}ƧđlsOpenShift ЩRŗƽoȡȦù|¥R½©yoN The WeatherCompany®yȑ×2,500Ŀ~Ö³ÇÖµŁȉȄĺoKubernetes¥R½©}ŝnjƖælx`oN
Open Shift on IBM Cloud ~ůóǩƷƲâ(PAYG)s¥À© ÑÁ§ÏÖ~Ö´
5-1. "=@F5y$A6?(9:7Eŧa "=@F5}Ô¡ÖÛ×:3> 3:K5@;@ } «©mxǧÝ~WÔ¡ÖXdÔ¡Ömxgtl`āƞhttps://cloud.ibm.com/dÔ¡ÖƌŦyoдִòƦĥyo%.Ö´ycŧ`ȭho
5-1. "=@F5y$A6?(9:7Eŧa ®°§ÍÅRµdWÔ¡X Ѱ
5-1. "=@F5y$A6?(9:7Eŧa ǧÝ~ņȧ¿RÒµd-"#&-z\oÁÀ@-"#&-z\oǨǡ
5-1. "=@F5y$A6?(9:7Eŧa ǣũ~²¤ÑRdW£Ö²¶X Ѱ MW'652E$A6?(9:7E=FDE6CX Ѱ
5-1. "=@F5y$A6?(9:7Eŧa '652E$A6?(9:7E=FDE6CŖĨŷšeĚŘloNstmдִyŖĨyf|`sMдִ~ëæW°Á¡ÓRµXÅÖeĚŘloN
5-1. IBM CloudでOpenShiftを使う6. 「 Red Hat OpenShift Cluster 」を作成します。動画で⾒てみましょう:https://youtu.be/UJ2frartWFk
5-1. IBM CloudでOpenShiftを使う補⾜情報:3分でわかるIBM Cloudシリーズ(動画)• OpenShiftクラスターに対してocコマンドでアクセスする• OpenShiftクラスターにHelloWorldアプリをデプロイしてみようIBM Demos (デモ動画サイト、英語):• Red Hat OpenShift on IBM Cloud
5-2. Minishift とは• OpenShiftは、Kubernetesに、Red Hat社独⾃の拡張を加え、さらに、Red Hatのソフトウェア保守とウェブや電話での問い合わせ対応サービスを提供する企業向けKubernetesのプラットフォーム• OpenShiftは、Red Hat社が提供する有償サービス(サブスクリプション)のもとで利⽤できるソフトウェア• OpenShiftの学習やローカルの開発環境⽤に無償で提供されるのが、Minishift (OpenShift 3.11に相当)「MiniShiftに関する疑問の整理、「 Dockerから⼊るKubernetes」執筆打明け話とか、OKDやCRCとの整理など」https://qiita.com/MahoTakara/items/3c1c208640518e832660 より抜粋
5-2. Minishift ワークショップ 101Setup 1「仮想化環境を構成する」の⽇本語版はこちら」• Windows: ibm.biz/Bdz39H• Mac: ibm.biz/Bdz39ESetup 2MinishiftのインストールおよびOpenShiftサーバーを開始し、Lab1から順番に進める。ibm.biz/openshift1
5-3. OpenShift ÕR §Ï°Á!"430/ *35"-&$0(/*4*0/Z§LK/0%&+3SªÊ¤¿![w{Z1&/)*'40/-05%OJX47#&0*-?9@-2LT /7'Û×juȝŖmxma
ĄýŧĒo"Watson API – Visual Recognition20193¬!"430/33*34"/4ÁÑ¢R§ÏÖ}çǕĻƬÖR¿R©ƻĴmxÖµÎR¦z~Ğçęč&84401&&$)²©´ŭȥǪƠ}Ƃǥo1&&$)40&84ǪƠ²©´ŭȥ}Ƃǥo*35"-&$0(/*4*0/ŷȖ£Ö²Ö±}ǀģǛņÞo*3$06&29łĭù|ȴǔÖ¨ÖĵĒmxM³R~țsŕLjŎămMýǜ´ÓÖµíìo*3$06&29&73:D4@G6CJÝ}ċǼlMÖѰ¯ŐĸŶĴls·ÍR©}þoěć³R«°´&230/"-*49/3*()43²©´dȘå~ħūǗøo"/(5"(& 2"/3-"402²©´DZĻƬȹȬáa"452"-"/(5"(&/%&234"/%*/(çǕĻƬƋđānxRÕRµȵÞMÖ²²RȵÞMȯƴ¡ŶhMþŰȵÞ|{áa"452"-"/(5"(&-"33*'*&2²©´ŭȥ~éǫáaƨĤ~ģǘǗø|{0/&/"-9:&2·Ã²©´dȘå~ŽŐMäŢħMŭĈŎȤ/07-&%(&45%*0£R³Ö¡|m}MàĩŒǙdîĨmsĝȰĘǸ˳ÒyMǮƟƳ²©´³RdȴǔĞŌĘǸľƤ±RÒŏđǟĻƬǟȟÚƇǜǟŒǙȗȧǟǪƠǟŷȖǟ9EEADHHH :3> 4@>H2ED@?;A;256G6=@A6C4=@F5D6CG:46D42E2=@8 9E>=
Watson Visual Recognition (画像認識)画像認識「⼀般種別」(General Tagging):• 事前学習済みの分類器の出⼒を返す画像認識「カスタム」:• 識別を⾏いたいクラスのイメージを事前学習させ、その分類器の出⼒を返す事前学習不要事前学習必要https://www.ibm.com/watson/jp-ja/developercloud/visual-recognition.html画像に写った物体・情景など様々なものを分析・認識するAIサービス
操作の流れ1. ワークショップ⽤の環境へのIBM Cloud ID関連付け2. OpenShiftをコマンド実⾏できる環境の準備3. Visual Recognitionサービスの作成4. 資格情報のダウンロード5. 資格情報のアップロード6. 資格情報の編集7. OpenShiftアプリの作成
1. ワークショップ⽤のIBM Cloud環境にご⾃⾝のIBM Cloud IDを関連付ける注意事項・ブラウザはFirefoxをご利⽤ください・本ワークショップ⽤のIBM Cloud環境はセミナー開催⽇を含めて約3⽇間限定でお使いいただけます・IBM Cloud上で継続的にOpenShiftを検証する環境が必要な場合は、5-1. OpenShiftをご利⽤ください・ローカルでOpenShiftを検証する環境を構築されたい場合は、5-2. Minishiftをご利⽤ください
Ăœ*'!}*2&'08vz]fy «©ohttps://openshiftworkshop16tokyo.mybluemix.net /!23 6J0}ŀø~ŭǃȊM/.@FC":50}kçƣ~ñĀmM¯° Ű ©}¯° ñx/(F3>:E0 Ѱ o
@?8C2EF=2E:@?DeĚŘls / !@8:?"=@F50ÑÖ Ñ° o
"=@F5®°§ÍÅRµ~ǧÝ~Ö´Őĸ~ǧƎ~ 6 Ѱ o /IIIIIII L "0 Ѱ o
"=@F5®°§ÍÅRµ~ǧÝ~Ö´ŐĸeƂǺlsjzŮőmM/ѬR©~ĢĔ0~/=FDE6CD0 Ѱ o
/@A6?D9:7EE@[ÛÕR §Ï°Áyju~ ЩŧĒmo[İǃçęù}ŵĠxo
/$A6?(9:7E,63£Ö¬RÒ0ÅÖ Ñ° o
/$A6?(9:7E@?E2:?6C%=2E7@C>0ŷšeĚŘlsǧÝ~Ö´Őĸ~ȩ~ G Ѱ mM/@AJ!@8:?@>>2?50ĉșo[õ {ŧĒoȁMƀĢ}ƇnxÊËmxc`xgtl`
$A6?(9:7E£ÇÖµċáyfƹƯ~Żƅ Ăœ*'!}*2&'08vz]fy «©ohttps://workshop.shell.cloud.ibm.com "=@F5(96==7@C,@CÖ´Őĸ~ 6 Ѱ mx/IIIIIII "0ĉșo
Ö´ŐĸeǺülsjzŮőmMǣȩ~RÈ¶Ò£Ö Ñ° o mgozRȶÒeĚŘl
öȥ y£¾Rms£ÇÖµñĀmċáo W,6=4@>6XeĚŘlÔ¡ÖĨȚyo
+:DF2='64@8?:E:@?¥R½©~ŖĨ+:DF2='64@8?:E:@?üƆ}ŖĨoóř~ÃR¨}ĭygtl`NÍR R¥¢VSMŖĨļ~~eŧĒyfoNŖĨļ~óıĂ~êȀy+:DF2= '64@8?:E:@?~Ƨđ~ŷšĚŘmx9EEA:3> 3:KH2ED@?D6CG:46D4C66?W +:DF2='64@8?:E:@?¥R½©:3>4C656?E:2=D 6?G ~®ÖÔRµXyĭygtl`NÀЦRÝyMICkvZEUJN9EEAD4=@F5 :3> 4@> } «©mxM®°§ÍÅRµćfoN"OTQFS[`]o}|vx`jzŮőmMǶ|vx`ëæ Ñ° mxƂǺmo
Ýû~Ê·ÍR}_WÔ¡X Ѱ mo
+:DF2='64@8?:E:@?¥R½©~ĉș ǣũ~Ê·ÍRdWX Ѱ Ă}© ÔRÒmxĚŘlsW+:DF2='64@8?:E:@?X Ѱ
ŕūÁÐÖ}WдXeĉșlx`jzŮőmxMWŖĨX Ѱ +:DF2='64@8?:E:@?¥R½©ŖĨo
+:DF2='64@8?:E:@?¥R½©ŖĨŮőMƧđŷš~ĚŘĂ~ŷšeÞsMŖĨǵȎyoNǣ~Ê·ÍRdWƧđX Ѱ mxƧđŷšĚŘmo
ČūŐĸ~W®ÖÔRµXѰ mMçé~%}:3>4C656?E:2=D 6?G z`a¿ÒĎǖmoN +:DF2='64@8?:E:@?¥R½©:3>4C656?E:2=D 6?G ~®ÖÔRµ
:3>4C656?E:2=D 6?G ~°ÁÔRµ ÀЦR~"=@F5(96==7@C,@C Ѱ mxĚŘmoN
:3>4C656?E:2=D 6?G ~°ÁÔRµ Ê·ÍR»R~°ÁÔRµ£Ö Ѱ M:3>4C656?E:2=D 6?Gŀømx°ÁÔRµ
:3>4C656?E:2=D 6?G ~°ÁÔRµ ¿Ò°ÁÔRµŮő!"RȶÒ}Ăœ£ÇÖµñĀmMŮőmoNÞĀƾ
:3>4C656?E:2=D 6?G £¾RzǴſ :3>4C656?E:2=D 6?G £¾R#$%&'()#*+,+-.&/!"0+-1 &'()#*+,+-.&/!"0+-10-2,+1*RȶÒ}Ăœ£ÇÖµñĀNÞĀƾ :3>4C656?E:2=D 6?G ?@56GC ~ĮƚƂǺ#3(2, 24* &'()#*+,+-.&/!"0+-10-2,+1*RȶÒ}Ăœ£ÇÖµñĀNÞĀƾ
:3>4C656?E:2=D 6?G £¾RzǴſ Ê·ÍR»R~ȪȘ5:E£Ö Ѱ mxM³Rÿu_iÝŚé}³Rećfo
:3>4C656?E:2=D 6?G £¾RzǴſ ǣũ~-%!$''d:3>4C656?E:2=D 6?G ?@56GC®ÀÒ Ñ° mxćfoN®ÀÒ Ñ°
:3>4C656?E:2=D 6?G £¾RzǴſ +(*!1'$#)$#yůvx`|`áSáĊzğõ~áǨǡmoNǨǡöǨǡõ
:3>4C656?E:2=D 6?G £¾RzǴſ W:=6XÊ·ÍR Ѱ mMW(2G6X ѰmxĎǖmoN
ÁÔ¨ ´ŖĨo2# -+5)$*26+#.%5/."2-)1* )),&"$!/7)-/(+895/."2-)1*9%)),+"#*&$.&2-89:/($!+%;/."2-%<&"=/!%>+#2?-&.&2-%@2,+06"%/$$9RȶÒ}Ăœ£ÇÖµñĀmMüm`ÁÑ¢R§ÏÖĒ}üm`ÁÔ¨ ´ŖĨmoN£ÇÖµ]áyo $A6?D9:7EÁÑ~ŖĨÞĀƾ
7.2. アプリケーションの作成ターミナルに下記のコマンドを⼊⼒し、 githubのソースコードから、アプリケーションを作成します。(コマンドは1⾏です)oc new-app https://github.com/kyokonishito/watson-vr-node.git --build-env-file=./ibm-credentials.env.nodevr --build-envCLASSIFIER_ID=food7. OpenShiftアプリの作成
ÁÑ¢R§ÏÖ~ŖĨÞĀƾ $A6?(9:7EÁÑ~ŖĨ
7.3 ビルドログを表⽰しますoc logs -f bc/watson-vr-nodeターミナルに下記のコマンドを⼊⼒しビルドログを表⽰し、「 Pushsuccessful 」で終わるまで待ちます。7.4 ロードバランサーのサービスを作成しますoc expose dc watson-vr-node --port=3000 --type=LoadBalancer --name=watson-vr-node-ingressターミナルに下記のコマンドを⼊⼒し実⾏します。(コマンドは1⾏です)7. OpenShiftアプリの作成
7.5. ロードバランサーのサービスを公開しますoc expose service watson-vr-node-ingressターミナルに下記のコマンドを⼊⼒し実⾏します。7. OpenShiftアプリの作成これで完了です!ターミナルに下記のコマンドを⼊⼒し実⾏し、その結果を参照して、OpenShift で実⾏されているアプリケーションにアクセスできます。oc get route/watson-vr-node-ingressNAME HOST/PORT PATH SERVICES PORT TERMINATIONWILDCARDwatson-vr-node-ingress watson-vr-node-ingress-watson-vr.openshifttokyo17-0e3e0ef4c9c6d831e8aa6fe01f33bfc4-0002.jp-tok.containers.appdomain.cloud watson-vr-node-ingress 3000 None以下のような出⼒があった場合は、watson-vr-node-ingress-watson-vr.openshifttokyo17-0e3e0ef4c9c6d831e8aa6fe01f33bfc4-0002.jp-tok.containers.appdomain.cloud にブラウザでアクセスします。
ÀЦRyÁÑ¢R§ÏÖ} «©moÁÑ¢R§ÏÖĚŘyfmsdÅÖdzmxęŖŮőmxmaW¿Ò~ĉșXdƿşĉtõMƃdžÅÖѰ mxM+:DF2='64@8?:E:@?~ʼnŨŮőmoN! ,2ED@?yőǙU,2ED@?ĘǸļ˳ÒĵĒ! ,2ED@?eƿşőǙmsúŠĚŘmoN! ,2ED@?yőǙU©É˳ÒĵĒ! "ŗƽ~ƸŴ}żčms©É˳Ò@@5yőǙms ЩĚŘmoN[©ÇR´¿Öy~ŮőßƵĂ}&'£RµeĚŘlx`~yMr©ÇR´¿Ö~ÊÐyȌyÁÑ¢R§ÏÖ~*'!} «ozM©ÇR´¿ÖyʼnŨŮőyfoN©ÇR´¿ÖyW¿Ò~ĉșXÅÖyr~ëyȫvsƿşőǙƌŦyoN
追加ワークショップ (オプション)• Node-RED on OpenShift Workshop starter (日本語版)https://qiita.com/yamachan360/items/786f70cb532443f38c16• RedHat Japanのハンズオントレーニング ⽇本語訳複数コンテナの連携:https://github.com/osonoi/minishift/tree/master/lab1様々なデプロイメント⼿法:https://github.com/osonoi/minishift/tree/master/lab2
IBM Code Patternshttps://ibm.biz/ibmcodejpŎƩ ³Ëęŷ ¬R©£RµeȻvsÁÑćí¼RÖſ
¡Ge\o IBM Developeribm.biz/IBMDevJPğüŐĸ©Ò°Á}ƔÿwNjbƓƱœãŗƽ