本記事はJose Gomez氏が2022年2月25日nutanix.devに投稿した記事の翻訳版です。
原文はこちら。
このブログのシリーズの最初の記事である「Nutanix HCI上でRed Hat OpenShiftをはじめよう」では、デジタルトランスフォーメーションのためにクラウドネイティブを実装する中で、NutanixとRed Hatのアライアンスが組織をどのようにご支援するのかを見ていただくには良い内容となっています。
さて、Nutanix上でクラウドネイティブ(追加リソース)を動作させることについてはよく理解ができています、その次のステップへと歩みを進めましょう。Kubernetes ディストリビューションとしてRed Hat OpenShiftを利用して、Nutanix AHV上にKubernetesクラスタを動作させる方法についてです。
概要
このブログを書いている時点で、サポートされているOpenShiftクラスタを展開する手法はplatform agnostic installer (プラットフォームに依存しないインストーラー)です。AHV上でのOpenShiftクラスタのインストールとライフサイクルを一元化するため、Nutanixコミュニティはこれらのタスクを自動化するための一連のNutanix Calm blueprint群を作成しました。Blueprintは こちらから入手可能です。
このブログでは、Calm blueprintを使ったセルフサービスでAHV上へのOpenShiftクラスタを自動で展開する手順について見ていきます。以下の記事では読者がNutanix Calmを利用することができることを前提としています(追加リソース)。
Calm経由で展開されたOpenShiftクラスタはRed Hat社のサポート要件を完全に満たしています。これはOpenShiftに関する問題に出くわした際に重要です。
前提条件
始める前に環境上に以下があることを確認してください:
- Nutanixクラスタ
- AHV 20201105.2175 または それ以降
- 最小AOSヴァージョン5.20.2 または 6.0.1
- 最低の利用可能リソース:
- 30 vCPU
- 106 GB メモリ
- 780 GB ディスク
- Prism Central 2021.9 または それ以降
- Calm 3.3.1.1 またはそれ以降が有効であること
- AHVアカウントが利用できるプロジェクトとIPAMが有効なサブネットが構成されていること
- SSH RSA秘密鍵(手順)
- Calm 3.3.1.1 またはそれ以降が有効であること
- 以下が利用できるAHVのIPAMが有効なサブネット
- インターネットアクセス
- 最低7つの自由に利用できるIPアドレスのあるIPプール:
- 1x 展開用仮想マシン
- 1x ブートストラップ仮想マシン
- 3x コントロールプレーン仮想マシン
- 2x コンピュートノード仮想マシン
- IPプール以外からの静的なアドレス (ロードバランサーで必要)
- OpenShift取得のためのシークレットファイル (Red Hat Portal)
- DNSゾーン作成の権限を以上されたDNSサーバー
動作の様子
OpenShiftの agnostic installer手法ではクラスタのブートストラップについて2つの方法を提供しています:ネットワークPXEブートとISOの利用です。
今回はISOオプションを利用します。この場合、2つの自動化blueprintを利用した展開のプロセスは以下の2つのステージに分割されます:
- ISOイメージの準備
- OpenShiftクラスタの展開
ISOイメージの準備
最初のblueprintは OCP-ProvisioningVM, と呼ばれており、環境向けのカスタムISOイメージの作成に必要なRHCOSとOpenShiftのバイナリをダウンロードします。このblueprintでは単独の仮想マシンを展開します。
このblueprintにはDeploy OCPというそのDay-2アクションも定義されており、ユーザーの入力値と作成したカスタムISOをベースにOpenShiftクラスタを展開します。このアクションでは2つ目のblueprintである OCP-Installerを呼び出し、このblueprintへユーザーの入力値を渡します。
OpenShiftクラスタの展開
次のblueprintは OCP-Installerと呼ばれておりOpenShiftクラスタを作成します。このblueprintは単独で利用されることは意図されておらず、上でご紹介したOCP-ProvisioningVM blueprintのDeploy OCP のDay-2アクションから呼び出されて利用されます。このblueprintでは7つの仮想マシンが展開されます: 1x ロードバランサー & DNS 仮想マシン、1x ブートストラップ仮想マシン、3x コントロールプレーン仮想マシン、2x コンピュートノード仮想マシン。
Blueprintの準備
この時点で必要になるものは:
- 両方のblueprintをコンピューターへダウンロード
- SSH RSAプライベート鍵の作成
- AHVのIPAMが有効なサブネットをCalmのプロジェクト内で構成
OCP-ProvisioningVM blueprint
更に進めて、OCP-ProvisioningVM.json blueprint ファイルをCalmへAHVアカウントとIPAMが有効になったサブネットを選択してアップロードます。もしもこの手順に不慣れな場合はCalmのドキュメントの Uploading a Blueprint(Blueprintのアップロード)セクションを確認してください。
続いて、適切なアカウントを Provisioning VM サービスに対して構成します。
最後に設定するのは Provisioning VM サービスの NIC 1です – サブネットを1つ以上設定しなければならない場合も、適切にIPAMが有効になったサブネットを確実に選択してください。
最後にblueprintからCalmが仮想マシンへSSHでログインするための適切な認証情報を要求されます。SSH RSAプライベート鍵をblueprintの認証情報(CRED)に追加します。
blueprintを新たな構成とともに保存します。KUBEADMIN と KUBECONFIGについての2つの警告 は無視してください。
これで OCP-ProvisioningVM blueprintは準備完了ですが、まだすぐに起動するわけではありません。
OCP-Installer blueprint
続いて、OCP-Installer.json blueprint ファイルをCalmの以前と同じプロジェクトにアップロードします。以下のCalmサービスに対して同じ手順を繰り返しますが、今回はそれぞれの場合のアカウント(Account)のみを構成します。標準のNIC 1の設定については変更しないでください:
- LBDNS
- Bootstrap
- ControlPlane
- Compute
SSH RSAプライベート鍵をblueprintの認証情報に追加して、blueprintを保存します。PE_PW と KUBECONFIGB64についての 2つの警告は無視してください。
これで OCP-Installer blueprintは準備完了です。これでblueprintを起動する事ができます (ヤッホーイ)!
Blueprintを起動
すでに2つのステージでの手順については理解しており、blueprintも準備ができているので、OCP-ProvisioningVM アプリケーションを展開するところから始めましょう。
OCP-ProvisioningVM blueprintを起動する
このblueprintは以下を担当します:
- 必要なバイナリをダウンロード
- カスタムISOを作成
- カスタムISOを格納
- OpenShiftクラスタを Deploy OCP day-2 アクションで展開、この際にOCP-Installer blueprint をアクション内で提供されたユーザー入力値として利用します。
Calm blueprintのページから OCP-ProvisioningVM blueprintを起動しましょう。
固有の名前を与え、展開します。
アプリケーションが Running 状態になるまで待ちます。Auditタブへと移動して、展開のプロセスの詳細情報について閲覧することができます。インターネットのスピードにもよりますが、10分ほどで展開が完了します。
OpenShiftクラスタの作成
これこそが我々が待ち望んでいたその時です! 展開が失敗なくスムーズに行われたことを確認するため、以下の情報を確認しましょう:
- LBDNSサービスのための静的なIPアドレス
- OpenShift取得のためのシークレットファイル
- DNSドメイン名
- DNSサブドメイン名
- OpenShiftクラスタ名に利用される
- 様々なOpenShiftのDNSレコードに利用される
- OpenShift内に展開されたKubernetes アプリケーションに利用される
- このDNSゾーンはLBDNSサービス内にホストされる
- 仮想マシンネットワークのサブネット(フォーマットx.x.x.x/x)
- OCP-Installer blueprint 名 (アップロード時に変更した場合のみ)
この段階では、DNSサーバー内にサブドメインのDNSゾーンが存在することを確認しておくこととLBDNSサーバーに静的なIPアドレスが割り振られていることを確認しておくことが重要です。例として、Microsoft DNSを利用しており、サブドメイン名が ocp1だとしたら、それはOpenShiftクラスタ名にも利用され、以下のようなPowerShellコマンドを走らせることが可能です(もちろん、あなたの環境に合わせた値が表示されることになります)。
Add-DnsServerZoneDelegation -Name "ntnxlab.local" -Nameserver "lbdns-ocp1.ntnxlab.local" -ChildZoneName "ocp1"-IPAddress 10.42.26.11 -PassThru -Verbose
OpenShiftクラスタを起動させるためには、OCP-ProvisioningVM blueprintで展開された稼働中のアプリケーションを確認必要があります。アプリケーションの Manage タブにDeploy OCPというアクションがあります。
再生(▶)ボタンをクリックすると、以下の表のような入力値を求められます。
入力値 | 概要 |
ロードバランサー& DNSの静的IP | LBDNSサービス向けの静的なIPアドレス(フォーマット x.x.x.x) |
コンピュートノード数 | 2またはそれ以上。コントロールプレーンのみの展開はCalm blueprintではまだサポートされていません。 |
OpenShift 取得のためのシークレットファイル | シークレットファイルは https://console.redhat.com/openshift/install/pull-secret (JSONフォーマット)からダウンロードできます。 |
ドメイン名 | これはベースとなるDNSのメインの名前です(フォーマット xxx.yyy) |
OpenShiftサブドメイン | これはOpenShiftクラスタをホストするための専用のサブドメイン名です。このゾーンは静的IPアドレスを持つLBDNSへ権限移譲されていなければなりません。 |
仮想マシンネットワークのサブネット | OpenShiftの仮想マシン群が展開されるネットワークサブネットです。(フォーマット x.x.x.x/x) |
Kubernetesサービスネットワーク | サービスオブジェクトのための内部Kubernetesネットワーク(フォーマットx.x.x.x/x)。このネットワークはPodネットワークやデータセンター内のネットワークと重複しないようにしてください。 |
Kubernetes Pod ネットワーク | Podオブジェクトのための内部Kubernetesネットワーク(フォーマット x.x.x.x/x)。このネットワークはサービスネットワークやデータセンター内のネットワークと重複しないようにしてください。 |
OpenShift ホストPodネットワークプレフィックス | サブネットプレフィックス長がそれぞれのノードに割り当てられます。例えば、もしもプレフィックスが23に設定されている場合、それぞれのノードはKubernetes Podネットワークから/23のサブネットが割り当てられます (フォーマット xx) |
OpenShiftインストーラーblueprint名 | これは2つ目のblueprintの名前で、OpenShiftクラスタを展開する際に利用します。 |
Auditタブでアクションがcompletedになったら、Calm アプリケーションページへと戻りましょう。OpenShift<subdomain_name>という名前の新しいアプリケーションがprovisioning(展開中)状態で表示されています。
インターネットのスピードにもよりますが、この展開は30分ほどで完了します。全体の進捗はAuditタブで確認できます。
アプリケーションがrunning(稼働中)状態になったら、Auditタブページへと移動し、Createステージを展開し、OS_Status_Check Start タスク※を展開、OS_Status_Check – Show Login Information をクリックすることで、OpenShiftクラスタへアクセスするための接続の詳細を確認することができます。
※コードが更新されたようで、現在は ProvisioningVM Start タスクとなっているようです。(Goさん、ありがとうございます!)
クラスタへのアクセス
少しばかり長丁場となりましたが、これによってOpenShiftクラスタのあらゆる規模での作成にかかる時間を数時間から数分へと短縮することができました。OpenShiftクラスタの展開は一貫しており、完全に監査された状態で、(もし必要なら)Calm Marketplace経由でセルフサービスでもアクセスすることができます。これらはすべてNutanixのソリューションが提供する強力なセルフサービスと自動化機能の賜物です。
これで、業界をリードするハイパーコンバージドクラウドプラットフォームであるNutanix AHV上で新しいOpenShift Kubernetesクラスタを利用開始することができます。ブラウザを開き、上の手順で入手したURLと認証情報を利用してNutanix上で優先的な選択肢であるKubernetesディストリビューションの検証を始めましょう。