Как настроить непрерывное развертывание в Spinnaker?
Я только начал испытывать Spinnaker. Я прошел учебник, https://www.spinnaker.io/guides/tutorials/codelabs/gcp-kubernetes-source-to-prod/, и получил его без проблем.
Теперь я хочу пойти немного более продвинутым и сделать скользящий выпуск или канареечное развертывание ( https://www.spinnaker.io/concepts/), где возможно, например, выставить только новый выпуск до 5% клиентов.
Я не могу найти руководство на spinnaker.io (или Google) о том, как это настроить. Кто-нибудь может направить меня в правильном направлении?
1 ответ
В настоящее время я сам в последнее время экспериментировал и выполнял PoC на Spinnaker и Canary Deployments, и вот что я нашел до сих пор.
Чтобы реализовать скользящий релиз, просто создайте Deploy
этап в Spinnaker, и установите стратегию развертывания в RollingUpdate
в вашей конфигурации группы серверов. Вам необходимо убедиться, что Deployment
флажок установлен, прежде чем вы сможете изменить стратегию развертывания.
Для Canary Deployment это немного сложнее. Я не думаю, что Canary Stage в настоящее время поддерживает развертывание Kubernetes (пока), но, очевидно, вы можете вручную развернуть канарейку (например, 1 реплику) в том же Kubernetes LoadBalancer, где работает ваше приложение. Это делается с помощью отдельной группы серверов Spinnaker.
Затем вы можете добавить Ручное суждение к вашему конвейеру Spinnaker, которое будет приостанавливаться до тех пор, пока вы не протестируете / не утвердите канарейку. Как только канарейка будет проверена, вы "продолжите" ручное суждение, и новая группа серверов будет развернута, а старая группа серверов отключена, а канарейка уничтожена.
Если вы не хотите использовать ручное суждение и хотите, чтобы это было полностью автоматизировано, вы можете добавить этап ACA (автоматический анализ канарейки). Это включает в себя создание судьи, к которому Spinnaker может подключиться, который будет собирать различные показатели и предоставлять оценку ACA. Затем вы можете использовать эту оценку, чтобы решить, следует ли продолжить развертывание или остановить развертывание.