Skip to content

MS_ContainerChain

nishi_74322014 edited this page Aug 3, 2026 · 1 revision

コンテナのチェーン

  • 戻る(CI/CD パイプライン、.NETアプリをコンテナにデプロイ(MS_DeployDotNetAppToContainer.md))
    • コンテナのチェーン

概要

背景

  • コンテナ技術(MS_ContainerTechnology.md)も進歩してきて、比較的、容易に、
    「コンテナのチェーン」を構築できるようになってきた。

  • これによって、SIでは、なかなかリーチしなかった、

    辺りにリーチするようになってきた。

内容

「コンテナのチェーン」が意味する所は、

CI/CD パイプライン(DevOpsワークフロー)に、

コンテナの

  • ビルド・システム
    • プロジェクト・ファイル
    • Dockerfile
    • ビルド・スクリプト
  • コンテナ・レジストリへの登録スクリプト
  • IaCによるコンテナのデプロイ自動化
    • compose
    • manifest

を含め、

開発 → UT → CT → IT → ST環境のチェーンを構築する。

的な(目標)。

詳細

SIが(で)、CI/CD・CI/CD パイプラインにリーチしない理由

そもそも、

サービスのプラクティス

  • 究極的にはスクリプト言語向け。
  • SIだと頻繁に更新されることがない。
  • テストやリリースのシナリオが再利用率が低い。

で、CI/CDから得られる効果が薄い。

どちらかと言うと

分離環境の構築比重が高い。

  • SIでは、
    • UT / CT / TT / STなど環境が多段になっている。
    • このため、これらの環境構築が優先される。
    • 逆に、多段化されているので、CI/CDがハマらない。
      (≒ CI/CD パイプラインが長すぎて構築できない。)
  • Webでは、
    Webサービス保守体制は、恐らく、SIのように多段になっていない。
  • 実際に、
    AKSをセキュアに利用するためのテクニカルリファレンス(MS_AKSSecureReference.md)の、
    「詳細 > 構成のポイント > 開発~デプロイ」でも、
    • 「環境分離(セキュリティ境界)」の話が中心になっている。
    • 実際にやってみて、「こりゃ無理だわ。」と思ったりする所も。
    • 更なるコンテナ技術の進歩による「コンテナのチェーン」構築の簡素化が必要。

Windowsで開発する理由(境界分離の1要素)

主な理由

結局、この辺(WSL → WSL2: MS_WSLToWSL2.md)なのかなと。

  • OA環境から開発環境まで、クライアントOSに、Windowsが必要なケースは、まだ多そう。
  • ビルド以降を、全てLinux化することも可能と思うケド、まだ、ビルド~単体テスト迄は、Windows でやるケースが多そう。

境界の設定

  • なので、

    • Windows で開発して、
    • Linux で実行・テスト

    みたいな境界が何処かに
    必要になるのではないか?と。

  • 以下の様なパターンが考えられる。

    • エディタだけ Windows、ビルド以降全て Linux
    • 単体テストだけ Windows、結合テスト以降が Linux

参考

※ とは言え、Linux開発環境の整備も進めています。

昨今、Docker → Docker Compose → K8sの敷居が下がってきた。

...と、チェーン&リフトして行く開発方式のサポートにより、

  • SIでもCI/CD的な事例が有効に機能するケースが増えてきたと言える。
  • ただ、AKSをセキュアに利用するためのテクニカルリファレンスをやってみて、まだ、一部、バカジャネーノ?と思う所はある(難し過ぎの意)
  • 以下の ①~⑤ ようなチェーンがサクッと繋がるようになってくると実践的になって行くと思う。

① 全ローカル環境、

≒ 従来型の開発。

② ①のプログラムだけ、Docker化、

③ ②のサービス類だけ、Docker Compose化、

④ ③にプログラムも加える。

  • ③ で作成した、システム一式を全てDockerにリフトする。
  • プログラムをコンテナ化する。
  • コンテナ化したプログラムの接続文字列類を、
    ローカル・ブリッジ経由から、コンテナ直に変更する。

⑤ ④をKomposeなどでK8sに食わす。

  • 最後に、④ のシステムをK8sにリフトする。
  • この際、Kompose や Compose on Kubernetes(Docker Desktop for Windows: MS_DockerDesktopForWindows.md)を使用する。

※ Compose on Kubernetes は Docker Desktop から削除済み。 現行は Kompose、または Helm / Kustomize でマニフェストを管理するのが一般的。

XKE/XKSは高価なので、IaaSのLinuxVM(コンテナ・サーバ)があると便利かも。

XKE/XKSは、CaaS、PaaSに相当。

ユースケース

ユースケースとしては、

コンテナ・イメージを起動するみたいなイメージ。

役割分担

これは、Docker Desktop for Windows(MS_DockerDesktopForWindows.md)でもできるんですが、
Nested VirtualizationをサポートするハイスペックなVMが必要になるので、

  • 一般開発者は、
    • Windows 開発環境で開発・テスト。
    • 必要なら、WSL(1)(MS_WSL.md)を使用して開発・テスト。
  • SI担当者が、
    • Docker Desktop for Windows でビルドとテスト。
    • 結果をコンテナ・レジストリに登録する。
  • 各種テスト環境(IaaSベースの Linux コンテナ・サーバ)で、
    • コンテナ・レジストリからコンテナ・イメージをプルして、
    • コンテナ・イメージを起動する。

参考

コンテナ

コンテナ・イメージ

Dockerコマンド が記述された DockerファイルDockerイメージ をビルドする。

コンテナ・レジストリ

DockerコマンドDockerレジストリDockerイメージ を登録する。

テスト系

OSSコンソーシアム

本 Wiki

  • コンテナ技術(MS_ContainerTechnology.md
  • Docker for Windows(MS_DockerForWindows.md
  • Visual Studio Tools for Docker(MS_VSToolsForDocker.md
  • .NET CoreのDockerfile(MS_DotNetCoreDockerfile.md

Open棟梁 Wiki

開発基盤部会 Wiki

開発基盤部会 Blog


Tags: コンテナ, テスト, デバッグ, .NET開発, ツール類, CI

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally