Рейтинг:0

Как выполнить канареечное обновление существующей пользовательской установки istio?

флаг br

Как выполнить канареечное обновление существующей пользовательской установки istio.

Требование:

  • У нас есть настроенная установка istio 1.7.3 (установленная с использованием метода istoctl и для этого не задана версия) для AKS 1.18.14.
  • Теперь нам нужно обновиться до istio 1.8 без простоев или с минимальными затратами времени.
  • Обновление должно быть более безопасным и никоим образом не нарушит нашу производственную среду.

Как мы установили текущую настроенную среду istio:

1) созданный манифест.
     Генерировать манифест istioctl --set profile=default -f /manifests/overlay/overlay.yaml > $HOME/generated-manifest.yaml
2) установил истио.
     istioctl установить --set profile=default -f /manifests/overlay/overlay.yaml
3) Проверка istio по развернутому манифесту.
     istioctl verify-install -f $HOME/сгенерированный-манифест.yaml
    

Запланированный процесс обновления Справка

1) Предварительная проверка для обновления.
     istioctl x предварительная проверка

2) экспортировать текущую используемую конфигурацию istio с помощью команды ниже в файл yaml.
     kubectl -n istio-system получить iop установленное-состояние-установить -o yaml > /tmp/iop.yaml

3) Загрузите двоичный файл istio 1.8, извлеките каталог и перейдите в каталог, где у нас есть двоичный файл istioctl версии 1.8.
      компакт-диск istio1.8\istioctl1.8

4) из каталога новой версии istio создайте новую плоскость управления для istio(1.8) с правильным набором ревизий и используйте ранее экспортированное состояние установки "iop.yaml".
     ./istioctl1.8 установить --set version=1-8 --set profile=default -f /tmp/iop.yaml
     
Ожидайте, что он создаст новую плоскость управления с существующей конфигурацией, и теперь у нас будет два развертывания плоскости управления и сервисы, работающие бок о бок:

      $ kubectl get pods -n istio-system -l app=istiod
          ИМЯ ГОТОВ СТАТУС ПЕРЕЗАПУСКА ВОЗРАСТ
          istiod-786779888b-p9s5n 1/1 Бег 0 114м
          istiod-1-7-6956db645c-vwhsk 1/1 Бег 0 1м   
                              
5) После этого нам нужно изменить существующую метку всех пространств имен нашего кластера, куда нам нужно внедрить прокси-контейнеры istio. Необходимо удалить старую метку «istio-injection» и добавить метку istio.io/rev, чтобы указать на канареечную версию 1-8.
    $ kubectl label space namespace test-ns istio-injection-istio.io/rev=1-8
                       
      Надеюсь, на данный момент среда также стабильна со старыми конфигурациями istio, и мы можем принять решение о том, какие модули приложений можно перезапустить, чтобы внести изменения в новую плоскость управления в соответствии с нашим временем простоя, и разрешено запускать некоторые приложения со старой плоскостью управления и другой с новыми конфигурациями плоскости контроллера на данный момент.
    например: развертывание kubectl, перезапуск, развертывание -n test-ns (сначала) 
         развертывание kubectl перезапустить развертывание -n test-ns2 (позже)
         развертывание kubectl перезапустить развертывание -n test-ns3 (снова через некоторое время позже)

6) После того, как мы запланировали время простоя и перезапустили развертывание, как мы решили, подтвердите, что все модули теперь используют прокси-инжектор dataplane только версии 1.8.    
        kubectl получить pods -n test-ns -l istio.io/rev=1-8
                       
7) Чтобы убедиться, что новые модули в пространстве имен test-ns используют сервис istiod-canary, соответствующий версии canary.        
        прокси-статус istioctl | grep ${имя_пода} | awk '{напечатать $7}'

8) После обновления плоскости управления и плоскости данных можно удалить старую плоскость управления.
        istioctl x uninstall -f /tmp/iop.yaml.



                       

Перед обновлением необходимо очистить следующие пункты.

  1. Все ли шаги, подготовленные для обновления, описанные выше, подходят для использования в среде Prod с высокой нагрузкой?
  2. Достаточно ли экспортировать установленное состояние IOP, чтобы получить все настроенные шаги для продолжения канареечного обновления? или есть вероятность тормозить апгрейд или пропускать какие-то настройки?
  3. Создаст ли вышеприведенный шаг 4 плоскость управления 1.8 istio со всеми настройками, которые у нас уже есть, без каких-либо поломок или упущений?
  4. после шага 4, нужна ли нам какая-либо дополнительная настройка, связанная с конфигурацией службы istiod> в следующем документе не ясно об этом,
  5. для шага 5 выше, как мы можем идентифицировать все пространства имен, где у нас включена istio-injection, и модифицировать только это пространство имен, а другие оставить такими, какими они были раньше?
  6. Итак, для шага 8 выше, как убедиться, что мы удаляем только старую плоскость управления? мы должны получить двоичный файл для старой плоскости управления, скажем (1.7 в моем случае), и использовать этот двоичный файл с тем же экспортированным файлом /tmp/iop.yaml?
  7. Нет идей о том, как откатить любые проблемы, возникшие между... до или после удаления старой плоскости управления

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.