CRC改め、Red Hat OpenShift Local というローカル実行環境 ( on Fedora release 34)

OpenShift を手元のPC上で動かす方法として、OpenShift 4 からは、Code Ready Container ( CRC ) が提供されていました。最近は、Red Hat OpenShift Local という名称に変更されたようです。
なかなか贅沢なマシンスペックを要求しますが、手軽にOpenShift を動かす方法ではないかなと思います。

この記事では、実際に、FedoraをインストールしたPC上で、Red Hat OpenShift Local 入手から環境の機動までをやってみようと思います。

* アジェンダ
    * 準備
    * コードの入手
    * セットアップ＆起動

## 準備

Red Hat OpenShift Local は、仮想環境で動作します。なので、手元のPCは、仮想化用の設定がされている方がスムーズではないかとおもいます。

### マシンスペック
マシンスペックは、最小で下記のようになります。なお、環境上で動作させるアプリケーション Pod のリソースは考慮されていないため、動作させたいアプリケーションに必要なリソースは別途加算する必要があります。
```
2.1.1.1. OpenShift Container Platform の場合:
  物理 CPU コア 4 個
  空きメモリー 9 GB
  ストレージ領域の 35 GB
```
[最小システム要件の詳細はこちら](https://access.redhat.com/documentation/ja-jp/red_hat_openshift_local/2.5/html/getting_started_guide/installation_gsg#minimum-system-requirements-hardware_gsg)

### ソフトウェア要件
Fedora を前提とすると、libvirt とNetworkManager パッケージが必須です。
[ソフトウェア要件はこちら](https://access.redhat.com/documentation/ja-jp/red_hat_openshift_local/2.5/html/getting_started_guide/installation_gsg#required-software-packages_gsg)


## コードの入手
Red Hat OpenShift Local は、cloud.redhat.com ( console.redha.com) から入手することができます。またインストール中に入力をもとめられる Secret（いわゆるアクティベーションキーのようなもの） についても、同じサイトから入手することができます。

### console.redhat.com へログイン
サイト[console.redhat.com](https://console.redhat.com)にアクセスしたら、Red Hat アカウントでログインします。ログインが無い場合は、サイト右上の登録から作成することができます。
![crc-001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/311140/f79b2f22-3191-1943-ccf7-cb999a995702.png)

ログインが完了すると、ダッシュボードが表示されます。画面左部のOpenShift メニューを選択します。
![crc-002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/311140/61057138-bac1-4f1f-52d9-9c39d1f64608.png)

画面が切り替わると、所有するOpenShift Cluserの一覧画面が表示されます。ここに表示されるものは、アカウントの状態によって内容が変わります。スクリーンショットの状態だといくつかのクラスターがリストアップされています。
この画面で、クラスターリストの上部にある、"Create cluster"ボタンを押下します。
 
![crc-003.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/311140/766fb04e-d8b3-cfe2-2470-b9d3e7738478.png)

作成するクラスタータイプを選択する画面に遷移するので、画面中央部の上半分のタブにある"local" を選択します。
![crc-004.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/311140/208fe7e1-360f-432c-2fed-4d2326308a7e.png)

Red Hat OpenShift Local の各種ファイルをダウンロードできるリンクが表示されます。
![crc-005.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/311140/7bab9740-3185-f263-8d76-317522f9a171.png)
この画面で、１."Download what you need to get started" から、OpenShift Local を動かすホストOSを選択し、"Download OpenShift Local" ボタンを押下することで、セットアップツールを入手できます。
また、同じセクションの、Pull secret については、後述するOpenShift Localのセットアップ中に入力が必要となるクレデンシャル情報を入手できます。

## セットアップ＆起動
ここからは、入手したツールを使用してセットアップの操作を示します。
なお、インストール、セットアップの詳細については、[ドキュメント](https://access.redhat.com/documentation/ja-jp/red_hat_openshift_local/2.5/html-single/getting_started_guide/index)も合わせて参照ください。

以下は、Fedora でのセットアップ操作となります。

### ダウンロードしたファイルの配置

```
### ダウンロードしたファイルが、~/Download に保存されている前提（適宜環境に合わせて読み替え）
$ cd ~/Downloads 
### ダウンロードした、tar.xz  ファイルを展開
$ tar xvf crc-linux-amd64.tar.xz
### ホームディレクトリ配下に、binディレクトリを作成。配置先は任意で問題ない。
$ mkdir -p ~/bin
### メイン実行ファイルである、crc (これは旧名称と同じ...) を、~/bin配下へコピー 
$ cp ~/Downloads/crc-linux-*-amd64/crc ~/bin
### PATH環境変数の調整
$ export PATH=$PATH:$HOME/bin
$  echo 'export PATH=$PATH:$HOME/bin' >> ~/.bashrc
### crc コマンドのバージョン確認
$ crc version
CRC version: 2.5.1+3d569b8
OpenShift version: 4.10.18
Podman version: 4.1.0
$ 
```

### crc コマンドを使用して環境のセットアップ

```
### 　Telemetryデータ収集の有効化
$  crc config set consent-telemetry yes
Successfully configured consent-telemetry to yes

### 旧バージョンのcrc が存在する場合は、初期化を行いたいため、
### crc delete (既存環境の破棄）を実施。下記実行時のメッセージは、
### 既存でCRC環境は無い旨のメッセージが表示された。
### (注意）もし、旧環境がある場合、crc delete を行うと、環境が破棄されるので注意が必要です。
$  crc delete
Machine does not exist. Use 'crc start' to create it
```

crc setupコマンドを実行すると、必要に応じてゲストイメージファイルのダウンロードが実行されます。
```
$ crc setup
INFO Using bundle path INFO Checking if running as non-root              
INFO Checking if running inside WSL2    
...
INFO Downloading crc_libvirt_4.10.18_amd64.crcbundle 
3.13 GiB / 3.13 GiB [---------------------------------------------------------------------------------------] 100.00% 7.32 MiB p/s
crc.qcow2: 12.45 GiB / 12.45 GiB [---------------------------------------------------------------------------------------] 100.00%
oc: 117.14 MiB / 117.14 MiB [--------------------------------------------------------------------------------------------] 100.00%
Your system is correctly setup for using CRC. Use 'crc start' to start the instance
$
```

setup処理が完了すると、crc start コマンドで起動することが可能です。なお、環境のスペックにもよりますが、初回起動時は、前述の console.redhat.com　から入手可能な、Pull secret の入力を求められます。console.redhat.com　コードの入手で参照したページの Copy pull secrete リンクを押下することで、クリップボードにシークレット情報がコピーされるので、そのままペーストで入力するのが楽です。

```
crc start
INFO Checking if running as non-root              
INFO Checking if running inside WSL2              
INFO Checking if crc-admin-helper executable is cached 
INFO Checking for obsolete admin-helper executable 
INFO Checking if running on a supported CPU architecture 
INFO Checking minimum RAM requirements            
INFO Checking if crc executable symlink exists 
...
INFO Checking if the systemd-resolved service is running 
INFO Checking if /etc/NetworkManager/dispatcher.d/99-crc.sh exists 
INFO Checking if libvirt 'crc' network is available 
INFO Checking if libvirt 'crc' network is active  
INFO Loading bundle: crc_libvirt_4.10.18_amd64... 
CRC requires a pull secret to download content from Red Hat.
You can copy it from the Pull Secret section of https://console.redhat.com/openshift/create/local.
? Please enter the pull secret 
### ↑↑↑↑↑↑↑　で処理が中段されて入力街状態となるので、シークレット情報を入力します。
INFO Creating CRC VM for OpenShift 4.10.18...
...
Started the OpenShift cluster.

The server is accessible via web console at:
  https://console-openshift-console.apps-crc.testing

Log in as administrator:
  Username: kubeadmin
  Password: ************************

Log in as user:
  Username: developer
  Password: ***********************

Use the 'oc' command line interface:
  $ eval $(crc oc-env)
  $ oc login -u developer https://api.crc.testing:6443
$
```

OpenShift Localの起動が完了するまでに10〜15分ほど時間がかかります。
起動が完了すると、最終セクションに、OpenShift Local のアクセス情報が表示されます。

### WebUIへアクセス
下記URLを入力すると、OpenShift Local のログイン画面が表示されます。サーバ証明書の警告が表示される場合は、ブラウザの設定で受け入れを承認してください。

```
 https://console-openshift-console.apps-crc.testing
```

ログインアカウントは、管理者権限ユーザ：kubeadmin 又は、開発者ロールユーザ: developer を使用してログインします。

![crc-006.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/311140/552084d2-eff9-fb81-8d32-073caf7cd8a1.png)

下のスクリーンショットは、developerアカウントでログインした場合のDeveloperビューを表示しています。
主に、アプリケーションコンテナのビルドやデプロイを試すのであれば、developer アカウントを使用すると、より実際に近いメニューでの操作を確認することができます。
![crc-007.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/311140/f12ec1c1-521e-68d0-73db-93831b6cd433.png)

一方、kubeadminアカウントでアクセスすると、Administratorビューで、管理者権限で操作可能な全てのメニューを確認することができます。
注意：OpenShift Local は、スモールセットのOpenShift であるため、全ての機能や、cluster-operatorは動作していません。WebUI で表示される項目は、あくまで、管理者権限でみえるメニューのイメージと見ておくのが妥当です。

![crc-008.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/311140/707530b6-2f25-4f24-0f2e-131be9caafb7.png)

## まとめ
いつのまにか、Code Ready Container ( CRC ) から、Red Hat OpenShift Local に名称が変更となりましたが、基本的な使用感は変わっていません。（機能はversion 4.10 に合わせて改良されています。）
OpenShift Cluster を構築しようとすると、サーバリソースがある程度まとまって必要となりますが、OpenShift Local は、よりコンパクトな環境で動かせるため、ちょっと試してみたい場合にちょうどよいのではないかと思います。また、OpenShift Local 上で動作させることができた、マニフェストやコンテナイメージは、OpenShift Cluster へそのまま持ち込む事も可能ですので、開発作業をOpenShift Local 上で行い、テスト以降の工程を、開発環境やステージング環境といったOpenShift Cluster 上で行うような使い方もできるのではないでしょうか。