VK Cloud logo
Обновлена 15 апреля 2024 г. в 08:50

Настройка Canary Deployment Ingress

Эта статья поможет вам развернуть кластер Kubernetes и настроить на нем Canary Deployment при помощи Nginx Ingress Annotations: выполнить сценарий Canary Deployment для echo-сервера и убедиться, что трафик распределяется в соответствии с конфигурационным файлом.

Подготовительные шаги

  1. Создайте кластер Kubernetes в VK Cloud.

  2. Подключитесь к кластеру с помощью kubectl.

  3. Создайте тестовое приложение:

    1. Создайте новое пространство имен (namespace) для проекта:

      kubectl create ns echo-production
    2. Создайте ресурс Kubernetes на основе манифеста, например, http-svc:

    kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/docs/examples/http-svc.yaml -n echo-production

1. Создайте ресурс Ingress

  1. Создайте файл манифеста http-svc.ingress со следующим содержимым:

  2. Примените манифест в кластере:

    kubectl apply -f http-svc.ingress -n echo-production

    В результате будет создано приложение и сервер станет реагировать на все запросы от echo.com.

2. Создайте копию развернутого приложения

  1. Создайте Canary-версию пространства имен для приложения:

    kubectl create ns echo-canary
  2. Разверните Canary-версию приложения:

    kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/docs/examples/http-svc.yaml -n echo-canary
  3. Создайте Canary-версию файла конфигурации Ingress:

  4. Примените манифест в кластере:

    kubectl apply -f http-svc.ingress.canary -n echo-canary

3. Проверьте работоспособность распределения трафика

  1. Подключитесь к кластеру с помощью Kubernetes Dashboard.

  2. Перейдите в раздел Namespaces.

  3. Переключите фильтр Namespace на All.

  4. В нижней части бокового меню выберите Ingresses.

    Отобразится список всех доступных Ingresses.

  5. Убедитесь, что у http-svc указан один IP-адрес в столбце Endpoints.

  6. Проверьте распределение запросов в соответствии с установленной конфигурацией, выполнив скрипт count.rb:

    ruby count.rb

Пример успешного результата:

{"echo-production"=>896, "echo-canary"=>104}

Удалите неиспользуемые ресурсы

Работающий кластер потребляет вычислительные ресурсы. Если он вам больше не нужен: