AWS で CoreOS クラスターを実行しています。AWS の各インスタンスで、docker コンテナーを実行します。たとえば、最新のソフトウェア バージョンで Docker イメージを実行する API という名前の 2 つのインスタンスがあります。
また、最新バージョンの別の Docker イメージを実行する 6 つのプロセッサ インスタンスがあります。
クラスター内のすべてのコンテナーを更新したいので、今日はパイプラインでGoCDを使用して、すべての作業を行う ansible-playbook をアクティブにします。パイプラインは github プロジェクトをリッスンし、そのブランチに変更をプッシュすると、パイプラインがアクティブになります。
API とプロセッサの新しい docker イメージを構築し、新しい更新されたイメージを dockerhub にアップロードします。次に、AWS インスタンスに接続し、アップロードしたばかりのイメージに対して docker pull を発行します。最終的に、新しくプルされたイメージでコンテナを起動します。
これは、現在、バージョンの展開を制御する方法です。
問題は次のとおりです。
- 長い時間がかかります
- さまざまな理由で失敗することがあります
- 柔軟性がありません(githubでリッスンしてファイルをプルするには、特定のブランチをハードコーディングする必要があります)
この仕事を成し遂げるための他の提案やツールはありますか? 場合によっては 3 台のマシンを更新する必要があり、場合によっては 7 台のマシンを更新する必要があり、スケーリングできるものが必要です。