Openshift 4 on OpenStack

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のコンテナを一緒に使いたいケースなどが考えられます。

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

access.redhat.com

access.redhat.com

* 各記事は著者の見解によるものでありその所属組織を代表する公式なものではありません。その内容については非公式見解を含みます。