Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
OpenShift Workshop
Search
Taiji HAGINO
PRO
November 24, 2020
Technology
1
790
OpenShift Workshop
本資料はIBM Tech Dojoのコンテンツになります。
Taiji HAGINO
PRO
November 24, 2020
Tweet
Share
More Decks by Taiji HAGINO
See All by Taiji HAGINO
JDDUG (Japan Datadog User Group)始動の舞台裏
taijihagino
PRO
0
50
コミュニティマーケティング推進協会 DevRel分野フェローとしての活動指針
taijihagino
PRO
1
72
Tokyo Azure Meetup and why don't we learn English
taijihagino
PRO
0
4
Datadog Japan Meetup 2023 Fall
taijihagino
PRO
0
220
How to use ChatGPT for practicing English
taijihagino
PRO
0
500
Bi-monthly Webinar - Observability Datadog 101 (20230403pos)
taijihagino
PRO
0
65
How to Drive User Community without Community Manager
taijihagino
PRO
1
51
Facets of Observavility
taijihagino
PRO
0
390
Serverless Application Monitoring | DevOps.com Webinar
taijihagino
PRO
0
23
Other Decks in Technology
See All in Technology
Databricks における 『MLOps』
databricksjapan
2
160
最近たまに見かけるTiDBってなんだ? - Findy
pingcap0315
2
750
エンジニアのキャリアをちょっと楽しくする3本の軸/Three Pillars to Make an Engineer's Career More Enjoyable
kwappa
0
2.6k
Azure犬駆動開発の記録/GlobalAzureFukuoka2024_20240420
nina01
1
190
開発生産性大幅アップ!Postman VS Code拡張機能
nagix
2
360
4年前、あるじゃん老害エンジニアLT合戦に登壇、米国西海岸コンピュータ歴史博物館体験記の続編
toshi_atsumi
0
220
Vertex AI を中心に 生成AIのアップデートを共有します
kaz1437
0
290
MLOpsの「壁」を乗り越える、LINEヤフーの Data Quality as Code
lycorptech_jp
PRO
4
270
プラットフォームってつくることより計測することが重要なんじゃないかという話 / Platform Engineering Meetup #8
taishin
1
340
長期間TiDBを使ってきた話 @ 私たちはなぜNewSQLを使うのかTiDB選定5社が語る選定理由と活用LT / Experiences with TiDB Over Time
chibiegg
2
870
日本におけるデータエンジニアリングのこれまでとこれから
foursue
16
4.1k
開発生産性向上サービスを作るFindyが自分たちで開発生産性を爆上げした組織づくりの歩み / Findy's path to boosting its own development productivity 2024-04-17
ma3tk
3
600
Featured
See All Featured
Keith and Marios Guide to Fast Websites
keithpitt
408
22k
Large-scale JavaScript Application Architecture
addyosmani
504
110k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
125
32k
From Idea to $5000 a Month in 5 Months
shpigford
377
45k
Intergalactic Javascript Robots from Outer Space
tanoku
266
26k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
60
14k
It's Worth the Effort
3n
180
27k
Why You Should Never Use an ORM
jnunemaker
PRO
51
8.6k
Documentation Writing (for coders)
carmenintech
60
3.9k
Why Our Code Smells
bkeepers
PRO
331
56k
Optimising Largest Contentful Paint
csswizardry
8
2.3k
Designing with Data
zakiwarfel
96
4.8k
Transcript
http://ibm.biz/os-ws-01 本⽇の資料
IBM Developer Dojo OpenShift 101 萩野たいじ (Taiji Hagino) Customer Success
Manager / Developer Advocate Technology, IBM @taiponrock #IBMDojo #OpenShiftWorldTour
⽬的 OpenShift概要について理解する ゴール OpenShift上にアプリをデプロイできるようになる このコースを学ぶ⽅の想定スキル コンテナ実⾏環境を初めて利⽤する⽅ 本セッションについて
IBM Cloudアカウント(無料)の取得 操作解説動画: https://ibm.biz/action1 事前準備がお済みでない⽅ IBM Cloud への登録はご⾃宅かスマートフォンのキャリア回線を使⽤して ⾏ってください ※同⼀のWiFi経由で複数⼈が同時に登録するとエラーとなる事があります
https://ibm.biz/BdfHqK
萩野たいじ (Taiji Hagino) Customer Success Manager | Developer Advocate IBM
Champion Program Japan Director IBM 特別⾮常勤講師 筑波⼤学 @taiponrock お気軽にフォローください! まもなく発売予定︓ Practical Node-RED Programing By Packt Publishing 元美容師で元⾳楽家。ソフトウェアエンジニアへ転⾝後、有限会社ア キュレートシステムを起業。その後、商社系SIerでのテクニカルエバ ンジェリスト経験を経て、IBM GlobalチームのDeveloper Advocate として DevRel(Developer Relations)を推進。現在はIBMの Customer Success Managerとして活動中。 著書 『開発者向けマーケティング DevRel Q&A』(インプレスR&D) 『はじめてのNode-RED』『Node-RED活⽤マニュアル』(⼯学社)など。
⽬次 1. コンテナ 2. Kubernetes 3. OpenShift 4. ハンズオンワークショップ
なぜ「今」 コンテナ/Docker/Kubernetesなどの テクノロジーが注⽬されているのか︖ 1. コンテナ
https://youtu.be/1PPPUPcUkSs コンテナとは︖
コンテナは仮想マシン(VM)に⽐べてリソース効率がよい スケールアウトが簡単 VM(仮想マシン)とコンテナ VM(仮想マシン型) コンテナ型 システム基盤 ホストOS 仮想化層 ゲストOS ゲストOS
ゲストOS Bin/Libs Bin/Libs Bin/Libs App1 App2 App3 システム基盤 ホストOS コンテナ・エンジン Bin/Libs Bin/Libs Bin/Libs App1 App2 App3
コンテナを使った開発の流れ Dockerfileなど Docker イメージなど コンテナ レジストリ マニフェストで コンテナ⾃体の 詳細を記述 開発者
コンテナ イメージ作成 イメージの 登録 開発者 アプリ実⾏ アプリ開発 3段階のプロセス
dockerを使った例 利⽤ Build Docker Runtime ソースや 構成情報 内部リポジトリー コンテナ・イメージ Pull
run/exec dockerHub コンテナ dockerHub オンライン上にイメージを保管しておくコンテナレジストリの1種です。 様々なイメージの取得、⾃作イメージの保管ができます。 Dockerの操作は、提供されているDocker コマンド(CLI)を活⽤します。ユーザーは、元になる Docker imageをコンテナ化することで、アプリケーションとして利⽤することができます。
コンテナレジストリ Container Registryはコンテナ・イメージを保管しておくための領域であり、Docker Hubはそのう ちの⼀つです。Container Registryは様々な種類があり、環境・⽤途によって使い分けが可能です。 種類 概要 例 Docker
Hub 様々なイメージが保管・公開されている。 公開されているイメージを取得したり、作成したイメー ジを保管したりすることができる。 料⾦を⽀払うことで、privateなレジストリとしても利⽤ 可能。 - クラウド・サービス 様々なクラウド・ベンダーなどが提供しているサービス。 各ユーザーのPrivateな領域として利⽤可能。 料⾦によって、サイズやアクセス回数の制限がある。 IBM Cloud Container Registry Amazon ECR GCP Container Registry Azure Container Registry OSS ユーザー固有の環境に独⾃で作成するRegistry。 環境・導⼊作業などは必要だが、基本的に⾃由に利⽤可 能。 NEXUS OCR (OpenShift Container Registry) また、各イメージはContainer Registryに作成された領域であるリポジトリ内に保存され、形式は下記の通りです。 <リポジトリ名>/<イメージ名>(:<tag>) (例: ibmcom/websphere-liberty → ibmcomリポジトリ内のwebsphere-libertyイメージ)
dockerコマンド操作 イメージをdocker hubからpull > docker image pull gihyodocker/echo:latest イメージをコンテナ化して実⾏ >
docker container run -d -t -p 9000:8080 gihyodocker/echo:latest -d:バックグラウンドで実⾏ -p:ポートフォワーディング コンテナを停⽌ > docker container stop <コンテナID> コンテナを削除 > docker container rm <コンテナID> イメージを削除 > docker image rm <イメージID>
dockerコマンド集(主なもの) 概要 コマンド オプション イメージ取得 image pull {image}:{tag} イメージビルド image
build {image}:{tag} イメージ⼀覧 image list タグの付与 image tag {image}:{tag} {image}:{新tag} イメージ削除 image rm {image id} コンテナ起動 container run {image}:{tag} -p {host port}:{container port} ポート公開 -d バックグラウンド起動 --rm 停⽌時にコンテナ削除 コンテナ⼀覧 ps -a 停⽌状態含む全てのコンテナを取得 コンテナ停⽌ container stop {container id} コンテナ削除 container rm {container id} コンテナ内でコマンド実⾏ container exec {container id} {command} -it インタラクティブに操作 ステータス確認 stats --no-stream ⼀回のみ表⽰
コンテナのポータビリティ 👉 アプリケーション稼働に必要な依存ファイルを パッケージングできる 👉 物理サーバーに固定されない → 同じアーキテクチャの環境であれば ポータビリティが存在する 「僕の環境では動いた」
問題が発⽣しない システム基盤 (クラウド) ホストOS システム基盤 (オンプレミス) ホストOS コン テナ エン ジン App1 Bin/Libs App2 Bin/Libs App3 Bin/Libs コン テナ エン ジン App3 Bin/Libs
仮想マシン(VM)に⽐べてリソース効率がよい ポータビリティーが⾼い スケールアウトが容易 3段階のプロセスを使⽤することで、 よりアジャイルなDevOpsと継続的インテグレーション およびデリバリーが可能になる コンテナのまとめ
コンテナとコンテナオーケストレーションって︖ dockerだけじゃダメなの︖ 2. Kubernetes
https://youtu.be/zGXYRQ-8pU0 Kubernetesとは︖
コンテナーの運⽤実⾏と管理を⾏うオーケストレーションツール • コンテナーが⼤量になってくると管理しきれない部分をカバー • 複数のDockerホストの管理 • 死活監視 • スケジューリング •
スケーリング • 障害時のリカバリー • アプリ実⾏に必要なインフラリソースを管理 • 永続的なストレージ • ネットワーク • クレデンシャル情報 etc… • 宣⾔的設定モデル • 「あるべき状態」を記述すると、それを実現し続けようとしてくれる • 障害時も⾃動で復旧作業を実施 Kubernetesの特徴
Kubernetesの代表的な機能 スケールアウト 負荷分散 バージョン管理 (ロールアウト) ネットワーク管理 永続ストレージ管理 死活監視 ⾃⼰復旧 CPU
/ Memory リソース管理
Kubernetesで覚えておきたい概念 Pod Kubernetes における最⼩の管理単位 - Podの中には 1つ以上 の コンテナが含まれる -
Pod単位でスケールイン・スケールアウトする - PodごとにIPアドレスがアサインされる Pod IP 10.1.206.34 10.1.206.128
Kubernetesで覚えておきたい概念 ReplicaSet Podを管理するための定義 - Podの必要稼働数を定義 - K8sの Scheduler がどのノードにアサイ ンするかは考慮してくれる
Pod IP 10.1.206.34 10.1.206.110 ノード ノード ReplicaSet - 必要数2 - 現⾏ 2 Replicaset
Kubernetesで覚えておきたい概念 Deployment PodやReplicaSetを管理するための オブジェクト - Pod - ReplicaSet - ClusterIPs
- NodePort - (Ingress) Pod IP 10.1.206.34 10.1.206.110 Cluster IP 10.0.0.142 169.56.42.73 Ingress IP Deployment
Kubernetesで覚えておきたい概念 Service Kubernetes外から TCP/IPでアク セスするための定義 - K8sクラスタ内で⼀意となるポートがアサイン される - K8sクラスタのどのノードからアクセスしても
- 当該サービスにルーティングされる - L4ロードバランサー Pod IP 10.1.206.34 10.1.206.110 ノード ノード 30010 30010
コンテナーのオーケストレーション・ツール 理想状態を宣⾔すると、その状態を維持しようとする 3つの主要コンポーネント 👉 Pod 👉 Deployment 👉 Service Kubernetesのまとめ
PodはDeploymentによって作成され、管理されます。 Deploymentによって作成されたPodへのアクセスは、 Serviceを使⽤することで容易になります。
なぜKubernetesではなくOpenShiftを使うのか︖ そもそも2つの違いは︖ 3. OpenShift
https://youtu.be/KTN_QBuDplo OpenShiftとは︖
OpenShiftのしくみ OpenShift 4 Platform ⚓ 統合と⾃動化 ⚓ シームレスなKubernetesデプロイ ⚓ インストールの⾃動化
⚓ 1クリックでのプラットフォーム更新 ⚓ クラウドリソースのオートスケーリング
OpenShiftのしくみ 1. カタログからApacheを選んで、ウイザードに沿ってデプロイを指定します 2. OpenShiftは⾃動的にgithub上に格納されているテンプレート定義ファイル(json)を⼊⼿します 3. ⼊⼿したテンプレートの指定に沿って、Dockerhub上に公開されているApacheのコンテナイメージを pullします 4. ウイザードで指定された名前や環境などを加味してイメージをbuildのうえ、OpenShiftの内部レジスト
リーにpushします 5. 引きつづき、OpenShiftはテンプレートの指⽰に沿ってイメージ・ストリームをpodにデプロイするよう K8s(のReplication Controller)に指⽰します 6. 最後にserviceやrouteを構成して外部ユーザーがアクセスできるようにします K8s イメージ・ストリーム ユーザー dockerHub Github等 内部レジストリー 利⽤ Build Deploy あなた integrated docker registry. コンテナイメージをビルドして実⾏(デプロイ)する、という点は Dockerの時と同じですね。ただしK8s基盤上で動かすことで コンテナの運⽤周りが⾶躍的に便利になってます。
Build Deploy K8s Runtime ソースや 構成情報 イメージ・ストリーム 利⽤ Build run/exec
Docker Runtime ソースや 構成情報 内部レジストリー イメージ ユーザー Pull dockerHub Github等 内部レジストリー 利⽤ ← 素のKubernetesの守備範囲 → dockerとOpenShiftの処理の流れの対⽐
OpenShiftコマンド操作 OpenShiftへログイン > oc login -u <ユーザーID> -p <パスワード> プロジェクト新規作成
> oc new-project <プロジェクト名> アプリケーション作成 > oc new-app <コンテナイメージ> アプリケーションを公開 > oc expose svc/<アプリケーション名> アプリケーションを削除 > oc delete all -lapp=<アプリケーション名> プロジェクトを削除 > oc delete project <プロジェクト名> OpenShiftからログアウト > oc logout
OpenShiftコマンド集(主なもの) 概要 コマンド オプション ログイン oc login -u developer -p
hoge ログイン oc login -u developer -p hoge プロジェクトの作成 oc new-project <project-name> プロジェクトの作成 oc new-project <project-name> アプリケーションの作成 oc new-app <app-name> アプリケーションの作成 oc new-app <app-name> サービスの公開 oc expose svc/<app-name> サービスの公開 oc expose svc/<app-name> ステータス表⽰ oc status ステータス表⽰ oc status オブジェクトの詳細表⽰ oc get all オブジェクトの詳細表⽰ oc get all デプロイメント構成(dc) の詳細表⽰ oc describe dc open-liberty デプロイメント構成(dc)の 詳細表⽰ oc describe dc open-liberty アプリケーション⼀式の 削除 oc delete all -lapp=<app-name> アプリケーション⼀式の削 除 oc delete all -lapp=<app-name> プロジェクトの削除 oc delete project <project-name> プロジェクトの削除 oc delete project <project-name> プロジェクトのリスト oc projects プロジェクトのリスト oc projects ログアウト oc logout ログアウト oc logout ログイン oc login -u developer -p hoge ログイン oc login -u developer -p hoge プロジェクトの作成 oc new-project <project-name> プロジェクトの作成 oc new-project <project-name>
https://youtu.be/cTPFwXsM2po KubernetesとOpenShiftの違い
OpenShiftは、Kubernetesとの互換性を維持しながら、CICD機能を強化、開発者に代わって、ビルド、 リポジトリ登録、デプロイを⾃動実⾏します。 KubernetesとOpenShiftの違い OPENSHIFT 機能拡張 OpenShift CICD利⽤ アプリケーション (コンテナ) Kubernetes
アプリケーション (コンテナ) Ubuntu / CentOS… Linux Kubernetes アプリケーション (コンテナ) コンテナ ランタイム Kubernetesの標準機能 で構築したアプリケーション どちらでも 動作可能 RHEL / RHCOS コンテナ ランタイム
None
Deploy: ソースコードからコンテナ作成とデプロイまでの⾃動化 Manage: Webコンソールとコマンドラインの両⽅から操作可能。 実⾏状態のメトリックス監視とログ分析も提供 運⽤: Ansible Playbookを使ってオートスケーリングが可能 Security: Project単位で簡単に管理可能
OpenShiftのまとめ
IBMが提供するOpenShiftの⼆つのスタイル
マネージドサービスのOpenShift ROKSは、業界をリードする商⽤コンテナ管理基 盤であるRed Hat OpenShiftのマネージド・サービ スです。ROKSを使うことで、お客様はOpenShift を⽤いたインフラの構築や維持、運⽤、および技 術習得の負担を減らし、ビジネス競争⼒の源泉と なるアプリケーションの開発と管理に専念できる ようになります。
Red Hat OpenShift on IBM Cloud (ROKS)
オンプレミスからIBM Cloud、さらには他社のパブリッククラウドまで、OpenShiftが動く環境ならどこでも使 えるアプリケーション開発/実⾏基盤です。 IBM Cloud Paks OpenShiftが動く環境ならどこでも使える 新規販売終了 後継サービスは WebSphere
Hybrid Edition
https://ibm.biz/oss2iws 4. ハンズオンワークショップ
None