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

推薦する

APP はマーケティングおよびプロモーション チャネルをどのように選択しますか?

Q:マーケティングプロモーションチャネルの選択方法は?回答: 製品によってチャネルが決まります。 Q...

オンラインで新年を祝う新しい方法:春節期間中の若者のインターネット生活を理解する!

春節がインターネットと出会うとき、新年の雰囲気がオフラインからオンラインへと広がります。同じ新年の習...

天一クラウドは、技術革新を通じて、セキュリティ、信頼性、ユビキタス性、包括性に向けたクラウド開発を推進しています。

5月17日は世界電気通信デーです。中国電信天一クラウドは「赤い雲天一、安全で包括的」をテーマに、オン...

コンテナ、コンテナ クラウド、コンテナ化された PaaS プラットフォームの関係は何ですか?

多くの人は、コンテナが IaaS レイヤーに属するべきか、それとも PaaS レイヤーに属するべきか...

相互金融プラットフォームの冬を乗り切る方法:上場、国境を越えた取引、売却、償還

今年6月以降、関係規制当局はインターネット金融業界の是正に向けた取り組みを強化し始めており、大多数の...

#11.11# losangelesvps: 月額 4 ドル、KVM 仮想 VPS/2G メモリ/1Gbps 帯域幅/無制限トラフィック、月 1 回の無料 IP 変更

losangelesvpsの11.11中国イベントが始まりました。INAPのロサンゼルスデータセンタ...

SEOとは何か、SEOはどのように機能するのか

SEOとは何ですか?また、どのように機能しますか? SEO は検索エンジン最適化の略で、 Googl...

.Roドメイン名、生涯32ユーロ、まだ多くの3桁の未登録があります

.RO はルーマニアの国別ドメイン名です。.RO ドメイン名の登録資格に制限はありません。どの国の個...

重要な報告 |今後のデジタル開発における9つの主要トレンド

2月20日、アリババクラウドリサーチセンターは「2019年デジタルトレンドレポート」を発表しました。...

ウェブサイトのデータ分析を実行する方法

ウェブサイトのデータ分析をどのように行うのでしょうか? これは、以前トラフィックを共有したときに視聴...

reprisehosting-$30/L5420/2G メモリ/500g ハードディスク/10T トラフィック/IPMI/シアトル

reprisehosting はプロモーション用にいくつかの異なる低価格サーバーを立ち上げました。コ...

AWS、EC2とEBSの秒単位課金を発表

10月2日、世界的クラウドコンピューティング大手のAmazon AWSは、EC2(Elastic C...

WeChatの創始者、張小龍の「テンセント特区」:過去と未来

趙南張小龍を有名にしたのはWeChatが初めてではなかった。国内のソフトウェア業界はすでに彼の足跡を...

分析: SEO トレーニング業界におけるインターネット マーケティング手法

私はキーワードのランキングを追跡する習慣があります。最近、これらの SEO トレーニング機関のマーケ...