10
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

セゾンテクノロジーAdvent Calendar 2024

Day 24

CIテスト環境をコンテナ化してみる

Last updated at Posted at 2024-12-24

この記事は セゾンテクノロジー Advent Calendar 2024 シリーズ2 24日目の記事です。
シリーズ2は HULFT10 のエンジニアによる投稿をお届けします。

どんなテスト

  • テストモジュールからAPI ServerにリクエストすることでAPI Serverから各種の対向サーバにリクエストするe2eテストです。

現行のテスト構成

  • Windows環境しか動作できないAPI Server(テスト対象)とテストモジュール
  • Windowsの対向サーバx2
  • Linuxの対向サーバx1

今の課題

テスト対象の不具合によってテストが中断される場合がある。そしてテストが中断することで対向サーバの状態をテスト前に戻すことができなくなってしまう。CIとして動作するテストなので、対向サーバの整理作業を行う前に自動にテストが走った場合、必ず失敗することになる。

なんでコンテナ化に対応できる

  • 対向サーバをコンテナ化することで毎回のテストは新たなコンテナとして立ち上がるので、前回のテストによる影響が解消できる

コンテナ化にするための課題

  • WindowsコンテナとLinuxコンテナの混合運用による課題
    • 同時運用するのにLinux環境かWindows環境のどっちが可能なのか
    • Docker Desktopを利用せず、Windows環境でdockerの運用方法

同時運用するのにLinux環境かWindows環境のどっちが可能なのか

結論から言うとWindows環境のほうが対応しやすい。
理由はWindowsにはWSLがあるからです。
WSLを有効化することでWindows環境でも簡単にdockerを利用することができる。

Docker Desktopを利用せず、Windows環境でdockerの運用方法

  • Hyper-Vを有効化する
    Enable-WindowsOptionalFeature -Online -FeatureName containers -All
    Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
    
  • dockerをCLIで運用するためのバイナリファイルをダウンロードすること
  • サービス登録
    dockerd --register-service
    Start-Service docker
    

これでwindowsでもコンテナを運用することができた。

WSLの運用方法

こちらはネット上に大量記事があったため、割愛します。

結果

github actionsでCIが動くたびにwindows runnerで対向サーバのWindowsコンテナとLinuxコンテナが立ち上がるとこができた。テストモジュールとテスト対象API Serverはコンテナ実行ではなく直接実行するして各コンテナに設定したポート経由でリクエストする。
テストモジュールをコンテナ化できていないが、一旦困った問題が対応できたので、ここで区切りして残る対応を残課題として継続に調査する。

残課題

  • WSL上のLinuxコンテナとホストのWindowsコンテナ間の通信はできない
    • 原因:異なるネットワークインターフェース

残課題に向けてどうアプローチしていくか

  • 解決案1
    • docker swarmを利用することで異なるdocker engineの間のネットワークを確立することができる
    • 懸念点
      • WSLとホストのswarm設定がうまくできなくて調査中
10
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?