「[[マイクロソフト系技術情報 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]]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS