OpenStackを担当しているソリューションアーキテクトの輿水です。
Public Cloudで利用できるRed Hat OpenShift Container Platform(以降OCP)のハンズオンや弊社のハンズオンワークショップについてご紹介してきましたが、OCPを、Public Cloudにを展開するのと同様に、Private CloudであるRed Hat OpenStack Platform(以降RHOSP)上にデプロイするOpenshift on OpenStackがあります。考えられるユースケースとしては、既にRHOSP環境があるのでそこでOCPを稼働させたい、Public CloudではなくPrivate CloudでOCPを稼働させたい、RHOSPのインスタンスとOCPのコンテナを一緒に使いたいケースなどが考えられます。
OpenStackとOpenshiftの関係性
- RHOSPがコンピュートやストレージ、ネットワーク、ロードバランサー、暗号化などのリソースをOCPに提供します
- OCPはRHOSPによってプロビジョニングされたインフラ(Red Hat Enterprise Linux CoreOS)上でコンテナ化されたアプリケーションを実行します
- OCPはオンデマンドでRHOSPのリソースを使用します
関係性を少し細かく見てゆきます。
- Compute service
- Red Hat OpenStack Compute (nova)。OCPのnodeとなる仮想マシンを制御します。コンテナはworker nodeで実行されます。
- Object storage
- OpenStackのdefaultはSwiftですが、Red Hat Ceph Object Gateway(RGW)RGWを推奨します。OCPのInternal Registryに使用されます。バックエンドはRed Hat Ceph Block Storage (RBD)を利用します。
- Block storage
- Red Hat OpenStack Block Storage (cinder) 。OCPのPersistent Storageに使用されます。バックエンドはRed Hat Ceph Block Storage (RBD)を利用します。
- Image storage
- Red Hat OpenStack Image Service (glance) 。OCPに必要なRed Hat Enterprise Linux CoreOS (RHCOS)イメージが登録されます。また、Bootstrap nodeおよびクラスターの起動に使用される OCP Ignition ファイルが保存されます。バックエンドはRed Hat Ceph Block Storage (RBD)を利用します。
- Networking service-OpenStack
- Open vSwitch (OVS)
- Networking service - OpenShift
- OpenShift software-defined networking (SDN)
- Ignition
- Red Hat OpenShiftのインストールプロセスで使用されるRed Hat Enterprise Linux CoreOS (RHCOS) ツール
以下で、インストーラーでプロビジョニングされるインフラストラクチャー方法を使用して Red Hat OpenShift Container Platform (OCP) をインストールするおおまかなステップについて記載します。なお、RHOSPとOCPのバージョン組み合わせ及びインストール方法(IPI/UPI)は複数あるため、サポート状況は OpenShift Container Platform on Red Hat OpenStack Platform Support Matrix を確認してください(Red Hat Portalへのログインが必要です)。
RHOSPのインストール
RHOSPはRHOSP directorを利用してRed Hat Ceph Storageも含めてインストールします。
RHOSP上でOCPを利用する際のネットワークの構成方法として、デフォルトのネットワークコンポーネントを使用する方法と、PodとServiceに対してネットワークを提供するためにOctaviaを使用するKuryrというcontainer network interface (CNI) プラグインを使用する方法があります。KuryrはRHOSPのテナントネットワークとOpenShift SDNで二重のencapsulationされることを避けたい場合に使用されます。加えて、RHOSPのインスタンスとOCPのPodの相互接続を提供します。
OCPのインストール
OCPはRHOSPのテナント内で実行され、各テナントのOCPクラスターは他のテナントから分離されます。OCPのインストールの事前準備としてRHOSPで以下の作業を行っておきます。
- パブリックネットワークの作成
- OCPのnodeに必要なflavorの作成
- ユーザーおよびプロジェクト(テナント)の作成
- 例「shiftstack」と呼ばれるプロジェクト を作成し「shiftstack_user」というユーザーを作成
- オブジェクトストレージを使用するためのテナントへのアクセスの付与
- ユーザーのクォータ設定
- OCPクラスターに必要なリソース要件を満たせるように設定
例:
$ openstack network create public --external --provider-network-type flat --provider-physical-network datacentre
$ openstack subnet create --dhcp --gateway 192.168.122.1 --network public --subnet-range 192.168.122.0/24 --allocation-pool start=192.168.122.151,end=192.168.122.200 public
$ openstack flavor create --ram 16384 --disk 25 --vcpu 4 --public m1.large
$ openstack project create shiftstack
$ openstack user create --password 'redhat' shiftstack_user
$ openstack role add --user shiftstack_user --project shiftstack member
$ openstack role add --user shiftstack_user --project shiftstack Member
$ openstack quota set --cores 28 --ram 120000 shiftstack
作成したユーザー(例ではshiftstack_user)でdirectorホストからOCPをインストールします。この際RHOSPのstackユーザーとして操作する必要があるので、RHOSPのCLIを利用するために必要なRCファイルと、RHOSPに接続するための設定が含まれるcloud.yamlファイルをOpenStackのダッシュボードから取得します。Red Hat OpenShift Cluster Manager からダウンロードしたOCP インストールプログラム、クライアント、およびプルシークレットを入手して、ガイドに従ってinstall-config.yamlを生成します。インストールプログラムは複数のOCPクラスターを管理できるため、クラスター毎にディレクトリを分けています。(この例ではocpra-configとocpraを利用)
例:
$ openshift-install --dir=ocpra-config create install-config
? SSH Public Key /home/stack/.ssh/id_rsa.pub
? Platform openstack
? Cloud openstack
? ExternalNetwork public
? APIFloatingIPAddress 192.168.122.152
? FlavorName m1.large
? Base Domain example.com
? Cluster Name ocpra
? Pull Secret [? for help] ******************************************
- SSH Public Key:OCPのnodeにアクセスするための公開鍵。 stack ユーザーの公開鍵を使用します。
- Platform:RHOCPをインストールするクラウドプロバイダー。RHOSPにインストールする場合は「openstack」を指定します。
- Cloud:ダンロードしたclouds.yaml
- ExternalNetwork::「 --external」で定義されるネットワーク
- APIFloatingIPAddress::APIアクセスのための Floating IP
- FlavorName:OCPのnodeとなるインスタンスのフレーバー
- Base Domain:クラスターのベースドメイン名。
- Cluster Name:クラスターの名前。この名前は、ベースドメイン名の接頭辞として
. として追加されます。 - Pull Secret:「Install OpenShift on Red Hat OpenStack Platform with installer-provisioned infrastructure」の「Pull Secret」セクションからコピーした値。
作成されたinstall-config.yamlを利用してOCPをインストールします。
$ cp ocpra-config/install-config.yaml ocpra/ $ openshift-install --dir=ocpra create cluster
OCPインストール後は、RHOSPのダッシュボードで、OCPで使用しているnodeやネットワークが確認できます。
既にRHOSP環境が稼働している場合はOCPのインストールマニュアルを参照してください。RHOSPも含めて構築する場合はRHOSPのインストールマニュアルも必要です。また、OCP 4.6には対応していないのですが、OCP 4.4とRHOSP 16を組み合わせた場合のリファレンスアーキテクチャーの日本語ドキュメントが公開されているので、参考にしてください。
Red Hat OpenStack Platform 13 および 16.0 への Red Hat OpenShift Container Platform 4.4 のデプロイ