Openshift Local インストール&セットアップ Dec-2024版

## **1.はじめに**
OpenShift は Kubernetes をベースにしたプラットフォームであり、Pod、Service などのリソースを簡単に管理できる機能を提供します。プロジェクトの開発環境や本番の運用環境として使用する場合は、いわゆる高可用性を考慮した master x 3 , worker x 2(以上) 構成をとるのが一般的ですが、この場合、5台のサーバマシンを用意しなくてはならないため、手軽とは言えません。
この記事では、いくつか手軽にOpenShiftを試す方法のうち、PC環境上でOpenShiftを動作させることができるOpenSHift Local を紹介します。

### **2.OpenShift Local とは**
[製品ドキュメント](https://docs.redhat.com/ja/documentation/red_hat_openshift_local/2.44/html-single/getting_started_guide/index)には、以下の様に紹介されています。
```text
Red Hat OpenShift Local は、最小限の OpenShift Container Platform 4 クラスターを
ローカルコンピューターに導入します。このランタイムは、開発およびテストの目的で最小限の環境を
提供します。Red Hat OpenShift Local は、主に開発者のデスクトップ上での実行を目的としてい
ます。
```
同ドキュメントには、通常のOpenShiftクラスターとOpenShift Local の違いにもふれています。以下に引用します。

```text
1.2. 実稼働環境の OpenShift Container Platform インストールとの相違点 
Red Hat OpenShift Local 用の OpenShift プリセットは、通常の OpenShift Container Platform
インストールを提供しますが、以下の顕著な違いがあります。

* OpenShift Container Platform クラスターは一時的なクラスターであり、実稼働環境での使用を目的
としていません。
* Red Hat OpenShift Local では、新しい OpenShift Container Platform バージョンへのアップ
グレードパスはサポートされていません。OpenShift Container Platform バージョンをアップグレード
すると、再現が困難な問題が発生する可能性があります。
* コントロールプレーンとワーカーノードの両方として動作する単一のノードを使用します。
* デフォルトでは Cluster Monitoring Operator を無効にします。この無効な Operator が原因で、
Web コンソールの該当部分が機能しなくなります。

* 次の Operator を無効にします。
    * Cloud Credential Operator
    * Cluster Autoscaler Operator
    * Cloud Controller Manager Operator
* OpenShift Container Platform クラスターは、インスタンス と呼ばれる仮想マシンで実行します。
これにより、特に外部ネットワーク関連でさらに相違点が生じる可能性があります。
* Red Hat OpenShift Local が提供する OpenShift Container Platform クラスターには、以下の
カスタマイズができないクラスター設定も含まれています。これらの設定は変更しないでください。

    -. *.crc.testing ドメイン。
    -. 内部クラスター通信に使用されるアドレスの範囲。

* クラスターは 172 アドレス範囲を使用します。この設定が原因で、プロキシーが同じアドレス空間で実行
されている場合などに問題が発生する可能性があります。
```

### **OpenShift Local をインストールできる環境の概要**
OpenShiftは、"AMD64","Intel 64","Appleシリコン"上で稼働させることができます。

#### **リソース要件**
OpenShift Local は、以下のコンピュータリソースが必要となります。
* 物理CPUコア 4個
* 空きメモリ　10.5GB
* ストレージ領域 35GB

#### **オペレーティングシステム要件**
OpenShift Local は、以下のOS上へ導入することができます。
* Microsoft Windows
* macOS
* Linux

ここでは概要を示しましたが、詳細は[製品ドキュメント](https://docs.redhat.com/ja/documentation/red_hat_openshift_local/2.44/html-single/getting_started_guide/index#minimum_system_requirements)を確認してください。

## **3.インストールとセットアップ**
それでは、OpenShift Local を入手して、起動するまでを見ていきます。尚、こちらの手順は、OpenSHift Local 2.44を対象として、Fedora Linux Workstation の Release 40 の環境で作成しました。　他の環境への導入方法は[製品ドキュメント](https://docs.redhat.com/ja/documentation/red_hat_openshift_local/2.44/html-single/getting_started_guide/index#installing_red_hat_openshift_local)を参照してください。

### **最新リリースのダウンロード**
[こちらのリンク](https://console.redhat.com/openshift/create/local)(Red Hat Hybrid Cloud Console)から最新のリリースを入手します。
* Red Hat Hybrid Cloud Console には、Red Hat ID が必要となります。
* OpenShift Local の入手やセットアップに必要な情報をえるうえでは、ライセンスの購入やサブスクリプション契約は必要ありません。

上記のリンクから、Hybrid Cloud Consoleへのログインが完了すると、以下の様な画面が表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/86782/f9f19832-ddaf-cb1b-7010-fd06d60a02d5.png)

画面上の ①の、OpenShift Localセクションにて、希望するOSを選択し、"Download OpenShift Local"ボタンをクリックすると、ファイルのダウンロードが開始されます。(Linux OS の場合、ファイル："crc-linux-amd64.tar.xz"がダウンロードされます。） 

### **入手したファイルの展開と配置**
ダウンロードしたファイル展開し、解凍されたファイルを任意のフォルダへ配置。その後、PATH環境変数に、フォルダへのパスを追加すれば、インストーラーの配置は完了です。
次にダウンロードファイルが、"~/Download"フォルダ配下に置かれた場合の操作例をしめします。

```bash
$ cd !/Download
$ tar xvf crc-linux-amd64.tar.xz

# この例では、HOMEディレクトリ直下に binディレクトリを作成しファイルを配置していますが、アクセス権限
# がある場所であれば、いずれの場所に配置しても特に問題ありません。
$ mkdir ~/bin   
$ cp ~/Downloads/crc-linux-*-amd64/crc ~/bin

# PATH環境変数の更新
$ export PATH=$PATH:$HOME/bin
$ echo 'export PATH=$PATH:$HOME/bin' >> ~/.bashrc
```

### **初期セットアップ**
```crc setup``` コマンド、```crc start``` コマンドを順に実行することで、OpenShift Local の実行に必要なファイルが入手され必要な設定が行われます。

#### **crc setup　の実行**
以下に、crc setup の実行例を示します。設定に関していくつか質問されるので適宜回答を入力してください。

```bash
$ crc setup
CRC is constantly improving and we would like to know more about usage (more details at https://developers.redhat.com/article/tool-data-collection)
Your preference can be changed manually if desired using 'crc config set consent-telemetry <yes/no>'
Would you like to contribute anonymous usage statistics? [y/N]:y
## 使用データの提供に"y"で回答
Thanks for helping us! You can disable telemetry with the command 'crc config set consent-telemetry no'.
INFO Using bundle path /home/user/.crc/cache/crc_libvirt_4.17.3_amd64.crcbundle 
INFO Checking if running as non-root              
INFO Checking if running inside WSL2              
INFO Checking if crc-admin-helper executable is cached 
INFO Caching crc-admin-helper executable          
INFO Using root access: Changing ownership of /home/user/.crc/bin/crc-admin-helper-linux-amd64
## sudoでカレントユーザーのパスワードを入力
[sudo] password for user: 
INFO Using root access: Setting suid for /home/user/.crc/bin/crc-admin-helper-linux-amd64 
INFO Checking if running on a supported CPU architecture 
INFO Checking if crc executable symlink exists    
INFO Creating symlink for crc executable          
INFO Checking minimum RAM requirements            
INFO Check if Podman binary exists in: /home/user/.crc/bin/oc 
INFO Checking if Virtualization is enabled        
# ...<omitted>
## VMイメージのダウンロードが完了するまで少々待ち
INFO Downloading bundle: /home/user/.crc/cache/crc_libvirt_4.17.3_amd64.crcbundle...
737.67 MiB / 5.10 GiB [------------>_____________________________] 14.14% 25.16 MiB/s
oc:  158.80 MiB / 158.80 MiB [---------------------------------------------------------------------------------------------] 100.00%
Your system is correctly setup for using CRC. Use 'crc start' to start the instance
```

#### **crc start　の実行**
続けて、```crc start``コマンドを実行すると、OpenShift Localが起動します。

```bash
$ crc start
INFO Using bundle path /home/user/.crc/cache/crc_libvirt_4.17.3_amd64.crcbundle 
INFO Checking if running as non-root              
INFO Checking if running inside WSL2              
INFO Checking if crc-admin-helper executable is cached 
INFO Checking if running on a supported CPU architecture 
INFO Checking if crc executable symlink exists    
# <...omitted>
INFO Checking if libvirt 'crc' network is available 
INFO Checking if libvirt 'crc' network is active  
INFO Loading bundle: crc_libvirt_4.17.3_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.
## 初めてOpenShift Local をインストールして、かつ、初回の起動時には"pull secret"の入力が
## 求められるので入力する。"pull secret" については後述の「補足:pull secret」を参照
? Please enter the pull secret *****************************************************************************************************
INFO Creating CRC VM for OpenShift 4.17.3...      
INFO Generating new SSH key pair...               
INFO Generating new password for the kubeadmin user 
# <...omitted>
INFO All operators are available. Ensuring stability... 
INFO Operators are stable (2/3)...                
INFO Operators are stable (3/3)...                
INFO Adding crc-admin and crc-developer contexts to kubeconfig... 
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: XXXXXXXXXXXXXXXXXXXX

Log in as user:
  Username: developer
  Password: XXXXXXXXXXX

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

起動処理が完了すると、Web Console のURLや、認証情報などが表示され、OpenShift Local が利用できるようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/86782/27948f71-dad6-b799-887a-591e9b68341d.png)

Cluster Operator を見てみると、通常のOpenShiftクラスターよりもコンパクトなコンポーネント構成で起動している様子を見ることができます。

```text
$ oc get co
NAME                                       VERSION   AVAILABLE   PROGRESSING   DEGRADED   SINCE   MESSAGE
authentication                             4.17.3    True        False         False      12m     
config-operator                            4.17.3    True        False         False      21d     
console                                    4.17.3    True        False         False      13m     
control-plane-machine-set                  4.17.3    True        False         False      21d     
dns                                        4.17.3    True        False         False      14m     
etcd                                       4.17.3    True        False         False      21d     
image-registry                             4.17.3    True        False         False      14m     
ingress                                    4.17.3    True        False         False      21d     
kube-apiserver                             4.17.3    True        False         False      21d     
kube-controller-manager                    4.17.3    True        False         False      21d     
kube-scheduler                             4.17.3    True        False         False      21d     
kube-storage-version-migrator              4.17.3    True        False         False      14m     
machine-api                                4.17.3    True        False         False      21d     
machine-approver                           4.17.3    True        False         False      21d     
machine-config                             4.17.3    True        False         False      21d     
marketplace                                4.17.3    True        False         False      21d     
network                                    4.17.3    True        False         False      21d     
openshift-apiserver                        4.17.3    True        False         False      14m     
openshift-controller-manager               4.17.3    True        False         False      4m53s   
openshift-samples                          4.17.3    True        False         False      21d     
operator-lifecycle-manager                 4.17.3    True        False         False      21d     
operator-lifecycle-manager-catalog         4.17.3    True        False         False      21d     
operator-lifecycle-manager-packageserver   4.17.3    True        False         False      14m     
service-ca                                 4.17.3    True        False         False      21d     
$ 

```
#### **補足：pull secret**
```crc start ``` の処理中に、pull secret の入力を促される場合があります。OS環境上にpull secret が保持されていないケースや有効期限がきれた場合です。

pull secret は、Red Hat Hybrid Cloud Console から入手することができます。
前の手順で、crcのインストールファイルを入手したページと同じ①セクションの後段、Pull secret セクションから取得できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/86782/d1b1b8e1-69fb-d163-395b-942c47794d58.png)

"Copy pull secret "のアンカーをクリックすると、クリップボードにコピーされるので、そのままターミナルセッションで入力を促しているプロンプトにペーストして入力します。

```bash
...
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.17.3...   
...
```


### 4.OpenShift Local の起動・停止など
よく使うコマンドをいくつかチートシート風にメモしておきます。

| 操作内容 | コマンド |
|:-----------|------------:|
| 起動       | crc start        |
| 停止     | crc stop      |
| 削除       | crc delete        |
| 状態確認       | crc status        |
| ocコマンド用の環境変数       | crc oc-env        |
| oc用の環境変数       | crc oc-env        |


以上、今回は、OpenShift Local の2024年12月時点の最新バージョンについて、インストール＆セットアップ方法を紹介しました。

オーソドックスなリソースについては、通常のOpenShiftクラスターと同様に扱うことができるので、ちょっとマニフェストを試したいけど、簡単にアクセス出来るOpenShift環境がない場合などに便利かなと思います。