ローカルの変更をリモートのKubernetes環境と同期する方法を希望したことはありますか? そのためのDocker拡張機能があります! Telepresence が Docker Desktop と提携して統合テストを迅速に実行し、どこから始めればよいかについて詳しく知るために、以下をお読みください。
この記事のバージョンは、 大使のブログ。
Docker デスクトップのテレプレゼンス拡張機能を使用してローカルで統合テストを実行する
マイクロサービス ベースのアプリケーションのテストは、リソース要件のためにローカルで実行できなくなった場合、困難になります。 テストのためにクラウドに移行するのは簡単ですが、ローカルの変更をリモートのKubernetes環境とどのように同期しますか?
テレプレゼンスを使用してリモートデプロイを待つ代わりに、ローカルで統合テストを実行し、Docker Desktop の拡張機能として利用できるようになりました。 Docker でテレプレゼンスを使用すると、Docker ツールチェーンと連携する柔軟なリモート開発環境が得られるため、Kubernetes ベースのアプリのコーディングとテストをより迅速に行うことができます。
次の簡単な手順で Docker のテレプレゼンスをインストールします。
- Docker デスクトップをダウンロードします。
- Docker デスクトップを開きます。
- Dockerダッシュボードで、左側のナビゲーションバーにある[拡張機能の追加]をクリックします。
- 拡張機能マーケットプレイスで、アンバサダー テレプレゼンス拡張機能を検索します。
- [インストール]をクリックします。
テレプレゼンス拡張機能を介してアンバサダークラウドに接続します。
テレプレゼンス拡張機能を Docker Desktop にインストールした後、テレプレゼンス拡張機能をアンバサダー クラウドに接続するための API キーを生成する必要があります。
- Docker デスクトップでテレプレゼンス拡張機能をクリックし、[開始する] をクリックします。
- 「API キーの取得」ボタンをクリックして、ブラウザー・ウィンドウでアンバサダー・クラウドを開きます。
- Google、GitHub、または Gitlab アカウントでサインインします。 アンバサダークラウドが開き、プロファイルが表示され、API キーが表示されます。
- API キーをコピーし、Docker ダッシュボードの [API キー] フィールドに貼り付けます。
Docker デスクトップでクラスターに接続します。
- ドロップダウンメニューから目的のクラスターを選択し、[次へ] をクリックします。 これで、このクラスターが kubectl の現在のコンテキストに設定されます。
- [[クラスター] に接続] をクリックします。 クラスターが接続され、 インターセプトを作成できるようになりました。
上記の記録に示されている例を実際に使用するには、次の手順に従ってください。
1. Docker デスクトップ Kubernetes クラスターをローカルで有効にして起動する 1.
テレプレゼンス拡張機能を Docker デスクトップにまだインストールしていない場合は、インストールします。
2.ローカルのDockerデスクトップクラスターにemojivotoアプリケーションをインストールします(これを使用してリモートK8sクラスターをシミュレートします)。
次のコマンドを使用して、Emojivoto アプリケーションをクラスターに適用します。
kubectl apply -k github.com/BuoyantIO/emojivoto/kustomize/deployment
3. Docker を使用して 1 つのコンテナーで Web サービスを開始します。
ファイル docker-compose.yml を作成し、そのファイルに以下を貼り付けます。
version: '3' services: web: image: buoyantio/emojivoto-web:v11 environment: - WEB_PORT=8080 - EMOJISVC_HOST=emoji-svc.emojivoto:8080 - VOTINGSVC_HOST=voting-svc.emojivoto:8080 - INDEX_BUNDLE=dist/index_bundle.js ports: - "8080:8080" network_mode: host
ターミナルで実行 docker compose up
して、ローカルでWebサービスの実行を開始します。
4.テストコンテナを使用して、Emojivotoの「リスト」APIエンドポイントをカールし、失敗するのを確認します(バックエンドクラスターにアクセスできないため)。
新しいターミナルでは、別のコンテナでEmojivotoアプリをテストします。 次のコマンドを実行します docker run -it --rm --network=host alpine
。 次に、curl: apk --no-cache add curl
をインストールします。
最後に、curl localhost:8080/api/list、バックエンドクラスターに接続されておらず、絵文字または投票サービスを解決できないため、rpcエラーメッセージが表示されます。
> docker run -it --rm --network=host alpine apk --no-cache add curl fetch https://dl-cdn.alpinelinux.org/alpine/v3.15/main/x86_64/APKINDEX.tar.gz fetch https://dl-cdn.alpinelinux.org/alpine/v3.15/community/x86_64/APKINDEX.tar.gz (1/5) Installing ca-certificates (20211220-r0) (2/5) Installing brotli-libs (1.0.9-r5) (3/5) Installing nghttp2-libs (1.46.0-r0) (4/5) Installing libcurl (7.80.0-r0) (5/5) Installing curl (7.80.0-r0) Executing busybox-1.34.1-r3.trigger Executing ca-certificates-20211220-r0.trigger OK: 8 MiB in 19 packages curl localhost:8080/api/list {"error":"rpc error: code = Unavailable desc = connection error: desc = \"transport: Error while dialing dial tcp: lookup emoji-svc on 192.168.65.5:53: no such host\""}
5.Dockerデスクトップ経由でテレプレゼンス接続を実行します。
Dockerデスクトップを開き、左側のテレプレゼンス拡張機能をクリックします。 青い「接続」ボタンをクリックします。 アンバサダークラウドからAPIキーをコピーして貼り付けます(まだ行っていない場合)(https://app.getambassador.io/cloud/settings/licenses-api-keys)。 メニューから適切な Kubernetes コンテキストを選択して、Emojivoto アプリケーションをデプロイしたクラスターを選択します。 [次へ] をクリックすると、拡張機能がテレプレゼンスをローカル クラスタに接続します。
6.カールを再実行し、これが成功するのを確認します。
次に、curlコマンドを再実行しましょう。 エラーの代わりに、リモートクラスターに接続されていることを示す絵文字のリストが返されます。
curl localhost:8080/api/list [{"shortcode":":joy:","unicode":"😂"},{"shortcode":":sunglasses:","unicode":"😎"},{"shortcode":":doughnut:","unicode":"🍩"},{"shortcode":":stuck_out_tongue_winking_eye:","unicode":"😜"},{"shortcode":":money_mouth_face:","unicode":"🤑"},{"shortcode":":flushed:","unicode":"😳"},{"shortcode":":mask:","unicode":"😷"},{"shortcode":":nerd_face:","unicode":"🤓"},{"shortcode":":gh
7.次に、K8sクラスターで実行されているWebサービスに送信されるトラフィックを「インターセプト」し、テレプレゼンスインターセプトを作成して「ローカル」Docker Composeインスタンスに再ルーティングします。
emojivoto名前空間を選択し、「web」の横にあるインターセプトボタンをクリックします。 ターゲット ポートを 8080 に、サービス ポートを 80 に設定し、インターセプトを作成します。
インターセプトが作成されると、UI に一覧表示されます。 3つのドットが付いた近くの青いボタンをクリックして、プレビューURLにアクセスします。 ブラウザーでこの URL を開くと、Kubernetes クラスターで実行されている依存関係を使用して、Web サービスのローカル インスタンスを操作できます。
おめでとうございます、テレプレゼンスインターセプトと共有可能なプレビューURLが正常に作成されました。 これをチームメイトに送信すると、チームメイトはローカルサービスがDockerデスクトップクラスターと対話した結果を確認できます。
—
テレプレゼンスについてもっと知りたい、または他の生活を改善するDocker拡張機能を見つけたいですか? 次の関連リソースを確認してください。
- 公式の テレプレゼンスDockerデスクトップ拡張機能をインストールします。
- アンバサダーと Kubernetes 開発者向けのソリューションの詳細をご覧ください。
- 新しい Docker 拡張機能に関する同様の記事をお読みください。
- Docker Hub で より役立つ Docker 拡張機能 を見つけてください。
- Docker デスクトップ用の 独自の拡張機能を作成する 方法について説明します。
- 開始して、Windows、Mac、または Linux 用の Docker Desktop をダウンロード します。