自宅サーバのアプリケーション群を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」のリンクを選びます。
インストーラの取得には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導入のハンズオンを進めます。