0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

macOS Sequoia で OrbStack の Ingress がブラウザからアクセスできない問題の解決

Posted at

TL;DR(結論)

macOS Sequoia 15.5 で OrbStack を使用して Kubernetes の Ingress を構築したところ、
curlとpingは成功するが、ブラウザ(Arc等)からアクセスできない問題が発生しました。

以下の設定を行うことで解決しました。

必要な設定は1つだけ:

システム設定 > プライバシーとセキュリティ > ローカルネットワーク > ブラウザ(Arc等)を ON

不要な設定(回り道した内容):

  • /etc/hosts の編集
  • /etc/resolver/orb の作成
  • kubectl port-forward の使用
  • ❌ DNS サーバーの手動設定

OrbStack は mDNS (Multicast DNS).orb.local ドメインを自動解決します。


問題の発生状況

症状

macOS Sequoia 15.5 で OrbStack を使用して Kubernetes の Ingress を構築したところ、以下の現象が発生しました:

# Terminal から curl でアクセス → ✅ 成功
$ curl http://hello.k8s.orb.local
Server address: 192.168.X.X:80
Server name: hello-<pod-id>

# ping も成功 → ✅ 成功
$ ping hello.k8s.orb.local
PING hello.k8s.orb.local (192.168.X.X): 56 data bytes
64 bytes from 192.168.139.2: icmp_seq=0 ttl=64 time=0.281 ms

しかし、ブラウザからアクセスすると:

ERR_ADDRESS_UNREACHABLE
このサイトにアクセスできません
http://192.168.X.X/ にアクセスできません。

試したこと(すべて効果なし or 実際には不要だった)

  1. /etc/resolver/orb を手動作成

    echo "nameserver 192.168.139.2" | sudo tee /etc/resolver/orb
    
    • curl は成功するが、ブラウザは失敗
  2. /etc/hosts にエントリを追加

    echo "192.168.139.2 hello.k8s.orb.local" | sudo tee -a /etc/hosts
    
    • curl は成功するが、ブラウザは失敗
  3. ✅ DNS キャッシュのクリア

    sudo dscacheutil -flushcache
    sudo killall -HUP mDNSResponder
    
    • 効果なし
  4. ✅ OrbStack の再起動

    • 効果なし
  5. ✅ macOS の再起動

    • 効果なし

共通の症状: curl/ping は成功するが、ブラウザだけが失敗する


環境

  • macOS: 15.5 (Sequoia)
  • OrbStack: v2.0.4 (2000400)
  • Kubernetes: v1.32.6+orb1
  • ブラウザ: Arc
  • Ingress Controller: nginx-ingress-controller v1.11.1

根本原因

macOS Sequoia の「ローカルネットワーク」権限

macOS 15 (Sequoia) から、アプリケーションがローカルネットワーク(192.168.x.x などのプライベート IP アドレスや mDNS)にアクセスするには、明示的に「ローカルネットワーク」権限を付与する必要があった。

なぜ curl は動作してブラウザは失敗するのか?

アプリケーション ローカルネットワーク権限 結果
Terminal/curl ✅ あり(デフォルト) ✅ 成功
Arc ブラウザ ❌ なし ERR_ADDRESS_UNREACHABLE

重要: これは OrbStack や Kubernetes の問題ではなく、macOS Sequoia のセキュリティ機能

参考 GitHub Issue:


解決方法

ステップ1: ブラウザにローカルネットワーク権限を付与

  1. システム設定 を開く
  2. プライバシーとセキュリティ をクリック
  3. ローカルネットワーク を選択
  4. リストから使用しているブラウザを探す:
    • Arc (Arc ブラウザの場合)
    • 他のブラウザでも同様に操作可能と思われる
  5. チェックボックスを オン にする

ステップ2: 動作確認

ブラウザで http://hello.k8s.orb.local にアクセス。

成功すれば完了です!

(ブラウザの再起動が必要なケースもあるかも。)


以下は自分用メモ。
ブラウザ側の設定に関する問題を乗り越えたあとの
当初やりたかったことの手順

OrbStack で Ingress 環境を構築する完全手順

ゼロから OrbStack で Kubernetes Ingress 環境を構築する手順です。

前提条件

  • OrbStack がインストール済み
  • Kubernetes が有効化されている
    orb start k8s
    

1. NGINX Ingress Controller のインストール

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.11.1/deploy/static/provider/cloud/deploy.yaml

# Ingress Controller が起動するまで待機
kubectl wait --namespace ingress-nginx \
  --for=condition=ready pod \
  --selector=app.kubernetes.io/component=controller \
  --timeout=120s

確認:

kubectl get svc -n ingress-nginx ingress-nginx-controller

出力例:

NAME                       TYPE           CLUSTER-IP        EXTERNAL-IP     PORT(S)
ingress-nginx-controller   LoadBalancer   192.168.194.216   192.168.X.X   80:30751/TCP,443:32727/TCP

EXTERNAL-IP が割り当てられていることを確認してください。

2. サンプルアプリケーションのデプロイ

hello-app.yaml を作成:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello
spec:
  replicas: 1
  selector:
    matchLabels:
      app: hello
  template:
    metadata:
      labels:
        app: hello
    spec:
      containers:
      - name: hello
        image: nginx:alpine
        ports:
        - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: hello
spec:
  selector:
    app: hello
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80

デプロイ:

kubectl apply -f hello-app.yaml

# Pod が起動するまで待機
kubectl wait --for=condition=ready pod -l app=hello --timeout=60s

3. Ingress リソースの作成

hello-ingress.yaml を作成:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: hello-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  ingressClassName: nginx
  rules:
  - host: hello.k8s.orb.local
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: hello
            port:
              number: 80

重要なポイント:

  • ingressClassName: nginx の指定が必須
  • annotationsnginx.ingress.kubernetes.io/rewrite-target: / を追加

デプロイ:

kubectl apply -f hello-ingress.yaml

確認:

kubectl get ingress

出力例:

NAME            CLASS   HOSTS                 ADDRESS         PORTS   AGE
hello-ingress   nginx   hello.k8s.orb.local   192.168.X.X   80      10s

4. 動作確認

ターミナルからテスト:

# curl でテスト
curl http://hello.k8s.orb.local

# ping でテスト
ping -c 2 hello.k8s.orb.local

ブラウザからテスト:

ブラウザで http://hello.k8s.orb.local にアクセス。

もし ERR_ADDRESS_UNREACHABLE が表示される場合は、ブラウザにローカルネットワーク権限を付与してください(上記「解決方法」参照)。


OrbStack の DNS 自動解決の仕組み

mDNS (Multicast DNS) による自動解決

OrbStack は mDNS を使用して、以下を自動的に行います:

  1. Kubernetes の LoadBalancer Service を検出
  2. .orb.local ドメインを mDNS で公開
  3. macOS の mDNS リゾルバーが自動的に解決

つまり、手動での DNS 設定は不要です。

検証: DNS 設定ファイルなしで動作

以下のファイルが存在しなくても、正常に動作します:

# /etc/hosts にエントリがなくても OK
$ grep hello /etc/hosts
(何も表示されない)

# /etc/resolver/orb が存在しなくても OK
$ ls /etc/resolver/orb
ls: /etc/resolver/orb: No such file or directory

# それでもアクセスできる
$ curl http://hello.k8s.orb.local
<!DOCTYPE html>
<html>...

理由: macOS の mDNS リゾルバーが .local ドメインを自動的に解決するため。

dig コマンドでは解決できないが正常

$ dig +short hello.k8s.orb.local
(何も表示されない)

これは正常です。dig は DNS サーバーにのみクエリを送るため、mDNS は使用しません。
一方、curlping、ブラウザは macOS のシステムリゾルバーを使用するため、mDNS で解決できます。


トラブルシューティング

ブラウザで ERR_ADDRESS_UNREACHABLE が出る

症状:

  • curl/ping は成功
  • ブラウザだけが ERR_ADDRESS_UNREACHABLE エラー

原因: ブラウザにローカルネットワーク権限がない

解決:

  1. システム設定 > プライバシーとセキュリティ > ローカルネットワーク
  2. ブラウザを探してチェックボックスを ON
  3. ブラウザを再起動

ブラウザがローカルネットワークのリストに表示されない

解決方法:

  1. ブラウザを完全に終了
  2. ブラウザを再起動してローカル IP(例: http://192.168.139.2)にアクセスを試みる
  3. 権限ダイアログが表示されたら「許可」をクリック
  4. システム設定 > プライバシーとセキュリティ > ローカルネットワーク に表示されるはず

それでも表示されない場合は、macOS を再起動してください。

Ingress Controller の IP が取得できない

kubectl get svc -n ingress-nginx ingress-nginx-controller

EXTERNAL-IP<pending> の場合:

  1. 数分待ってから再度確認
  2. Ingress Controller の Pod が Running か確認
    kubectl get pods -n ingress-nginx
    
  3. OrbStack を再起動
    orb restart k8s
    

Ingress が 404 Not Found を返す

原因: IngressClassName や annotations が不足している

確認:

kubectl describe ingress hello-ingress

以下を確認:

  • Ingress Class: nginx が表示されているか
  • Annotationsnginx.ingress.kubernetes.io/rewrite-target: / があるか
  • Backends にサービスが正しく設定されているか

修正:

spec:
  ingressClassName: nginx  # ← 必須
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /  # ← 推奨

複数の Ingress を作成する場合

2つ目以降の Ingress も、DNS 設定なしで動作します:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: hello2-ingress
spec:
  ingressClassName: nginx
  rules:
  - host: hello2.k8s.orb.local  # ← 新しいホスト名
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: hello2
            port:
              number: 80

デプロイ後、すぐに http://hello2.k8s.orb.local でアクセス可能です(/etc/hosts への追加不要)。


まとめ

根本解決

macOS Sequoia で OrbStack の Ingress を使う場合、必要な設定は1つだけ:

ブラウザにローカルネットワーク権限を付与する

不要な設定(よくある誤解)

以下はすべて不要です:

設定 必要性 理由
/etc/hosts の編集 ❌ 不要 mDNS が自動解決
/etc/resolver/orb の作成 ❌ 不要 mDNS が自動解決
kubectl port-forward ❌ 不要 LoadBalancer が直接アクセス可能
DNS サーバーの設定 ❌ 不要 mDNS が自動解決
OrbStack の再インストール ❌ 不要 権限の問題

注意: トラブルシューティング中に /etc/resolver/orb を手動作成することがありますが、実際には不要です。削除しても正常に動作します。

OrbStack の自動 DNS 解決

OrbStack は mDNS (Multicast DNS) を使って:

  • Kubernetes の LoadBalancer Service を自動検出
  • .orb.local ドメインを自動公開
  • 手動設定なしで名前解決

この問題の本質

macOS Sequoia のセキュリティ強化

  • macOS 15 から、アプリがローカルネットワークにアクセスするには明示的な権限が必要
  • Terminal/curl はデフォルトで権限あり
  • ブラウザは明示的に権限を付与する必要あり
  • OrbStack や Kubernetes の問題ではなく、macOS の仕様

他の開発ツールでも同様の問題が発生する可能性

  • Docker Desktop
  • Rancher Desktop
  • Minikube(ドライバーによる)
  • その他のローカル Kubernetes 環境

すべて同じ解決方法が適用できます:ブラウザにローカルネットワーク権限を付与


参考情報

関連 GitHub Issues

検証済み環境

  • macOS: 15.5 (Sequoia)
  • OrbStack: v2.0.4 (2000400)
  • Kubernetes: v1.32.6+orb1
  • ブラウザ:
    • Arc ✅ 動作確認済み
    • Chrome, Safari でも同様の手順で動作するはず

OrbStack ドキュメント


作成日: 2025-11-01
最終更新: 2025-11-01
検証環境: macOS Sequoia 15.5, OrbStack v2.0.4, Arc 1.117.0

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?