MS_VSKubernetesTools - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki
- 戻る
-
Visual Studio 系
- Visual Studio Tools for Docker
- Visual Studio Kubernetes Tools
- Desktop 系
- 関連項
-
Visual Studio 系
-
「Visual Studio Tools for Docker」の延長で、
K8s(と言いつつ、実際は AKS)にデプロイしようという野心的な物体。 -
何気に名称が、Visual Studio Tools for Kubernetes に変更されている?
-
参考
- Visual Studio Tools for Kubernetes - Visual Studio Marketplace
https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vs-tools-for-kubernetes
- Visual Studio Tools for Kubernetes - Visual Studio Marketplace
補足(本ページの読み方と、結論の先出し): 本ページは
2019 年から 2026 年にかけての長期の検証記録であり、
「断念 → 再起 → 再び断念 → 再び再起 → …」という
試行錯誤がそのまま残されている点に価値がある。【結論(作者が最終的に到達した評価)】★ 「この手の VS からのブラックボックス化ツールは デメリットが多く浸透しないと判断」 (Visual Studio 2026 の節) → この評価は【業界の実態と一致している】【現在の状況】★ ・【Azure Dev Spaces は 2023年10月に廃止】された → 本ページの手順2・手順3が依拠していた基盤が 既に存在しない → 後継として Bridge to Kubernetes が案内されたが、 【それも 2025年に非推奨化】された ★ ・Visual Studio Tools for Kubernetes 拡張も 更新が止まっている ・Visual Studio の【コンテナ ツール自体】は健在 → Dockerfile 生成、Docker Compose、 WSL2 でのデバッグは現在も使える ★ → 「Docker まで」は VS で、 「K8s から」は CLI / 別ツール、 というのが定着した棲み分け 【今、同じことをするなら】 ・ローカル K8s … Docker Desktop / Rancher Desktop / kind / minikube ・マニフェスト管理 … Helm / Kustomize ・IDE 支援 … VS Code の【Kubernetes 拡張】★ ・内部ループ開発 … Tilt / Skaffold / DevSpace ・デプロイ … GitHub Actions / Azure Pipelines → Argo CD / Flux(GitOps)★
Visual Studio Tools for Dockerの該当節との差分
-
Visual Studio 2019 Community
- .NET Core 3 系
-
Visual Studio 2022 Community
- .NET 6 系
- Docker for Windows が必須ではなくなった。
Visual Studio Tools for Dockerの該当節との差分
-
Visual Studio Kubernetes Tools
-
以下ではなく、
https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vs-tools-for-kubernetes -
以下からインストール(VS2019 の場合)
-

Open PaaSは、ちょっと難しいなぁと思い断念していた。
しかし、Compose on Kubernetesがリリースされ、
これによって、Docker Compose(Dockerコンポーズ)を
Open PaaSで扱えるようになったらしいため、
評価をリスタートしてみる気になった。
補足(Compose on Kubernetes は終了した): 「再起」のきっかけとなった
この技術は、その後 Docker によって開発が終了した。【Compose on Kubernetes】★ ・Docker が提供した 「docker-compose.yml をそのまま K8s にデプロイする」 ための CRD / コントローラ ・Docker Desktop に同梱されていた ・【2021年頃に非推奨化、リポジトリはアーカイブ】★ 【なぜ続かなかったか】 ・Compose と K8s は【抽象度が違いすぎる】 → Compose:単一ホストのコンテナ群を記述する → K8s:分散環境の宣言的な望ましい状態を記述する → Ingress、ConfigMap、Secret、PVC、HPA… Compose に対応物がないものが多すぎる ・結局【K8s マニフェストを書くしかない】★ → 本ページの手順4でも 「K8s での実行の定義は docker-compose ではなく K8s マニフェストに書く」 と作者自身が結論している 【現在の後継】 ・【Docker Compose Bridge】(2024年〜) compose.yml → K8s マニフェストへの変換 ・【Kompose】(CNCF プロジェクト)★ → 本ページの手順9で作者が言及している 「マイグレーション・ツールのように使う」が まさに正しい使い方
手順3まで調査した結果、再び中断した(2019/12/04)。
-
Azure Dev Spaces で実行することはできた
(ただし、パブリック・アクセスが不可能の故、明確では無い)。 -
ツールが(、まだ)、作りこまれていないっぽい。
-
Kubernetes/Helm を追加しても、Azure Dev Spaces に行ってしまい、
Azure Kubernetes Service (AKS) の launchSettings などは構成されない。 -
また、Docker Compose(Dockerコンポーズ)で、
そのまま、AKS にデプロイできない。
-
調査した結果、再び再起した(2019/12/06)。
※ ただし、CLI でやっているので、Visual Studio Kubernetes Tools はあまり関係ない。
-
手順4で
- ネットの上の Docker Compose(Dockerコンポーズ)を
CLI で動かす事が出来た。 - また、AKS で動かす事が出来た。
- ネットの上の Docker Compose(Dockerコンポーズ)を
-
手順5で
-
Visual Studio Tools for Dockerの
Docker Compose(Dockerコンポーズ)を CLI で動かす事が出来た。 - また、AKS で動かす事が出来た。
-
Visual Studio Tools for Dockerの
-
手順6 : 手順5の K8s マニュフェストに Nginx を追加する。
調査した結果、再び再起した(2020/04/13)。
-
手順7 : Docker Desktop for Windows に、寄り道。
-
手順8 : Visual Studio Tools for Dockerの該当節の仕切り直し。
-
手順9 : 手順8を K8s で実施
これらのツールが、
- Helm Charts
- Compose on Kubernetes
- Kompose
辺り(後述の「参考 > OSSコンソーシアム > Wiki」を参照)を統合するのではないだろうか?
Visual Studio 2022
Visual Studio 2022 で動作確認。
- 手順10
- 手順11
「将来的には...」からの変化としては、
Open PaaS系の CaaS だけではなく、
クラウド系の CaaS も歓迎されてきた
(OSS 系がセルフ・ホストするには公開されている技術情報がショボ過ぎて、
結局クラウド・サポートが必要になっているのが現状であるため)。
補足(この観察は的確): 「セルフ ホストは情報が足りず、
結局クラウドに頼る」という指摘は、業界の実態を言い当てている。【なぜセルフ ホスト K8s は難しいのか】★ ・K8s 本体は【クラスタの中身】しか面倒を見ない → 以下は【全部自分で選んで組む】必要がある ・ネットワーク(CNI)… Calico / Cilium / Flannel ・ストレージ(CSI)… 何を使うか ・Ingress … NGINX / Traefik / Istio ・証明書 … cert-manager ・監視 … Prometheus + Grafana ・ログ … Loki / Elastic ・認証 … OIDC 連携 ・アップグレード … 年 3 回のマイナー更新に追随 ★ → 【組み合わせの正解が公開されていない】 (各社が自社構成を持っているだけ) 【マネージド K8s が選ばれる理由】 ・AKS / EKS / GKE は 上記の大半に【既定の答えを用意している】★ ・コントロール プレーンの運用が不要 ・クラウドの LB / ストレージ / IAM と統合済み 【さらに一段抽象化した選択肢(現在の主流)】★ ・【Azure Container Apps】(K8s を隠した CaaS) ・AWS App Runner / Google Cloud Run → 「K8s を使いたいわけではなく、 コンテナを動かしたいだけ」なら 【こちらの方が適切】であることが多い
Visual Studio 2026
- 単体の開発・実行には問題なく使えるが、オーケストレーターは問題が多い。
- この手の VS からのブラックボックス化ツールはデメリットが多く浸透しないと判断。
補足(.NET Aspire という別解): 「VS からのブラックボックス化ツール」への
評価は妥当だが、Microsoft は別のアプローチを出している。【.NET Aspire】★ ・複数プロジェクト+依存サービス(Redis、DB、 メッセージング)の【構成を C# で記述する】 var redis = builder.AddRedis("cache"); builder.AddProject<Projects.Web>("web") .WithReference(redis); ・ローカルでは【自動的にコンテナを起動】して繋ぐ ・【ダッシュボード】でログ・トレース・メトリクスを見られる ・デプロイ時は → azd(Azure Developer CLI)経由で Azure Container Apps へ → または【K8s マニフェストを生成】(Aspir8 等)★ 【本ページの批判との関係】 ・「ブラックボックス化」という点では同じ危うさがある ・ただし → 構成が【C# のコードとして可視】である → 生成物(Compose / マニフェスト)を 【出力して確認できる】 という点で、YAML を隠す方式よりは筋がよい ★ ・とはいえ、依然として 【Azure への誘導が強い】ことは変わらない
しかし、結局、「Visual Studio Kubernetes Tools」が何者なのか?
イマイチ解らないので、「WebApplication1」的なモノを使用し、再び、評価してみる。
試してみると、以下のような画面が表示される。
- プロジェクト・テンプレートに Kubernetes が追加される。

- ASP.NET Core 3.0 の MVC を選択する。

-
新規作成したプロジェクトをソリューション・エクスプローラで確認すると
「azds.yaml」が追加されていることが解る。 -
Azure Dev Spaces の launchSettings でデバッグ実行を開始すると、
Azure にデプロイしようとするので、ここで止める。

-
Kubernetes 用プロジェクト・テンプレートでは、
「azds.yaml」が追加され、
Azure Dev Spaces の launchSettings が構成されるらしい。 -
参考
- Azure Container Service (AKS) vs Azure Service Fabric - Pikedev Blog
https://pikedev.com/azure-container-service-aks-vs-azure-service-fabric/
- Azure Container Service (AKS) vs Azure Service Fabric - Pikedev Blog
取り敢えず、Azure Dev Spaces の手順を参考にして、
単純な構成で Azure Dev Spaces を試してみる。
Azure Dev Spaces の構成
-
Azure ポータルから、K8s クラスタを使用して構成する。
-
Dev Spaces 言うだけあって、開発・デバッグ用のスペースらしい。
-
K8s クラスタは構築出来ても、
Dev Spaces を有効にできるリージョンに制限があるので注意する。
-
Kubernetes 用プロジェクト・テンプレートで
「WebApplication1」的なプロジェクトを新規作成 -
Azure Dev Spaces の launchSettings でデバッグ実行を開始すると、
-
前述(手順1)の Azure Dev Spaces のダイアログが表示される。
-
Azure サブスクリプションのアカウントで Visual Studio にログインしていると、
構成した Azure Dev Spaces の情報が自動入力されるので
そのまま続行する。
-
Azure のハズだが、何故か、localhost でアプリケーションが起動する。
VS2019 から?既定でパブリック・アクセスが不可能になっているらしい。
-
Hyper-V コンテナで動いているのか?AKS 上で動いているのか?区別がつかない。
-
調べると、内部で stdout と stderr + port forward しているっぽい
(Visual Studio の認証も通しているのでセキュアなのかもしれない) -
試しに Hyper-V コンテナをホストしている Hyper-V の VM を停止させてみたが、
それでも UNIX で動作するので、AKS で動作&
リモートデバッグ(WSL上での.NET Core開発)
しているものと思われる。
- 実際に、Azure Dev Spaces で動作させることが出来た。
- パブリック・アクセスが不可能だが、恐らく、AKS 上で動いている。
補足(作者の推測は正しい:
kubectl port-forward相当): 「内部で
stdout と stderr + port forward しているっぽい」という観察は正確である。【Azure Dev Spaces / Bridge to Kubernetes の仕組み】★ ① コードをコンテナ イメージにビルドして クラスタにデプロイする ② クラスタ内の Pod と 【ローカルの Visual Studio を トンネルで繋ぐ】 ③ ローカルにポートを転送する (kubectl port-forward と同じ原理)★ → だから localhost で開く ④ 標準出力/標準エラーをローカルに流す ⑤ デバッガをアタッチする (リモート デバッグ)★ → 「Hyper-V コンテナか AKS か区別がつかない」のは 【区別がつかないように作ってある】ため → 作者が Hyper-V VM を止めて切り分けた手順は 極めて的確な検証である ★【なぜパブリック アクセスできないのか】 Dev Spaces は【開発中のコード】を動かす場所であり、 未完成・未検証のものが インターネットに露出しないよう 【既定で Ingress を公開しない】設計だった → 公開したい場合は Ingress / Service を明示的に構成する必要があった
単純な構成で、Azure Dev Spaces でない AKS で使ってみる。
-
テンプレートの選択
標準のプロジェクト・テンプレートで「WebApplication1」的なプロジェクトを新規作成
(Kubernetes 用プロジェクト・テンプレートでは「Kubernetes/Helm」を
追加できなかったタメ) -
プロジェクトの構成
手順2と、同様の「WebApplication1」を使用する。
手順2と同様。
標準のプロジェクト・テンプレートで「Kubernetes/Helm」を
追加しても Azure Dev Spaces の launchSettings になってしまう。
(Tools では、できないのか、まだ、実装されていないのか?)
Azure CLI で、Azure Dev Spaces でない
AKS で使ってみる。
AKS の voting-app チュートリアル(Azure Kubernetes Service (AKS) を参照)を
遂行する(Azure CLI を使用する)。
-
「docker-compose up -d」で躓いていたが
再起動&リトライなどで動作するようになる。
(docker 自体が、そういうモノらしく、不安定であるもよう) -
AKS は以下のコマンドで操作する。
- Azure CLI の az コマンド
- kubectl CLI コマンド
-
docker-compose で作成したイメージを
- ローカルで実行・テストした後に、AKS にイメージをプッシュして実行できる。
- ただし、K8s での実行の定義は、docker-compose ではなく
K8s マニュフェストに書く。
-
手順5では、複雑な構成の Docker Compose(Dockerコンポーズ)を
AKS で使ってみる。 -
具体的には、手順4で、docker-compose で作成したイメージを
AKS で動かす。
Visual Studio Tools for Dockerの該当節を
VS2019 に .NET Core 3.0 アップグレードしたものを使用する
(移行後の物品は後述の「サンプル > WebApplication1」)。
AKS の ASP.NET Core チュートリアル(Azure Kubernetes Service (AKS) を参照)を
遂行する(Azure CLI を使用する)。
ローカルの Docker for Windows で動かしてみる。
- 起動
>C:\Git\EvaluateAspNetCoreOnK8s\WebApplication1>docker-compose up -d
>Starting webapplication1_postgres_1 ... done
>Starting webapplication1_redis_1 ... done
>Creating webapplication1_webapplication1_1 ... done
- アクセス
http://localhost:5000/
- 停止
>C:\Git\EvaluateAspNetCoreOnK8s\WebApplication1>docker-compose down
>Stopping webapplication1_webapplication1_1 ... done
>Stopping webapplication1_postgres_1 ... done
>Stopping webapplication1_redis_1 ... done
>Removing webapplication1_webapplication1_1 ... done
>Removing webapplication1_postgres_1 ... done
>Removing webapplication1_redis_1 ... done
>Removing network webapplication1_default
※ 上記の参考に習い、無事動作した。
リモートの AKS で動かしてみる。
>kubectl get service --watch
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
...
コンテナ技術を使用すると、
- 単体 → 結合 → システム・テスト(UT → CT → ST)と環境をチェーンさせて、
- シームレスにステージング環境にまで持っていくことができるようになる。
補足(この「チェーン」こそがコンテナの本質的な価値): 手順5で
作者が到達したこの結論は、本ページ全体で最も重要な発見である。【従来の問題】★ ・開発機、テスト機、本番機で 【環境が微妙に違う】 → 「私の環境では動く」問題 → 環境差異の調査に膨大な時間が溶ける 【コンテナが解決したこと】 ・【同じイメージ】が 開発 → CI → ステージング → 本番 を通る ★ → ビルドは【一度だけ】 → 環境差は【環境変数 / ConfigMap / Secret】でのみ与える → これが【Twelve-Factor App】の 「Build, release, run を分離する」原則 【現在の実践】★ ・イメージは【イミュータブル】 → タグを latest ではなく 【コミット ハッシュ / セマンティック バージョン】にする ・環境ごとの差は → Kustomize の overlay → Helm の values-{env}.yaml ・昇格(プロモーション)は → 【同じイメージ タグを別環境のマニフェストで参照する】 → 再ビルドしない ★
※ 本手順は未実施。
手順5の K8s マニュフェストに Nginx を追加する。
-
手順5の手順を参考にする。
-
K8s マニュフェストに Nginx を追加する。
- Nginx
apiVersion: apps/v1
kind: Deployment
metadata:
name: proxy
spec:
replicas: 2
selector:
matchLabels:
app: proxy
template:
metadata:
labels:
app: proxy
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
volumeMounts:
- name: proxy
mountPath: /etc/nginx/conf.d
volumes:
- name: proxy
configMap:
name: proxy
---
apiVersion: v1
kind: Service
metadata:
name: proxy
spec:
type: LoadBalancer
ports:
- port: 80
selector:
app: proxy-
WebApplication1
- kind: Deployment
...
spec:
...
template:
spec:
containers:
ports:
- containerPort: 5001- kind: Service
...
ports:
- port: 5001※ 80 と 5001 のブリッジは、
/etc/nginx/conf.d の proxy_pass に設定される。
未実施
未実施
未実施
補足(K8s では自前 Nginx より Ingress が定石): 未実施のまま
残された手順だが、現在の作法を補っておく。【自前で Nginx Pod を立てる場合の問題】★ ・設定変更のたびに ConfigMap を書き換えて 【Pod を再起動する】必要がある ・バックエンドの Pod が増減しても nginx.conf は追随しない (Service 名で解決すれば動くが、 きめ細かい制御はできない) ・TLS 証明書の更新を自分で回す 【Ingress を使う】★ apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: app annotations: cert-manager.io/cluster-issuer: letsencrypt # ★ spec: ingressClassName: nginx tls: - hosts: [app.example.com] secretName: app-tls rules: - host: app.example.com http: paths: - path: / pathType: Prefix backend: service: name: webapplication1 port: { number: 5001 } → Ingress Controller(ingress-nginx 等)が この宣言を読んで【nginx.conf を自動生成し、 リロードまでやる】★ → cert-manager と組み合わせれば 証明書の取得・更新も自動 【さらに新しい選択肢】 ・【Gateway API】★(Ingress の後継。2023年に GA) → ルーティング定義がより表現力が高く、 役割分担(インフラ担当/アプリ担当)が明確
Docker Desktop for Windows に、寄り道。
これは、Docker Desktop(ローカル)の K8s
(Docker Desktop for Windows を参照)
Docker Desktop は、Docker Desktop WSL2 Backend で、WSL2 もサポート
(Docker Desktop for Windows を参照)
Docker Desktop は、Docker Desktop for Windows で、Windows コンテナもサポート
(Docker Desktop for Windows を参照)
上記(手順5)のサンプルを MVC_Sample(後述の「サンプル」)に変更。
- daisukenishino2/EvaluateAspNetCoreOnK8s:
Kubernetes で ASP.NET Core を評価する。
(Evaluate ASP.Net Core on Kubernetes.)
上手く行かなかった。
- プログラム・サービス一式をDocker Compose化した。 - OSSコンソーシアム
https://www.osscons.jp/jo99tfumm-537/#_537
-
不安定なので、「外部サービス類」と「Web アプリと Web サーバ」のコンテナは、
別の docker-compose.yml にするのがベターユースなのではないか?という事。※ Docker for Windows が不安定という話と、
Docker(コンテナ技術 を参照)の
port をマップする機能が若干不安定との情報がある。 -
その後、networks でブリッジさせると上手く行く事が解った。
- 第0.5回 セルフZoom 部会 - OSSコンソーシアム
2つのDocker Composeを統合・分割する。
https://www.osscons.jp/jogfiigaw-537/
- 第0.5回 セルフZoom 部会 - OSSコンソーシアム
補足(Compose を分割して
networksで繋ぐ作法): 作者が到達した
この解は現在も定石である。書き方を明示しておく。# infra/compose.yml(外部サービス類) services: postgres: image: postgres:16 networks: [backend] networks: backend: name: myapp_backend # ★ 名前を固定する# app/compose.yml(Web アプリ) services: web: build: . networks: [backend] networks: backend: name: myapp_backend external: true # ★ 既存のネットワークに参加する【分割する利点】★ ・DB を落とさずにアプリだけ再起動できる → 開発の内部ループが速くなる ★ ・DB の初期データを保ったまま試行錯誤できる ・複数のアプリから同じ DB を参照できる 【注意】 ・【起動順序】は自分で担保する → infra を先に up する → external: true のネットワークが 無いとアプリ側が起動できない ・依存の待ち合わせは depends_on の【condition: service_healthy】を使う ★ (単なる depends_on は「起動した」だけで 「受付可能になった」を保証しない)
上記(手順8)を、ローカルの Docker Desktop for Windows の
K8s で実行。
手順7の「K8s」を参照。
上手く行かなかった。
- プログラム・サービス一式をDocker Compose化した。 - OSSコンソーシアム
https://www.osscons.jp/jo99tfumm-537/#_537
-
「その文字は使えない」とか「ファイルをマウントしろ」とか、
メッセージが表示され、そのままの Docker Compose では上手く動かない。 -
なので、やれるとしても、Komposeの convert 機能を
マイグレーション・ツールのように使用して、マニフェスト・ファイルを
新規作成する位しか、K8s へチェーンさせる方法は無さそう。
補足(この結論は完全に正しかった): 「Kompose を
マイグレーション ツールのように使う」という到達点は、
現在の公式見解と一致している。【「その文字は使えない」の正体】★ K8s のリソース名は 【RFC 1123 のラベル形式】に従う必要がある ・小文字英数字とハイフンのみ ・アンダースコア(_)は【使えない】★ ・先頭・末尾は英数字 ・63 文字以内 → Compose のサービス名 「webapplication1_postgres_1」のような名前が そのままでは通らない 【「ファイルをマウントしろ」の正体】 Compose の volumes: - ./nginx.conf:/etc/nginx/conf.d/default.conf のような【ホストのファイルを直接マウントする書き方】は K8s には対応物がない → 【ConfigMap】に入れてマウントする ★ → ホストのパスをマウントする hostPath は 本番では使ってはいけない (どのノードに配置されるか分からないため) 【Kompose の正しい使い方】★ kompose convert -f docker-compose.yml → Deployment / Service / PVC の 【たたき台】を生成する → そのまま使うのではなく、 【生成物を読んで手で仕上げる】 ・resources(requests/limits)を足す ・liveness / readiness プローブを足す ★ ・Secret を分離する ・Ingress を足す → 「変換ツール」ではなく 「移行の出発点を作るツール」である
Visual Studio 2022 でやってみる。
前述の「前提環境」のとおり、Docker for Windows ではなく WSL2 で実行。
- WSL2 インストール済み
- Docker for Windows 未インストール
- Docker サポートを追加し、デバッグ・プロパティから WSL を選択しデバッグ実行。
- (初回は、.NET 未インストールのエラーが表示され、自動的に .NET インストールが進む)
- 問題なく実行できた。ただし、結果はデバッグ出力に出力される。
- Docker サポートを追加し、デバッグ・プロパティから WSL を選択しデバッグ実行。
- (初回は、ASP.NET 未インストールのエラーが表示され、自動的に .NET インストールが進む)
- 問題なく実行できた。ただし、結果はブラウザ経由で表示される。
- 問題なく実行できた。
- ただし、Docker Compose には、Docker for Windows が必要
(Visual Studio Tools for Dockerの該当節を参照)
移行メモ(誤字): 移行元の「デバック実行」を「デバッグ実行」に統一した。
Visual Studio 2022 で
Docker Compose(Dockerコンポーズ)を試してみる。
前述の「前提環境」のとおり、Docker for Windows と WSL2 を併用
- WSL2 インストール済み
- Docker for Windows 再インストール
※ ただし、Docker Desktop WSL2 Backend
(Docker Desktop for Windows を参照)を有効化しない。
- 問題なく実行できた。
- ただし、同様に、結果はデバッグ出力に出力される。
- 問題なく実行できた。
- ただし、ポートの指定をどうやっているかが不明だった。
- 問題なく実行できた。
- これで1環境で双方の手順作成を確認可能。
補足(「ポートの指定をどうやっているかが不明」への回答): これは
Visual Studio のコンテナ ツールが意図的に隠している部分である。【VS のコンテナ デバッグでのポート決定】★ ・Dockerfile の EXPOSE は【宣言でしかない】 → 実際の公開ポートは決めない ・VS は起動時に → 【ホスト側のポートをランダムに割り当てて】 コンテナの 8080(旧 80)/ 8081(旧 443)に繋ぐ → だから起動のたびに URL のポート番号が変わる ・ブラウザは launchSettings.json の launchUrl と 実際に割り当てられたポートを VS が突き合わせて開く 【固定したい場合】★ ・単一プロジェクト(Docker) launchSettings.json の "docker" プロファイルに "httpPort": 5000, "sslPort": 5001 を明示する ・Docker Compose docker-compose.override.yml で ports: - "5000:8080" と明示する ★ → VS はこの override を読んで起動する 【.NET 8 以降の変更点】★ 公式の ASP.NET Core コンテナ イメージの 既定ポートが【80 → 8080】に変わった → 非 root ユーザーで動かすため (1024 未満のポートは特権が要る) → 古い Dockerfile / マニフェストを 使い回すと繋がらない原因になる
https://github.com/daisukenishino2/EvaluateAspNetCoreOnK8s/tree/master/WebApplication1
https://github.com/daisukenishino2/EvaluateAspNetCoreOnK8s/tree/master/WebApplication2
https://github.com/daisukenishino2/EvaluateAspNetCoreOnK8s/tree/master/MVC_Sample
Visual Studio Tools for Dockerの該当節を参照。
- Visual StudioがKubernetes対応。
DockerfileとHelmチャートを自動生成し、
Kubernetes環境へデプロイ可能に - Publickey
https://www.publickey1.jp/blog/18/visual_studiokubernetesdockerfilehelmkubernetes.html
Azure Kubernetes Service (AKS) の該当節を参照。
移行メモ(誤字): 移行元では見出しが「ASK を使いこなす」と
なっていたため、「AKS」に修正した。
Kubernetes on Docker for Windows
-
Docker for WindowsでKubernetesを試してみる
https://qiita.com/h-r-k-matsumoto/items/68f694650029ddf7351d- h-r-k-matsumoto/spring-boot-sample: spring boot + jib + kubernetes作成サンプル
https://github.com/h-r-k-matsumoto/spring-boot-sample
- h-r-k-matsumoto/spring-boot-sample: spring boot + jib + kubernetes作成サンプル
-
[Docker for Windows]Kubernetesを動かしてみる
https://qiita.com/icck/items/91eac9da094666e47c62
- Kubernetes ツールのチュートリアル - Visual Studio
https://learn.microsoft.com/ja-jp/visualstudio/containers/tutorial-kubernetes-tools
Azure Dev Spaces の該当節を参照。
- Docker for Windows上で Docker Composeでテストし、Open PaaSにデプロイできる。
-
マイクロソフト系技術情報 Wiki(当該 Wiki)
-
開発基盤部会 Wiki
Tags: 移行, コンテナ, .NET開発, .NET Core, Hyper-V, 仮想化, IaC