クラウド ネイティブのヒント: 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 とは何ですか?なぜそれが必要なのですか?

推薦する

SEO の観点から Jumei Youpin の URL 問題を分析する

最近、化粧品業界に注目しています。百度で「化粧品」を検索すると、Jumei Youpinが6位にラン...

ショックホスティングはどうですか?デンバーデータセンターのVPSの簡単なテスト

ショックホスティングはどうですか?デンバーでショックホスティングはいかがですか? shockhost...

マイクロサービス上級編: コンテナ実装と落とし穴回避ガイド

編集者注: コンテナとコンテナ オーケストレーション システムは、展開と運用のための基本的なプラット...

韓国政府は、中国がテロ対策のためカカオトークとラインをブロックしたことを認めた

ロイター通信によると、韓国政府は木曜日、中国政府がテロ対策の一環としてモバイルチャットアプリ「カカオ...

ウェブサイトのタイトルの最適化は行いましたか?

新しいウェブサイトでも古いウェブサイトでも、ウェブサイトのタイトルは最適化において非常に重要な詳細で...

ロングテールキーワードを制覇するための5つのステップを教えます

トラフィックが安定して継続するようにウェブサイトを構築するにはどうすればよいでしょうか。実際、多くの...

年末総括:私たちが作成した中国語の外部リンクのリスト

最近最も話題になっているのは電車の切符、年末ボーナス、年次休暇などであり、年末の雰囲気はますます熱を...

リベート ウェブサイトの徹底調査: Wanjia Shopping が「ポンジー」詐欺を開始した方法

衝撃的な知らせを聞いた潘阿成は台州から金華へ急いだ。浙江省金華市のイノベーション国際ビルの広場の入り...

Web ページの構造化プロセスは、貴重な情報を保持するプロセスです。

ウェブページ構造化の目的を紹介しました。構造化のプロセスは、ウェブサイトに貴重な情報を保持するプロセ...

Weiboマーケティングの再定義

ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービス2009年から2019年...

クラウドにも独自のネットワークが必要です。 SDNとVPCの存在

クラウド コンピューティングを水資源に例えると、クラウド ネットワークは蛇口のようなものです。クラウ...

WeChatを使ってアプリのダウンロード数を増やす3つの方法!

モバイル インターネットの時代に入り、さまざまなアプリが次々と登場しています。開発者はすでに私たちの...

推奨: a2hosting-シンガポール/$5/512m メモリ/20g SSD/2T トラフィック/1000M ポート

a2hosting がブラック フライデーの特別プロモーションを実施していたとき、シンガポールにデー...

ホストキー: オランダ/ロシア、スーパー GPU サーバー、AMD Ryzen 9 5950X+2*A4000 または 2*RTX4090+128G メモリ...

Hostkeyは現在、GPUサーバーを提供しています。コンピュータールームは、オランダ、ロシア、フィ...