Linux上でRed Hat OpenShift Local (CRC) を構築する方法:エンタープライズKubernetesをローカル環境へ

Virtualization tutorial - IT technology blog
Virtualization tutorial - IT technology blog

Kubernetesのセットアップで挫折しないでください

バニラのKubernetes (K8s) クラスターをゼロから構築するのは、バラバラの部品から自分で車を組み立てるようなものです。苦労は多いですが、達成感はあります。しかし、CNI、Storage Class、Ingress Controllerの設定に頭を悩ませることなく、エンタープライズアプリケーションの開発に集中したいのであれば、OpenShiftは価値のある近道となります。企業環境においてOpenShiftはセキュリティのゴールドスタンダードですが、一方でサーバーリソースを非常に多く消費します。

Red Hat OpenShift Local(旧称CRC)は、この問題を解決するために誕生しました。OpenShiftの全機能を1つの仮想マシン(VM)にパッケージ化し、個人のPC上で実行できるようにしたものです。高価なProxmoxやクラウドを利用する代わりに、Linux上で直接CRCをインストールすることでKVM/QEMUを活用でき、遅延を抑えて処理パフォーマンスを大幅に向上させることができます。

OpenShift Local: それは一体何か?

簡単に言えば、これは超最小構成のOpenShiftクラスター(シングルノード)です。冗長性(高可用性)がないため、本番環境での使用は推奨されません。逆に、OperatorのテストやCloud-nativeアプリケーションの試作デプロイには、これ以上ない完璧なシミュレーション環境となります。

CRCの仕組みは「Bundle」と呼ばれる仮想マシンのフレームワークに基づいています。起動時に、システムはRed Hat Enterprise Linux CoreOS (RHCOS) を実行するVMを作成します。その中には、API Server、Etcd、管理用Operatorなどのコアコンポーネントがすべて事前に設定されており、すぐに動作するようになっています。

システム要件(無理は禁物です!)

OpenShiftは文字通り「RAMを食い尽くすモンスター」です。8GB RAMのマシンで無理に動かそうとすると、クラスターのヘルスチェックが始まった瞬間にシステムがフリーズします。私の実戦経験に基づくと、ストレスなく動作させるための構成は以下の通りです:

  • CPU: 最低4コア。スムーズにイメージをビルドしたい場合は、8コアを優先してください。
  • RAM: 起動には最低9GB必要ですが、フリーズを避けるためには16GBを確保することをお勧めします。
  • Disk: 35GBのSSD。HDDは使わないでください。クラスターがReady状態になるのを待つだけで1時間以上かかることになります。
  • OS: Fedora、Ubuntu、RHELなどの主要なLinuxディストリウルーション。

詳細な構築手順

1. バイナリのダウンロードとPull Secretの準備

まず、無料のRed Hatアカウントを登録してください。Hybrid Cloud Consoleにアクセスしてバイナリファイルをダウンロードし、最も重要な Pull Secret を取得する必要があります。このコードがないと、クラスターはRed Hatのリポジトリからシステムイメージをプルできず、インストールは即座に失敗します。

# バイナリを展開してシステムディレクトリに移動
tar xvf crc-linux-amd64.tar.xz
sudo cp crc-linux-*-amd64/crc /usr/local/bin/

2. システム環境のセットアップ

命令 crc setup は、KVMやlibvirtなどの依存コンポーネントを自動的にチェックします。また、VMがLinuxホストマシンと通信できるようにネットワークブリッジも設定します。

crc setup

権限エラーが発生した場合は、以下のコマンドでユーザーをlibvirtグループに追加してください:

sudo usermod -aG libvirt $USER
newgrp libvirt

3. リソース設定と起動

デフォルト設定で急いで起動しないでください。Service MeshやServerlessなどのサービスを追加でデプロイする際にクラスターが「息切れ」するのを防ぐため、最初から RAMとCPUを増やしておくことをお勧めします。

# VMに16GBのRAMと6つのCPUを割り当て
crc config set memory 16384
crc config set cpus 6

# 起動し、要求されたらPull Secretを貼り付け
crc start

注意:このプロセスでは約10〜12GBのBundleがダウンロードされるため、安定したインターネット接続を確認してください。

4. 管理コンソールへのアクセス

10〜15分後、システムから developerkubeadmin のアカウント情報が表示されます。コマンドラインを使用するには、ターミナルに環境変数を読み込む必要があります:

eval $(crc oc-env)
oc login -u kubeadmin -p <password> https://api.crc.testing:6443

グラフィカルインターフェースを体験したいですか?その場合は次のコマンドを入力するだけです: crc console

OpenShift Localを使いこなすための実戦テクニック

正しいシャットダウン方法

OpenShiftはEtcdを通じてデータ状態を厳密に管理しています。突然のシャットダウンはクラスターのデータベースを破損させる恐れがあります。PCの電源を切る前やLinuxサーバーをシャットダウンする前には、必ず crc stop を実行してください。

厄介なDNSエラーの解決

もし .testing ドメインにアクセスできない場合、NetworkManagerとsystemd-resolvedの競合が原因である可能性が高いです。最も手っ取り早い解決策は、 /etc/resolv.conf ファイルを確認するか、 crc cleanup を実行してから crc setup を最初からやり直すことです。

ストレージ容量の拡張

デフォルトの35GBは、イメージビルドを数回行うとすぐに一杯になります。長期的に試行錯誤する予定がある場合は、仮想ディスクの容量を少なくとも100GBに増やしておくべきです:

crc config set disk-size 100

結びに

Linux上でのOpenShift Localの構築は、エンタープライズKubernetes標準に触れるための最も安価で迅速な方法です。ハードウェア要件はやや厳しいですが、その分、DatabaseやKafkaを数分でインストールできる強力なOperatorHubエコシステムを手に入れることができます。DNSエラーやKVMの設定で困ったことがあれば、ぜひ下のコメント欄で教えてください!

Share: