クラウド ネイティブのヒント: OrbStack — ローカル K8s 環境向けのドメイン名マッピング最適化、開発者の新たなお気に入り

クラウド ネイティブのヒント: OrbStack — ローカル K8s 環境向けのドメイン名マッピング最適化、開発者の新たなお気に入り

今日は、新しいパートナーであるOrbStack[2]を紹介したいと思います。OrbStackのスローガンは「遅くて扱いにくいコンテナとVMにさよならを言う」です。しかし、正直に言うと、私が最も気に入っている機能は、設定が不要なローカル ドメイン名機能です。

コンテナドメイン名

OrbStack はコンテナを非常に親密 (強力) かつ大規模に扱い、各コンテナに一意のドメイン名を割り当てます。

たとえば、getting-started という名前のコンテナをローカルで起動し、コンテナ内のポート 80 をローカルのポート 3000 にマップするとします。

 docker run -d -p 3000:80 --name getting-started docker/getting-started

実行中のローカル コンテナは次のとおりです。

写真

以前は、localhost + ポートを介してこのコンテナにアクセスする必要がありました。

写真

さて、どうしましょう? OrbStack によって割り当てられたドメイン名を使用するだけで問題なくアクセスでき、ポートを指定する必要もありません。とても滑らかです。

写真

mDNS

一連のコマンドと検査を通じて、ドメイン名 getting-started.orb.local が実際にコンテナーの IP アドレス 192.168.215.3 に解決されていることがわかります。

 ➜ ping getting-started.orb.local PING getting-started.orb.local (192.168.215.3): 56 data bytes 64 bytes from 192.168.215.3: icmp_seq=0 ttl=63 time=1.714 ms 64 bytes from 192.168.215.3: icmp_seq=1 ttl=63 time=0.472 ms 64 bytes from 192.168.215.3: icmp_seq=2 ttl=63 time=1.204 ms ➜ docker inspect getting-started \ -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 192.168.215.3

ローカルの /etc/hosts ファイルの内容は変更されていないのに、どうやって変更するのでしょうか?まず、システムの DNS 構成情報を見てみましょう。

 ➜ scutil --dns DNS configuration resolver #1 ... resolver #2 domain : local options : mdns timeout : 5 flags : Request A records reach : 0x00000000 (Not Reachable) order : 300000 resolver #3 ...

scutil --dns コマンドの出力では、リゾルバ #2 セクションのオプション フィールドに mdns が含まれています。これは、リゾルバが .local ドメイン名のマルチキャスト DNS クエリを処理するように構成されていることを示します。

mDNSはマルチキャストDNS[3]の略で、従来のDNSサーバーを必要とせずにローカルネットワーク上のホスト名を解決するためのプロトコルです。これは、Bonjour (Apple の実装) がローカル ネットワーク上のサービスとホスト名を検出するために使用するメカニズムです。

 # 获取本地getting-started.orb.local 域名的地址➜ dns-sd -G v4v6 getting-started.orb.local DATE: ---Sat 04 Nov 2023--- 9:52:21.350 ...STARTING... Timestamp A/R Flags IF Hostname Address TTL 9:52:21.351 Add 40000003 18 getting-started.orb.local. FD07:B51A:CC66:0000:A617:DB5E:C0A8:D703%<0> 300 9:52:21.352 Add 40000002 18 getting-started.orb.local. 192.168.215.3 300 # 再查看特定主机的解析信息➜ dns-sd -Q getting-started.orb.local DATE: ---Sat 04 Nov 2023--- 9:55:31.664 ...STARTING... Timestamp A/R Flags IF Name Type Class Rdata 9:55:31.668 Add 40000002 18 getting-started.orb.local. Addr IN 192.168.215.3

すごいですね...この機能があればいいですね。ローカルの MySQL 接続をこのように簡単に調整できます。

写真

カスタムドメイン名

OrbStack を使用すると、ユーザーはコンテナのドメイン名をカスタマイズし、コンテナの起動時にラベルを通じて簡単に挿入できます。

 docker run --rm -l dev.orbstack.domains=foobar.local docker/getting-started

前述のように、OrbStack は mDNS を使用してドメイン名を IP アドレスに解決するため、.local TLD に対してのみ有効です。カスタムドメイン名を作成するときは、これに注意してください。

写真

ドメイン名

http://orb.local にアクセスすると、実行中のコンテナ リンクがすべて表示されます。

写真

情報アイコンをクリックすると、クライアント上でコンテナ リストを表示することもできます。

写真

OrbStack + 種類

次に、ローカル ドメイン名の機能を使用して、自己署名 TLS 証明書のプロセスを再展開し、前回の共有と何が違うのかを確認します。

1. クラスターのドメイン名を取得する

UI を通じて、Kind クラスターのドメイン名を取得します: local-control-plane.orb.local

写真

2. K8s TLSシークレットを作成する

次に、mkcert[4]を使用してワイルドカード証明書を作成した。

 ➜ mkcert '*.local-control-plane.orb.local' Created a new certificate valid for the following names 📜 - "*.local-control-plane.orb.local" Reminder: X.509 wildcards only go one level deep, so this won't match ablocal-control-plane.orb.local ℹ️ The certificate is at "./_wildcard.local-control-plane.orb.local.pem" and the key at "./_wildcard.local-control-plane.orb.local-key.pem" ✅ It will expire on 4 February 2026 🗓

そして、それを K8s TLS シークレットとしてクラスターに追加します。

 kubectl create secret tls tls-secret \ --key=_wildcard.local-control-plane.orb.local-key.pem \ --cert=_wildcard.local-control-plane.orb.local.pem

3. TLSシークレットを使用するようにK8s Ingressを構成する

# 创建一个Nginx Deployment kubectl create deployment nginx-deployment --image=nginx:1.25.3 # 暴露Deployment 作为一个Service kubectl expose deployment nginx-deployment --port=80

最後に、K8s Ingress リソースでこの TLS シークレットを参照して HTTPS を有効にします。対応するドメイン名は nginx.local-control-plane.orb.local です。

 kubectl apply -f - <<EOF apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: nginx spec: tls: # 以下4 行是为了支持TLS - hosts: # - nginx.local-control-plane.orb.local # secretName: tls-secret # rules: - host: nginx.local-control-plane.orb.local http: paths: - path: / pathType: Prefix backend: service: name: nginx-deployment port: number: 80 EOF

これらの手順を完了したら、問題なく検証できます。途中で DNS の設定を行う必要はありません。 🎉

写真

コンテナのHTTPS

💡 ヒント: OrbStack は、今後の安定バージョンで HTTPS サポートをデフォルトで有効にする予定です。つまり、自己署名証明書を手動で作成、インストール、または信頼する必要がなくなり、ローカル開発者にこれまでにない利便性がもたらされます。

写真

最新機能をすぐに体験したい方は、以下の手順に従って早期体験を行ってください。[設定] に移動し、更新チャネルとして [Canary (高速)] を選択してから、OrbStack メニューで [更新の確認] を選択します。


更新チャネルを調整する


アップデートを確認する

アップグレード後、コンテナ内の既存のサービスには https://getting-started.orb.local/ から直接アクセスできるようになります。

写真

OrbStackのネイティブK8sサポート

実際、OrbStack は開発環境向けに最適化された軽量のシングルノード K8s クラスターを提供します。

写真

ローカル開発では、マルチノード クラスターが必要ない場合は、独自のクラスターを構築する代わりに Kind を直接使用できます。

上記のドメイン名機能に加えて、Pod の IP またはサービスの IP に直接アクセスすることもできます。これは日常の開発やテストに非常に便利で、ポート転送を行う必要がありません。

詳細については、Using Kubernetes[5]を直接参照してください。ここでは詳しく説明しません。

裏面に記入

従来の DNS ソリューションから最新の OrbStack まで、ローカル開発環境は大きく変化しました。 OrbStack により、作業効率が向上しただけでなく、これまでにない利便性も享受できました。コンテナへの即時アクセスや Kind クラスターへのシームレスな接続など、OrbStack は強力な機能を実証してきました。

クラウドネイティブの世界では、あらゆる技術的進歩は開発者の生活を楽にするように設計されています。そして今日、私たちはこの目標に向けて新たな大きな一歩を踏み出しました。皆さんも OrbStack を試してみて、楽しんでいただければ幸いです。

次の記事では、クラウド ネイティブ テクノロジーの謎をさらに探っていきます。次回もお楽しみに! 🚀

参考文献

[1]Dnsmasq: https://en.wikipedia.org/wiki/Dnsmasq

[2]オーブスタック: https://orbstack.dev/

[3]マルチキャストDNS: https://en.wikipedia.org/wiki/Multicast_DNS

[4]mkcert: https://github.com/FiloSottile/mkcert

[5]Kubernetesの使用: https://docs.orbstack.dev/kubernetes/

<<:  クラウド コンピューティングの利点とメリットは何ですか?いくつ知っていますか?

>>:  Kubernetes RBAC とは何ですか?なぜそれが必要なのですか?

推薦する

将来を見据えて: マルチクラウド アーキテクチャでのデータ管理

今日、企業が「顧客だけが一番よく知っている」という教訓を学ぶには長い時間がかかります。システム管理者...

クラウド ネイティブ アプリケーションについてどれくらいご存知ですか?

1) 機能からサービスへ1. 関数から始めましょう私は1993年からコンピューターの勉強を始めました...

Kubernetes 上に何を構築するのでしょうか?これらはあなたにインスピレーションを与えるかもしれません

Kubernetes は、あらゆる規模の企業の運用環境における事実上のコンテナ オーケストレーション...

インターネットマーケティング:製品のセールスポイントがコアマーケティング手法

実際、商品のセールスポイントとなると、誰もが理解していますが、インターネットでは結局のところ「価格」...

1月のアプリ購入動向に関する考察

新年最初の1ヶ月は静かに過ぎていきました。昨年と比べて、年初におけるモバイル広告購入にはどのような変...

クラウド効率の3つの側面:コスト、パフォーマンス、速度

この記事では、クラウド効率とその 3 つの要素 (コスト、パフォーマンス、速度) をより明確に定義し...

fraphost - 1g メモリ/30g ハードディスク/月額 6.95 ドル (年額 50 ドル)

fraphostは年に設立され、比較的新しいVPSプロバイダーです。現在、会社の背景に関する詳細な情...

短期的にインクルージョンと重量の利点を改善する方法

インクルージョンはウェブサイトの最適化において非常に重要な要素です。私たちが作成したコンテンツは、ユ...

HostSolutions: ルーマニアのサーバー、独占50%割引、コンテンツ制限なし/苦情防止/Windows

ルーマニアのサーバー プロバイダーである Hostsolutions が、HostCat に最新ニュ...

123systems の新しい XEN VPS が初年度半額で販売中

正直に言うと、123systems の openvz はあまり理想的ではありません。 過剰販売などの...

V5Net:香港の50G高防御独立サーバーの簡易評価、速度は666

v5netは香港で最大防御50Gbpsの高防御サーバーサービスを提供しており、CDNなどを必要とせず...

ウェブマスター運営の3つの悩み「資金なし、技術なし、人脈なし」を解決

ほとんどのウェブマスターは、ウェブサイトを運営する際に、お金がないとか、自分のスキルが十分ではないと...

イベントマーケティングについての簡単な説明:イベントマーケティングの作り方

無名のサイトが早く人気になって注目を集めたいなら、イベントマーケティングを企画するのが一番です!イベ...

推奨: vpsdime-年間15ドル/512MB RAM/30GBハードドライブ/1TBトラフィック/Gポート

vpsdime、まず逃げる心配はありません。実は皆さんがよく知っているブランドはBackupsyなど...