Я хочу масштабировать развертывание с клиентом kubernetes go и ждать успешного завершения развертывания.Я уже создал рабочее решение, но мне было интересно, пропущу ли я какие-либо крайние случаи или смогу его улучшить.
Мое первое очень простое решение:
for _, deployment := range deploymentList.Items {
deployment.Spec.Replicas = int32Ptr(1)
_, err := deploymentsClient.Update(&deployment)
if err != nil {
panic(err)
}
}
for {
deploymentList, err = deploymentsClient.List(opts)
if err != nil {
panic(fmt.Errorf("List deployments failed: %v", err))
}
# checks if DeploymentAvailable and Status is "True"
if available(deploymentList) {
fmt.Println("Rolled out")
break
}
fmt.Println("Not rolled out")
time.Sleep(5 * time.Second)
}
Это работает, но мне не нравится идеяопроса.
Второе решение основано на состоянии развертывания kubectl .Я настроил код под свои нужды, и он работает.Но я не уверен, как сделать это для нескольких параллельных развертываний (что-то сделать с каналами?).