「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -戻る --[[CI/CD]] --[[.NETアプリをコンテナにデプロイ]] * 目次 [#f16ba387] #contents *概要 [#w1691739] **内容 [#va9b3dfc] 「[[コンテナのチェーン]]」が意味するところは、 [[CI/CD パイプライン]](DevOpsワークフロー)に、 コンテナの -ビルド・システム --プロジェクト・ファイル --Dockerfile --ビルド・スクリプト -コンテナ・レジストリへの登録スクリプト -IaCによるコンテナのデプロイ自動化 --compose --manifest を含め、 開発 → UT → CT → IT → ST環境のチェーンを構築する。 **背景 [#n4ed5269] -[[コンテナ技術]]も進歩してきて、比較的、容易に、~ 「[[コンテナのチェーン]]」を構築できるようになってきた。 -これによって、SIでは、なかなかリーチしなかった、 --[[CI/CD パイプライン>#r23924cf]] --DevOpsワークフロー >辺りにリーチするようになってきた。 *詳細 [#ke75103a] **SIが(で)、[[CI/CD]]・[[CI/CD パイプライン>#r23924cf]]にリーチしない理由 [#n4a257ec] ***そもそも、 [#eaaa1999] サービスのプラクティス -究極的にはスクリプト言語向け。 -SIだと頻繁に更新されることがない。 -テストやリリースのシナリオが再利用率が低い。 で、[[CI/CD]]から得られる効果が薄い。 ***どちらかと言うと [#w63d0a5c] 分離環境の構築比重が高い。 -SIでは、 --UT / CT / TT / STなど環境が多段になっている。 --このため、これらの環境構築が優先される。 --逆に、多段化されているので、[[CI/CD]]がハマらない。~ (≒ [[CI/CD パイプライン>#r23924cf]]が長すぎて構築できない。) -Webでは、~ Webサービス保守体制は、恐らく、~ SIのように多段になっていない。 Webサービス保守体制は、恐らく、SIのように多段になっていない。 -実際に、~ [[AKSをセキュアに利用するためのテクニカルリファレンス]]の、~ [[> 詳細 > 構成のポイント > 開発~デプロイ>AKSをセキュアに利用するためのテクニカルリファレンス#ye9b2134]] でも、~ --「環境分離(セキュリティ境界)」の話が中心になっている。 --実際にやってみて、「こりゃ無理だわ。」と思ったりする所も。 --更なる[[コンテナ技術]]の進歩による「コンテナのチェーン」構築の簡素化が必要。 **昨今、Docker → Docker Compose → K8sの敷居が下がってきた。 [#ra755ddd] ...と、チェーン&リフトして行く開発方式のサポートにより、 -SIでも[[CI/CD]]的な事の有効が高まってきたと言える。 -ただ、[[コチラ>AKSをセキュアに利用するためのテクニカルリファレンス]]をやってみて、まだ、一部、~ バカジャネーノ?と思う所はある(難し過ぎの意) -以下の ①~⑤ ようなチェーンがサクッと繋がる~ ようになってくると実践的になって行くと思う。 ***① 全ローカル環境、 [#o109d206] ≒ 従来型の開発。 ***② ①のプログラムだけ、Docker化、 [#je86be84] -[[①>#o109d206]]のプログラムだけDocker化。 -ローカルのサービス群に対しては、~ [[10.0.75.1でブリッジ(最新の環境では変更されている)。>Docker for Windowsのネットワーク設定#o0ae51ae]] -参考 --Docker→Docker Compose→K8sと、~ チェーン&リフトして行く開発のサポート方式 - OSSコンソーシアム~ https://www.osscons.jp/joerypz9u-537/ ***③ ②のサービス類だけ、Docker Compose化、 [#be404871] -[[①>#o109d206]]のサービス類だけ、Docker ComposeでDocker化。 -開発の対象というより、ローカル開発環境をDocker対応させるイメージ。 -Docker Composeで、ローカルと同一のポート番号でブリッジさせれば、~ (portsの指定は、ホスト:コンテナなので、xxxx:xxxxにする)~ このUXは、[[①>#o109d206]]の開発のUXと、あまり大きく変わらない。~ -参考 --サービス類だけ、Docker Compose化する~ プロジェクトが出来上がった。 - OSSコンソーシアム~ https://www.osscons.jp/jor9mt8li-537/ ***④ ③にプログラムも加える。 [#m3cf0ee0] -[[③>#be404871]]で作成した、システム一式を全てDockerにリフトする。 -プログラムをコンテナ化する。 -コンテナ化したプログラムの接続文字列類を、~ ローカル・ブリッジ経由から、コンテナ直に変更する。 ***⑤ ④をKomposeなどでK8sに食わす。 [#v31fa550] -最後に、[[④>#m3cf0ee0]]のシステムをK8sにリフトする。 -この際、[[Kompose や Compose on Kubernetes>Docker Desktop for Windows#df36c0f9]]を使用する。 **XKE/XKSは高価なので、IaaSのLinuxVM(コンテナ・サーバ)があると便利かも。 [#t57db81c] XKE/XKSは、CaaS、PaaSに相当。 ***ユースケース [#ze9f7b84] ユースケースとしては、 -[[Windows]]の開発環境から、~ [[コンテナ・イメージ>#za9a429d]]を[[コンテナ・レジストリ>#yf65409d]]をプッシュして、 -IaaSベースの[[Linux]]コンテナ・サーバで~ [[コンテナ・レジストリ>#yf65409d]]から[[コンテナ・イメージ>#za9a429d]]をプルして、 [[コンテナ・イメージ>#za9a429d]]を起動するみたいなイメージ。 ***役割分担 [#dbc725d2] これは、[[Docker Desktop for Windows]]でもできるんですが、~ Nested VirtualizationをサポートするハイスペックなVMが必要になるので、 -一般開発者は、 --[[Windows]]開発環境で開発・テスト。 --必要なら、[[WSL(1)>Windows Subsystem for Linux]]を使用して開発・テスト。 -SI担当者が、 --[[Docker Desktop for Windows]]でビルドとテスト。 --結果を[[コンテナ・レジストリ>#yf65409d]]に登録する。 -各種テスト環境(IaaSベースの[[Linux]]コンテナ・サーバ)で、 --[[コンテナ・レジストリ>#yf65409d]]からコンテナ・イメージをプルして、 --コンテナ・イメージを起動する。 *その他 [#ib906d49] **コンテナ [#w3f63b06] ***コンテナ・イメージ [#za9a429d] ≒ [[Dockerイメージ>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Docker#vee01503]] ***コンテナ・レジストリ [#yf65409d] ≒ [[Dockerレジストリ>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Docker%E3%83%AC%E3%82%B8%E3%82%B9%E3%83%88%E3%83%AA]] **[[Windows]]で開発する理由(境界分離の1要素) [#qfc1ca45] ***主な理由 [#s64a1ba9] 結局、[[この辺>WSL → WSL2#ka2f76e9]]なのかなと。 -OA環境からエディタまで、クライアントOSに、~ [[Windows]]が必要なケースは、まだ多そう。 -ビルド以降を、全て[[Linux]]化することも可能と思うケド、~ まだ、ビルド~単体テスト迄は、[[Windows]]でやるケースが多そう。 ***境界の設定 [#s5f932f5] -なので、 --[[Windows]]で開発して、 --[[Linux]]で実行・テスト >みたいな境界が何処かに~ 必要になるのではないか?と。 -以下の様なパターンが考えられる。 --エディタだけ[[Windows]]、ビルド以降全て[[Linux]] --単体テストだけ[[Windows]]、結合テスト以降が[[Linux]] ***参考 [#a046fca6] -[[MosP>https://ja.wikipedia.org/wiki/MosP]]も --[[Windows]]で開発してるらしい(Java)。 --サポートのある実行環境はCentOSとのこと。 -twitter.com --https://twitter.com/pontaro_419/status/1248457239427342336 --https://twitter.com/sakayline/status/1258227509193093121 ※ とは言え、[[Linux開発環境の整備>#n49c427f]]も進めています。 *参考 [#h00c9273] **テスト系 [#r8292a8a] ***[[テスト自動化]] [#l2d9444e] ***[[CI/CD パイプライン]] [#r23924cf] **OSSコンソーシアム [#m58c7b19] ***本 Wiki [#tca91fdc] -[[コンテナ技術]] -[[Docker for Windows]] -[[Visual Studio Tools for Docker]] -[[.NET CoreのDockerfile]] ***Open棟梁 Wiki [#qb444a32] -[[Docker対応>https://opentouryo.osscons.jp/index.php?Docker%E5%AF%BE%E5%BF%9C]] ***開発基盤部会 Wiki [#n49c427f] -[[Dockerファイル>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Docker%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB]] -[[コンテナ化する際の設定ポリシー>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E5%8C%96%E3%81%99%E3%82%8B%E9%9A%9B%E3%81%AE%E8%A8%AD%E5%AE%9A%E3%83%9D%E3%83%AA%E3%82%B7%E3%83%BC]] -[[Github - CI / CD関連>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Github%20-%20CI%20%2F%20CD%E9%96%A2%E9%80%A3]] --[[GitHub Actions>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?GitHub%20Actions]] --[[Docker Hub>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Docker%20Hub]] -[[VM起動後の開発環境のセットアップ>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?VM%E8%B5%B7%E5%8B%95%E5%BE%8C%E3%81%AE%E9%96%8B%E7%99%BA%E7%92%B0%E5%A2%83%E3%81%AE%E3%82%BB%E3%83%83%E3%83%88%E3%82%A2%E3%83%83%E3%83%97]] --[[Windows>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?VM%E8%B5%B7%E5%8B%95%E5%BE%8C%E3%81%AE%E9%96%8B%E7%99%BA%E7%92%B0%E5%A2%83%E3%81%AE%E3%82%BB%E3%83%83%E3%83%88%E3%82%A2%E3%83%83%E3%83%97%EF%BC%88Windows%EF%BC%89]] --[[Linux>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?VM%E8%B5%B7%E5%8B%95%E5%BE%8C%E3%81%AE%E9%96%8B%E7%99%BA%E7%92%B0%E5%A2%83%E3%81%AE%E3%82%BB%E3%83%83%E3%83%88%E3%82%A2%E3%83%83%E3%83%97%EF%BC%88Linux%EF%BC%89]] ***開発基盤部会 Blog [#v6aa5053] -[[Docker対応>#qb444a32]] -Docker for Windows上で Docker Compose~ でテストし、Open PaaSにデプロイできる --(1)~ https://www.osscons.jp/joweexgq6-537/ --(2)~ https://www.osscons.jp/jo6610sfd-537/ -Docker→Docker Compose→K8sと、~ チェーン&リフトして行く開発のサポート方式~ https://www.osscons.jp/jo7mpxy19-537/ --第7回 部会 新Organization&Repository~ のコンセプト等の説明をしてみる。~ https://www.osscons.jp/joh22kyyf-537/ --第9回 部会 言うなれば、~ Open棟梁 for Dockerと言った感じの物件のご紹介。~ https://www.osscons.jp/jofvzdsx9-537/ --第11回 部会 .NET開発をLinux上で行う~ (Open棟梁 for OAuth2 / OIDC をLinux上で~ https://www.osscons.jp/joazwac6h-537/ ---- Tags: [[:コンテナ]], [[:テスト]], [[:デバッグ]], [[.NET開発]], [[:ツール類]], [[:CI]]