succi0303 blog

This is my personal blog. All posts are my own.

Red Had OpenShift LocalでWindows PCのローカルにOpenShiftクラスターを構築してみた

自宅サーバのアプリケーション群をGitOpsで管理することを目標として「Implementing GitOps with Kubernetes」という本を読んでいます。第8章の「GitOps with OpenShift」のハンズオンを実施する前提としてRed Hat OpenShift Localを使って作業用PCローカルにOpenShift環境を構築しました。

Red Hat OpenShift Local

Red Hat OpenShiftは、Red Hat社が提供するエンタープライズ向けのKubernetesディストリビューションです。Red Hat OpenShift Localは、開発およびテスト用に最小限のOpenShiftクラスターをローカルPCに簡単に構築できるツールです。 今回は作業用のWindows PCにOpenShift LocalでOpenShiftクラスターを構築してみました。

作業用PCの環境

インストーラの取得

Red Hat OpenShift Localのページにアクセスして「Install OpenShift on your laptop」のリンクを選びます。

developers.redhat.com

インストーラの取得にはRed Hatアカウントが必要です。未作成の場合はこのタイミングでアカウント作成を求められます。

インストーラ取得画面でプラットフォーム(今回はWindows)を選び、Download OpenShift Localボタンを押してインストーラをダウンロードします。あわせてPull Secret画面でシークレット情報のテキストをダウンロードします。この情報は後の手順で必要になります。

Red Hat OpenShift Localのインストール

ダウンロードしたZipファイルを解凍してMSIファイルを実行しインストーラウィザードを実行します。

最後に再起動を求められるため、Windowsを再起動します。

RedHat OpenShift Localのセットアップ

再起動できたらWindows Powershellを起動してコマンドラインで作業を進めます。最初にcrcコマンドがインストールされていることを確認します。OpenShift Localは以前CodeReady Containerという名前だったのでCRCはその略のようです。

PS C:\Users\succi0303> crc version
CRC version: 2.44.0+facc77
OpenShift version: 4.17.3
MicroShift version: 4.17.3

プリセットを使ってコンフィグを設定します。プリセットはopenshiftまたはpodmanを指定できます。

PS C:\Users\succi0303> crc config set preset openshift
To confirm your system is ready, and you have the needed system bundle, please run 'crc setup' before 'crc start'.

セットアップを実行します。実行結果の出力を見ると20GB程度の仮想マシンのイメージがダウンロードされています。ダウンロードを待つためそれなりに時間がかかりました。

PS C:\Users\succi0303> 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
Thanks for helping us! You can disable telemetry with the command 'crc config set consent-telemetry no'.
INFO Using bundle path C:\Users\succi0303\.crc\cache\crc_hyperv_4.17.3_amd64.crcbundle
INFO Checking minimum RAM requirements
INFO Check if Podman binary exists in: C:\Users\succi0303\.crc\bin\oc
INFO Checking if running in a shell with administrator rights
INFO Checking Windows release
INFO Checking Windows edition
INFO Checking if Hyper-V is installed and operational
INFO Checking if Hyper-V service is enabled
INFO Checking if crc-users group exists
INFO Checking if current user is in crc-users and Hyper-V admins group
INFO Checking if vsock is correctly configured
INFO Checking if CRC bundle is extracted in '$HOME/.crc'
INFO Checking if C:\Users\succi0303\.crc\cache\crc_hyperv_4.17.3_amd64.crcbundle exists
INFO Getting bundle for the CRC executable
INFO Downloading bundle: C:\Users\succi0303\.crc\cache\crc_hyperv_4.17.3_amd64.crcbundle...
5.09 GiB / 5.09 GiB [-----------------------------------------------------------------------------] 100.00% 63.65 MiB/s
INFO Uncompressing C:\Users\succi0303\.crc\cache\crc_hyperv_4.17.3_amd64.crcbundle
crc.vhdx:  20.63 GiB / 20.63 GiB [----------------------------------------------------------------------------] 100.00%
oc.exe:  128.74 MiB / 128.74 MiB [----------------------------------------------------------------------------] 100.00%
INFO Checking if the win32 background launcher is installed
INFO Checking if the daemon task is installed
INFO Installing the daemon task
INFO Checking if the daemon task is running
INFO Running the daemon task
INFO Checking admin helper service is running
INFO Checking SSH port availability
Your system is correctly setup for using CRC. Use 'crc start' to start the instance

OpenShiftクラスタの起動

セットアップが終わったらクラスタを起動します。実行途中でシークレットの入力を求められます。インストーラと一緒に取得したシークレット情報を入力します。

PS C:\Users\succi0303> crc start
INFO Using bundle path C:\Users\succi0303\.crc\cache\crc_hyperv_4.17.3_amd64.crcbundle
INFO Checking minimum RAM requirements
INFO Check if Podman binary exists in: C:\Users\succi0303\.crc\bin\oc
INFO Checking if running in a shell with administrator rights
INFO Checking Windows release
INFO Checking Windows edition
INFO Checking if Hyper-V is installed and operational
INFO Checking if Hyper-V service is enabled
INFO Checking if crc-users group exists
INFO Checking if current user is in crc-users and Hyper-V admins group
INFO Checking if vsock is correctly configured
INFO Checking if the win32 background launcher is installed
INFO Checking if the daemon task is installed
INFO Checking if the daemon task is running
INFO Checking admin helper service is running
INFO Checking SSH port availability
INFO Loading bundle: crc_hyperv_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.
? 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
INFO Starting CRC VM for openshift 4.17.3...
INFO CRC instance is running with IP 127.0.0.1
INFO CRC VM is running
INFO Updating authorized keys...
INFO Check internal and public DNS query...
INFO Check DNS query from host...
INFO Verifying validity of the kubelet certificates...
INFO Starting kubelet service
INFO Waiting for kube-apiserver availability... [takes around 2min]
INFO Adding user's pull secret to the cluster...
INFO Updating SSH key to machine config resource...
INFO Waiting until the user's pull secret is written to the instance disk...
INFO Changing the password for the kubeadmin user
INFO Updating cluster ID...
INFO Updating root CA cert to admin-kubeconfig-client-ca configmap...
INFO Starting openshift instance... [waiting for the cluster to stabilize]
INFO Operator authentication is progressing
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: wHPBx-77YhK-ZL6NS-A22e4

Log in as user:
  Username: developer
  Password: developer

Use the 'oc' command line interface:
  PS> & crc oc-env | Invoke-Expression
  PS> oc login -u developer https://api.crc.testing:6443

ocコマンドを有効にし管理者ユーザ(kubeadmin)でログインしてクラスターの情報を確認します。

PS C:\Users\succi0303> crc oc-env | Invoke-Expression
PS C:\Users\succi0303> oc login -u kubeadmin https://api.crc.testing:6443
Logged into "https://api.crc.testing:6443" as "kubeadmin" using existing credentials.

You don't have any projects. You can try to create a new project, by running

    oc new-project <projectname>

PS C:\Users\succi0303> oc version
Client Version: 4.17.3
Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3
Kubernetes Version: v1.30.5

PS C:\Users\succi0303> oc get nodes
NAME   STATUS   ROLES                         AGE   VERSION
crc    Ready    control-plane,master,worker   15d   v1.30.5

PS C:\Users\succi0303> oc get namespaces
NAME                                               STATUS   AGE
default                                            Active   15d
hostpath-provisioner                               Active   14d
kube-node-lease                                    Active   15d
kube-public                                        Active   15d
kube-system                                        Active   15d
openshift                                          Active   15d
openshift-apiserver                                Active   15d
openshift-apiserver-operator                       Active   15d
openshift-authentication                           Active   15d
openshift-authentication-operator                  Active   15d
openshift-cloud-network-config-controller          Active   15d
openshift-cloud-platform-infra                     Active   15d
openshift-cluster-machine-approver                 Active   15d
openshift-cluster-samples-operator                 Active   15d
openshift-cluster-storage-operator                 Active   15d
openshift-cluster-version                          Active   15d
openshift-config                                   Active   15d
openshift-config-managed                           Active   15d
openshift-config-operator                          Active   15d
openshift-console                                  Active   15d
openshift-console-operator                         Active   15d
openshift-console-user-settings                    Active   15d
openshift-controller-manager                       Active   15d
openshift-controller-manager-operator              Active   15d
openshift-dns                                      Active   15d
openshift-dns-operator                             Active   15d
openshift-etcd                                     Active   15d
openshift-etcd-operator                            Active   15d
openshift-host-network                             Active   15d
openshift-image-registry                           Active   15d
openshift-infra                                    Active   15d
openshift-ingress                                  Active   15d
openshift-ingress-canary                           Active   15d
openshift-ingress-operator                         Active   15d
openshift-kni-infra                                Active   15d
openshift-kube-apiserver                           Active   15d
openshift-kube-apiserver-operator                  Active   15d
openshift-kube-controller-manager                  Active   15d
openshift-kube-controller-manager-operator         Active   15d
openshift-kube-scheduler                           Active   15d
openshift-kube-scheduler-operator                  Active   15d
openshift-kube-storage-version-migrator            Active   15d
openshift-kube-storage-version-migrator-operator   Active   15d
openshift-machine-api                              Active   15d
openshift-machine-config-operator                  Active   15d
openshift-marketplace                              Active   15d
openshift-monitoring                               Active   15d
openshift-multus                                   Active   15d
openshift-network-console                          Active   15d
openshift-network-diagnostics                      Active   15d
openshift-network-node-identity                    Active   15d
openshift-network-operator                         Active   15d
openshift-node                                     Active   15d
openshift-nutanix-infra                            Active   15d
openshift-oauth-apiserver                          Active   15d
openshift-openstack-infra                          Active   15d
openshift-operator-lifecycle-manager               Active   15d
openshift-operators                                Active   15d
openshift-ovirt-infra                              Active   15d
openshift-ovn-kubernetes                           Active   15d
openshift-route-controller-manager                 Active   15d
openshift-service-ca                               Active   15d
openshift-service-ca-operator                      Active   15d
openshift-user-workload-monitoring                 Active   15d
openshift-vsphere-infra                            Active   15d

crc startの出力結果に従って、ブラウザでhttps://console-openshift-console.apps-crc.testingへアクセスしてログインするとOpenShiftの管理コンソールが表示されます。

以上です。必要な作業が終わったらcrc stopクラスタを停止できます。

まとめ

Red Hat OpenShift Localを使ってWindows PCのローカル環境にテスト用のOpenShiftクラスタを構築っしました。ダウンロードの待ち時間や手順をメモする時間を含めて1時間程度で構築が完了しました。

この後は「Implementing GitOps with Kubernetes」を参考にArgo CDによるGitOps導入のハンズオンを進めます。