SlideShare a Scribd company logo
1 of 30
Download to read offline
Copyright 2020 IGUAZU Corporation
OpenShift 勉強会
2021年 1月8日 株式会社イグアス
ソリューション事業部
テクニカル推進部
Copyright 2020 IGUAZU Corporation
▶ この勉強会では、コンテナを使用した開発は未経験の方向けに、基
礎知識として必要なコンテナおよび Kubernetes の特徴などを紹
介し、最終的に OpenShift の特徴について理解を深めていただく
ことを目的としています。
1
初めに
Copyright 2020 IGUAZU Corporation
▶仮想化とコンテナについて
▶コンテナを使用した開発の特徴とメリット
▶Kubernetes の概要
▶OpenShift と Kubernetes の違い
▶Operator の概要
▶学習リソース紹介
2
目 次
Copyright 2020 IGUAZU Corporation
仮想化と
コンテナ
について
3
Copyright 2020 IGUAZU Corporation
H/W
VM
4
仮想化について
Linux
Kernel
Com, Lib
MW
Appl A
仮想環境
H/W
Linux
Kernel
Command, Library
Middle Ware
Appl
物理環境
アプリケーションの稼働率が
低い時もハードウェアを占有
するので、有効活用されてい
ないリソースが多い
ハードウェアのリソースを分割して複数の仮
想マシンで有効活用
この部分が活用さ
れていない
_
VM
Linux
Kernel
Com, Lib
MW
Appl B
VM
Linux
Kernel
Com, Lib
MW
Appl C
Copyright 2020 IGUAZU Corporation
H/W
Linux
Kernel
Command, Library
Middle Ware
5
複数の種類のアプリケーションが同居する環境での問題
Appl A Appl B Appl C
同じプログラミング言語、ミドルウェア、ライブラリ
を使用する複数の種類のアプリケーションが動作して
いる環境
このアプリケーションだ
け、使用するプログラミ
ング言語、ライブラリー
などをVersion Up したい
_
Copyright 2020 IGUAZU Corporation
H/W
6
コンテナによる環境分離
Linux Kernel + コンテナランタイム
Namespace
Com, Lib 1.0
MW 1.2
Appl A
Namespace
Com, Lib 1.1
MW 1.2
Appl B
Namespace
Com, Lib 1.2
MW 1.3
Appl C
コンテナ:アプリケーションを動かすために最小限必要なコマンド、ライブラリなどを
アプリケーションと一緒にカプセル化したもの。
Linux kernel 部分は共有するため、コンテナ自体のサイズを小さくすることができます。
環境が分離されているため、使用するプログラミング言語、ミドルウェア、ライブラリ、
コマンドなどの差異をコンテナ単位で管理できます。
Kernel を共有。
名前空間で分離
コンテナ
Copyright 2020 IGUAZU Corporation
コンテナを使用した
開発の特徴とメリット
7
Copyright 2020 IGUAZU Corporation
◼ コンテナ・イメージは軽量で高速起動が可能
✓ 仮想マシンはOS部分も仮想的に再現するため、ディスクサイズが大きく
なります。コンテナは、ディスクサイズを小さくできるため起動が早く
なります。
◼ Infrastructure as Code
✓ インフラ部分からアプリケーションまでの構築作業をコードとして記述
しているため、構築作業を自動化することができるとともに、構築され
たコンテナ・イメージの再現性が保たれます。
◼ Immutable infrastructure
✓ 別々の環境同士で「それぞれ少しづつ違う」ことを避けるためのルール
です。
8
コンテナを使用した開発の特徴
8
Copyright 2020 IGUAZU Corporation 9
軽量で高速起動を活かす
▶ 特定の曜日、時間帯、季節などに増大する負荷をスケールアウト
(次ページ参照)で対応
▶ アプリケーションの実行環境、開発環境を集約
低負荷時
コンテナ コンテナ
高負荷時
コンテナ
コンテナ
コンテナ
コンテナ
H/W
Linux Kernel + コンテナランタイム
コンテナB コンテナD コンテナF
コンテナB コンテナC コンテナF
コンテナA コンテナC コンテナF
コンテナA コンテナC コンテナE
Copyright 2020 IGUAZU Corporation
Linux
Kernel
Linux
Kernel
Linux
Kernel
Com, Lib
MW
10
参考)処理負荷の増加に対応する方法の用語
Appl
用語 スケールアウト スケールアップ
処理負荷の増加に対
応する方法
サーバーの台数を増やす サーバーの性能 (CPU、メモリなど)を
増強する
メリット 複数台のサーバーで処理を分散してい
るので、そのうちの一台が故障しても
サービスを継続可能
コンテンツの更新は一台だけで行えばよ
いので運用管理が容易
Com, Lib
MW
Appl
Com, Lib
MW
Appl
Linux
Kernel
Command, Library
Middle Ware
Appl
物理・仮想環境の場合は Linux Kernel 部分も増加
コンテナの場合は、Linux Kernel 部分を共有
Copyright 2020 IGUAZU Corporation
▶ 毎日、毎月、サービス増強時などインフラ構築の作業を自動化
▶ 一旦作成した環境は変更しない・変更を起こさせないようにし、変
更したい場合は新しいイメージを作るようにします。
11
Infrastructure as Code / Immutable infrastructure
Webアプリ
開発端末
Webアプリ
開発端末
Webアプリ
開発端末
Webアプリ
開発端末
インフラ担当
手作業
フレームワークの
Version が違う
人的ミス防止
Apache の設定が違う
同一のコンテナ・イメージを使用
Copyright 2020 IGUAZU Corporation 12
Dockerfile の例
FROM centos:7
USER root
LABEL title="python3"
SHELL [“/bin/bash”, “-c”] # デフォルトシェル指定
WORKDIR /root # ホームディレクトリに移動
RUN yum -y update && yum -y install readline-devel zlib-devel bzip2-devel
openssl-devel gcc gcc-c++ && localedef -f UTF-8 -i ja_JP ja_JP.UTF-8
ENV LANG="ja_JP.UTF-8" LANGUAGE="ja_JP:ja" ¥
LC_ALL="ja_JP.UTF-8“
(以下略)
…
Linux のコンソールでコマンドを叩きながらミドルウェアなどをイン
ストールしたことがあるかたは、すぐ書けるようになります!
Copyright 2020 IGUAZU Corporation
Kubernetes
の概要
13
Copyright 2020 IGUAZU Corporation
コンテナーの運用実行と管理を行うオーケストレーションツール
▶ コンテナーが大量になってくると管理しきれない部分をカバー
✓ スケーリング*・オートスケーリング*
✓ 負荷分散
✓ 死活監視
✓ 障害時のセルフヒーリング*
✓ スケジューリングetc…
▶ リソース管理
✓ CPU・メモリー 、永続的なストレージ、 ネットワーク、 クレデ
ンシャル情報etc…
▶ 宣言的設定モデル
✓ 「あるべき状態*」を記述すると、それを実現し続けようとして
くれる
14
Kubernetes の概要(*の語句は次ページで説明)
Copyright 2020 IGUAZU Corporation
▶ スケーリング
✓ 負荷分散や耐障害性のため、コンテナのレプリカをデプロイする機能
▶ オートスケーリング
✓ 負荷に応じてコンテナのレプリカ数を自動的に増減する機能
▶ セルフヒーリング
✓ コンテナのプロセス停止などを監視して、コンテナを再デプロイする機能
▶ スケジューリング
✓ コンテナ・デプロイ先の Kubernetes Node を決定するステップ。CPU・
メモリーの空き、ストレージの種類などを条件にすることができます。
▶ あるべき状態
✓ yaml 形式や JSON形式で宣言することができます。例えばレプリカ数も
宣言でき、その個数に達するまでコンテナのレプリカをデプロイします。
15
参考)語句説明
Copyright 2020 IGUAZU Corporation
Linux Kernel +コンテナランタイム
コンテナ
16
Kubernetes クラスタ
Node
Master Node
Node Node
コンテナ
コンテナ コンテナ
クラスタの中に仮想的なクラスタ
(Namespace)を作成することもできます
後述の OpenShift の Project ≒
Namespace となります。
Node
コンテナ
Node Node
Namespace
コンテナのデプロイ先決定
(スケジューリング) コンテナ
デプロイ
Namespace
Linux Kernel +コンテナランタイム
Copyright 2020 IGUAZU Corporation
OpenShift と
Kubernetes の違い
17
Copyright 2020 IGUAZU Corporation
Kubernetesとの互換性を維持しながら、CI/CD機能を強化。
開発者に代わってビルド、リポジトリ登録、デプロイを自動実行できます。
18
OpenShift と Kubernetes の違い
OPENSHIFT
機能拡張
略語 CI/CD : Continuous Integration / Continuous Delivery
継続的開発と継続的デリバリー
H/W
Linux Kernel + コンテナランタイム
H/W
Linux Kernel + コンテナランタイム
Kubernetesを利用
するコンテナ
Kubernetesを利用
するコンテナ
Kubernetesの標準機能で構築した
コンテナはどちらでも動作可能
OpenShift の
CI/CDを利用する
コンテナ
Copyright 2020 IGUAZU Corporation 19
Kubernetes に簡便性をプラス
Kubernetes と比べ、OpenShift には下記のような違いがあります。
⚫ デプロイ
✓ ソースコードからコンテナ作成とデプロイまでの自動化
(CI/CD パイプライン)
⚫ 管理
✓ Webコンソールとコマンドラインの両方から操作可能。
✓ 実行状態のメトリックス監視とログ分析も提供
⚫ 運用
✓ オートスケーリングなど、運用の自動化を作りこみできるようになります。
⚫ セキュリティ
✓ Project単位で簡単に管理可能
(OpenShift のProject は、Kubernetes の Namespace をベースにしています)
Copyright 2020 IGUAZU Corporation 20
OpenShift の全体像
⚫ Cluster services
✓ 監視、ロギングなど、クラスタの運用コストを効率化するサービス
⚫ Application services
✓ ミドルウェア、ISV などアプリケーションのサービス
⚫ Developer services
✓ 開発ツール、自動ビルド、CI/CD、IDE など開発の生産性を高めるサービス
⚫ Service mesh
✓ マイクロサービスの運用・開発・テストを簡素化
⚫ 信頼性の高い Kubernetes 管理
✓ Operator による自動化レイヤ(後述)
✓ Kubernetes そのもの
✓ RHCOS (Red Hat Enterprise Linux CoreOS)
✓ コンテナ実行に最適化された Linux。コンテナーエンジンとして CRI-O が
組み込まれています。
Copyright 2020 IGUAZU Corporation
Operator の概要
21
Copyright 2020 IGUAZU Corporation
▶ Operatorは、サービス運用者の普段の作業をコード化して、人の代わりに
オペレーションさせることを目指すフレームワーク。
▶ 下記のような、Kubernetes の「あるべき状態」の制約を解決することを
目指します。
✓ 静的なコンテンツ、RESTful APIなど、ステートレスなアプリケーションで使
用することが前提。データ欠損の回避、可用性、スケール時の柔軟な設定変更
などはできない
✓ 例えば、コンテナのレプリカをデプロイするときも、コンテナ・プロセス
の停止を検知してコンテナを再デプロイするときも、まっさらな状態のコ
ンテナをデプロイしてしまう。
✓ そのため状態を維持しながら処理する必要のあるストートフル・アプリケー
ションにはコンテナ化は向かないと言われていた。
✓ 例えばデータベースをコンテナ化した場合、直前の状態を維持しながらス
ケーリング、障害からの回復などは Kubernetes だけでは行えない。
22
Operator とは?
Copyright 2020 IGUAZU Corporation
▶ 可能な作業により、5種類のフェーズに分類されます。成熟度ととも言い
ます。(Vが最高、I が最低)
▶ Operator の開発には、Ansible およびGo を使用できます。フェーズ I の
開発のみ Helmが使用できます。
▶ 開発フレームワークとして、下記の3種類が使用できます。
➢ Operator SDK、Kubebuilder、Metacontroller
23
Operator の分類
フェーズ 可能な作業
V オートスケーリング対応
変化に合わせた設定のチューニング
IV メトリクス取得、アラート対応など
III アプリケーションのライフサイクル対応
データのバックアップ、リカバリ
II パッチ適用、 バージョン・アップグレード
I 基本インストール(動的なアプリケーション展開、設定管理)
Copyright 2020 IGUAZU Corporation
▶ テスト・検証状況により4種類に分類されます。
▶ OperatorHub.io には、118の提供者が作成した174種類のOperator が登
録されています。(2021/1/7現在)
24
Operator の分類
分類 テスト サポート
Certified サポート検証、品質検証 ISV とのパートナーシップにより
サポート (Red Hat 製品の Operator
は、Red Hat 社サポート)
Operator Catalog in OpenShift OpenShiftへのインストール可否テ
スト
コミュニテイー
OperatorHub.io 登録済 簡単な動的テスト コミュニテイー
その他、コミュニテイーや
ISV が作成したOperator で
OperatorHub.io 未登録のも
の
- -
Copyright 2020 IGUAZU Corporation
学習リソース紹介
25
Copyright 2020 IGUAZU Corporation
▶ 参考書籍
➢ さわって学ぶクラウドインフラ docker基礎からのコンテナ構築
➢ Docker実践ガイド 第2版
➢ Docker/Kubernetes実践コンテナ開発入門
➢ 15Stepで習得Dockerから入るKubernetes
コンテナ開発からK8s本番運用まで
➢ Kubernetes完全ガイド クラウドネイティブのキーテ
クノロジー 第2版
➢ ソフトウエア デザイン 2020年 03月号 (特集:徹底解説
OpenShift 4)
➢ Red Hat OpenShift4入門 Enterprise Kubernetesへのファース
トステップ
26
学習リソース紹介
Copyright 2020 IGUAZU Corporation
▶ 引用資料
➢ IBM Dojo : OpenShift入門 (2020/10/07)
▶ 関連イベント例
➢ Infra Study Meetup #10「202X年のインフラ技術」
(2021/01/26 夜 予定)
➢ Kubernetes Meetup Tokyo (2021/1/21 夜に第38回予定)
➢ KubeFest Tokyo 2020 (2020/06/13開催済)
➢ OpenShift Community Japan (2020/12/10 に第11回開催済)
27
学習リソース紹介
Copyright 2020 IGUAZU Corporation 28
更新履歴
日付 バージョン 更新内容
2020/12/22 0.1 イグアス ソリューション事業部テクニカル推進部作成
2021/01/08 1.0 1/7時点の情報でupdate
Open Shift 勉強会 20210108

More Related Content

What's hot

How to use Virtualization Technology in Hatena
How to use Virtualization Technology in HatenaHow to use Virtualization Technology in Hatena
How to use Virtualization Technology in HatenaShinji Tanaka
 
271 Ch
271 Ch271 Ch
271 Chanjaan
 
智慧型手機
智慧型手機智慧型手機
智慧型手機Kelun Yang
 
openpearについて@楽天テクノロジーカンファレンス
openpearについて@楽天テクノロジーカンファレンスopenpearについて@楽天テクノロジーカンファレンス
openpearについて@楽天テクノロジーカンファレンスSotaro Karasawa
 
Daum개발플랫폼 및 방법론
Daum개발플랫폼 및 방법론Daum개발플랫폼 및 방법론
Daum개발플랫폼 및 방법론Guedon Jung
 
Mobile Marketing 2008 D2C
Mobile Marketing 2008 D2CMobile Marketing 2008 D2C
Mobile Marketing 2008 D2CKuan Wu
 
Spring Dynamic Modules
Spring Dynamic ModulesSpring Dynamic Modules
Spring Dynamic ModulesHiroki Kondo
 
Ubuntu オススメ・アプリケーション
Ubuntu オススメ・アプリケーションUbuntu オススメ・アプリケーション
Ubuntu オススメ・アプリケーションubon
 
2 구글의 공룡화
2 구글의 공룡화2 구글의 공룡화
2 구글의 공룡화guestba5d5e
 
316 Ch
316 Ch316 Ch
316 Chanjaan
 
Nehalem - подробности
Nehalem - подробностиNehalem - подробности
Nehalem - подробностиit.times.com.ua
 
【13-D-4】 アナタのアプリ性能改善の秘訣、オラクルが教えます!
【13-D-4】 アナタのアプリ性能改善の秘訣、オラクルが教えます!【13-D-4】 アナタのアプリ性能改善の秘訣、オラクルが教えます!
【13-D-4】 アナタのアプリ性能改善の秘訣、オラクルが教えます!devsumi2009
 
A Glance At Web 2.0
A Glance At Web 2.0A Glance At Web 2.0
A Glance At Web 2.0Chiong
 

What's hot (20)

How to use Virtualization Technology in Hatena
How to use Virtualization Technology in HatenaHow to use Virtualization Technology in Hatena
How to use Virtualization Technology in Hatena
 
Let's get into coLinux!
Let's get into coLinux!Let's get into coLinux!
Let's get into coLinux!
 
Ext Ncs 20081029
Ext Ncs 20081029Ext Ncs 20081029
Ext Ncs 20081029
 
91 Ch
91 Ch91 Ch
91 Ch
 
271 Ch
271 Ch271 Ch
271 Ch
 
智慧型手機
智慧型手機智慧型手機
智慧型手機
 
plan
planplan
plan
 
openpearについて@楽天テクノロジーカンファレンス
openpearについて@楽天テクノロジーカンファレンスopenpearについて@楽天テクノロジーカンファレンス
openpearについて@楽天テクノロジーカンファレンス
 
Daum개발플랫폼 및 방법론
Daum개발플랫폼 및 방법론Daum개발플랫폼 및 방법론
Daum개발플랫폼 및 방법론
 
Mobile Marketing 2008 D2C
Mobile Marketing 2008 D2CMobile Marketing 2008 D2C
Mobile Marketing 2008 D2C
 
Spring Dynamic Modules
Spring Dynamic ModulesSpring Dynamic Modules
Spring Dynamic Modules
 
XS Japan 2008 Ganeti Japanese
XS Japan 2008 Ganeti JapaneseXS Japan 2008 Ganeti Japanese
XS Japan 2008 Ganeti Japanese
 
Introduction to Android (in tamil)
Introduction to Android (in tamil)Introduction to Android (in tamil)
Introduction to Android (in tamil)
 
Ubuntu オススメ・アプリケーション
Ubuntu オススメ・アプリケーションUbuntu オススメ・アプリケーション
Ubuntu オススメ・アプリケーション
 
2 구글의 공룡화
2 구글의 공룡화2 구글의 공룡화
2 구글의 공룡화
 
XS Japan 2008 App Data Japanese
XS Japan 2008 App Data JapaneseXS Japan 2008 App Data Japanese
XS Japan 2008 App Data Japanese
 
316 Ch
316 Ch316 Ch
316 Ch
 
Nehalem - подробности
Nehalem - подробностиNehalem - подробности
Nehalem - подробности
 
【13-D-4】 アナタのアプリ性能改善の秘訣、オラクルが教えます!
【13-D-4】 アナタのアプリ性能改善の秘訣、オラクルが教えます!【13-D-4】 アナタのアプリ性能改善の秘訣、オラクルが教えます!
【13-D-4】 アナタのアプリ性能改善の秘訣、オラクルが教えます!
 
A Glance At Web 2.0
A Glance At Web 2.0A Glance At Web 2.0
A Glance At Web 2.0
 

More from Satoru Yoshida

Introduction to the book "Software Testing Starting with Mind Maps"
Introduction to the book "Software Testing Starting with Mind Maps"Introduction to the book "Software Testing Starting with Mind Maps"
Introduction to the book "Software Testing Starting with Mind Maps"Satoru Yoshida
 
AnsibleおよびDockerで始めるInfrastructure as a Code
AnsibleおよびDockerで始めるInfrastructure as a CodeAnsibleおよびDockerで始めるInfrastructure as a Code
AnsibleおよびDockerで始めるInfrastructure as a CodeSatoru Yoshida
 
How to use Transformation Advisor in order to migrate Websphere Application S...
How to use Transformation Advisor in order to migrate Websphere Application S...How to use Transformation Advisor in order to migrate Websphere Application S...
How to use Transformation Advisor in order to migrate Websphere Application S...Satoru Yoshida
 
Container related technologies and how to start it コンテナー関連技術の概要と取り組む方法について
Container related technologies and how to start it コンテナー関連技術の概要と取り組む方法についてContainer related technologies and how to start it コンテナー関連技術の概要と取り組む方法について
Container related technologies and how to start it コンテナー関連技術の概要と取り組む方法についてSatoru Yoshida
 
Invitation to development tools オープン系開発ツールへのいざない
Invitation to development tools オープン系開発ツールへのいざないInvitation to development tools オープン系開発ツールへのいざない
Invitation to development tools オープン系開発ツールへのいざないSatoru Yoshida
 
Watson info in think2019 サンフランシスコで聞いてきた Watson 最新情報
Watson info in think2019 サンフランシスコで聞いてきた Watson 最新情報Watson info in think2019 サンフランシスコで聞いてきた Watson 最新情報
Watson info in think2019 サンフランシスコで聞いてきた Watson 最新情報Satoru Yoshida
 
Comparison rice and milk products between Japan and Kyrgyz 日本とキルギスの稲作形態および乳製品...
Comparison rice and milk products between Japan and Kyrgyz 日本とキルギスの稲作形態および乳製品...Comparison rice and milk products between Japan and Kyrgyz 日本とキルギスの稲作形態および乳製品...
Comparison rice and milk products between Japan and Kyrgyz 日本とキルギスの稲作形態および乳製品...Satoru Yoshida
 
Zend framework 3 と zend expressive の話
Zend framework 3 と zend expressive の話Zend framework 3 と zend expressive の話
Zend framework 3 と zend expressive の話Satoru Yoshida
 
Introducing Zend Studio 10 Japanese Edition
Introducing Zend Studio 10 Japanese EditionIntroducing Zend Studio 10 Japanese Edition
Introducing Zend Studio 10 Japanese EditionSatoru Yoshida
 

More from Satoru Yoshida (9)

Introduction to the book "Software Testing Starting with Mind Maps"
Introduction to the book "Software Testing Starting with Mind Maps"Introduction to the book "Software Testing Starting with Mind Maps"
Introduction to the book "Software Testing Starting with Mind Maps"
 
AnsibleおよびDockerで始めるInfrastructure as a Code
AnsibleおよびDockerで始めるInfrastructure as a CodeAnsibleおよびDockerで始めるInfrastructure as a Code
AnsibleおよびDockerで始めるInfrastructure as a Code
 
How to use Transformation Advisor in order to migrate Websphere Application S...
How to use Transformation Advisor in order to migrate Websphere Application S...How to use Transformation Advisor in order to migrate Websphere Application S...
How to use Transformation Advisor in order to migrate Websphere Application S...
 
Container related technologies and how to start it コンテナー関連技術の概要と取り組む方法について
Container related technologies and how to start it コンテナー関連技術の概要と取り組む方法についてContainer related technologies and how to start it コンテナー関連技術の概要と取り組む方法について
Container related technologies and how to start it コンテナー関連技術の概要と取り組む方法について
 
Invitation to development tools オープン系開発ツールへのいざない
Invitation to development tools オープン系開発ツールへのいざないInvitation to development tools オープン系開発ツールへのいざない
Invitation to development tools オープン系開発ツールへのいざない
 
Watson info in think2019 サンフランシスコで聞いてきた Watson 最新情報
Watson info in think2019 サンフランシスコで聞いてきた Watson 最新情報Watson info in think2019 サンフランシスコで聞いてきた Watson 最新情報
Watson info in think2019 サンフランシスコで聞いてきた Watson 最新情報
 
Comparison rice and milk products between Japan and Kyrgyz 日本とキルギスの稲作形態および乳製品...
Comparison rice and milk products between Japan and Kyrgyz 日本とキルギスの稲作形態および乳製品...Comparison rice and milk products between Japan and Kyrgyz 日本とキルギスの稲作形態および乳製品...
Comparison rice and milk products between Japan and Kyrgyz 日本とキルギスの稲作形態および乳製品...
 
Zend framework 3 と zend expressive の話
Zend framework 3 と zend expressive の話Zend framework 3 と zend expressive の話
Zend framework 3 と zend expressive の話
 
Introducing Zend Studio 10 Japanese Edition
Introducing Zend Studio 10 Japanese EditionIntroducing Zend Studio 10 Japanese Edition
Introducing Zend Studio 10 Japanese Edition
 

Open Shift 勉強会 20210108

  • 1. Copyright 2020 IGUAZU Corporation OpenShift 勉強会 2021年 1月8日 株式会社イグアス ソリューション事業部 テクニカル推進部
  • 2. Copyright 2020 IGUAZU Corporation ▶ この勉強会では、コンテナを使用した開発は未経験の方向けに、基 礎知識として必要なコンテナおよび Kubernetes の特徴などを紹 介し、最終的に OpenShift の特徴について理解を深めていただく ことを目的としています。 1 初めに
  • 3. Copyright 2020 IGUAZU Corporation ▶仮想化とコンテナについて ▶コンテナを使用した開発の特徴とメリット ▶Kubernetes の概要 ▶OpenShift と Kubernetes の違い ▶Operator の概要 ▶学習リソース紹介 2 目 次
  • 4. Copyright 2020 IGUAZU Corporation 仮想化と コンテナ について 3
  • 5. Copyright 2020 IGUAZU Corporation H/W VM 4 仮想化について Linux Kernel Com, Lib MW Appl A 仮想環境 H/W Linux Kernel Command, Library Middle Ware Appl 物理環境 アプリケーションの稼働率が 低い時もハードウェアを占有 するので、有効活用されてい ないリソースが多い ハードウェアのリソースを分割して複数の仮 想マシンで有効活用 この部分が活用さ れていない _ VM Linux Kernel Com, Lib MW Appl B VM Linux Kernel Com, Lib MW Appl C
  • 6. Copyright 2020 IGUAZU Corporation H/W Linux Kernel Command, Library Middle Ware 5 複数の種類のアプリケーションが同居する環境での問題 Appl A Appl B Appl C 同じプログラミング言語、ミドルウェア、ライブラリ を使用する複数の種類のアプリケーションが動作して いる環境 このアプリケーションだ け、使用するプログラミ ング言語、ライブラリー などをVersion Up したい _
  • 7. Copyright 2020 IGUAZU Corporation H/W 6 コンテナによる環境分離 Linux Kernel + コンテナランタイム Namespace Com, Lib 1.0 MW 1.2 Appl A Namespace Com, Lib 1.1 MW 1.2 Appl B Namespace Com, Lib 1.2 MW 1.3 Appl C コンテナ:アプリケーションを動かすために最小限必要なコマンド、ライブラリなどを アプリケーションと一緒にカプセル化したもの。 Linux kernel 部分は共有するため、コンテナ自体のサイズを小さくすることができます。 環境が分離されているため、使用するプログラミング言語、ミドルウェア、ライブラリ、 コマンドなどの差異をコンテナ単位で管理できます。 Kernel を共有。 名前空間で分離 コンテナ
  • 8. Copyright 2020 IGUAZU Corporation コンテナを使用した 開発の特徴とメリット 7
  • 9. Copyright 2020 IGUAZU Corporation ◼ コンテナ・イメージは軽量で高速起動が可能 ✓ 仮想マシンはOS部分も仮想的に再現するため、ディスクサイズが大きく なります。コンテナは、ディスクサイズを小さくできるため起動が早く なります。 ◼ Infrastructure as Code ✓ インフラ部分からアプリケーションまでの構築作業をコードとして記述 しているため、構築作業を自動化することができるとともに、構築され たコンテナ・イメージの再現性が保たれます。 ◼ Immutable infrastructure ✓ 別々の環境同士で「それぞれ少しづつ違う」ことを避けるためのルール です。 8 コンテナを使用した開発の特徴 8
  • 10. Copyright 2020 IGUAZU Corporation 9 軽量で高速起動を活かす ▶ 特定の曜日、時間帯、季節などに増大する負荷をスケールアウト (次ページ参照)で対応 ▶ アプリケーションの実行環境、開発環境を集約 低負荷時 コンテナ コンテナ 高負荷時 コンテナ コンテナ コンテナ コンテナ H/W Linux Kernel + コンテナランタイム コンテナB コンテナD コンテナF コンテナB コンテナC コンテナF コンテナA コンテナC コンテナF コンテナA コンテナC コンテナE
  • 11. Copyright 2020 IGUAZU Corporation Linux Kernel Linux Kernel Linux Kernel Com, Lib MW 10 参考)処理負荷の増加に対応する方法の用語 Appl 用語 スケールアウト スケールアップ 処理負荷の増加に対 応する方法 サーバーの台数を増やす サーバーの性能 (CPU、メモリなど)を 増強する メリット 複数台のサーバーで処理を分散してい るので、そのうちの一台が故障しても サービスを継続可能 コンテンツの更新は一台だけで行えばよ いので運用管理が容易 Com, Lib MW Appl Com, Lib MW Appl Linux Kernel Command, Library Middle Ware Appl 物理・仮想環境の場合は Linux Kernel 部分も増加 コンテナの場合は、Linux Kernel 部分を共有
  • 12. Copyright 2020 IGUAZU Corporation ▶ 毎日、毎月、サービス増強時などインフラ構築の作業を自動化 ▶ 一旦作成した環境は変更しない・変更を起こさせないようにし、変 更したい場合は新しいイメージを作るようにします。 11 Infrastructure as Code / Immutable infrastructure Webアプリ 開発端末 Webアプリ 開発端末 Webアプリ 開発端末 Webアプリ 開発端末 インフラ担当 手作業 フレームワークの Version が違う 人的ミス防止 Apache の設定が違う 同一のコンテナ・イメージを使用
  • 13. Copyright 2020 IGUAZU Corporation 12 Dockerfile の例 FROM centos:7 USER root LABEL title="python3" SHELL [“/bin/bash”, “-c”] # デフォルトシェル指定 WORKDIR /root # ホームディレクトリに移動 RUN yum -y update && yum -y install readline-devel zlib-devel bzip2-devel openssl-devel gcc gcc-c++ && localedef -f UTF-8 -i ja_JP ja_JP.UTF-8 ENV LANG="ja_JP.UTF-8" LANGUAGE="ja_JP:ja" ¥ LC_ALL="ja_JP.UTF-8“ (以下略) … Linux のコンソールでコマンドを叩きながらミドルウェアなどをイン ストールしたことがあるかたは、すぐ書けるようになります!
  • 14. Copyright 2020 IGUAZU Corporation Kubernetes の概要 13
  • 15. Copyright 2020 IGUAZU Corporation コンテナーの運用実行と管理を行うオーケストレーションツール ▶ コンテナーが大量になってくると管理しきれない部分をカバー ✓ スケーリング*・オートスケーリング* ✓ 負荷分散 ✓ 死活監視 ✓ 障害時のセルフヒーリング* ✓ スケジューリングetc… ▶ リソース管理 ✓ CPU・メモリー 、永続的なストレージ、 ネットワーク、 クレデ ンシャル情報etc… ▶ 宣言的設定モデル ✓ 「あるべき状態*」を記述すると、それを実現し続けようとして くれる 14 Kubernetes の概要(*の語句は次ページで説明)
  • 16. Copyright 2020 IGUAZU Corporation ▶ スケーリング ✓ 負荷分散や耐障害性のため、コンテナのレプリカをデプロイする機能 ▶ オートスケーリング ✓ 負荷に応じてコンテナのレプリカ数を自動的に増減する機能 ▶ セルフヒーリング ✓ コンテナのプロセス停止などを監視して、コンテナを再デプロイする機能 ▶ スケジューリング ✓ コンテナ・デプロイ先の Kubernetes Node を決定するステップ。CPU・ メモリーの空き、ストレージの種類などを条件にすることができます。 ▶ あるべき状態 ✓ yaml 形式や JSON形式で宣言することができます。例えばレプリカ数も 宣言でき、その個数に達するまでコンテナのレプリカをデプロイします。 15 参考)語句説明
  • 17. Copyright 2020 IGUAZU Corporation Linux Kernel +コンテナランタイム コンテナ 16 Kubernetes クラスタ Node Master Node Node Node コンテナ コンテナ コンテナ クラスタの中に仮想的なクラスタ (Namespace)を作成することもできます 後述の OpenShift の Project ≒ Namespace となります。 Node コンテナ Node Node Namespace コンテナのデプロイ先決定 (スケジューリング) コンテナ デプロイ Namespace Linux Kernel +コンテナランタイム
  • 18. Copyright 2020 IGUAZU Corporation OpenShift と Kubernetes の違い 17
  • 19. Copyright 2020 IGUAZU Corporation Kubernetesとの互換性を維持しながら、CI/CD機能を強化。 開発者に代わってビルド、リポジトリ登録、デプロイを自動実行できます。 18 OpenShift と Kubernetes の違い OPENSHIFT 機能拡張 略語 CI/CD : Continuous Integration / Continuous Delivery 継続的開発と継続的デリバリー H/W Linux Kernel + コンテナランタイム H/W Linux Kernel + コンテナランタイム Kubernetesを利用 するコンテナ Kubernetesを利用 するコンテナ Kubernetesの標準機能で構築した コンテナはどちらでも動作可能 OpenShift の CI/CDを利用する コンテナ
  • 20. Copyright 2020 IGUAZU Corporation 19 Kubernetes に簡便性をプラス Kubernetes と比べ、OpenShift には下記のような違いがあります。 ⚫ デプロイ ✓ ソースコードからコンテナ作成とデプロイまでの自動化 (CI/CD パイプライン) ⚫ 管理 ✓ Webコンソールとコマンドラインの両方から操作可能。 ✓ 実行状態のメトリックス監視とログ分析も提供 ⚫ 運用 ✓ オートスケーリングなど、運用の自動化を作りこみできるようになります。 ⚫ セキュリティ ✓ Project単位で簡単に管理可能 (OpenShift のProject は、Kubernetes の Namespace をベースにしています)
  • 21. Copyright 2020 IGUAZU Corporation 20 OpenShift の全体像 ⚫ Cluster services ✓ 監視、ロギングなど、クラスタの運用コストを効率化するサービス ⚫ Application services ✓ ミドルウェア、ISV などアプリケーションのサービス ⚫ Developer services ✓ 開発ツール、自動ビルド、CI/CD、IDE など開発の生産性を高めるサービス ⚫ Service mesh ✓ マイクロサービスの運用・開発・テストを簡素化 ⚫ 信頼性の高い Kubernetes 管理 ✓ Operator による自動化レイヤ(後述) ✓ Kubernetes そのもの ✓ RHCOS (Red Hat Enterprise Linux CoreOS) ✓ コンテナ実行に最適化された Linux。コンテナーエンジンとして CRI-O が 組み込まれています。
  • 22. Copyright 2020 IGUAZU Corporation Operator の概要 21
  • 23. Copyright 2020 IGUAZU Corporation ▶ Operatorは、サービス運用者の普段の作業をコード化して、人の代わりに オペレーションさせることを目指すフレームワーク。 ▶ 下記のような、Kubernetes の「あるべき状態」の制約を解決することを 目指します。 ✓ 静的なコンテンツ、RESTful APIなど、ステートレスなアプリケーションで使 用することが前提。データ欠損の回避、可用性、スケール時の柔軟な設定変更 などはできない ✓ 例えば、コンテナのレプリカをデプロイするときも、コンテナ・プロセス の停止を検知してコンテナを再デプロイするときも、まっさらな状態のコ ンテナをデプロイしてしまう。 ✓ そのため状態を維持しながら処理する必要のあるストートフル・アプリケー ションにはコンテナ化は向かないと言われていた。 ✓ 例えばデータベースをコンテナ化した場合、直前の状態を維持しながらス ケーリング、障害からの回復などは Kubernetes だけでは行えない。 22 Operator とは?
  • 24. Copyright 2020 IGUAZU Corporation ▶ 可能な作業により、5種類のフェーズに分類されます。成熟度ととも言い ます。(Vが最高、I が最低) ▶ Operator の開発には、Ansible およびGo を使用できます。フェーズ I の 開発のみ Helmが使用できます。 ▶ 開発フレームワークとして、下記の3種類が使用できます。 ➢ Operator SDK、Kubebuilder、Metacontroller 23 Operator の分類 フェーズ 可能な作業 V オートスケーリング対応 変化に合わせた設定のチューニング IV メトリクス取得、アラート対応など III アプリケーションのライフサイクル対応 データのバックアップ、リカバリ II パッチ適用、 バージョン・アップグレード I 基本インストール(動的なアプリケーション展開、設定管理)
  • 25. Copyright 2020 IGUAZU Corporation ▶ テスト・検証状況により4種類に分類されます。 ▶ OperatorHub.io には、118の提供者が作成した174種類のOperator が登 録されています。(2021/1/7現在) 24 Operator の分類 分類 テスト サポート Certified サポート検証、品質検証 ISV とのパートナーシップにより サポート (Red Hat 製品の Operator は、Red Hat 社サポート) Operator Catalog in OpenShift OpenShiftへのインストール可否テ スト コミュニテイー OperatorHub.io 登録済 簡単な動的テスト コミュニテイー その他、コミュニテイーや ISV が作成したOperator で OperatorHub.io 未登録のも の - -
  • 26. Copyright 2020 IGUAZU Corporation 学習リソース紹介 25
  • 27. Copyright 2020 IGUAZU Corporation ▶ 参考書籍 ➢ さわって学ぶクラウドインフラ docker基礎からのコンテナ構築 ➢ Docker実践ガイド 第2版 ➢ Docker/Kubernetes実践コンテナ開発入門 ➢ 15Stepで習得Dockerから入るKubernetes コンテナ開発からK8s本番運用まで ➢ Kubernetes完全ガイド クラウドネイティブのキーテ クノロジー 第2版 ➢ ソフトウエア デザイン 2020年 03月号 (特集:徹底解説 OpenShift 4) ➢ Red Hat OpenShift4入門 Enterprise Kubernetesへのファース トステップ 26 学習リソース紹介
  • 28. Copyright 2020 IGUAZU Corporation ▶ 引用資料 ➢ IBM Dojo : OpenShift入門 (2020/10/07) ▶ 関連イベント例 ➢ Infra Study Meetup #10「202X年のインフラ技術」 (2021/01/26 夜 予定) ➢ Kubernetes Meetup Tokyo (2021/1/21 夜に第38回予定) ➢ KubeFest Tokyo 2020 (2020/06/13開催済) ➢ OpenShift Community Japan (2020/12/10 に第11回開催済) 27 学習リソース紹介
  • 29. Copyright 2020 IGUAZU Corporation 28 更新履歴 日付 バージョン 更新内容 2020/12/22 0.1 イグアス ソリューション事業部テクニカル推進部作成 2021/01/08 1.0 1/7時点の情報でupdate