OpenStack と OpenShift の関係って?

f:id:ts0818:20200405125004j:plain

OpenStack と OpenShift ってどんな関係なん?という情弱な私...どうもボクです。

というわけで、今回は、OpenStack と OpenShiftの関係について調べてみました。

レッツトライ~。
 

 

OpenStackって?

何はともあれ、Wikipediaさ~ん!

OpenStackは、クラウドコンピューティングのためのオープンソースフリーソフトウェアであり、クラウドの分類のIaaSサービスとして仮想マシンやその他のリソースを提供する

OpenStack - Wikipedia

⇧ IaaS サービスなんですと。

IaaSって?

IaaSInfrastructure as a Service の略。インターネットを利用したコンピュータの利用形態である。IaaSでは、コンピュータシステムを構築および稼動させるための基盤(仮想マシンやネットワークなどのインフラ)そのものを、インターネット経由のサービスとして提供する。

Infrastructure as a Service - Wikipedia

⇧ システムを動かすための環境を、インターネット経由で提供しますと。

IaaSはクラウドコンピューティングサービスの1種類(または1要素)としてSaaSPaaSに並ぶものとされ、PaaSの発展系ともされる。IaaSは当初はHaaS (Hardware as a Service) とも呼ばれていた。ただしHaaSは単なるハードウェアリソース(ハードディスクなど)の、インターネット経由のサービスとしての提供とされる場合もある。

Infrastructure as a Service - Wikipedia

⇧ いろんな、○○ as a Service があるんですな...

んで、OpenStackなんですが、Wikipediaの歴史のとこで、

2010年7月、米Rackspace HostingNASAは共同でOpenStackと呼ばれるオープンソースクラウドソフトウェアを作るプロジェクトを開始した

OpenStack - Wikipedia

NASAが絡んでるというね...

んで、Linuxに様々なディストリビューションがあるように、Openstack についても、いろんな会社が挙ってディストリビューションやサービスを提供してきてますと。

年度 企業 ベースとしたリリース
2011   SUSE  OpenStack "Diablo"
2012  Red Hat   OpenStack "Essex"
2014  Oracle  OpenStack "Icehouse"
2014  HP  OpenStack "Icehouse"
2015   NEC  OpenStack "kilo"

 

なんか、

gihyo.jp

SUSE は、OpenStack事業から撤退したみたい...。

 

そんな、OpenStackは、

f:id:ts0818:20200402201730p:plain

OpenStack is a cloud operating system that controls large pools of compute, storage, and networking resources throughout a datacenter, all managed and provisioned through APIs with common authentication mechanisms.

What is OpenStack?

⇧ まさかの OS(Operating system) という...、クラウドの。

ん?

IaaS(Infrastructure as a Service )って話だった気がするんだけど...

OpenStack is broken up into services to allow you to plug and play components depending on your needs. The openstack map gives you an “at a glance” view of the openstack landscape to see where those services fit and how they can work together.

Download the map 

What is OpenStack?

⇧ なるほど、いろんなサービスが満載のOS(Operating system) ですと。自分の使いたいサービスを取っ替え引っ替えできますよと。

 

「IaaS」「PaaS」「SaaS」が扱うサービスの範囲なんかについては、

www.cloud-ace.jp

⇧ 上記サイト様が分かりやすいです。

なるほど、IaaSにOSが含まれてるから、

OpenStack is a cloud operating system that controls large pools of compute, storage, and networking resources throughout a datacenter, all managed and provisioned through APIs with common authentication mechanisms.

What is OpenStack?

⇧ cloud operating system って謳ってたのね...って、「PaaS」も「SaaS」もOSが含まれてるから、どれのこと言ってるのか分からなくなるやないか~い!

いまいち、OpenStackが「IaaS」「PaaS」「SaaS」のどれに該当するのか分からん...

Wikipedia は、「IaaS」って言ってるけど...

 

ところが、Red Hat のOpenStackの説明だと、 

www.redhat.com

OpenStack は基本的に、スクリプトと呼ばれる一連のコマンドです。このスクリプトはプロジェクトと呼ばれるパッケージにバンドルされ、クラウド環境を作成するタスクを中継します。このような環境を作成するため、OpenStack は他の 2 種類のソフトウェアを使用します。

OpenStack とは | Red Hat

⇧ ってなっていて、

次のように考えてください。OpenStack 自体はリソースを仮想化せず、リソースを使用してクラウドを構築します。OpenStack はコマンドを実行せず、ベース OS に中継します。

OpenStack、仮想化、ベース OS という 3 つのテクノロジーのすべてが連携して機能しなければなりません。この相互依存関係が、多数の OpenStack クラウドLinux® を使用してデプロイされている理由です。

これは、OpenStack をオープンソースソフトウェアとして公開するという RackSpace と NASA の決定の根拠ともなっています。

OpenStack とは | Red Hat

⇧ って仰ってますと。2種類のソフトウェアを使用っていうのは、「仮想化」「ベースOS」を指しているかと。

な、なんと!

OpenStack は、OS(Operating system)では無いのであった!

いや、本当に情報が錯綜し過ぎてて、何を信じれば良いのやら...

少なくとも、OpenStack については、Red Hat の見解が一番正確な気がするけど...

 

ちなみに、OpenStackにどんな機能があるのかは、

docs.openstack.org

docs.openstack.org

⇧ ドキュメントにアーキテクト図が掲載されてました。 

まぁ、何て言うか、多機能ですな。 

大まかには、

OpenStack のアーキテクチャは数多くのオープンソース・プロジェクトで構成されています。6 つの安定したコアサービスがコンピューティング、ネットワーキング、ストレージ、ID、イメージを処理します。さらに、開発成熟度が異なる多数のオプションサービスがあります。この 6 つのコアサービスがインフラストラクチャとなり、こうして他のプロジェクトがダッシュボード、オーケストレーション、ベアメタル・プロビジョニング、メッセージング、コンテナ、ガバナンスを処理できます。

f:id:ts0818:20200405150316p:plain

OpenStack とは | Red Hat

⇧ 「NOVA」「NEUTRON」「SWIFT」「CINDER」「KEYSTONE」「GLANCE」の6つのコアサービスに分類されてるらしいですと。 

コアサービスって何なのかしらね?

コンポーネントってことで良いのではないかと、コード名が一致するみたいだし。

まぁ、何て言うか、OpenStack における「コンポーネント」って何だよ?っていうね、もう説明が中途半端だな~。

Red Hat さんの説明によりますと、 

各 OpenStack サービスには、Linux サービスおよびその他のコンポーネントの機能グループが含まれています。たとえば、glance-api および glance-registry Linux サービスは MariaDB データベースとともに Image サービスを実装します。OpenStack サービスに含まれるサードパーティーコンポーネントに関する詳しい情報は、「サードパーティーのコンポーネント」を参照してください。

第1章 コンポーネント Red Hat OpenStack Platform 8 | Red Hat Customer Portal

⇧ 一般的な「コンポーネント」の概念ということで良さ気ですかね。

OpenStackにおける「コンポーネント」は、

コンポーネント(component)または、構成要素とは部品あるいは成分を表し、分野により以下のような意味を持つ。

コンポーネント - Wikipedia

⇧ ってことにしときますか。

OpenStackのコアサービスって言うのは、いろんな機能が集まった部品ってことっすかね。

 

OpenShiftって?

そんじゃ、OpenShiftって?

OpenShift(オープンシフト)はレッドハットが開発するコンテナ化ソフトウェア・ファミリー。

OpenShift - Wikipedia

⇧ な~るほど、ザ・ワールド。

OpenShift は、Red Hat のみのもの、且つ、コンテナ化ソフトウェア・ファミリーですと。

コンテナっていうことは、OpenStackに乗っけることができるっちゅうことですかね、いや、OpenStack 意外にも選択肢はあると思うけど。

rheb.hatenablog.com

OpenShiftを利用する際は様々な環境でデプロイすることができます。

OpenShift on OpenStackの一例 - 赤帽エンジニアブログ

⇧ 上記サイト様によりますと、クラウド上じゃなくても、普通のオンプレミス環境にもデプロイできるんであると。

 

OpenShift の Wikipedia の続きによりますと、

OpenShiftは、コンテナ機能であるDockerと、Dockerコンテナのオーケストレーション機能を提供するKubernetesをベースに、更にコンテナを使用した開発や運用に便利な機能を提供する。

OpenShift - Wikipedia

⇧ Docker + Kubernetes ときまして、プラスα の機能があるんですと。

そのプラスαってやつが、

1つはアクセスコントロール、もう1つはコンテナのビルドとデプロイ機能である。アクセスコントロールは、リソース分離と権限分掌によって実現する。

OpenShift - Wikipedia

⇧ でありますと。

 

そうは言っても、Kubernetesを使ったら良いんじゃないの?って思った貴方!

ワシもじゃ、ワシもじゃ、みんな!!

www.ibm.com

しかし、最先端のKubernetesを企業情報システムへ適用するのは、要求されるスキルも高く実現するための障壁が高い。これに対してRed Hat OpenShiftは企業でKubernetesを利用するための優れたプラットフォームであると言える。

OpenShiftとKubernetesの違いと価値 - THINK Blog Japan

⇧  そうなんです、Kubernetesを実際のシステムに導入するのは無茶苦茶に難易度が高いんですと。

 

www.atmarkit.co.jp

株式会社はてな さんの事例が有名ですかね。

まぁ、それでも、Kubernetesの機能は魅力的というか、マイクロサービス化が進みゆく昨今の流れを鑑みるに、オーケストレーションを実現するKubernetesの機能は欠かせない存在になるのではなかろうか?

ということで、いまいまは、OpenShift が良いらしいですと。

 

OpenStack と OpenShift の関係って?

というわけで、OpenStackとOpenShiftについて調査した過程で見えてきたことは、

 

アプリケーション

  ↓ デプロイ

OpenShift

  ↓ デプロイ

OpenStack

  ↓ デプロイ

OS(Operating system)

 

みたいな関係性ですかね。

「OS(Operating system)」の上に「OpenStack」、「OpenStack」の上に「OpenShift」、「OpenShift」の上に「アプリケーション」っていう構成になるかと。

QCDS(Quality、Cost、Delivery、Scope)で言うと、Scopeが変わってくるみたいなイメージでしょうかね。 

 

OS(Operating system)としては、 

対応OS コントローラーノード:Linuxのみ
コンピュートノード:クロスプラットフォーム

OpenStack - Wikipedia

Linux を使っておいた方が無難そうですかね。

んでさ、OpenStack の「コントローラーノード」「コンピュートノード」とかって言われてもさ、OpenStackの「ノード」って何を意味しているのよ?

news.mynavi.jp

OpenStackは、役割ごとにノード (物理もしくは仮想サーバ)を構成して利用する。

コントローラノード、コンピュートノード、ネットワークノードに大きく分けられ、コントローラノードは制御用のコンポーネントが配置され、コンピュートノードに関しては、仮想インスタンスを起動するハイパーバイザとの連携を担う。

また、ネットワークノードに関しては、ネットワークに関連した役割を担う。

OpenShiftとKubernetesの違いと価値 - THINK Blog Japan

すべてのコンポーネントを単一のノード内に構成することも可能であるが、以下に例として、コントローラ、コンピュート、ネットワークのノードを分割した場合を記載する。

f:id:ts0818:20200405164201j:plain

OpenShiftとKubernetesの違いと価値 - THINK Blog Japan

⇧ なるほど、「物理サーバ」「仮想サーバ」に構成したOpenStackのサービスを「ノード」って言うんだと。

おそらく、「コンテナ」とかも「ノード」としてイケるんでしょうかね。

まぁ、マイナビさんの記事の説明を見る限り、OpenStackのコンポーネントが稼働してるマシンについてを、OpenStackの「ノード」と言って良いってことですかね。

 

OpenStackはどう導入すれば良い?

 なんか、クラウドじゃなくても使えるらしい、たぶん。

openstack.jp

⇧  Red Hat Enterprise Linux の場合は、どうすれば良いんじゃろうか?

 

 ちなみに、OpenStackのリリースについては、 

releases.openstack.org

⇧ OpenStackの公式サイトっぽいところに掲載されてました。 

 

なんか、

www.rdoproject.org

RDO is a community of people using and deploying OpenStack on CentOS, Fedora, and Red Hat Enterprise Linux. We have documentation to help get startedmailing lists where you can connect with other users, and community-supported packages of the most up-to-date OpenStack releases available for download.

Packstack — RDO

⇧ RDOは、OpenStackを、CentOSFedoraRed Hat Enterprise LinuxRHEL)にデプロイしたり利用する人々のためのコミュニティがありますと。

 

www.rdoproject.org

Red Hat Enterprise Linux (RHEL) 7 is the minimum recommended version, or the equivalent version of one of the RHEL-based Linux distributions such as CentOSScientific Linux, and so on. x86_64 is currently the only supported architecture.

Packstack — RDO

Red Hat Enterprise LinuxRHEL)7 以上のバージョン、CentOSも同様のバージョンを満たしましょう、ってなってますね。

日本OpenStackユーザ会の説明だと、Red Hat Enterprise LinuxRHEL)については記載が無いんだけど...

Red Hat Enterprise LinuxRHEL)についても、Packstack ってので構築できるんであろうと、たぶん。

ただし、Packstackは、

qiita.com

"RDO"はRedHat系OS上でOpenStackを動かすユーザ向けのコミュニティ。
"Packstack"はPuppetベースの簡易的なOpenStack環境を構築するデプロイツール。RHELだけでなくCentOSFedoraでも動作する。
コンピュートノードの数を複数作成することはできるが、コントローラノードは1つしか作成できない。(HA構成は無理)
RHELでHA構成のOpenStack環境を自動構築するためには、RedHat社の提供するDirectorなどを使用する必要がある。
最新2つまでのバージョンしかサポートされない。
アンサーテキストと呼ばれるファイルにデプロイ構成(ノードのIPアドレスやインストール対象コンポーネントの指定など)を記述する。

【OpenStack入門】OpenStackを0から理解するためのページ!主要な新旧コマンドもまとめました。【兼OPCEL対策】 - Qiita

⇧ 制約があるみたい。

つまり、

access.redhat.com

f:id:ts0818:20200405164644p:plain

HA デプロイメントでは、Pacemaker または HAProxy によって全 OpenStack サービスが起動/管理される必要があります。これには、関連するサービスおよび依存関係にあるサービスもすべて含まれます。

Red Hat OpenStack Platform の高可用性についての理解 Red Hat OpenStack Platform 8 | Red Hat Customer Portal

⇧ 上記サイト様のような、複数の「Controller Node」は、Packstackでは実現できないってことのようですかね。

複数の「Controller Node」は、HA環境でのみ実現可能で、

たとえば、httpd サービスは openstack-dashboard に必要です。そのため、HA 環境では httpd を手動で (たとえば、pcs ではなく systemctl を使用して) 起動/有効化してはなりません。HA デプロイメントにおけるコロケーションや依存関係の問題の多くは、サービスが Pacemaker または HAProxy 以外で管理され ていることが原因です。

Red Hat OpenStack Platform の高可用性についての理解 Red Hat OpenStack Platform 8 | Red Hat Customer Portal

⇧ OpenStack内のサービスはすべて、Pacemaker または HAProxy で管理される必要があるらしいですと。

この問題を回避するには、HA デプロイメントをすべて director でオーケストレーションを行ってください。director が使用するテンプレートと puppet のモジュールにより、全サービスが正しく設定/起動されます。さらに、HA の問題をトラブルシューティングする際には、可能な場合には HA フレームワークを介してサービスと常に対話を行ってください。

Red Hat OpenStack Platform の高可用性についての理解 Red Hat OpenStack Platform 8 | Red Hat Customer Portal

⇧ director ってのを使用することでしか、完全なHA環境は実現できないらしいですね。 

 OpenStack を導入する場合、

  • シングルノードで構築する場合
    • Packstack
      • 単一のController Nodeを構成
  • マルチノードで構築する場合
    • Red Hat OpenStack Platform director
      • 複数のController Nodeを構成可能
    • Packstack
      • 単一のController Nodeを構成

ってな感じになるらしい。

勿論、手動で1つ1つのコンポネントをインストールして構築する方法もありますと。 

 

2020年4月6日(月)追記:↓ ここから

なんか、新しいバージョンのOpenStackだと、HA環境の制限が緩和されたんですかね?

access.redhat.com

高可用性 (HA) のデプロイメントでは、コアコンテナーアクティブ/パッシブsystemdプレーンコンテナー の 4 つのタイプのサービスがあります。コアコンテナーとアクティブ/パッシブのサービスは Pacemaker によって起動/管理されます。その他のサービスはすべて、systemd で systemctl コマンドを使用するか、Docker で docker コマンドを使用して、直接管理されます。

Red Hat OpenStack Platform の高可用性についての理解 Red Hat OpenStack Platform 13 | Red Hat Customer Portal

⇧ なんか、「コンテナ」での導入を行う場合だと、HA環境のサービスが分かれる?みたいで、

サービス 管轄
 コアコンテナー  Pacemaker 
 アクティブ/パッシブ  Pacemaker 
 systemd  systemd
 プレーンコンテナー  Docker

っていう管理になるんだとか。

HAProxyは、「コアコンテナー」に含まれるようです。

コアコンテナサービスには、Galera、RabbitMQ、Redis、および HAProxyが含まれます。これらのサービスはすべてのコントローラノード上で実行され、開始、停止、再起動の各処理に固有の管理と制約が必要です。

Red Hat OpenStack Platform の高可用性についての理解 Red Hat OpenStack Platform 13 | Red Hat Customer Portal

HA環境のアーキテクト図は、変わって無さ気な気もしますが...

 

というわけで、「コンテナ」の場合は、 

HA デプロイメントでは、Pacemaker または HAProxy によって全 OpenStack サービスが起動/管理される必要があります。これには、関連するサービスおよび依存関係にあるサービスもすべて含まれます。

Red Hat OpenStack Platform の高可用性についての理解 Red Hat OpenStack Platform 8 | Red Hat Customer Portal

⇧ この情報が当てはまらないっちゅうことですかね。

ちなみに、2020年4月6日(月)現在、 

japan.zdnet.com

 SUSEはIaaSのクラウドである「OpenStack」に見切りをつけたが、Red Hatはその限りではない。同社は米国時間2月20日OpenStackディストリビューションの最新バージョン「Red Hat OpenStack Platform(RHOP)16」をリリースした。

「Red Hat OpenStack Platform 16」がリリース--多数の機能を強化 - ZDNet Japan

Red Hatから出てるOpenStackの最新バージョンは、16ってことみたい。 

 この新しいRHOPは、「Red Hat Enterprise Linux(RHEL)8」上に構築されている。新版ではロングライフリリースの仕組みを改良し、包括的な機能統合を行っている。また今後はコミュニティーの革新成果を企業向け機能として、継続的に提供していくという。新版は、過去3つのOpenStackリリースの最も優れた機能を組み合わせ、Red Hat独自の機能強化を行っている。

「Red Hat OpenStack Platform 16」がリリース--多数の機能を強化 - ZDNet Japan

⇧ っていうか、Red Hat Enterprise Linux (RHEL) 8 でOpenStackを動かすには、Red Hat OpenStack Plattform 16 じゃないと駄目ってことかね?

 モジュール式の新しいRed Hat OpenStackは、既存の従来アプリケーションにおけるIT運用を最適化するのが狙い。しかし10年前のように、単にIaaSとしてクラウドストレージを提供しているのではない。ネットワーク機能仮想化(NFV)、エッジコンピューティング、人工知能(AI)、機械学習(ML)など、クラウドネイティブなアプリケーションの基盤として活用できる。

「Red Hat OpenStack Platform 16」がリリース--多数の機能を強化 - ZDNet Japan

⇧ 機能が盛りだくさんになってるようです。

 これまでOpenStackは、あまりにも頻繁にバージョンが変わるため、OpenStack上で標準化するのが困難だとされてきた。RHOP 16は標準化しやすいよう、最長5年間サポートを受けられる。

「Red Hat OpenStack Platform 16」がリリース--多数の機能を強化 - ZDNet Japan

⇧ これは、ありがたいですね。

 とはいえ、バージョンアップするまでOpenStackの最新機能を利用できないわけではない。Red Hatは新機能をRHOPに統合し、プラットフォームを大規模に更新せずとも、導入できるようにする。

「Red Hat OpenStack Platform 16」がリリース--多数の機能を強化 - ZDNet Japan

⇧ ややこしいことになりそうな気もするけど。

技術革新が早いな~...

2020年4月6日(月)追記:↑ ここまで

 

2020年4月7日(火)追記:↓ ここから

悲報...

Red Hat OpenStack Platform director を使って、OpenStackを構築する場合は、

全ノードにはベアメタルシステムを使用することを推奨します。最低でも、コンピュートノードにはベアメタルシステムが必要です。

https://access.redhat.com/documentation/ja-jp/red_hat_openstack_platform/13/pdf/director_installation_and_usage/Red_Hat_OpenStack_Platform-13-Director_Installation_and_Usage-ja-JP.pdf

⇧ 物理マシンを用意せんといかんのだと。

推奨要件

  • Red Hat OpenStack Platform director 用のホストマシン 1 台
  • Red Hat OpenStack Platform コンピュートノード用のホストマシン 3 台
  • Red Hat OpenStack Platform コントローラーノード用のホストマシン 3 台
  • クラスター内に Red Hat Ceph Storage ノード用のホストマシン 3 台

https://access.redhat.com/documentation/ja-jp/red_hat_openstack_platform/13/pdf/director_installation_and_usage/Red_Hat_OpenStack_Platform-13-Director_Installation_and_Usage-ja-JP.pdf

⇧ 物理マシン10台って...

ガラスの十代」(ガラスのじゅうだい)は、光GENJIの楽曲で、2枚目のシングル1987年11月26日ポニーキャニオンから発売。

ガラスの十代 - Wikipedia

⇧ あまりの衝撃に、「ガラスの十代」を連想してしまったではないか...

  1. ガラスの十代
    (作詞・作曲:飛鳥涼 / 編曲:佐藤準
  2. Graduation
    (作詞:飛鳥涼 / 作曲:CHAGE / 編曲:佐藤準
    卒業」について歌われている。その後もジャニーズJr.のコンサートで歌われることがあるのみならず、卒業ソングとして一般の学校でも歌われることがある。

ガラスの十代 - Wikipedia

⇧ しかも、CHAGE & ASKA が関わってたんか!

すみません、脱線しました。

VMでは性能が足りないサービスが存在する

  • CPUリソースが重要なサービス
  • ディスクIOが激しいサービス
    • Elastic Searchなど
  • レイテンシが重要なサービス
    • 広告配信など
  • 大容量ディスクが必要なサービス
    • オブジェクトストレージのデータノードなど

https://openstackdays.com/archive/2016/wp-content/uploads/2016/07/P4_OpenStack_Days_Brocade_Yahoo.pdf

⇧ Yahoo さんとかも、OpenStackを構築するは物理マシンっしょ、っていうスタンスらしい。

何だよ~、やっぱり、金持ちのツールかよ~。

っていうことで、Red Hat OpenStack Platform director を使って、OpenStackを構築するという夢は潰えたのであった(涙)。

2020年4月7日(火)追記:↑ ここまで

 

OpenShiftはどう導入すれば良い?

OpenShiftについては、Red Hatさんのものなので、クラウドを通して利用しない(今回は、オンプレミス環境、つまり、ローカル環境で利用)のであれば、Red Hatのアカウント登録が必要のようです。

Red Hatさんが開発者向けに無料で利用できるように提供してくれているようなので、アカウントを作成していない場合は、アカウントを作成しましょう。

rheb.hatenablog.com

⇧ 上記サイト様が詳しいです。

 

OpenShift のインストールですが、

ネットワークが制限された環境下では、

rheb.hatenablog.com

⇧  上記サイト様が参考になるかと。

OpenShift on Openstack じゃないけども、

qiita.com

⇧ オンプレミス環境へのOpenShiftのインストールは上記サイト様が参考になるかと。

 

お手軽にOpenShiftを導入したい場合は、

thinkit.co.jp

⇧ 上記サイト様が参考になるかと。

 

というわけで、調査に時間がかかってしまったので、「OpenStack」「OpenShift」の導入なんかについては、次回、試していければと思います。

プログラミングの勉強のほうまで手が回らん...

っていうか、プログラミングを勉強せんといかんのに環境構築に時間が取られるって、本末転倒っぷりが半端ない...

IT系って本当に言葉の定義が曖昧なんだよな~、何とかならんもんかね...

 

今回はこのへんで。