0

コンテナレジストリにプッシュされたドッキング画像がdocker push gcr.io/go-demo/servertimeで、ポッドがkubectl run servertime --image=gcr.io/go-demo-144214/servertime --port=8080で作成されています。GCRへのすべての画像プッシュの自動更新ポッド

イメージの新しいバージョンをプッシュするたびに、ポッドの自動更新を有効にするにはどうすればよいですか?

答えて

3

私はプロセスを管理するために何らかの種類のCIに切り替え、代わりにgitリポジトリにコミットをプッシュするプロセスをトリガーするdocker pushをトリガーすることをお勧めします。また、deploymentのような上位レベルのkubernetes構造に切り替えると、新しいイメージバージョンにポッドのローリングアップデートを実行することができます。次のように私たちのプロセスは、おおよそ次のとおりです。

deployment.ymlは新しいタグバージョンに更新されます私たちの展開のためのテンプレートである
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 

あなたが手動で行う場合、単に私がスピンネーカーチームによkubectl set image deployment/yourdeployment <containernameinpod>=yourimage:gitsha1

+0

ありがとうございました。したがって、kubectlはCIツールを実行する必要があります。私はこれを避けることを望んでいました。 – theplastictoy

2

を実行して、既存の展開にイメージを更新する方が簡単かもしれません。

少し重いかもしれませんが、あなたの他の考慮点を知らないと、Spinnakerはレジストリアップデートからk8sの展開をトリガーできるCDプラットフォームです。

ここにはcodelabがあります。

セットアッププロセスを短時間で行うには、Cloud Launcherでk8sとGCRの統合が事前設定されたスターターSpinnakerインスタンスを入手できます。

私たちのslack channel(私は@stevenkim)でさらにサポートを見つけることができます。

1

接着剤が必要ですが、Docker Hubを使用すると、新しい画像がプッシュされたとき、または新しいタグが作成されたときにリポジトリごとにwebhookを定義できます。

これは、着信通知を処理してポッドを更新するために独自のWeb APIサーバーを構築する必要があることを意味します。 そしての場合は、Google Container RepositoryではなくDocker Hubを使用する必要があります。これはウェブフックを許可していません。

したがって、解決しようとしている問題の変更が多すぎます。

+0

あまりにも多くの変更があります。私はCIツールでkubectlを使用しました。 – theplastictoy

関連する問題