Openshift 4 on OpenStack

Public Cloudで利用できるRed Hat OpenShift Container Platform(以降OCP)において、Public Cloudにを展開するのと同様に、Private CloudであるRed Hat OpenStack Platform(以降RHOSP)上にデプロイするOpenshift on OpenStackがあります。考えられるユースケースとしては、既にRHOSP環境があるのでそこでOCPを稼働させたい、Public CloudではなくPrivate CloudでOCPを稼働させたい、RHOSPのインスタンスとOCPのコンテナを一緒に使いたいケースなどが考えられます。

f:id:mkoshimizu:20201226120337p:plain

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) ツール
f:id:mkoshimizu:20201226133526p:plain

以下で、インストーラーでプロビジョニングされるインフラストラクチャー方法を使用して 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やネットワークが確認できます。

f:id:mkoshimizu:20201231112205p:plain

既に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 のデプロイ