Docker イメージを Container Registry にプッシュしdocker push gcr.io/go-demo/servertime
、ポッドを作成しましたkubectl run servertime --image=gcr.io/go-demo-144214/servertime --port=8080
。
新しいバージョンのイメージをプッシュするたびにポッドの自動更新を有効にするにはどうすればよいですか?
Docker イメージを Container Registry にプッシュしdocker push gcr.io/go-demo/servertime
、ポッドを作成しましたkubectl run servertime --image=gcr.io/go-demo-144214/servertime --port=8080
。
新しいバージョンのイメージをプッシュするたびにポッドの自動更新を有効にするにはどうすればよいですか?
プロセスを管理するためにある種のCIに切り替え、ドッカープッシュでトリガーする代わりに、コミットをgitリポジトリにプッシュするときにプロセスをトリガーすることをお勧めします。また、 などの高レベルの kubernetes コンストラクトの使用に切り替えるとdeployment
、新しいイメージ バージョンへのポッドのローリング アップデートを実行できます。私たちのプロセスはおおよそ次のとおりです。
git commit #triggers CI build
docker build yourimage:gitsha1
docker push yourimage:gitsha1
sed -i 's/{{TAG}}/gitsha1/g' deployment.yml
kubectl apply -f deployment.yml
deployment.yml は、新しいタグ バージョンに更新されるデプロイのテンプレートです。
手動で行う場合は、実行して既存の展開のイメージを単純に更新する方が簡単かもしれませんkubectl set image deployment/yourdeployment <containernameinpod>=yourimage:gitsha1
私はスピネーカーチームに所属しています。
少し重いかもしれませんが、考慮すべき他の領域を知らなくても、Spinnakerは、レジストリの更新から k8s の展開をトリガーできる CD プラットフォームです。
開始するためのCodelabを次に示します。
セットアップ プロセスを省略したい場合は、 Cloud Launcherを使用して、k8s と GCR の統合が事前にセットアップされたスターター Spinnaker インスタンスを取得できます。
Slackチャンネル(私は@stevenkimです)でさらなるサポートを見つけることができます。
接着剤が必要ですが、新しいイメージがプッシュされたとき、または新しいタグが作成されたときに、各リポジトリのwebhookを定義できるDocker Hubを使用できます。
これは、着信通知を処理し、それらを使用してポッドを更新するために、独自の Web API サーバーを構築する必要があることを意味します。また、Web フックを許可しない Google Container Repository ではなく、Docker Hub を使用する必要があります。
したがって、解決しようとしている問題に対して変更が多すぎる可能性があります。