マネージドOpenShiftサービス、ROSA上に作るプライベートなOpenShiftの使い方

 
クラウドインフラ全般を担当しているソリューションアーキテクトの伊藤です。
 
このRed Hat Engineers Blogでは何度かROSAについてご紹介する記事が投稿されていますが、
ROSAはマネージドサービスなのでWeb公開前提のサービスだとお考えではありませんか?
ROSAではデプロイ時のコンフィグレーション次第で、プライベートなOpenShiftをマネージドサービスとして構築して利用することができます。
 
過去のROSA記事
 

ROSAでデプロイできる2種類の構成

細かく分類するともっとバリエーションが存在しますが、ROSAは大きく分けて2種類の構成があります。

パブリッククラスタ

最も基本的なROSAクラスタの構成です
作成されるエンドポイント(OpenShiftのWebコンソール、API、アプリケーションの公開URL)はインターネットに向けて露出されています。パスワードやSSOを用いた認証を行いますがWebコンソール、APIエンドポイントを必要な人以外にはアクセスさせないという要件がある場合は別の対応が必要になります。
 
 
 

f:id:takitou:20210622213947p:plain

パブリッククラスタ

プライベートクラスタ

デフォルトでは作成されるエンドポイント(OpenShiftのWebコンソール、API、アプリケーションの公開URL)がインターネットに向けて公開されていないクラスタになります。
ROSAが一般提供開始になった最初のタイミングでは、ROSAクラスタの運用を支えているレッドハットのSREチームがクラスタにアクセスする経路を確保するため、
IPアドレス制限が掛かったセキュリティグループを適用したELBがインターネットに向けて存在していました。
6月中旬よりAWS Private Linkを用いてNLB経由でセキュアに運用するためのアクセス経路が利用可能になり、ROSAを構成する全てのコンポーネントがインターネットに露出されない様にすることできます。
 
プライベートクラスタにおいてはデフォルトの状態はレッドハットのSREチームしかアクセス経路が存在しません。後述する何らかの方法でWebコンソール、OpenShift API、Ingressルートへのアクセス経路を確保する必要があります。
 
従来から存在しているプライベートクラスタ
このプライベートクラスタは現在も利用可能な構成です。以下のような構成でクラスタがデプロイされます。
 
 

f:id:takitou:20210622214050p:plain

 

AWS PrivateLinkを用いたプライベートクラスタ
AWS PrivateLink を使う場合は、ROSAクラスタをデプロイする前にVPCやサブネットなどのネットワークコンポーネントを先に手動でデプロイしておく必要があります。既存のサブネットを使う事も可能です。
AWS PrivateLinkを使用するにはエンドポイントサービスを作成する必要がありますが、これはROSAのインストーラが自動で作成しますので、利用者はPrivateLinkを使用するためのオプション指定をするだけで利用可能になります。
なお、AWS PrivateLinkを用いたプライベートクラスタを使うには新規でROSAクラスタを作成する必要があり、既に存在しているROSAクラスタの構成変更では実現することはできません。
 
 
 

f:id:takitou:20210622214119p:plain

Privatelink
 
 
 

既存のVPC、サブネットを用いたROSAクラスタの構築

ROSAクラスタをデプロイするときにVPCやサブネットを同時にデプロイするのが既定の動作になります。
しかし既存のVPC、サブネットにデプロイしたいユースケースも存在しています。
パブリッククラスタ、プライベートクラスタどちらの構成においても、既存VPC、サブネットにROSAクラスタをデプロイすることは可能です。
この場合、以下のURLを参考に以下のAWSコンポーネントをROSAクラスタをデプロイするより前にデプロイします。
  • インターネットゲートウェイ
  • NAT ゲートウェイ
  • サブネット
  • ルートテーブル
  • VPC
  • VPC DHCP オプション
  • VPC エンドポイント

 

 

プライベートクラスタの使い方

プライベートクラスタですが、デフォルトではプライベートなクラスタとして存在しているため限られた空間で使用されるOpenShiftというユースケースもありますが、
AWSのいくつかのサービスと連携することで、既にAWS上で構築したシステムとの連携、一部機能の外部公開といったユースケースに対応します。
・他リソースとの接続したい
・特定のアプリケーションだけを外部公開したい
 
まず、プライベートクラスタにおいては、Webコンソール、OpenShift API、Ingressルートに対してのアクセス経路を確保する必要があります。
以下のURLにあるように、プライベートなアクセス経路を確立します。

access.redhat.com

 
次にすべてのアプリケーションをプライベートな環境で利用する場合においては不要ですが、特定のアプリケーションを外部公開したい要件が発生した場合には以下のような対応を取ることができます。
 
このコマンドでIngressを追加することができます。ルートセレクターを使う事でRouteオブジェクトを作成するときにどのIngressで公開するか選択させることができます。
プライベートクラスタであっても、この追加のIngress作成コマンドでプライベートオプションを付けなければ、インターネットに露出されたサブネットに追加のIngressを作成させることが可能です。
 

まとめ

 今回の構成はシンプルに表現するためすべてシングルアベイラビリティゾーンで構成しました。
ROSAはマネージドサービスでありながら、オプションでインターネットに露出されないセキュアなプライベートクラスタを構成することができます。
AWSのVPC PeeringやVPC VPN、DXを用いた企業内ネットワークとの繋ぎこみを行う事で、OpenShiftの大部分の運用はレッドハットが行い、アプリケーション開発に専念する環境を手に入れることができます。
 
 

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