🐕

M1MacのMinikubeでIngressを使う方法

2023/08/01に公開

結論

このコマンドを実行すれば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で読み替える。
https://kubernetes.io/ja/docs/tasks/access-application-cluster/ingress-minikube/

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

参考

https://devopscube.com/minikube-mac/

Discussion