🌟

MacにMinishiftをインストールする

2022/05/28に公開

はじめに

手軽にOpenshiftを実行できるminishiftをMacにインストールしてみました。
インストール中に詰まったポイントも合わせて紹介します。

環境

macOS Big Sur 11.6.6
minishift 1.34.3
VirtualBox 6.1.26

インストール手順

minishiftは仮想マシンとしてインストールすることができますが,macOSではhyperkitを使う方法と,VirtualBoxを使用する方法があります。詳細はminishiftの公式ドキュメントを参照してください。

今回はVirtualBox上の仮想マシンとしてインストールしてみます。
インストールの手順は以下です。

  1. VirtualBoxをインストールする
  2. minishiftのインストーラをこちらからダウンロード
  3. インストーラの実行

VirtualBoxをインストールする

brewを使うことで以下のコマンドで簡単にインストールできます。

brew cask install minishift

minishiftのインストーラのダウンロード

上で紹介したリンクから,minishift-1.34.3-darwin-amd64.tgzをダウンロードします。
ダウンロードしたファイルを展開しその中の,minishiftというバイナリファイルを適当なディレクトリに置きます。今回は~/Applications/minishift/というディレクトリを作成し,そこに配置しました。

インストーラの実行

インストーラを配置したディレクトリに移動し,以下のコマンドを実行するだけです。

./minishift start --vm-driver virtualbox

インストールがうまく行くとVirtualBox上にminishiftの仮想マシンが作成されて,自動的に起動されます。

ログ

❯ ./minishift start --vm-driver virtualbox
-- Starting profile 'minishift'
-- Check if deprecated options are used ... OK
-- Checking if https://github.com is reachable ... OK
-- Checking if requested OpenShift version 'v3.11.0' is valid ... OK
-- Checking if requested OpenShift version 'v3.11.0' is supported ... OK
-- Checking if requested hypervisor 'virtualbox' is supported on this platform ... OK
-- Checking if VirtualBox is installed ... OK
-- Checking the ISO URL ... OK
-- Downloading OpenShift binary 'oc' version 'v3.11.0'
 53.27 MiB / 53.27 MiB [==============================================================================================================================================] 100.00% 0s-- Downloading OpenShift v3.11.0 checksums ... OK
-- Checking if provided oc flags are supported ... OK
-- Starting the OpenShift cluster using 'virtualbox' hypervisor ...
-- Minishift VM will be configured with ...
   Memory:    4 GB
   vCPUs :    2
   Disk size: 20 GB

   Downloading ISO 'https://github.com/minishift/minishift-centos-iso/releases/download/v1.17.0/minishift-centos7.iso'
 375.00 MiB / 375.00 MiB [============================================================================================================================================] 100.00% 0s
-- Starting Minishift VM ........................ OK
-- Checking for IP address ... OK
-- Checking for nameservers ... OK
-- Checking if external host is reachable from the Minishift VM ... 
   Pinging 8.8.8.8 ... OK
-- Checking HTTP connectivity from the VM ... 
   Retrieving http://minishift.io/index.html ... OK
-- Checking if persistent storage volume is mounted ... OK
-- Checking available disk space ... 1% used OK
-- Writing current configuration for static assignment of IP address ... OK
   Importing 'openshift/origin-control-plane:v3.11.0' . CACHE MISS
   Importing 'openshift/origin-docker-registry:v3.11.0' . CACHE MISS
   Importing 'openshift/origin-haproxy-router:v3.11.0' . CACHE MISS
-- OpenShift cluster will be configured with ...
   Version: v3.11.0
-- Pulling the OpenShift Container Image ............. OK
-- Copying oc binary from the OpenShift container image to VM ... OK
-- Starting OpenShift cluster .............................................................
Getting a Docker client ...
Checking if image openshift/origin-control-plane:v3.11.0 is available ...
Pulling image openshift/origin-cli:v3.11.0
E0527 16:01:35.276713    2562 helper.go:173] Reading docker config from /home/docker/.docker/config.json failed: open /home/docker/.docker/config.json: no such file or directory, will attempt to pull image docker.io/openshift/origin-cli:v3.11.0 anonymously
Image pull complete
Pulling image openshift/origin-node:v3.11.0
E0527 16:01:38.514982    2562 helper.go:173] Reading docker config from /home/docker/.docker/config.json failed: open /home/docker/.docker/config.json: no such file or directory, will attempt to pull image docker.io/openshift/origin-node:v3.11.0 anonymously
Pulled 5/6 layers, 85% complete
Pulled 6/6 layers, 100% complete
Extracting
Image pull complete
Checking type of volume mount ...
Determining server IP ...
Using public hostname IP 192.168.99.100 as the host IP
Checking if OpenShift is already running ...
Checking for supported Docker version (=>1.22) ...
Checking if insecured registry is configured properly in Docker ...
Checking if required ports are available ...
Checking if OpenShift client is configured properly ...
Checking if image openshift/origin-control-plane:v3.11.0 is available ...
Starting OpenShift using openshift/origin-control-plane:v3.11.0 ...
I0527 16:01:52.836027    2562 config.go:40] Running "create-master-config"
I0527 16:01:54.937045    2562 config.go:46] Running "create-node-config"
I0527 16:01:55.755186    2562 flags.go:30] Running "create-kubelet-flags"
I0527 16:01:56.053252    2562 run_kubelet.go:49] Running "start-kubelet"
I0527 16:01:56.197776    2562 run_self_hosted.go:181] Waiting for the kube-apiserver to be ready ...
I0527 16:02:39.207825    2562 interface.go:26] Installing "kube-proxy" ...
I0527 16:02:39.208440    2562 interface.go:26] Installing "kube-dns" ...
I0527 16:02:39.208446    2562 interface.go:26] Installing "openshift-service-cert-signer-operator" ...
I0527 16:02:39.208451    2562 interface.go:26] Installing "openshift-apiserver" ...
I0527 16:02:39.208471    2562 apply_template.go:81] Installing "openshift-apiserver"
I0527 16:02:39.209350    2562 apply_template.go:81] Installing "kube-proxy"
I0527 16:02:39.210082    2562 apply_template.go:81] Installing "kube-dns"
I0527 16:02:39.210182    2562 apply_template.go:81] Installing "openshift-service-cert-signer-operator"
I0527 16:02:42.144399    2562 interface.go:41] Finished installing "kube-proxy" "kube-dns" "openshift-service-cert-signer-operator" "openshift-apiserver"
I0527 16:05:06.248964    2562 run_self_hosted.go:242] openshift-apiserver available
I0527 16:05:06.249523    2562 interface.go:26] Installing "openshift-controller-manager" ...
I0527 16:05:06.249536    2562 apply_template.go:81] Installing "openshift-controller-manager"
I0527 16:05:08.605464    2562 interface.go:41] Finished installing "openshift-controller-manager"
Adding default OAuthClient redirect URIs ...
Adding registry ...
Adding router ...
Adding persistent-volumes ...
Adding centos-imagestreams ...
Adding sample-templates ...
Adding web-console ...
I0527 16:05:08.619839    2562 interface.go:26] Installing "openshift-image-registry" ...
I0527 16:05:08.619845    2562 interface.go:26] Installing "openshift-router" ...
I0527 16:05:08.619849    2562 interface.go:26] Installing "persistent-volumes" ...
I0527 16:05:08.619854    2562 interface.go:26] Installing "centos-imagestreams" ...
I0527 16:05:08.619858    2562 interface.go:26] Installing "sample-templates" ...
I0527 16:05:08.619862    2562 interface.go:26] Installing "openshift-web-console-operator" ...
I0527 16:05:08.620046    2562 apply_template.go:81] Installing "openshift-web-console-operator"
W0527 16:05:08.620864    2562 create_secret.go:78] Error reading $HOME/.docker/config.json: open /home/docker/.docker/config.json: no such file or directory, imagestream import credentials will not be setup
I0527 16:05:08.620882    2562 apply_list.go:67] Installing "centos-imagestreams"
I0527 16:05:08.620969    2562 interface.go:26] Installing "sample-templates/nodejs quickstart" ...
I0527 16:05:08.620974    2562 interface.go:26] Installing "sample-templates/rails quickstart" ...
I0527 16:05:08.620978    2562 interface.go:26] Installing "sample-templates/mariadb" ...
I0527 16:05:08.620981    2562 interface.go:26] Installing "sample-templates/mysql" ...
I0527 16:05:08.620984    2562 interface.go:26] Installing "sample-templates/cakephp quickstart" ...
I0527 16:05:08.620988    2562 interface.go:26] Installing "sample-templates/dancer quickstart" ...
I0527 16:05:08.620991    2562 interface.go:26] Installing "sample-templates/django quickstart" ...
I0527 16:05:08.620994    2562 interface.go:26] Installing "sample-templates/jenkins pipeline ephemeral" ...
I0527 16:05:08.620998    2562 interface.go:26] Installing "sample-templates/sample pipeline" ...
I0527 16:05:08.621001    2562 interface.go:26] Installing "sample-templates/mongodb" ...
I0527 16:05:08.621004    2562 interface.go:26] Installing "sample-templates/postgresql" ...
I0527 16:05:08.621048    2562 apply_list.go:67] Installing "sample-templates/postgresql"
I0527 16:05:08.621129    2562 apply_list.go:67] Installing "sample-templates/nodejs quickstart"
I0527 16:05:08.621190    2562 apply_list.go:67] Installing "sample-templates/rails quickstart"
I0527 16:05:08.621250    2562 apply_list.go:67] Installing "sample-templates/mariadb"
I0527 16:05:08.621346    2562 apply_list.go:67] Installing "sample-templates/mysql"
I0527 16:05:08.621406    2562 apply_list.go:67] Installing "sample-templates/cakephp quickstart"
I0527 16:05:08.621462    2562 apply_list.go:67] Installing "sample-templates/dancer quickstart"
I0527 16:05:08.621560    2562 apply_list.go:67] Installing "sample-templates/django quickstart"
I0527 16:05:08.621616    2562 apply_list.go:67] Installing "sample-templates/jenkins pipeline ephemeral"
I0527 16:05:08.621670    2562 apply_list.go:67] Installing "sample-templates/sample pipeline"
I0527 16:05:08.621728    2562 apply_list.go:67] Installing "sample-templates/mongodb"
I0527 16:05:18.062326    2562 interface.go:41] Finished installing "sample-templates/nodejs quickstart" "sample-templates/rails quickstart" "sample-templates/mariadb" "sample-templates/mysql" "sample-templates/cakephp quickstart" "sample-templates/dancer quickstart" "sample-templates/django quickstart" "sample-templates/jenkins pipeline ephemeral" "sample-templates/sample pipeline" "sample-templates/mongodb" "sample-templates/postgresql"
I0527 16:06:06.346048    2562 interface.go:41] Finished installing "openshift-image-registry" "openshift-router" "persistent-volumes" "centos-imagestreams" "sample-templates" "openshift-web-console-operator"
Login to server ...
Creating initial project "myproject" ...
Server Information ...
OpenShift server started.

The server is accessible via web console at:
    https://192.168.99.100:8443/console

You are logged in as:
    User:     developer
    Password: <any value>

To login as administrator:
    oc login -u system:admin


-- Exporting of OpenShift images is occuring in background process with pid 2680.

minishiftへのアクセス

ログの最後に表示されているULIへブラウザからアクセスすることでminisfhitへログインできます。
Userはdeveloper,Passwordは初期状態では設定されていないので,自分の好きなpasswordを入力します。
以下の画面が表示されてログイン成功です。

インストールは以上で完了です。
以下はインストール中に詰まったポイントを紹介します。

minishiftの実行に失敗する

以下のようなエラーになりインストールに失敗しました。

❯ ./minishift start --vm-driver virtualbox
-- Starting profile 'minishift'
省略
Error starting the VM: Error creating the VM. Error creating machine: Error in driver during machine creation: Error setting up host only network on machine start: /usr/local/bin/VBoxManage hostonlyif ipconfig vboxnet0 --ip 192.168.99.1 --netmask 255.255.255.0 failed:
VBoxManage: error: Code E_ACCESSDENIED (0x80070005) - Access denied (extended info not available)
VBoxManage: error: Context: "EnableStaticIPConfig(Bstr(pszIp).raw(), Bstr(pszNetmask).raw())" at line 242 of file VBoxManageHostonly.cpp

どうもVirtualBoxのバージョンが原因のようで,初めは最新バージョン(6.1.34)を使用していたのですが,6.1.24に落とすことで解決しました。(こちらのページを参考にしました。)
また,minishiftのインストールをやり直す際には,ホームディレクトリに作成されている.minishiftのディレクトリを一旦削除する必要があります。

rm -rf ~/.minishift

おわりに

正式なOpenshiftを個人の環境にインストールするのはかなり大変ですが,minishiftなら手軽にインストールできてお手軽に試す分にはよさそうです。

参考リンクまとめ

Minishift Releases: https://github.com/minishift/minishift/releases
Minishift公式ドキュメント: https://docs.okd.io/3.11/minishift/getting-started/index.html

Discussion