- 追加された行はこの色です。
- 削除された行はこの色です。
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。
-戻る
--[[Visual Studio]]
--[[Docker for Windows]]
--[[Docker Desktop for Windows]]
--[[Visual Studio Tools for Docker]]
--[[Azure Kubernetes Service (AKS)]]
--[[ASP.NET Core]]
---[[ASP.NET Coreのデプロイ]]
* 目次 [#j01d33c4]
#contents
*概要 [#nddd7376]
コレから評価します。
-「[[Visual Studio Tools for Docker]]」の延長で、~
[[K8s>#x4a72daa]](と言いつつ、実際は[[AKS>Azure Kubernetes Service (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
**前提環境 [#t12636eb]
[[コチラ>Visual Studio Tools for Docker#ke8e67e9]]との差分
-[[Visual Studio]] 2019 Community
--.NET Core 3系
-[[Visual Studio]] 2022 Community
--.NET 6系
--[[Docker for Windows]]が必須ではなくなった。
**インストール [#t70031ef]
[[コチラ>Visual Studio Tools for Docker#b8b286e6]]との差分
-Visual Studio Kubernetes Tools
--以下ではなく、~
https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vs-tools-for-kubernetes
--以下からインストール(VS2019の場合)
#ref(install.png,left,nowrap,インストール,60%)
**紆余曲折のメモ [#yf650ab5]
***断念 [#t6534e1a]
[[Open PaaS>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Open%20PaaS]]は、ちょっと難しいなぁと思い断念していた。
-[[OpenShift>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?OpenShift]]
-[[Cloud Foundry>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Cloud%20Foundry]]
-[[Kubernetes(K8s)>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Kubernetes]]
***再起 [#gb258a43]
しかし、[[Compose on K8s>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Compose%20on%20Kubernetes]]がリリースされ、これによって、~
[[Docker Compose>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Docker%E3%82%B3%E3%83%B3%E3%83%9D%E3%83%BC%E3%82%BA]]を[[Open PaaS>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Open%20PaaS]]で扱えるようになった~
らしいため、評価をリスタートしてみる気になった。
***再び断念 [#b2ef6933]
[[手順3>#vb6a5d71]]まで調査した結果、再び中断した(2019/12/04)。
-[[Azure Dev Spaces]]で実行することはできた~
(ただし、パブリック・アクセスが不可能の故、明確では無い)。
-ツールが(、まだ)、作りこまれていないっぽい。
--Kubernetes/Helmを追加しても、[[Azure Dev Spaces]]に行ってしまい、~
[[Azure Kubernetes Service (AKS)]]のlaunchSettingsなどは構成されない。
--また、[[Docker Compose>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Docker%E3%82%B3%E3%83%B3%E3%83%9D%E3%83%BC%E3%82%BA]]で、そのまま、[[AKS>Azure Kubernetes Service (AKS)]]にデプロイできない。
***再び再起 [#xa2c47f4]
調査した結果、再び再起した(2019/12/06)。~
※ ただし、CLIでやっているので、Visual Studio Kubernetes Toolsはあまり関係ない。
-[[手順4>#q9416ca2]]で
--ネットの上の[[Docker Compose>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Docker%E3%82%B3%E3%83%B3%E3%83%9D%E3%83%BC%E3%82%BA]]をCLIで動かす事が出来た。
--また、[[AKS>Azure Kubernetes Service (AKS)]]で動かす事が出来た。
-[[手順5>#n9ee4347]]で
--[[こちら>Visual Studio Tools for Docker#qf76ac18]]の[[Docker Compose>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Docker%E3%82%B3%E3%83%B3%E3%83%9D%E3%83%BC%E3%82%BA]]をCLIで動かす事が出来た。
--また、[[AKS>Azure Kubernetes Service (AKS)]]で動かす事が出来た。
-[[手順6>#qb850bcb]] : 手順5の[[K8s>#x4a72daa]]マニュフェストにNginxを追加する。
***再々の再起 [#r008f7ea]
調査した結果、再び再起した(2020/04/13)。
-[[手順7>#m6a31eb3]] : [[Docker Desktop for Windows]]に、寄り道。
-[[手順8>#q66040c9]] : [[コチラ>Visual Studio Tools for Docker#ff5fbe1b]]の仕切り直し。
-[[手順9>#dac2b9bc]] : 手順8を[[K8s>#x4a72daa]]で実施
***将来的には... [#n3e06a9c]
これらのツールが、
-Helm Charts
-Compose on Kubernetes
-Kompose
[[辺り>#x4a72daa]]を統合するのではないだろうか?
***[[Visual Studio]] 2022 [#o90ed370]
[[Visual Studio]] 2022で動作確認。
-[[手順10>#nb71a05a]]
-[[手順11>#kd8a305b]]
***CaaSのトレンド変化 [#k1f61ca7]
「[[将来的には...>#n3e06a9c]]」からの変化としては、~
[[Open PaaS>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Open%20PaaS]]系のCaaSだけではなく、~
クラウド系のCaaSも歓迎されてきた。
*手順1 [#f98240e6]
しかし、結局、「Visual Studio Kubernetes Tools」が何者なのか?~
イマイチ解らないので、「WebApplication1」的なモノを使用し、再び、評価してみる。
**画面の確認(手順 / 結果) [#e51fd9d0]
試してみると、以下のような画面が表示される。
-プロジェクト・テンプレートにKubernetesが追加される。
#ref(1.png,left,nowrap,手順1,60%)
-ASP.NET Core 3.0 の MVCを選択する。
#ref(2.png,left,nowrap,手順2,60%)
-新規作成したプロジェクトをソリューション・エクスプローラで確認すると「azds.yaml」が追加されていることが解る。
-[[Azure Dev Spaces]]のlaunchSettingsでデバッグ実行を開始すると、Azureにデプロイしようとするので、ここで止める。
#ref(5.png,left,nowrap,手順5,80%)
**ココまでで解った事。 [#r2ea16b1]
-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/
*手順2 [#wda48e54]
取り敢えず、[[Azure Dev Spacesの手順>Azure Dev Spaces#d67caafd]]を参考にして、~
単純な構成で[[Azure Dev Spaces]]を試してみる。
**手順 [#a0f4b2ff]
***[[Azure Dev Spaces]]の構成 [#b651eed1]
-Azure ポータルから、K8sクラスタを使用して構成する。
-Dev Spaces言うだけあって、開発・デバッグ用のスペースらしい。
-K8sクラスタは構築出来ても、~
Dev Spacesを有効にできるリージョンに制限があるので注意する。
***プロジェクトの構成 [#sbbf2a67]
-Kubernetes用プロジェクト・テンプレートで「WebApplication1」的なプロジェクトを新規作成
-[[Azure Dev Spaces]]のlaunchSettingsでデバッグ実行を開始すると、
--[[前述>#e51fd9d0]]の[[Azure Dev Spaces]]のダイアログが表示される。
--AzureサブスクリプションのアカウントでVisual Studioにログインしていると、~
[[構成>#b651eed1]]した[[Azure Dev Spaces]]の情報が自動入力されるのでそのまま続行する。
**結果 [#lc7d0387]
Azureのハズだが、何故か、localhostでアプリケーションが起動する。~
VS2019から?既定でパブリック・アクセスが不可能になっているらしい。
-Hyper-Vコンテナで動いているのか?[[AKS>Azure Kubernetes Service (AKS)]]上で動いているのか?区別がつかない。
-調べると、内部でstdout と stderr + port forwardしているっぽい~
(Visual Studioの認証も通しているのでセキュアなのかもしれない)
-試しにHyper-VコンテナをホストしているHyper-VのVM停止させてみたが、~
それでもUNIXで動作するので、[[AKS>Azure Kubernetes Service (AKS)]]で動作&[[リモートデバッグ>WSL上での.NET Core開発#fd286380]]しているものと思われる。
**ココまでで解った事。 [#i870f346]
-実際に、[[Azure Dev Spaces]]で動作させることが出来た。
-パブリック・アクセスが不可能だが、恐らく、[[AKS>Azure Kubernetes Service (AKS)]]上で動いている。
*手順3 [#vb6a5d71]
単純な構成で、[[Azure Dev Spaces]]でない [[AKS>Azure Kubernetes Service (AKS)]] で使ってみる。
**前提条件 [#bc424342]
***構成 [#ue0f9f99]
-テンプレートの選択~
標準のプロジェクト・テンプレートで「WebApplication1」的なプロジェクトを新規作成~
(Kubernetes用プロジェクト・テンプレートでは「Kubernetes/Helm」を追加できなかったタメ)
-プロジェクトの構成~
[[手順2>#wda48e54]]と、同様の「WebApplication1」を使用する。
***手順 [#t9731846]
[[手順2>#wda48e54]]と同様。
**結果 [#wda12acf]
標準のプロジェクト・テンプレートで「Kubernetes/Helm」を~
追加しても[[Azure Dev Spaces]]のlaunchSettingsになってしまう。
**ココまでで解った事。 [#d304b325]
(Toolsでは、できないのか、まだ、実装されていないのか?)
*手順4 [#q9416ca2]
[[Azure CLI]]で、[[Azure Dev Spaces]]でない [[AKS>Azure Kubernetes Service (AKS)]] で使ってみる。
**前提条件 [#bc424342]
***構成 [#u5d27a26]
-[[AKS>Azure Kubernetes Service (AKS)]]の構成~
Azureのポータルと、[[Azure CLI]]のazコマンドを使用する。
-プロジェクトの構成~
https://github.com/Azure-Samples/azure-voting-app-redis
***手順 [#j3b1eb24]
[[AKSのvoting-appチュートリアル>Azure Kubernetes Service (AKS)#c7683828]]を遂行する([[Azure CLI]]を使用する)。
**ココまでで解った事。 [#d304b325]
-「docker-compose up -d」で躓いていたが~
再起動&リトライなどで動作するようになる。~
(docker自体が、そういうモノらしく、不安定であるもよう)
-[[AKS>Azure Kubernetes Service (AKS)]]は以下のコマンドで操作する。
--[[Azure CLI]]のazコマンド
--[[kubectl CLIコマンド>#x4a72daa]]
-docker-composeで作成したイメージを
--ローカルで実行・テストした後に、[[AKS>Azure Kubernetes Service (AKS)]]にイメージをプッシュして実行できる。
--ただし、[[K8s>#x4a72daa]]での実行の定義は、docker-composeではなく[[K8s>#x4a72daa]]マニュフェストに書く。
*手順5 [#n9ee4347]
-手順5では、複雑な構成の [[Docker Compose>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Docker%E3%82%B3%E3%83%B3%E3%83%9D%E3%83%BC%E3%82%BA]] を [[AKS>Azure Kubernetes Service (AKS)]] で使ってみる。
-具体的には、[[手順4>#q9416ca2]]で、docker-composeで作成したイメージを[[AKSで動かす>Azure Kubernetes Service (AKS)#u25677fb]]。
**前提条件 [#hf85d64a]
***構成 [#idfb4642]
[[こちら>Visual Studio Tools for Docker#qf76ac18]]をVS2019に.NET Core3.0アップグレード~
したものを使用する(移行後の物品は[[コチラ>#k18f6b89]])。
***手順 [#m62b70d6]
[[AKSのASP.NET Coreチュートリアル>Azure Kubernetes Service (AKS)#u25677fb]]を遂行する([[Azure CLI]]を使用する)。
**結果 [#ba1b5eb2]
***ローカル [#w42b791b]
ローカルの[[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
※ 上記の参考に習い、無事動作した。
***リモート [#d821480b]
リモートの[[AKS>Azure Kubernetes Service (AKS)]]で動かしてみる。
>kubectl get service --watch
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
...
**ココまでで解った事。 [#c2d7d7a8]
コンテナ技術を使用すると、
-単体 → 結合 → システム・テスト(UT → CT → ST)と環境をチェーンさせて、
-シームレスにステージング環境にまで持っていくことができるようになる。
*手順6 [#qb850bcb]
※ 本手順は未実施。
**前提条件 [#k6312410]
***構成 [#ve705bf4]
[[手順5>#n9ee4347]]の[[K8s>#x4a72daa]]マニュフェストにNginxを追加する。
***手順 [#q97357c2]
-[[手順5の手順>#m62b70d6]]を参考にする。
-[[K8s>#x4a72daa]]マニュフェストに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 に設定される。
**結果 [#odf9e9b5]
***ローカル [#c28a242b]
未実施
***リモート [#a2b0b8ae]
未実施
**ココまでで解った事。 [#w8dfdca3]
未実施
*手順7 [#m6a31eb3]
[[Docker Desktop for Windows]]に、寄り道。
**[[K8s>Docker Desktop for Windows#ad01d6b3]] [#eee49462]
これは、Docker Desktop(ローカル)のK8s
**[[WSL2>Docker Desktop for Windows#mb6cff6e]] [#q9f2a2b3]
Docker Desktopは、[[Docker Desktop WSL2 Backend>Docker Desktop for Windows#a4fac57b]]で、WSL2もサポート
**[[Windows Serverコンテナ>Docker Desktop for Windows#l3cc3544]] [#mf43263c]
Docker Desktopは、Docker Desktop for Windowsで、Windowsコンテナもサポート
*手順8 [#q66040c9]
上記([[手順5>#n9ee4347]])のサンプルを[[MVC_Sample>#ncd2818e]]に変更。
**前提条件 [#e8b6effc]
-daisukenishino2/EvaluateAspNetCoreOnK8s:~
KubernetesでASP.NET Coreを評価する。~
(Evaluate ASP.Net Core on Kubernetes.)
--→ MVC_Sample~
https://github.com/daisukenishino2/EvaluateAspNetCoreOnK8s#mvc_sample
**結果 [#s5c4d3b2]
上手く行かなかった。
-プログラム・サービス一式をDocker Compose化した。 - OSSコンソーシアム~
https://www.osscons.jp/jo99tfumm-537/#_537
**ココまでで解った事。 [#g4d04fca]
-不安定なので、「外部サービス類」と「WebアプリとWebサーバ」のコンテナは、~
別の docker-compose.yml にするのがベターユースなのではないか?という事。
>※ [[Docker for Windows]]が不安定という話と、~
[[Docker>コンテナ技術#w576cb19]]のportをマップする機能が若干不安定との情報がある。
-その後、networksでブリッジさせると上手く行く事が解った。
--第0.5回 セルフZoom 部会 - OSSコンソーシアム~
2つのDocker Composeを統合・分割する。~
https://www.osscons.jp/jogfiigaw-537/
*手順9 [#dac2b9bc]
上記([[手順8>#q66040c9]])を[[ローカルのDocker Desktop for WindowsのK8s>Docker Desktop for Windows#u51cfd19]]で実行。
**[[前提条件>#eee49462]] [#gc7a8fd0]
**結果 [#n8bd0557]
上手く行かなかった。
-プログラム・サービス一式をDocker Compose化した。 - OSSコンソーシアム~
https://www.osscons.jp/jo99tfumm-537/#_537
**ココまでで解った事。 [#o78464e9]
-「その文字は使えない」とか「ファイルをマウントしろ」とか、~
メッセージが表示され、そのままのDocker Composeでは上手く動かない。
-なので、やれるとしても、[[Kompose>#x4a72daa]] のconvert機能を~
マイグレーション・ツールのように使用して、マニフェスト・ファイルを~
新規作成する位しか、[[K8s>#x4a72daa]]へチェーンさせる方法は無さそう。
*手順10 [#nb71a05a]
[[Visual Studio]] 2022でやってみる。
**前提条件 [#gce3b9bc]
[[Docker for WindowsではなくWSL2>#t12636eb]]で実行。
-WSL2インストール済み
-Docker for Windows未インストール
**結果 [#rad4f04b]
***コンソールアプリ [#veffd737]
-Dockerサポートを追加し、デバッグ・プロパティからWSLを選択しデバック実行。
-(初回は、.NET未インストールのエラーが表示され、自動的に.NETインストールが進む)
-問題なく実行できた。ただし、結果はデバッグ出力に出力される。
***Webアプリ [#ka815a5c]
-Dockerサポートを追加し、デバッグ・プロパティからWSLを選択しデバック実行。
-(初回は、ASP.NET未インストールのエラーが表示され、自動的に.NETインストールが進む)
-問題なく実行できた。ただし、結果はブラウザ経由で表示される。
**ココまでで解った事。 [#pe53dc34]
-問題なく実行できた。
-ただし、[[Docker Composeには、Docker for Windowsが必要>Visual Studio Tools for Docker#z633182b]]
*手順11 [#kd8a305b]
[[Visual Studio]] 2022で[[Docker Compose>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Docker%E3%82%B3%E3%83%B3%E3%83%9D%E3%83%BC%E3%82%BA]]を試してみる。
**前提条件 [#uc57c0a5]
[[Docker for WindowsとWSL2>#t12636eb]]を併用
-WSL2インストール済み
-Docker for Windows再インストール~
※ ただし、[[Docker Desktop WSL2 Backend>Docker Desktop for Windows#a4fac57b]]を有効化しない。
**結果 [#ob8fa01c]
***コンソールアプリ [#o06efbc2]
-問題なく実行できた。
-ただし、同様に、結果はデバッグ出力に出力される。
***Webアプリ [#uc418f63]
-問題なく実行できた。
-ただし、ポートの指定をどうやっているかが不明だった。
**ココまでで解った事。 [#pe55b9a2]
-問題なく実行できた。
-これで1環境で双方の手順作成を確認可能。
*サンプル [#e04f0515]
**github.com [#nf8398ed]
***WebApplication1 [#k18f6b89]
https://github.com/daisukenishino2/EvaluateAspNetCoreOnK8s/tree/master/WebApplication1
***WebApplication2 [#k803576c]
https://github.com/daisukenishino2/EvaluateAspNetCoreOnK8s/tree/master/WebApplication2
***MVC_Sample [#ncd2818e]
https://github.com/daisukenishino2/EvaluateAspNetCoreOnK8s/tree/master/MVC_Sample
**[[git clone後にDocker Composeで動かす方法。>Visual Studio Tools for Docker#e09b7e2d]] [#rce35c03]
*参考 [#h1f0a60f]
-Visual StudioがKubernetes対応。~
DockerfileとHelmチャートを自動生成し、Kubernetes環境へデプロイ可能に - Publickey~
DockerfileとHelmチャートを自動生成し、~
Kubernetes環境へデプロイ可能に - Publickey~
https://www.publickey1.jp/blog/18/visual_studiokubernetesdockerfilehelmkubernetes.html
-Kubernetes tools tutorial - Visual Studio | Microsoft Docs~
https://docs.microsoft.com/en-us/visualstudio/deployment/tutorial-kubernetes-tools
**Qiita [#k3f64696]
**[[Kubernetes>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Kubernetes]] [#f96bb479]
***[[ASK を使いこなす>Azure Kubernetes Service (AKS)#g22fa8b4]] [#z4762996]
**[[Visual Studio Tools for Docker]] [#u6eb1bc4]
***Kubernetes on [[Docker for Windows]] [#rb9ca770]
-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
**[[Azure Kubernetes Service (AKS)]] [#q863e90f]
-[Docker for Windows]Kubernetesを動かしてみる~
https://qiita.com/icck/items/91eac9da094666e47c62
**Microsoft Docs [#pc82ab14]
***Kubernetes [#d2588c77]
-Kubernetes ツールのチュートリアル - Visual Studio~
https://docs.microsoft.com/ja-jp/visualstudio/containers/tutorial-kubernetes-tools
***[[Azure Dev Spaces>Azure Dev Spaces#d67caafd]] [#df3713b0]
**OSSコンソーシアム [#w809fb59]
***Blog [#n95d96ef]
-Docker for Windows上で Docker Composeでテストし、Open PaaSにデプロイできる。~
--その1~
https://www.osscons.jp/joweexgq6-537/
--その2~
https://www.osscons.jp/jo6610sfd-537/
***Wiki [#x4a72daa]
-マイクロソフト系技術情報 Wiki(当該Wiki)
--[[Visual Studio Tools for Docker]]
--[[Azure Kubernetes Service (AKS)]]
-開発基盤部会 Wiki
--[[Kubernetes>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Kubernetes]] (K8s)
---[[Helm Charts>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Helm%20Charts]]
---[[Compose on Kubernetes>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Compose%20on%20Kubernetes]]
---[[Kompose>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Kompose]]
----
Tags: [[:.NET開発]], [[:.NET Core]], [[:Hyper-V]], [[:仮想化]]
Tags: [[:コンテナ]], [[:.NET開発]], [[:.NET Core]], [[:Hyper-V]], [[:仮想化]], [[:IaC]]