SlideShare ist ein Scribd-Unternehmen logo
1 von 33
Downloaden Sie, um offline zu lesen
OpenShift v3
Technical Introduction
レッドハット株式会社
中井悦司 / Etsuji Nakai
Senior Solution Architect
and Cloud Evangelist
v1.3 2016/01/20
2
OpenShift v3 Technical Introduction
自己紹介
 中井悦司(なかいえつじ)
– Twitter @enakai00
 日々の仕事
– Senior Solution Architect and
Cloud Evangelist at Red Hat K.K.
企業システムでオープンソースの活用を希望される
お客様を全力でご支援させていただきます。
 昔とった杵柄
– 素粒子論の研究(超弦理論とか)
– 予備校講師(物理担当)
– インフラエンジニア(Unix/Linux専門)
好評発売中!
3
OpenShift v3 Technical Introduction
Contents
 Dockerの機能とユースケースの整理
 OpenShiftの内部構造
 OpenShiftのイメージ管理機能
 アプリケーションのデプロイ方法
 ユースケースイメージ
 参考資料
Dockerの機能とユースケースの整理
5
OpenShift v3 Technical Introduction
Dockerが提供する基本機能
Dockerfile
① Dockerイメージを自動作成
OSイメージ
アプリケーション
ライブラリー
アプリケーション
フレームワーク
イメージの
作成手順を記載
Docker
イメージ
OS上にインストール可能な
ものはすべてイメージ化可能
② Dockerイメージを保存・公開
③ Dockerサーバーに
 イメージを配布・実行
6
OpenShift v3 Technical Introduction
アプリケーション開発環境でのDockerの利用例
 Dockerイメージを用いて、多数の開発者に同一の開発環境を提供
– テストサーバーにも同じ環境を提供することで、「環境差異による問題発生」を防止
 Dockerfileからイメージを自動作成するので、イメージの修正・変更・再配布が容易
– 開発コードのように、実行環境を「バージョン管理」可能に
フレームワーク
データベース
Dockerfile
Dockerイメージを
自動作成
開発・テスト環境に
Dockerイメージを配布
開発コードを
コードリポジトリー
にプッシュ
CIツールにより
インテグレーション
テストを自動実行
イメージをバージョン管理
する仕組みは用意が必要
7
OpenShift v3 Technical Introduction
フレームワーク
データベース
アプリケーション
フレームワーク
ライブラリー
Dockerイメージを
本番環境に展開!
 テストが実施された「アプリケーション環境」をそのままDockerイメージに固め
て、本番環境にデプロイすることで、アプリケーション配布を容易に
サービス環境へのDocker適用のメリット
8
OpenShift v3 Technical Introduction
Docker利用パターン(その1):
アプリケーションのデプロイを安全/簡単に
 仮想マシン上のアプリケーションをコンテナイメージ化することで、アプリケー
ションのデプロイを安全/簡単にします。
– 「1仮想マシンに1アプリケーション」という配置はあえて変更しないことで、運用方
法やアプリケーションのデザインへの影響を最小限に留めます。
– 外部からアプリケーションに接続するユーザー/外部システムは、アプリケーションが
コンテナ化されていることを意識する必要がありません。
IaaS/仮想化基盤
仮想マシン
(ゲストOS)
アプリA
・・・
・・・
これまでの環境
アプリケーションの
コンテナイメージ化
IaaS/仮想化基盤
仮想マシン
(Dockerホスト)
アプリA
(コンテナ
 イメージ)
仮想マシン
(Dockerホスト)
アプリB
(コンテナ
 イメージ)
・・・
・・・
仮想マシン
(ゲストOS)
アプリB
9
OpenShift v3 Technical Introduction
Docker利用パターン(その2):
サーバーの境界を意識しないアプリケーションデプロイ
 コンテナーの配置先を自動的に振り分ける仕組みを用いて、複数ホストを「1つ
のコンピューティングリソース」として活用します。
 アプリケーションを機能単位に分割してコンテナ化することで、さらなるメリッ
トが得られます。
– 必要な機能を負荷に応じてオートスケールします。
– 機能単位でコンテナーを入れ替えることにより、稼働中のアプリケーションの動的な機
能変更が可能になります。
※ Dockerはあくまでイメージ配布の仕組みに利用しているだけで、上位のオーケスト   
 レーション機能は別途用意が必要
Dockerホスト Dockerホスト Dockerホスト ・・・
複数ホストを束ねて「1つのコンピュータ」として活用
マイクロサービス化
アプリケーション
10
OpenShift v3 Technical Introduction
OpenShiftが提供する主な追加機能
 Dockerイメージのバージョン管理
– イメージストリームとイメージビルドシステム
– 「開発環境」そのものを開発可能に
 同一の開発環境のクラウド上への配布
– テンプレート機能
– それぞれの開発者に「自分専用」の開発/検証環境を提供
 マルチテナントでの利用
– プロジェクト単位でのネームスペースの分割
– 開発機能(ブランチ)単位で独立した開発/検証環境を提供
 サーバーの境界を意識しないコンテナのデプロイ
– Kubernetesによるコンテナのオーケストレーション
– マイクロサービス型アプリケーションのDevOps環境を実現
OpenShiftの内部構造
12
OpenShift v3 Technical Introduction
OpenShiftの基本サーバー構成
etcd
・・・
バックエンドデータベース(KVS)
マスター
ノード
・・・
クラスタ構成で
負荷分散可能
Docker Docker Docker
必要に応じて
追加可能
 1台のマスターから複数のノードを管理するシンプルなアーキテクチャーです。
– 各ノードのエージェントとマスターが直接に通信します。
– バックエンドデータベースは、etcd(分散KVS)を使用します。
– OpenShiftの利用者(CLI)は、マスターが公開するAPIにアクセスします。
利用者(CLI)
13
OpenShift v3 Technical Introduction
OpenShiftのネットワーク構成
etcd マスター
オーバーレイネットワーク
として構成
・・・
 物理的には、全サーバーを共通のサービスネットワークに接続するだけで利用可能です。
– コンテナ間通信用の内部ネットワークは、オーバーレイネットワークとして構成されます。
– 外部からのアクセスは、ルータ用コンテナを経由します。
• ルータがあるノードの80番ポート宛のパケットは、iptablesでルーターに転送されます。ルータ
は、URLベースで接続先のコンテナを決定します。
サービスネットワーク
ノード
内部ネットワーク
コンテナ コンテナ
ブリッジ
コンテナ コンテナ
ルータ
ブリッジ
ノード
14
OpenShift v3 Technical Introduction
「サービス」によるコンテナ間接続
 コンテナで起動したアプリケーションに対して、「サービス」を定義すると、内部ネット
ワーク上の「サービスアドレス」が割り当てられます。
– 他のコンテナから「サービスアドレス」にアクセスすると、対応するコンテナにパケットが転送され
ます。(複数のコンテナがある場合は、ラウンドロビンで負荷分散が行われます。)
– 事前に「サービス」を定義した状態で、新規のコンテナを起動すると、サービスのIPアドレス/ポー
トを示す環境変数が自動的にセットされます。
# oc get service
NAME CLUSTER_IP EXTERNAL_IP PORT(S) SELECTOR AGE
etherpad-lite 172.30.14.201 <none> 9001/TCP deploymentconfig=etherpad-lite 7d
mysql 172.30.86.51 <none> 3306/TCP name=mysql 7d
apiVersion: v1
kind: Service
metadata:
name: mysql
spec:
ports:
- name: mysql
port: 3306
protocol: TCP
targetPort: 3306
selector:
name: mysql-pod
sessionAffinity: None
mysql-service.yml
MYSQL_SERVICE_HOST=172.30.86.51
MYSQL_SERVICE_PORT_MYSQL=3306
サービス定義ファイルの例
割り当てられた
サービスアドレス
新規のコンテナに
セットされる環境変数の例
15
OpenShift v3 Technical Introduction
「ルーティング」による外部接続
 「サービス」に加えて「ルーティング」を定義すると、外部からのURLアクセスが可能にな
ります。
– HAProxyが稼働するルータコンテナがURLベースのルーティング処理を行ないます。
– 下記の例では、「*.oso.example.com」が「ルータコンテナが稼働するノードのパブリックIP」に解
決されるように外部DNSが事前設定されています。
– 複数のルータコンテナを起動して、DNSラウンドロビンで負荷分散することも可能です。
# oc get route
NAME HOST/PORT PATH SERVICE
etherpad-lite-route eplite.project01.oso.example.com etherpad-lite
apiVersion: v1
kind: Route
metadata:
name: etherpad-lite-route
spec:
host: eplite.project01.oso.example.com
to:
kind: Service
name: etherpad-lite
etherpad-lite_route.yml
ルーティング定義ファイルの例
アプリケーションのURL
16
OpenShift v3 Technical Introduction
「サービス」と「ルーティング」のパケット経路
 「サービス」として定義されたIPアドレス宛のパケットは、iptables設定によって、ノード
上の「openshift-nodeエージェント」に転送されます。
– openshift-nodeエージェントは、実際にサービスを提供するコンテナにラウンドロビンでパケットを
転送します。
 「ルーティング」を定義すると、ルータコンテナ上のHAProxyに、対応する設定がなされる
ことで、URLベースでのルーティングが実施されます。
openshift-node
エージェント
オーバーレイネットワーク
ブリッジ
コンテナ コンテナ
ルータ
コンテナ
iptables
iptables
DNS
ラウンドロビン
ラウンド
ロビン リースト
コネクション
コンテナ間のアクセス
外部からのアクセス
openshift-node
エージェント
ブリッジ
コンテナ コンテナ
ルータ
コンテナ
iptables
iptables
ラウンド
ロビン リースト
コネクション
OpenShiftのイメージ管理機能
18
OpenShift v3 Technical Introduction
OpenShiftにおけるイメージ管理
 Docker Hub、もしくは、Dockerホストローカルのイメージは、「ユーザー名/リポジトリ名
: タグ」という名称で識別されます。
– タグによるバージョン管理が可能ですが、自由に付け替えができるため、利用者自身が意識的にタグ
名を操作する必要があります。
 OpenShiftで取り扱うイメージは、専用の内部レジストリーに保存して、独自のバージョン
管理を行ないます。
– 内部レジストリーの中では、「プロジェクト名/リポジトリ名@<sha256ハッシュ>」という名称でイ
メージを識別します。ハッシュ値が、GitのコミットIDに相当するユニークな識別子になります。
– バージョン情報(イメージが更新された時系列)については、別途、「イメージストリーム」を定義
して、そちらで管理します。
# oc get is
NAME DOCKER REPO TAGS UPDATED
centos7 172.30.84.64:5000/project01/centos7 latest 7 days ago
etherpad-lite 172.30.84.64:5000/project01/etherpad-lite latest 7 days ago
nodejs-base 172.30.84.64:5000/project01/nodejs-base latest 7 days ago
# oc describe is etherpad-lite
Name: etherpad-lite
Created: 7 days ago
Labels: <none>
Annotations: openshift.io/image.dockerRepositoryCheck=2016-01-03T09:53:25Z
Docker Pull Spec: 172.30.84.64:5000/project01/etherpad-lite
Tag Spec Created PullSpec
latest <pushed> 5 days ago 172.30.84.64:5000/project01/etherpad-lite@sha256:9b5e7f9fc58...
7 days ago 172.30.84.64:5000/project01/etherpad-lite@sha256:05c4600b8ab...
project01のイメージストリーム一覧
イメージストリーム
「etherpad-lite」
に含まれるイメージ
19
OpenShift v3 Technical Introduction
OpenShiftにおけるイメージ管理
 イメージストリームには、次のような際に新しいバージョンのイメージが登録されます。
– 内部レジストリーにイメージをPushした時
• プッシュ時の「プロジェクト名/レジストリー名」から、対応するプロジェクトの(レジスト
リーと同名の)イメージストリームに新バージョンとして登録されます。
– OpenShiftのイメージビルドシステムを用いて、新しいイメージをビルドした時
• イメージビルドシステムは、GitHubで公開したDockerfile、アプリケーションのソースコードな
どを用いて、新しいイメージを作成、内部レジストリーに保存する機能です。
# docker pull centos:7
# docker login -u enakai -e enakai@example.com -p $(oc whoami -t) registry.oso.example.com
# docker tag docker.io/centos:7 registry.oso.example.com/project01/centos7:latest
# docker push registry.oso.example.com/project01/centos7:latest
# oc get is
NAME DOCKER REPO TAGS UPDATED
centos7 172.30.84.64:5000/project01/centos7 latest 7 seconds ago
# oc describe is centos7
ame: centos7
Created: 24 seconds ago
Labels: <none>
Annotations: openshift.io/image.dockerRepositoryCheck=2015-12-28T11:32:19Z
Docker Pull Spec: 172.30.84.64:5000/project01/centos7
Tag Spec Created PullSpec
latest <pushed> 24 seconds ago 172.30.84.64:5000/project01/centos7@sha256:b04ac...
CentOS7のイメージを
内部レジストリーに
Pushする例
20
OpenShift v3 Technical Introduction
OpenShiftのイメージビルドシステム
 イメージビルドシステムは、「ビルド設定(BuildConfig)」を定義して利用します。次は、
GitHubで公開したDockerfile(および、ビルドに必要な関連ファイル)からイメージをビル
ドする設定の例です。
apiVersion: v1
kind: BuildConfig
metadata:
name: nginx-sample
spec:
output:
to:
kind: ImageStreamTag
name: nginx-sample:latest
source:
git:
uri: https://github.com/enakai00/openshift_nginx_sample
type: Git
strategy:
dockerStrategy:
from:
kind: ImageStreamTag
name: centos7:latest
type: Docker
triggers:
- imageChange: {}
type: ImageChange
nginx-sample_bc.yml
– Docerfileの「FROM:」行は、イメー
ジストリーム「centos7」のイメー
ジで置き換えられます。
– 作成されたイメージは、内部レジス
トリーに保存された後、イメージス
トリーム「nginx-sample」に自動登
録されます。
– 「start-build」コマンドを明示的に
実行する他に、イメージストリーム
「centos7」のイメージが更新され
たタイミング、GitHubに新たな
Commitが行われたタイミングでも
自動的にビルドが実行可能です。
アプリケーションのデプロイ方法
22
OpenShift v3 Technical Introduction
イメージストリームからのコンテナのデプロイ
 「デプロイ設定(DeploymentConfig)」を用いて、イメージストリームに登録したイメー
ジからコンテナをデプロイします。
apiVersion: v1
kind: DeploymentConfig
metadata:
name: nginx-sample
spec:
template:
metadata:
labels:
name: nginx-sample
spec:
containers:
- name: nginx-sample-latest
image: nginx-sample:latest
ports:
- containerPort: 8080
protocol: TCP
replicas: 4
selector:
name: nginx-sample
triggers:
- type: ImageChange
imageChangeParams:
automatic: true
containerNames:
- nginx-sample-latest
from:
kind: ImageStreamTag
name: nginx-sample:latest
- type: ConfigChange
nginx-sample_dc.yml
– レプリカ数で指定した数のコンテナが起動します。
先に説明した「サービス」の定義により、複数コン
テナに対するロードバランスが行われます。
– イメージストリームに新しいイメージが登録される
と、自動で再デプロイを実施することができます。
再デプロイ時は、新バージョンのコンテナを追加起
動して、新しいセッションから新バージョンに振り
分けるといった動作が可能です。
23
OpenShift v3 Technical Introduction
マルチテナント機能を利用したDevOpsの実現
 開発/テストとサービス用でプロジェクトを分割することで、OpenShift上でのDevOps環境
が実現できます。
内部レジストリー
ImageStream
BuildConfig
Deployment
Config
Route
Service Service
エイリアス
テスト済みイメージを
エイリアスで参照
Deployment
Config
開発/テスト
プロジェクト
サービス用
プロジェクト
イメージの
実体を保存アプリケーションの元ネタ
(Dockerfile/ソースコード)
を保存
Route
RHEL7
MyApp MyApp
24
OpenShift v3 Technical Introduction
設定テンプレートによる環境構築
 一連の設定ファイル(「イメージストリーム」「ビルド設定」「デプロイ設定」「サービ
ス」「ルーティング」)をテンプレート化することにより、典型的なアプリケーション環境
/開発環境が自動構築できるようになります。
# oc get -n openshift template
NAME DESCRIPTION PARAMETERS OBJECTS
cakephp-example An example CakePHP application with no database 14 (8 blank) 5
cakephp-mysql-example An example CakePHP application with a MySQL database 14 (3 blank) 7
dancer-example An example Dancer application with no database 7 (4 blank) 5
dancer-mysql-example An example Dancer application with a MySQL database 13 (4 blank) 7
django-example An example Django application with no database 12 (9 blank) 5
django-psql-example An example Django application with a PostgreSQL database 12 (4 blank) 7
jenkins-ephemeral Jenkins service, without persistent storage. WARNING: Any data stored will be... 2 (all set) 3
jenkins-persistent Jenkins service, with persistent storage. 3 (all set) 4
logging-deployer-template Template for deploying everything needed for aggregated logging. Requires clu... 19 (10 blank) 1
metrics-deployer-template Template for deploying the required Metrics integration. Requires cluster-adm... 9 (1 blank) 1
mongodb-ephemeral MongoDB database service, without persistent storage. WARNING: Any data store... 5 (3 generated) 2
mongodb-persistent MongoDB database service, with persistent storage. Scaling to more than one r... 6 (3 generated) 3
mysql-ephemeral MySQL database service, without persistent storage. WARNING: Any data stored... 4 (2 generated) 2
mysql-persistent MySQL database service, with persistent storage. Scaling to more than one rep... 5 (2 generated) 3
nodejs-example An example Node.js application with no database 11 (8 blank) 5
nodejs-mongodb-example An example Node.js application with a MongoDB database 11 (3 blank) 7
postgresql-ephemeral PostgreSQL database service, without persistent storage. WARNING: Any data st... 4 (2 generated) 2
postgresql-persistent PostgreSQL database service, with persistent storage. Scaling to more than on... 5 (2 generated) 3
rails-postgresql-example An example Rails application with a PostgreSQL database 15 (3 blank) 7
デフォルトで用意される
テンプレートの例
25
OpenShift v3 Technical Introduction
テンプレートとGUIの組み合わせによるPaaSの提供
 テンプレート機能とGUIを組み合わせることで、いわゆる「PaaS」環境を提供することも可
能です。
26
OpenShift v3 Technical Introduction
複数コンテナが連携するシステムの構築例
 下記のBlog記事に従って、MySQL + node.jsのアプリケーション環境を構築してみます。
– OpenShift OriginによるDockerイメージ管理(4)〜S2Iによるイメージビルド
• http://enakai00.hatenablog.com/entry/2016/01/03/174854
– OpenShift OriginによるDockerイメージ管理(5)〜複数コンテナの連携設定
• http://enakai00.hatenablog.com/entry/2016/01/03/200920
ユースケースイメージ
28
OpenShift v3 Technical Introduction
従来のPaaSの利用形態
アプリ開発者
開発環境
テンプレート
新しいコードをPushすると
開発・テスト環境に展開してビルド
開発したコードの
稼働確認
テンプレートそのものの
メンテナンスはどうする?
開発中に開発環境の
アップデートは可能?
開発が終わったアプリは
どうやって本番展開する?
29
OpenShift v3 Technical Introduction
OpenShiftにおける「開発環境」のメンテナンス機能
OSイメージ
開発環境イメージ
アプリケーション
イメージ
アプリ開発者
開発環境管理者
セキュリティ問題等の修正が入った
新しいOSイメージをアップロード
Dockerfileを用いて
開発環境イメージを更新
アプリケーションを
自動ビルドして機能テスト
開発環境イメージ
修正・テスト済みの
開発環境イメージを参照
アプリケーション
イメージ
新しいコードをPushすると
アプリケーションイメージを自動更新
30
OpenShift v3 Technical Introduction
マルチテナントによる機能別の並行開発
アプリ開発者
開発環境イメージ
アプリケーション
イメージ
 開発機能ごとにコードのブランチを分けて、各ブラ
ンチ専用の開発環境を個別に用意します。
アプリ開発者
開発環境イメージ
アプリケーション
イメージ
テスト担当者
開発環境イメージ
アプリケーション
イメージ
マスターブランチ
開発済み機能をマージした
マスターブランチのコードを検証
機能Aの開発
機能Bの開発
開発した機能を
マージ
開発した機能を
マージ
参考資料
32
OpenShift v3 Technical Introduction
参考資料
 OpenShift関連情報リンク集
– http://enakai00.hatenablog.com/entry/2016/01/03/211029
 OpenShift v3 Internal networking details
– http://www.slideshare.net/enakai/openshift-45465283
 RHEL7.1でKubernetesを実体験(概要編)
– http://jp-redhat.com/openeye_online/column/nakai/902/
 RHEL7.1でKubernetesを実体験(構築編)
– http://jp-redhat.com/openeye_online/column/nakai/991/
EMPOWER PEOPLE,
EMPOWER ENTERPRISE,
OPEN INNOVATION.

Weitere ähnliche Inhalte

Was ist angesagt?

インフラエンジニアのこれから ~Red Hatの描くLinuxの今後とクラウド~(第ニ部)
インフラエンジニアのこれから ~Red Hatの描くLinuxの今後とクラウド~(第ニ部)インフラエンジニアのこれから ~Red Hatの描くLinuxの今後とクラウド~(第ニ部)
インフラエンジニアのこれから ~Red Hatの描くLinuxの今後とクラウド~(第ニ部)Etsuji Nakai
 
H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門
H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門
H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門Etsuji Nakai
 
OpenStackをさらに”使う”技術 - OpenStack&Docker活用テクニック
OpenStackをさらに”使う”技術 - OpenStack&Docker活用テクニックOpenStackをさらに”使う”技術 - OpenStack&Docker活用テクニック
OpenStackをさらに”使う”技術 - OpenStack&Docker活用テクニックEtsuji Nakai
 
Aeolus Conductorによる複数環境へのデプロイ自動化
Aeolus Conductorによる複数環境へのデプロイ自動化Aeolus Conductorによる複数環境へのデプロイ自動化
Aeolus Conductorによる複数環境へのデプロイ自動化Etsuji Nakai
 
Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要
Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要
Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要Etsuji Nakai
 
RHEL Atomic Hostのご紹介
RHEL Atomic Hostのご紹介RHEL Atomic Hostのご紹介
RHEL Atomic Hostのご紹介Etsuji Nakai
 
RDOとPackstackのご紹介
RDOとPackstackのご紹介RDOとPackstackのご紹介
RDOとPackstackのご紹介Etsuji Nakai
 
DevOpsにおける組織に固有の事情を どのように整理するべきか
DevOpsにおける組織に固有の事情を どのように整理するべきかDevOpsにおける組織に固有の事情を どのように整理するべきか
DevOpsにおける組織に固有の事情を どのように整理するべきかEtsuji Nakai
 
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No2
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No2OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No2
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No2Etsuji Nakai
 
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No2
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No2OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No2
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No2Etsuji Nakai
 
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:ハンズオンNo1
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:ハンズオンNo1OpenStackクラウド基盤構築ハンズオンセミナー 第2日:ハンズオンNo1
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:ハンズオンNo1Etsuji Nakai
 
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo2
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo2OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo2
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo2Etsuji Nakai
 
ネットワークプログラマビリティ勉強会 これまでのおさらい
ネットワークプログラマビリティ勉強会 これまでのおさらいネットワークプログラマビリティ勉強会 これまでのおさらい
ネットワークプログラマビリティ勉強会 これまでのおさらいnpsg
 
OpenStackSDK with Ansible
OpenStackSDK with AnsibleOpenStackSDK with Ansible
OpenStackSDK with AnsibleHideki Saito
 
OCIv2?!軽量高速なイケてる次世代イメージ仕様の最新動向を抑えよう!
OCIv2?!軽量高速なイケてる次世代イメージ仕様の最新動向を抑えよう!OCIv2?!軽量高速なイケてる次世代イメージ仕様の最新動向を抑えよう!
OCIv2?!軽量高速なイケてる次世代イメージ仕様の最新動向を抑えよう!Kohei Tokunaga
 
RHEL7/CentOS7 NetworkManager徹底入門
RHEL7/CentOS7 NetworkManager徹底入門RHEL7/CentOS7 NetworkManager徹底入門
RHEL7/CentOS7 NetworkManager徹底入門Etsuji Nakai
 
環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介Etsuji Nakai
 
Docker活用パターンの整理 ― どう組み合わせるのが正解?!
Docker活用パターンの整理 ― どう組み合わせるのが正解?!Docker活用パターンの整理 ― どう組み合わせるのが正解?!
Docker活用パターンの整理 ― どう組み合わせるのが正解?!Etsuji Nakai
 
入門!Software Defined Network
入門!Software Defined Network入門!Software Defined Network
入門!Software Defined NetworkEtsuji Nakai
 
"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する
"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する
"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解するEtsuji Nakai
 

Was ist angesagt? (20)

インフラエンジニアのこれから ~Red Hatの描くLinuxの今後とクラウド~(第ニ部)
インフラエンジニアのこれから ~Red Hatの描くLinuxの今後とクラウド~(第ニ部)インフラエンジニアのこれから ~Red Hatの描くLinuxの今後とクラウド~(第ニ部)
インフラエンジニアのこれから ~Red Hatの描くLinuxの今後とクラウド~(第ニ部)
 
H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門
H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門
H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門
 
OpenStackをさらに”使う”技術 - OpenStack&Docker活用テクニック
OpenStackをさらに”使う”技術 - OpenStack&Docker活用テクニックOpenStackをさらに”使う”技術 - OpenStack&Docker活用テクニック
OpenStackをさらに”使う”技術 - OpenStack&Docker活用テクニック
 
Aeolus Conductorによる複数環境へのデプロイ自動化
Aeolus Conductorによる複数環境へのデプロイ自動化Aeolus Conductorによる複数環境へのデプロイ自動化
Aeolus Conductorによる複数環境へのデプロイ自動化
 
Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要
Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要
Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要
 
RHEL Atomic Hostのご紹介
RHEL Atomic Hostのご紹介RHEL Atomic Hostのご紹介
RHEL Atomic Hostのご紹介
 
RDOとPackstackのご紹介
RDOとPackstackのご紹介RDOとPackstackのご紹介
RDOとPackstackのご紹介
 
DevOpsにおける組織に固有の事情を どのように整理するべきか
DevOpsにおける組織に固有の事情を どのように整理するべきかDevOpsにおける組織に固有の事情を どのように整理するべきか
DevOpsにおける組織に固有の事情を どのように整理するべきか
 
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No2
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No2OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No2
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No2
 
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No2
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No2OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No2
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No2
 
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:ハンズオンNo1
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:ハンズオンNo1OpenStackクラウド基盤構築ハンズオンセミナー 第2日:ハンズオンNo1
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:ハンズオンNo1
 
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo2
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo2OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo2
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo2
 
ネットワークプログラマビリティ勉強会 これまでのおさらい
ネットワークプログラマビリティ勉強会 これまでのおさらいネットワークプログラマビリティ勉強会 これまでのおさらい
ネットワークプログラマビリティ勉強会 これまでのおさらい
 
OpenStackSDK with Ansible
OpenStackSDK with AnsibleOpenStackSDK with Ansible
OpenStackSDK with Ansible
 
OCIv2?!軽量高速なイケてる次世代イメージ仕様の最新動向を抑えよう!
OCIv2?!軽量高速なイケてる次世代イメージ仕様の最新動向を抑えよう!OCIv2?!軽量高速なイケてる次世代イメージ仕様の最新動向を抑えよう!
OCIv2?!軽量高速なイケてる次世代イメージ仕様の最新動向を抑えよう!
 
RHEL7/CentOS7 NetworkManager徹底入門
RHEL7/CentOS7 NetworkManager徹底入門RHEL7/CentOS7 NetworkManager徹底入門
RHEL7/CentOS7 NetworkManager徹底入門
 
環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介
 
Docker活用パターンの整理 ― どう組み合わせるのが正解?!
Docker活用パターンの整理 ― どう組み合わせるのが正解?!Docker活用パターンの整理 ― どう組み合わせるのが正解?!
Docker活用パターンの整理 ― どう組み合わせるのが正解?!
 
入門!Software Defined Network
入門!Software Defined Network入門!Software Defined Network
入門!Software Defined Network
 
"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する
"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する
"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する
 

Andere mochten auch

KubernetesとOpenShiftの話
KubernetesとOpenShiftの話KubernetesとOpenShiftの話
KubernetesとOpenShiftの話Kazuto Kusama
 
試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShift試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShiftEtsuji Nakai
 
新しいOpenShiftのしくみを調べてみた
新しいOpenShiftのしくみを調べてみた新しいOpenShiftのしくみを調べてみた
新しいOpenShiftのしくみを調べてみたKazuto Kusama
 
OpenShift 3で、DockerのPaaSを作る話
OpenShift 3で、DockerのPaaSを作る話OpenShift 3で、DockerのPaaSを作る話
OpenShift 3で、DockerのPaaSを作る話Kazuto Kusama
 
Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造Etsuji Nakai
 
Dockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクルDockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクルMasahito Zembutsu
 

Andere mochten auch (6)

KubernetesとOpenShiftの話
KubernetesとOpenShiftの話KubernetesとOpenShiftの話
KubernetesとOpenShiftの話
 
試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShift試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShift
 
新しいOpenShiftのしくみを調べてみた
新しいOpenShiftのしくみを調べてみた新しいOpenShiftのしくみを調べてみた
新しいOpenShiftのしくみを調べてみた
 
OpenShift 3で、DockerのPaaSを作る話
OpenShift 3で、DockerのPaaSを作る話OpenShift 3で、DockerのPaaSを作る話
OpenShift 3で、DockerのPaaSを作る話
 
Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造
 
Dockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクルDockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクル
 

Ähnlich wie OpenShift v3 Technical Introduction

TECH TALK 2021/08/31 Qlik Sense Extension開発 第2弾 - プログラミング可能な汎用エクステンションのご紹介
TECH TALK 2021/08/31 Qlik Sense Extension開発 第2弾 - プログラミング可能な汎用エクステンションのご紹介TECH TALK 2021/08/31 Qlik Sense Extension開発 第2弾 - プログラミング可能な汎用エクステンションのご紹介
TECH TALK 2021/08/31 Qlik Sense Extension開発 第2弾 - プログラミング可能な汎用エクステンションのご紹介QlikPresalesJapan
 
C#版人狼知能エージェントの作り方~Visual Studio編~(AIWolf.NET 1.0.6版)
C#版人狼知能エージェントの作り方~Visual Studio編~(AIWolf.NET 1.0.6版)C#版人狼知能エージェントの作り方~Visual Studio編~(AIWolf.NET 1.0.6版)
C#版人狼知能エージェントの作り方~Visual Studio編~(AIWolf.NET 1.0.6版)takots
 
エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第一部 OpenStack入門
エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第一部 OpenStack入門エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第一部 OpenStack入門
エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第一部 OpenStack入門Etsuji Nakai
 
Dockerクイックツアー
DockerクイックツアーDockerクイックツアー
DockerクイックツアーEtsuji Nakai
 
Elastic on Azure Integration & Building React UI Based Search App Using Azure...
Elastic on Azure Integration & Building React UI Based Search App Using Azure...Elastic on Azure Integration & Building React UI Based Search App Using Azure...
Elastic on Azure Integration & Building React UI Based Search App Using Azure...Shotaro Suzuki
 
Azure Antenna AI 概要
Azure Antenna AI 概要Azure Antenna AI 概要
Azure Antenna AI 概要Miho Yamamoto
 
分散ストレージソフトウェアCeph・アーキテクチャー概要
分散ストレージソフトウェアCeph・アーキテクチャー概要分散ストレージソフトウェアCeph・アーキテクチャー概要
分散ストレージソフトウェアCeph・アーキテクチャー概要Etsuji Nakai
 
OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」
OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」
OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」Nobuyuki Tamaoki
 
DEV-001_オープンソース エディタ Visual Studio Code の極意
DEV-001_オープンソース エディタ Visual Studio Code の極意DEV-001_オープンソース エディタ Visual Studio Code の極意
DEV-001_オープンソース エディタ Visual Studio Code の極意decode2016
 
EnrootとPyxisで快適コンテナ生活
EnrootとPyxisで快適コンテナ生活EnrootとPyxisで快適コンテナ生活
EnrootとPyxisで快適コンテナ生活Kuninobu SaSaki
 
Migrating tocloudnativeapplicationwithusingelasticapm
Migrating tocloudnativeapplicationwithusingelasticapmMigrating tocloudnativeapplicationwithusingelasticapm
Migrating tocloudnativeapplicationwithusingelasticapmShotaro Suzuki
 
[Developers Festa Sapporo 2020] Microsoft/GitHubが提供するDeveloper Cloud (Develop...
[Developers Festa Sapporo 2020] Microsoft/GitHubが提供するDeveloper Cloud (Develop...[Developers Festa Sapporo 2020] Microsoft/GitHubが提供するDeveloper Cloud (Develop...
[Developers Festa Sapporo 2020] Microsoft/GitHubが提供するDeveloper Cloud (Develop...Naoki (Neo) SATO
 
7.9 elasticstackandcloudtechnicalenablement excitingnewfeatures-jpn0827
7.9 elasticstackandcloudtechnicalenablement excitingnewfeatures-jpn08277.9 elasticstackandcloudtechnicalenablement excitingnewfeatures-jpn0827
7.9 elasticstackandcloudtechnicalenablement excitingnewfeatures-jpn0827Shotaro Suzuki
 
OpenStackアップストリーム活動実践 中級
OpenStackアップストリーム活動実践 中級OpenStackアップストリーム活動実践 中級
OpenStackアップストリーム活動実践 中級Takashi Natsume
 
Introduction to extensions and other useful features for developing apps usin...
Introduction to extensions and other useful features for developing apps usin...Introduction to extensions and other useful features for developing apps usin...
Introduction to extensions and other useful features for developing apps usin...Shotaro Suzuki
 
red-hat-forum-2017-openshift-baremetal-deployment
red-hat-forum-2017-openshift-baremetal-deploymentred-hat-forum-2017-openshift-baremetal-deployment
red-hat-forum-2017-openshift-baremetal-deploymentTetsuya Sodo
 
Qlik Sense Extension開発 - Extensionの概要から実際の開発詳細まで
Qlik Sense Extension開発 - Extensionの概要から実際の開発詳細までQlik Sense Extension開発 - Extensionの概要から実際の開発詳細まで
Qlik Sense Extension開発 - Extensionの概要から実際の開発詳細までQlikPresalesJapan
 
MicrosoftのOSSへの取り組み
MicrosoftのOSSへの取り組みMicrosoftのOSSへの取り組み
MicrosoftのOSSへの取り組みShinichiro Arai
 
KinectとC#を用いた 実践的VRアプリ開発 第2回 2015/10/13 Github CLI編
KinectとC#を用いた実践的VRアプリ開発 第2回 2015/10/13 Github CLI編KinectとC#を用いた実践的VRアプリ開発 第2回 2015/10/13 Github CLI編
KinectとC#を用いた 実践的VRアプリ開発 第2回 2015/10/13 Github CLI編Akihiko Shirai
 

Ähnlich wie OpenShift v3 Technical Introduction (20)

TECH TALK 2021/08/31 Qlik Sense Extension開発 第2弾 - プログラミング可能な汎用エクステンションのご紹介
TECH TALK 2021/08/31 Qlik Sense Extension開発 第2弾 - プログラミング可能な汎用エクステンションのご紹介TECH TALK 2021/08/31 Qlik Sense Extension開発 第2弾 - プログラミング可能な汎用エクステンションのご紹介
TECH TALK 2021/08/31 Qlik Sense Extension開発 第2弾 - プログラミング可能な汎用エクステンションのご紹介
 
C#版人狼知能エージェントの作り方~Visual Studio編~(AIWolf.NET 1.0.6版)
C#版人狼知能エージェントの作り方~Visual Studio編~(AIWolf.NET 1.0.6版)C#版人狼知能エージェントの作り方~Visual Studio編~(AIWolf.NET 1.0.6版)
C#版人狼知能エージェントの作り方~Visual Studio編~(AIWolf.NET 1.0.6版)
 
エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第一部 OpenStack入門
エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第一部 OpenStack入門エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第一部 OpenStack入門
エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第一部 OpenStack入門
 
Dockerクイックツアー
DockerクイックツアーDockerクイックツアー
Dockerクイックツアー
 
Elastic on Azure Integration & Building React UI Based Search App Using Azure...
Elastic on Azure Integration & Building React UI Based Search App Using Azure...Elastic on Azure Integration & Building React UI Based Search App Using Azure...
Elastic on Azure Integration & Building React UI Based Search App Using Azure...
 
Azure Antenna AI 概要
Azure Antenna AI 概要Azure Antenna AI 概要
Azure Antenna AI 概要
 
分散ストレージソフトウェアCeph・アーキテクチャー概要
分散ストレージソフトウェアCeph・アーキテクチャー概要分散ストレージソフトウェアCeph・アーキテクチャー概要
分散ストレージソフトウェアCeph・アーキテクチャー概要
 
OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」
OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」
OpenStack最新動向と構築のポイント - EMC様セミナー 「あなたのビジネスを高速化! OpenStackが実現する戦略的なクラウドインフラ」
 
DEV-001_オープンソース エディタ Visual Studio Code の極意
DEV-001_オープンソース エディタ Visual Studio Code の極意DEV-001_オープンソース エディタ Visual Studio Code の極意
DEV-001_オープンソース エディタ Visual Studio Code の極意
 
EnrootとPyxisで快適コンテナ生活
EnrootとPyxisで快適コンテナ生活EnrootとPyxisで快適コンテナ生活
EnrootとPyxisで快適コンテナ生活
 
Migrating tocloudnativeapplicationwithusingelasticapm
Migrating tocloudnativeapplicationwithusingelasticapmMigrating tocloudnativeapplicationwithusingelasticapm
Migrating tocloudnativeapplicationwithusingelasticapm
 
[Developers Festa Sapporo 2020] Microsoft/GitHubが提供するDeveloper Cloud (Develop...
[Developers Festa Sapporo 2020] Microsoft/GitHubが提供するDeveloper Cloud (Develop...[Developers Festa Sapporo 2020] Microsoft/GitHubが提供するDeveloper Cloud (Develop...
[Developers Festa Sapporo 2020] Microsoft/GitHubが提供するDeveloper Cloud (Develop...
 
7.9 elasticstackandcloudtechnicalenablement excitingnewfeatures-jpn0827
7.9 elasticstackandcloudtechnicalenablement excitingnewfeatures-jpn08277.9 elasticstackandcloudtechnicalenablement excitingnewfeatures-jpn0827
7.9 elasticstackandcloudtechnicalenablement excitingnewfeatures-jpn0827
 
OpenStackアップストリーム活動実践 中級
OpenStackアップストリーム活動実践 中級OpenStackアップストリーム活動実践 中級
OpenStackアップストリーム活動実践 中級
 
Introduction to extensions and other useful features for developing apps usin...
Introduction to extensions and other useful features for developing apps usin...Introduction to extensions and other useful features for developing apps usin...
Introduction to extensions and other useful features for developing apps usin...
 
red-hat-forum-2017-openshift-baremetal-deployment
red-hat-forum-2017-openshift-baremetal-deploymentred-hat-forum-2017-openshift-baremetal-deployment
red-hat-forum-2017-openshift-baremetal-deployment
 
Qlik Sense Extension開発 - Extensionの概要から実際の開発詳細まで
Qlik Sense Extension開発 - Extensionの概要から実際の開発詳細までQlik Sense Extension開発 - Extensionの概要から実際の開発詳細まで
Qlik Sense Extension開発 - Extensionの概要から実際の開発詳細まで
 
MicrosoftのOSSへの取り組み
MicrosoftのOSSへの取り組みMicrosoftのOSSへの取り組み
MicrosoftのOSSへの取り組み
 
KinectとC#を用いた 実践的VRアプリ開発 第2回 2015/10/13 Github CLI編
KinectとC#を用いた実践的VRアプリ開発 第2回 2015/10/13 Github CLI編KinectとC#を用いた実践的VRアプリ開発 第2回 2015/10/13 Github CLI編
KinectとC#を用いた 実践的VRアプリ開発 第2回 2015/10/13 Github CLI編
 
【BS7】GitHubをフル活用した開発
【BS7】GitHubをフル活用した開発【BS7】GitHubをフル活用した開発
【BS7】GitHubをフル活用した開発
 

Mehr von Etsuji Nakai

「ITエンジニアリングの本質」を考える
「ITエンジニアリングの本質」を考える「ITエンジニアリングの本質」を考える
「ITエンジニアリングの本質」を考えるEtsuji Nakai
 
Googleのインフラ技術に見る基盤標準化とDevOpsの真実
Googleのインフラ技術に見る基盤標準化とDevOpsの真実Googleのインフラ技術に見る基盤標準化とDevOpsの真実
Googleのインフラ技術に見る基盤標準化とDevOpsの真実Etsuji Nakai
 
Introducton to Convolutional Nerural Network with TensorFlow
Introducton to Convolutional Nerural Network with TensorFlowIntroducton to Convolutional Nerural Network with TensorFlow
Introducton to Convolutional Nerural Network with TensorFlowEtsuji Nakai
 
Googleにおける機械学習の活用とクラウドサービス
Googleにおける機械学習の活用とクラウドサービスGoogleにおける機械学習の活用とクラウドサービス
Googleにおける機械学習の活用とクラウドサービスEtsuji Nakai
 
Spannerに関する技術メモ
Spannerに関する技術メモSpannerに関する技術メモ
Spannerに関する技術メモEtsuji Nakai
 
Googleのインフラ技術から考える理想のDevOps
Googleのインフラ技術から考える理想のDevOpsGoogleのインフラ技術から考える理想のDevOps
Googleのインフラ技術から考える理想のDevOpsEtsuji Nakai
 
A Brief History of My English Learning
A Brief History of My English LearningA Brief History of My English Learning
A Brief History of My English LearningEtsuji Nakai
 
TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎Etsuji Nakai
 
TensorFlowによるニューラルネットワーク入門
TensorFlowによるニューラルネットワーク入門TensorFlowによるニューラルネットワーク入門
TensorFlowによるニューラルネットワーク入門Etsuji Nakai
 
Using Kubernetes on Google Container Engine
Using Kubernetes on Google Container EngineUsing Kubernetes on Google Container Engine
Using Kubernetes on Google Container EngineEtsuji Nakai
 
Lecture note on PRML 8.2
Lecture note on PRML 8.2Lecture note on PRML 8.2
Lecture note on PRML 8.2Etsuji Nakai
 
Machine Learning Basics for Web Application Developers
Machine Learning Basics for Web Application DevelopersMachine Learning Basics for Web Application Developers
Machine Learning Basics for Web Application DevelopersEtsuji Nakai
 
Your first TensorFlow programming with Jupyter
Your first TensorFlow programming with JupyterYour first TensorFlow programming with Jupyter
Your first TensorFlow programming with JupyterEtsuji Nakai
 
Deep Q-Network for beginners
Deep Q-Network for beginnersDeep Q-Network for beginners
Deep Q-Network for beginnersEtsuji Nakai
 
TensorFlowで学ぶDQN
TensorFlowで学ぶDQNTensorFlowで学ぶDQN
TensorFlowで学ぶDQNEtsuji Nakai
 
インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜
インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜
インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜Etsuji Nakai
 
Exploring the Philosophy behind Docker/Kubernetes/OpenShift
Exploring the Philosophy behind Docker/Kubernetes/OpenShiftExploring the Philosophy behind Docker/Kubernetes/OpenShift
Exploring the Philosophy behind Docker/Kubernetes/OpenShiftEtsuji Nakai
 

Mehr von Etsuji Nakai (20)

PRML11.2-11.3
PRML11.2-11.3PRML11.2-11.3
PRML11.2-11.3
 
「ITエンジニアリングの本質」を考える
「ITエンジニアリングの本質」を考える「ITエンジニアリングの本質」を考える
「ITエンジニアリングの本質」を考える
 
Googleのインフラ技術に見る基盤標準化とDevOpsの真実
Googleのインフラ技術に見る基盤標準化とDevOpsの真実Googleのインフラ技術に見る基盤標準化とDevOpsの真実
Googleのインフラ技術に見る基盤標準化とDevOpsの真実
 
Introducton to Convolutional Nerural Network with TensorFlow
Introducton to Convolutional Nerural Network with TensorFlowIntroducton to Convolutional Nerural Network with TensorFlow
Introducton to Convolutional Nerural Network with TensorFlow
 
Googleにおける機械学習の活用とクラウドサービス
Googleにおける機械学習の活用とクラウドサービスGoogleにおける機械学習の活用とクラウドサービス
Googleにおける機械学習の活用とクラウドサービス
 
Spannerに関する技術メモ
Spannerに関する技術メモSpannerに関する技術メモ
Spannerに関する技術メモ
 
Googleのインフラ技術から考える理想のDevOps
Googleのインフラ技術から考える理想のDevOpsGoogleのインフラ技術から考える理想のDevOps
Googleのインフラ技術から考える理想のDevOps
 
A Brief History of My English Learning
A Brief History of My English LearningA Brief History of My English Learning
A Brief History of My English Learning
 
TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎
 
TensorFlowによるニューラルネットワーク入門
TensorFlowによるニューラルネットワーク入門TensorFlowによるニューラルネットワーク入門
TensorFlowによるニューラルネットワーク入門
 
Using Kubernetes on Google Container Engine
Using Kubernetes on Google Container EngineUsing Kubernetes on Google Container Engine
Using Kubernetes on Google Container Engine
 
Lecture note on PRML 8.2
Lecture note on PRML 8.2Lecture note on PRML 8.2
Lecture note on PRML 8.2
 
Machine Learning Basics for Web Application Developers
Machine Learning Basics for Web Application DevelopersMachine Learning Basics for Web Application Developers
Machine Learning Basics for Web Application Developers
 
Your first TensorFlow programming with Jupyter
Your first TensorFlow programming with JupyterYour first TensorFlow programming with Jupyter
Your first TensorFlow programming with Jupyter
 
Deep Q-Network for beginners
Deep Q-Network for beginnersDeep Q-Network for beginners
Deep Q-Network for beginners
 
Life with jupyter
Life with jupyterLife with jupyter
Life with jupyter
 
TensorFlowで学ぶDQN
TensorFlowで学ぶDQNTensorFlowで学ぶDQN
TensorFlowで学ぶDQN
 
PRML7.2
PRML7.2PRML7.2
PRML7.2
 
インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜
インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜
インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜
 
Exploring the Philosophy behind Docker/Kubernetes/OpenShift
Exploring the Philosophy behind Docker/Kubernetes/OpenShiftExploring the Philosophy behind Docker/Kubernetes/OpenShift
Exploring the Philosophy behind Docker/Kubernetes/OpenShift
 

Kürzlich hochgeladen

Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 

Kürzlich hochgeladen (10)

Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 

OpenShift v3 Technical Introduction

  • 1. OpenShift v3 Technical Introduction レッドハット株式会社 中井悦司 / Etsuji Nakai Senior Solution Architect and Cloud Evangelist v1.3 2016/01/20
  • 2. 2 OpenShift v3 Technical Introduction 自己紹介  中井悦司(なかいえつじ) – Twitter @enakai00  日々の仕事 – Senior Solution Architect and Cloud Evangelist at Red Hat K.K. 企業システムでオープンソースの活用を希望される お客様を全力でご支援させていただきます。  昔とった杵柄 – 素粒子論の研究(超弦理論とか) – 予備校講師(物理担当) – インフラエンジニア(Unix/Linux専門) 好評発売中!
  • 3. 3 OpenShift v3 Technical Introduction Contents  Dockerの機能とユースケースの整理  OpenShiftの内部構造  OpenShiftのイメージ管理機能  アプリケーションのデプロイ方法  ユースケースイメージ  参考資料
  • 5. 5 OpenShift v3 Technical Introduction Dockerが提供する基本機能 Dockerfile ① Dockerイメージを自動作成 OSイメージ アプリケーション ライブラリー アプリケーション フレームワーク イメージの 作成手順を記載 Docker イメージ OS上にインストール可能な ものはすべてイメージ化可能 ② Dockerイメージを保存・公開 ③ Dockerサーバーに  イメージを配布・実行
  • 6. 6 OpenShift v3 Technical Introduction アプリケーション開発環境でのDockerの利用例  Dockerイメージを用いて、多数の開発者に同一の開発環境を提供 – テストサーバーにも同じ環境を提供することで、「環境差異による問題発生」を防止  Dockerfileからイメージを自動作成するので、イメージの修正・変更・再配布が容易 – 開発コードのように、実行環境を「バージョン管理」可能に フレームワーク データベース Dockerfile Dockerイメージを 自動作成 開発・テスト環境に Dockerイメージを配布 開発コードを コードリポジトリー にプッシュ CIツールにより インテグレーション テストを自動実行 イメージをバージョン管理 する仕組みは用意が必要
  • 7. 7 OpenShift v3 Technical Introduction フレームワーク データベース アプリケーション フレームワーク ライブラリー Dockerイメージを 本番環境に展開!  テストが実施された「アプリケーション環境」をそのままDockerイメージに固め て、本番環境にデプロイすることで、アプリケーション配布を容易に サービス環境へのDocker適用のメリット
  • 8. 8 OpenShift v3 Technical Introduction Docker利用パターン(その1): アプリケーションのデプロイを安全/簡単に  仮想マシン上のアプリケーションをコンテナイメージ化することで、アプリケー ションのデプロイを安全/簡単にします。 – 「1仮想マシンに1アプリケーション」という配置はあえて変更しないことで、運用方 法やアプリケーションのデザインへの影響を最小限に留めます。 – 外部からアプリケーションに接続するユーザー/外部システムは、アプリケーションが コンテナ化されていることを意識する必要がありません。 IaaS/仮想化基盤 仮想マシン (ゲストOS) アプリA ・・・ ・・・ これまでの環境 アプリケーションの コンテナイメージ化 IaaS/仮想化基盤 仮想マシン (Dockerホスト) アプリA (コンテナ  イメージ) 仮想マシン (Dockerホスト) アプリB (コンテナ  イメージ) ・・・ ・・・ 仮想マシン (ゲストOS) アプリB
  • 9. 9 OpenShift v3 Technical Introduction Docker利用パターン(その2): サーバーの境界を意識しないアプリケーションデプロイ  コンテナーの配置先を自動的に振り分ける仕組みを用いて、複数ホストを「1つ のコンピューティングリソース」として活用します。  アプリケーションを機能単位に分割してコンテナ化することで、さらなるメリッ トが得られます。 – 必要な機能を負荷に応じてオートスケールします。 – 機能単位でコンテナーを入れ替えることにより、稼働中のアプリケーションの動的な機 能変更が可能になります。 ※ Dockerはあくまでイメージ配布の仕組みに利用しているだけで、上位のオーケスト     レーション機能は別途用意が必要 Dockerホスト Dockerホスト Dockerホスト ・・・ 複数ホストを束ねて「1つのコンピュータ」として活用 マイクロサービス化 アプリケーション
  • 10. 10 OpenShift v3 Technical Introduction OpenShiftが提供する主な追加機能  Dockerイメージのバージョン管理 – イメージストリームとイメージビルドシステム – 「開発環境」そのものを開発可能に  同一の開発環境のクラウド上への配布 – テンプレート機能 – それぞれの開発者に「自分専用」の開発/検証環境を提供  マルチテナントでの利用 – プロジェクト単位でのネームスペースの分割 – 開発機能(ブランチ)単位で独立した開発/検証環境を提供  サーバーの境界を意識しないコンテナのデプロイ – Kubernetesによるコンテナのオーケストレーション – マイクロサービス型アプリケーションのDevOps環境を実現
  • 12. 12 OpenShift v3 Technical Introduction OpenShiftの基本サーバー構成 etcd ・・・ バックエンドデータベース(KVS) マスター ノード ・・・ クラスタ構成で 負荷分散可能 Docker Docker Docker 必要に応じて 追加可能  1台のマスターから複数のノードを管理するシンプルなアーキテクチャーです。 – 各ノードのエージェントとマスターが直接に通信します。 – バックエンドデータベースは、etcd(分散KVS)を使用します。 – OpenShiftの利用者(CLI)は、マスターが公開するAPIにアクセスします。 利用者(CLI)
  • 13. 13 OpenShift v3 Technical Introduction OpenShiftのネットワーク構成 etcd マスター オーバーレイネットワーク として構成 ・・・  物理的には、全サーバーを共通のサービスネットワークに接続するだけで利用可能です。 – コンテナ間通信用の内部ネットワークは、オーバーレイネットワークとして構成されます。 – 外部からのアクセスは、ルータ用コンテナを経由します。 • ルータがあるノードの80番ポート宛のパケットは、iptablesでルーターに転送されます。ルータ は、URLベースで接続先のコンテナを決定します。 サービスネットワーク ノード 内部ネットワーク コンテナ コンテナ ブリッジ コンテナ コンテナ ルータ ブリッジ ノード
  • 14. 14 OpenShift v3 Technical Introduction 「サービス」によるコンテナ間接続  コンテナで起動したアプリケーションに対して、「サービス」を定義すると、内部ネット ワーク上の「サービスアドレス」が割り当てられます。 – 他のコンテナから「サービスアドレス」にアクセスすると、対応するコンテナにパケットが転送され ます。(複数のコンテナがある場合は、ラウンドロビンで負荷分散が行われます。) – 事前に「サービス」を定義した状態で、新規のコンテナを起動すると、サービスのIPアドレス/ポー トを示す環境変数が自動的にセットされます。 # oc get service NAME CLUSTER_IP EXTERNAL_IP PORT(S) SELECTOR AGE etherpad-lite 172.30.14.201 <none> 9001/TCP deploymentconfig=etherpad-lite 7d mysql 172.30.86.51 <none> 3306/TCP name=mysql 7d apiVersion: v1 kind: Service metadata: name: mysql spec: ports: - name: mysql port: 3306 protocol: TCP targetPort: 3306 selector: name: mysql-pod sessionAffinity: None mysql-service.yml MYSQL_SERVICE_HOST=172.30.86.51 MYSQL_SERVICE_PORT_MYSQL=3306 サービス定義ファイルの例 割り当てられた サービスアドレス 新規のコンテナに セットされる環境変数の例
  • 15. 15 OpenShift v3 Technical Introduction 「ルーティング」による外部接続  「サービス」に加えて「ルーティング」を定義すると、外部からのURLアクセスが可能にな ります。 – HAProxyが稼働するルータコンテナがURLベースのルーティング処理を行ないます。 – 下記の例では、「*.oso.example.com」が「ルータコンテナが稼働するノードのパブリックIP」に解 決されるように外部DNSが事前設定されています。 – 複数のルータコンテナを起動して、DNSラウンドロビンで負荷分散することも可能です。 # oc get route NAME HOST/PORT PATH SERVICE etherpad-lite-route eplite.project01.oso.example.com etherpad-lite apiVersion: v1 kind: Route metadata: name: etherpad-lite-route spec: host: eplite.project01.oso.example.com to: kind: Service name: etherpad-lite etherpad-lite_route.yml ルーティング定義ファイルの例 アプリケーションのURL
  • 16. 16 OpenShift v3 Technical Introduction 「サービス」と「ルーティング」のパケット経路  「サービス」として定義されたIPアドレス宛のパケットは、iptables設定によって、ノード 上の「openshift-nodeエージェント」に転送されます。 – openshift-nodeエージェントは、実際にサービスを提供するコンテナにラウンドロビンでパケットを 転送します。  「ルーティング」を定義すると、ルータコンテナ上のHAProxyに、対応する設定がなされる ことで、URLベースでのルーティングが実施されます。 openshift-node エージェント オーバーレイネットワーク ブリッジ コンテナ コンテナ ルータ コンテナ iptables iptables DNS ラウンドロビン ラウンド ロビン リースト コネクション コンテナ間のアクセス 外部からのアクセス openshift-node エージェント ブリッジ コンテナ コンテナ ルータ コンテナ iptables iptables ラウンド ロビン リースト コネクション
  • 18. 18 OpenShift v3 Technical Introduction OpenShiftにおけるイメージ管理  Docker Hub、もしくは、Dockerホストローカルのイメージは、「ユーザー名/リポジトリ名 : タグ」という名称で識別されます。 – タグによるバージョン管理が可能ですが、自由に付け替えができるため、利用者自身が意識的にタグ 名を操作する必要があります。  OpenShiftで取り扱うイメージは、専用の内部レジストリーに保存して、独自のバージョン 管理を行ないます。 – 内部レジストリーの中では、「プロジェクト名/リポジトリ名@<sha256ハッシュ>」という名称でイ メージを識別します。ハッシュ値が、GitのコミットIDに相当するユニークな識別子になります。 – バージョン情報(イメージが更新された時系列)については、別途、「イメージストリーム」を定義 して、そちらで管理します。 # oc get is NAME DOCKER REPO TAGS UPDATED centos7 172.30.84.64:5000/project01/centos7 latest 7 days ago etherpad-lite 172.30.84.64:5000/project01/etherpad-lite latest 7 days ago nodejs-base 172.30.84.64:5000/project01/nodejs-base latest 7 days ago # oc describe is etherpad-lite Name: etherpad-lite Created: 7 days ago Labels: <none> Annotations: openshift.io/image.dockerRepositoryCheck=2016-01-03T09:53:25Z Docker Pull Spec: 172.30.84.64:5000/project01/etherpad-lite Tag Spec Created PullSpec latest <pushed> 5 days ago 172.30.84.64:5000/project01/etherpad-lite@sha256:9b5e7f9fc58... 7 days ago 172.30.84.64:5000/project01/etherpad-lite@sha256:05c4600b8ab... project01のイメージストリーム一覧 イメージストリーム 「etherpad-lite」 に含まれるイメージ
  • 19. 19 OpenShift v3 Technical Introduction OpenShiftにおけるイメージ管理  イメージストリームには、次のような際に新しいバージョンのイメージが登録されます。 – 内部レジストリーにイメージをPushした時 • プッシュ時の「プロジェクト名/レジストリー名」から、対応するプロジェクトの(レジスト リーと同名の)イメージストリームに新バージョンとして登録されます。 – OpenShiftのイメージビルドシステムを用いて、新しいイメージをビルドした時 • イメージビルドシステムは、GitHubで公開したDockerfile、アプリケーションのソースコードな どを用いて、新しいイメージを作成、内部レジストリーに保存する機能です。 # docker pull centos:7 # docker login -u enakai -e enakai@example.com -p $(oc whoami -t) registry.oso.example.com # docker tag docker.io/centos:7 registry.oso.example.com/project01/centos7:latest # docker push registry.oso.example.com/project01/centos7:latest # oc get is NAME DOCKER REPO TAGS UPDATED centos7 172.30.84.64:5000/project01/centos7 latest 7 seconds ago # oc describe is centos7 ame: centos7 Created: 24 seconds ago Labels: <none> Annotations: openshift.io/image.dockerRepositoryCheck=2015-12-28T11:32:19Z Docker Pull Spec: 172.30.84.64:5000/project01/centos7 Tag Spec Created PullSpec latest <pushed> 24 seconds ago 172.30.84.64:5000/project01/centos7@sha256:b04ac... CentOS7のイメージを 内部レジストリーに Pushする例
  • 20. 20 OpenShift v3 Technical Introduction OpenShiftのイメージビルドシステム  イメージビルドシステムは、「ビルド設定(BuildConfig)」を定義して利用します。次は、 GitHubで公開したDockerfile(および、ビルドに必要な関連ファイル)からイメージをビル ドする設定の例です。 apiVersion: v1 kind: BuildConfig metadata: name: nginx-sample spec: output: to: kind: ImageStreamTag name: nginx-sample:latest source: git: uri: https://github.com/enakai00/openshift_nginx_sample type: Git strategy: dockerStrategy: from: kind: ImageStreamTag name: centos7:latest type: Docker triggers: - imageChange: {} type: ImageChange nginx-sample_bc.yml – Docerfileの「FROM:」行は、イメー ジストリーム「centos7」のイメー ジで置き換えられます。 – 作成されたイメージは、内部レジス トリーに保存された後、イメージス トリーム「nginx-sample」に自動登 録されます。 – 「start-build」コマンドを明示的に 実行する他に、イメージストリーム 「centos7」のイメージが更新され たタイミング、GitHubに新たな Commitが行われたタイミングでも 自動的にビルドが実行可能です。
  • 22. 22 OpenShift v3 Technical Introduction イメージストリームからのコンテナのデプロイ  「デプロイ設定(DeploymentConfig)」を用いて、イメージストリームに登録したイメー ジからコンテナをデプロイします。 apiVersion: v1 kind: DeploymentConfig metadata: name: nginx-sample spec: template: metadata: labels: name: nginx-sample spec: containers: - name: nginx-sample-latest image: nginx-sample:latest ports: - containerPort: 8080 protocol: TCP replicas: 4 selector: name: nginx-sample triggers: - type: ImageChange imageChangeParams: automatic: true containerNames: - nginx-sample-latest from: kind: ImageStreamTag name: nginx-sample:latest - type: ConfigChange nginx-sample_dc.yml – レプリカ数で指定した数のコンテナが起動します。 先に説明した「サービス」の定義により、複数コン テナに対するロードバランスが行われます。 – イメージストリームに新しいイメージが登録される と、自動で再デプロイを実施することができます。 再デプロイ時は、新バージョンのコンテナを追加起 動して、新しいセッションから新バージョンに振り 分けるといった動作が可能です。
  • 23. 23 OpenShift v3 Technical Introduction マルチテナント機能を利用したDevOpsの実現  開発/テストとサービス用でプロジェクトを分割することで、OpenShift上でのDevOps環境 が実現できます。 内部レジストリー ImageStream BuildConfig Deployment Config Route Service Service エイリアス テスト済みイメージを エイリアスで参照 Deployment Config 開発/テスト プロジェクト サービス用 プロジェクト イメージの 実体を保存アプリケーションの元ネタ (Dockerfile/ソースコード) を保存 Route RHEL7 MyApp MyApp
  • 24. 24 OpenShift v3 Technical Introduction 設定テンプレートによる環境構築  一連の設定ファイル(「イメージストリーム」「ビルド設定」「デプロイ設定」「サービ ス」「ルーティング」)をテンプレート化することにより、典型的なアプリケーション環境 /開発環境が自動構築できるようになります。 # oc get -n openshift template NAME DESCRIPTION PARAMETERS OBJECTS cakephp-example An example CakePHP application with no database 14 (8 blank) 5 cakephp-mysql-example An example CakePHP application with a MySQL database 14 (3 blank) 7 dancer-example An example Dancer application with no database 7 (4 blank) 5 dancer-mysql-example An example Dancer application with a MySQL database 13 (4 blank) 7 django-example An example Django application with no database 12 (9 blank) 5 django-psql-example An example Django application with a PostgreSQL database 12 (4 blank) 7 jenkins-ephemeral Jenkins service, without persistent storage. WARNING: Any data stored will be... 2 (all set) 3 jenkins-persistent Jenkins service, with persistent storage. 3 (all set) 4 logging-deployer-template Template for deploying everything needed for aggregated logging. Requires clu... 19 (10 blank) 1 metrics-deployer-template Template for deploying the required Metrics integration. Requires cluster-adm... 9 (1 blank) 1 mongodb-ephemeral MongoDB database service, without persistent storage. WARNING: Any data store... 5 (3 generated) 2 mongodb-persistent MongoDB database service, with persistent storage. Scaling to more than one r... 6 (3 generated) 3 mysql-ephemeral MySQL database service, without persistent storage. WARNING: Any data stored... 4 (2 generated) 2 mysql-persistent MySQL database service, with persistent storage. Scaling to more than one rep... 5 (2 generated) 3 nodejs-example An example Node.js application with no database 11 (8 blank) 5 nodejs-mongodb-example An example Node.js application with a MongoDB database 11 (3 blank) 7 postgresql-ephemeral PostgreSQL database service, without persistent storage. WARNING: Any data st... 4 (2 generated) 2 postgresql-persistent PostgreSQL database service, with persistent storage. Scaling to more than on... 5 (2 generated) 3 rails-postgresql-example An example Rails application with a PostgreSQL database 15 (3 blank) 7 デフォルトで用意される テンプレートの例
  • 25. 25 OpenShift v3 Technical Introduction テンプレートとGUIの組み合わせによるPaaSの提供  テンプレート機能とGUIを組み合わせることで、いわゆる「PaaS」環境を提供することも可 能です。
  • 26. 26 OpenShift v3 Technical Introduction 複数コンテナが連携するシステムの構築例  下記のBlog記事に従って、MySQL + node.jsのアプリケーション環境を構築してみます。 – OpenShift OriginによるDockerイメージ管理(4)〜S2Iによるイメージビルド • http://enakai00.hatenablog.com/entry/2016/01/03/174854 – OpenShift OriginによるDockerイメージ管理(5)〜複数コンテナの連携設定 • http://enakai00.hatenablog.com/entry/2016/01/03/200920
  • 28. 28 OpenShift v3 Technical Introduction 従来のPaaSの利用形態 アプリ開発者 開発環境 テンプレート 新しいコードをPushすると 開発・テスト環境に展開してビルド 開発したコードの 稼働確認 テンプレートそのものの メンテナンスはどうする? 開発中に開発環境の アップデートは可能? 開発が終わったアプリは どうやって本番展開する?
  • 29. 29 OpenShift v3 Technical Introduction OpenShiftにおける「開発環境」のメンテナンス機能 OSイメージ 開発環境イメージ アプリケーション イメージ アプリ開発者 開発環境管理者 セキュリティ問題等の修正が入った 新しいOSイメージをアップロード Dockerfileを用いて 開発環境イメージを更新 アプリケーションを 自動ビルドして機能テスト 開発環境イメージ 修正・テスト済みの 開発環境イメージを参照 アプリケーション イメージ 新しいコードをPushすると アプリケーションイメージを自動更新
  • 30. 30 OpenShift v3 Technical Introduction マルチテナントによる機能別の並行開発 アプリ開発者 開発環境イメージ アプリケーション イメージ  開発機能ごとにコードのブランチを分けて、各ブラ ンチ専用の開発環境を個別に用意します。 アプリ開発者 開発環境イメージ アプリケーション イメージ テスト担当者 開発環境イメージ アプリケーション イメージ マスターブランチ 開発済み機能をマージした マスターブランチのコードを検証 機能Aの開発 機能Bの開発 開発した機能を マージ 開発した機能を マージ
  • 32. 32 OpenShift v3 Technical Introduction 参考資料  OpenShift関連情報リンク集 – http://enakai00.hatenablog.com/entry/2016/01/03/211029  OpenShift v3 Internal networking details – http://www.slideshare.net/enakai/openshift-45465283  RHEL7.1でKubernetesを実体験(概要編) – http://jp-redhat.com/openeye_online/column/nakai/902/  RHEL7.1でKubernetesを実体験(構築編) – http://jp-redhat.com/openeye_online/column/nakai/991/