🐕
M1MacのMinikubeでIngressを使う方法
結論
このコマンドを実行すればOK
# qemuインストール
brew install qemu
# socket_vmnetインストール
brew install socket_vmnet
brew tap homebrew/services
HOMEBREW=$(which brew) && sudo ${HOMEBREW} services start socket_vmnet
# 起動
minikube start --driver qemu --network socket_vmnet
minikube addons enable ingress
確認方法
手順は公式リファレンスをそのままやれば良い。はずなのだけど、hello-worldイメージがamd64アーキテクチャなのか、起動してこないのでnginxで読み替える。
kubectl create deployment web --image=nginx
kubectl expose deployment web --type=NodePort --port=80
200が帰ってくればOK
curl $(minikube service web --url) -I
続いて、ingressリソースを作る。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
rules:
- host: hello-world.info
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: web
port:
number: 80
minikube ip
で取得したipをhostsに設定
192.168.105.2 hello-world.info
200で帰ってくればOK
curl hello-world.info -I
トラシューその1 ドライバーエラー
なのだけど、結論、m1macの場合は、ドライバーをqemuを使わないといけない模様。
デフォルトだと、dockerドライバーが選択されるようだけど、以下のような警告メッセージが表示され、ingressにセットしたエンドポイントにアクセスしても反応しない。
$ minikube service web --url
http://127.0.0.1:60912
❗ Docker ドライバーを darwin 上で使用しているため、実行するにはターミナルを開く必要があります。
hyperkitを使うと良いという情報もいくらかあるのだけど、これもどうもm1macにはインストールできないみたい。
brew install hyperkit
エラー内容
hyperkit: The x86_64 architecture is required for this software.
Error: hyperkit: An unsatisfied requirement failed this build.
最終的には、qemuをインストールすれば良い
brew install qemu
トラシューその2 ネットワークドライバーのエラー
minikube service web --url
❌ MK_UNIMPLEMENTED が原因で終了します: minikube service is not currently implemented with the builtin network on QEMU, try starting minikube with '--network=socket_vmnet'
socket_vmnetをインストールすればいい
brew install socket_vmnet
brew tap homebrew/services
HOMEBREW=$(which brew) && sudo ${HOMEBREW} services start socket_vmnet
参考
Discussion