コンテナレジストリにプッシュされたドッキング画像がdocker push gcr.io/go-demo/servertime
で、ポッドがkubectl run servertime --image=gcr.io/go-demo-144214/servertime --port=8080
で作成されています。GCRへのすべての画像プッシュの自動更新ポッド
イメージの新しいバージョンをプッシュするたびに、ポッドの自動更新を有効にするにはどうすればよいですか?
コンテナレジストリにプッシュされたドッキング画像がdocker push gcr.io/go-demo/servertime
で、ポッドがkubectl run servertime --image=gcr.io/go-demo-144214/servertime --port=8080
で作成されています。GCRへのすべての画像プッシュの自動更新ポッド
イメージの新しいバージョンをプッシュするたびに、ポッドの自動更新を有効にするにはどうすればよいですか?
私はプロセスを管理するために何らかの種類のCIに切り替え、代わりにgitリポジトリにコミットをプッシュするプロセスをトリガーするdocker pushをトリガーすることをお勧めします。また、deployment
のような上位レベルのkubernetes構造に切り替えると、新しいイメージバージョンにポッドのローリングアップデートを実行することができます。次のように私たちのプロセスは、おおよそ次のとおりです。
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
を実行して、既存の展開にイメージを更新する方が簡単かもしれません。
少し重いかもしれませんが、あなたの他の考慮点を知らないと、Spinnakerはレジストリアップデートからk8sの展開をトリガーできるCDプラットフォームです。
ここにはcodelabがあります。
セットアッププロセスを短時間で行うには、Cloud Launcherでk8sとGCRの統合が事前設定されたスターターSpinnakerインスタンスを入手できます。
私たちのslack channel(私は@stevenkim)でさらにサポートを見つけることができます。
接着剤が必要ですが、Docker Hubを使用すると、新しい画像がプッシュされたとき、または新しいタグが作成されたときにリポジトリごとにwebhookを定義できます。
これは、着信通知を処理してポッドを更新するために独自のWeb APIサーバーを構築する必要があることを意味します。 そしての場合は、Google Container RepositoryではなくDocker Hubを使用する必要があります。これはウェブフックを許可していません。
したがって、解決しようとしている問題の変更が多すぎます。
あまりにも多くの変更があります。私はCIツールでkubectlを使用しました。 – theplastictoy
ありがとうございました。したがって、kubectlはCIツールを実行する必要があります。私はこれを避けることを望んでいました。 – theplastictoy