しばやん雑記

Azure とメイドさんが大好きなフリーランスのプログラマーのブログ

Windows Server Version 1709 から Windows Server Containers のバージョン要件が変更されていた

これまで何回か Windows Containers を触ってきましたが、大体は Windows Server Containers の場合はバージョンを合わせるのが面倒なので、Hyper-V Containers を使おうという方向に落ち着いてました。

ビルド番号が異なる場合には起動がブロックされますが、リビジョン違いは起動はするものの本番環境でサポートは行わないという鬼のような要件です。

なので、使うには Hyper-V Containers を使って完全に分離してあげないと、と思ってました。

最近、何となくドキュメントを眺めていたら Windows Server Version 1709 からはバージョン周りの要件が変更されていて、リビジョンは一致していなくても本番環境でサポートされるようになったみたいです。

正直なところカーネルを共有してるので、この制限は撤廃されないだろうなと考えてました。

ドキュメントによると 1709 からはコンテナホストとリビジョンまで合わせる必要はないが、最新のアップデートを適用しておくのをお勧めしますということのようです。

For Windows Server 2016 based hosts/images – the container image’s revision must match the host to be in a supported configuration. Starting with Windows Server version 1709, this is no longer applicable, and the host and container image need not have matching revisions. It is as always recommended to keep your systems up-to-date with the latest patches and updates.

Windows Container Version Compatibility | Microsoft Docs

LTSC での運用はほぼ不可能じゃないかと思ってましたが、アップデートを重ねることで何だかんだで実用的になってきているなと感じました。

運用ではコンテナホストのアップデートを考える必要がありますが、上のドキュメントには Kubernetes の nodeSelector を使って一致するバージョン上で Pod を実行させるための方法も載っています。しかし、肝心のノードを追加する方法が今の AKS には用意されていないので、単純にクラスタを作ると詰みます。

一応は対応予定ではあるらしいので、追加できるようになると新しい Windows Server のビルドをノードとして追加して、nodeSelector を使って切り替えるだけでアップデートが完了するわけです。

CI 周りも VSTS / AppVeyor / CodeBuild 以外にも、Codefresh という Kubernetes 向けサービスが Windows Containers にベータですが対応を始めているので、去年から割と整ってきた感じがあります。

Codefresh は結構面白そうなので、Windows Containers のサポートを試して見ようかと思います。