17 KiB
| title | linktitle | description | weight | keywords | owner | test | ||
|---|---|---|---|---|---|---|---|---|
| Встановлення за допомогою Helm | Встановлення за допомогою Helm | Інструкція по встановленню та налаштуванню Istio в кластері Kubernetes за допомогою Helm. | 30 |
|
istio/wg-environments-maintainers | yes |
Дотримуйтесь цього посібника, щоб встановити та налаштувати сервісну мережу Istio за допомогою Helm.
{{< boilerplate helm-preamble >}}
{{< boilerplate helm-prereqs >}}
Кроки встановлення
Цей розділ описує процедуру встановлення Istio за допомогою Helm. Загальний синтаксис для встановлення за допомогою Helm:
{{< text syntax=bash snip_id=none >}} $ helm install --namespace --create-namespace [--set <other_parameters>] {{< /text >}}
Змінні, що вказані в команді, мають наступні значення:
<chart>— Шлях до упакованого чарту, шлях до теки розпакованого чарту або URL.<release>— Імʼя для ідентифікації та управління Helm-чартом після встановлення.<namespace>— Простір імен, в якому буде встановлено чарт.
Стандартне значення конфігурації можна змінити, використовуючи один або кілька параметрів --set <parameter>=<value>. Альтернативно, ви можете вказати кілька параметрів у власному файлі значень, використовуючи аргумент --values <file>.
{{< tip >}}
Ви можете показати стандатні значення конфігураційних параметрів, використовуючи команду helm show values <chart>, або звернутися до документації чарту на artifacthub за посиланнями Custom Resource Definition parameters, Istiod chart configuration parameters та Gateway chart configuration parameters.
{{< /tip >}}
-
Встановіть базовий чарт Istio, який містить кластерні Custom Resource Definitions (CRDs), які повинні бути встановлені перед розгортанням панелі управління Istio:
{{< warning >}} При виконанні встановлення з ревізією базовий чарт вимагає вказання значення
--set defaultRevision=<revision>для функціонування перевірки ресурсів. Нижче ми встановлюємо ревізіюdefault, тому вказуємо--set defaultRevision=default. {{< /warning >}}{{< text syntax=bash snip_id=install_base >}} $ helm install istio-base istio/base -n istio-system --set defaultRevision=default --create-namespace {{< /text >}}
-
Перевірте установку CRD за допомогою команди
helm ls:{{< text syntax=bash >}} $ helm ls -n istio-system NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION istio-base istio-system 1 2024-04-17 22:14:45.964722028 +0000 UTC deployed base-{{< istio_full_version >}} {{< istio_full_version >}} {{< /text >}}
У виводі знайдіть запис для
istio-baseі переконайтесь, що статус встановлений наdeployed. -
Якщо ви плануєте використовувати чарт Istio CNI, зробіть це зараз. Див. Встановлення Istio за допомогою втулка CNI для отримання додаткової інформації.
-
Встановіть чарт виявлення Istio, який розгортає сервіс
istiod:{{< text syntax=bash snip_id=install_discovery >}} $ helm install istiod istio/istiod -n istio-system --wait {{< /text >}}
-
Перевірте установку чарту виявлення Istio:
{{< text syntax=bash >}} $ helm ls -n istio-system NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION istio-base istio-system 1 2024-04-17 22:14:45.964722028 +0000 UTC deployed base-{{< istio_full_version >}} {{< istio_full_version >}} istiod istio-system 1 2024-04-17 22:14:45.964722028 +0000 UTC deployed istiod-{{< istio_full_version >}} {{< istio_full_version >}} {{< /text >}}
-
Отримайте статус встановленого Helm-чарту, щоб переконатися, що він розгорнутий:
{{< text syntax=bash >}} $ helm status istiod -n istio-system NAME: istiod LAST DEPLOYED: Fri Jan 20 22:00:44 2023 NAMESPACE: istio-system STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: "istiod" successfully installed!
To learn more about the release, try: $ helm status istiod $ helm get all istiod
Next steps:
- Deploy a Gateway: https://istio.io/latest/docs/setup/additional-setup/gateway/
- Try out our tasks to get started on common configurations:
- Review the list of actively supported releases, CVE publications and our hardening guide:
For further documentation see https://istio.io website
Tell us how your install/upgrade experience went at https://forms.gle/99uiMML96AmsXY5d6 {{< /text >}}
-
Перевірте, чи успішно встановлено сервіс
istiodта чи працюють його podʼи:{{< text syntax=bash >}} $ kubectl get deployments -n istio-system --output wide NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR istiod 1/1 1 1 10m discovery docker.io/istio/pilot:{{< istio_full_version >}} istio=pilot {{< /text >}}
-
(Додатково) Встановіть ingress gateway:
{{< text syntax=bash snip_id=install_ingressgateway >}} $ kubectl create namespace istio-ingress $ helm install istio-ingress istio/gateway -n istio-ingress --wait {{< /text >}}
Див. Встановлення Gateway для отримання детальної документації з встановлення Gateway.
{{< warning >}} Простір імен, у якому розгортаються Gateway, не повинен мати мітку
istio-injection=disabled. Див. Контроль політики інʼєкцій для отримання додаткової інформації. {{< /warning >}}
{{< tip >}} Див. Розширені налаштування чартів Helm для отримання детальної документації про те, як використовувати Helm post-renderer для налаштування Helm-чартів. {{< /tip >}}
Оновлення конфігурації Istio
Ви можете вказати параметри перевизначення для будь-кого з чартів Istio Helm, використаних вище, і слідувати робочому процесу оновлення Helm, щоб налаштувати встановлення вашої меш-мережі Istio. Доступні параметри конфігурації можна знайти за допомогою команди helm show values istio/<chart>; наприклад, helm show values istio/gateway.
Міграція з установок без Helm
Якщо ви переходите з версії Istio, встановленої за допомогою istioctl, на Helm (Istio 1.5 або раніше), вам потрібно видалити ваші поточні ресурси панелі управління Istio та перевстановити Istio за допомогою Helm, як описано вище. При видаленні поточної установки Istio не слід видаляти Custom Resource Definitions (CRDs) Istio, оскільки це може призвести до втрати ваших власних ресурсів Istio.
{{< warning >}} Рекомендується зробити резервну копію ваших ресурсів Istio за допомогою наведених вище кроків перед видаленням поточної установки Istio у вашому кластері. {{< /warning >}}
Ви можете слідувати крокам, наведеним у посібнику з видалення Istioctl.
Видалення
Ви можете видалити Istio та її компоненти, видаливши встановлені раніше чарти.
-
Перевірте всі встановлені чарти Istio в просторі імен
istio-system:{{< text syntax=bash snip_id=helm_ls >}} $ helm ls -n istio-system NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION istio-base istio-system 1 2024-04-17 22:14:45.964722028 +0000 UTC deployed base-{{< istio_full_version >}} {{< istio_full_version >}} istiod istio-system 1 2024-04-17 22:14:45.964722028 +0000 UTC deployed istiod-{{< istio_full_version >}} {{< istio_full_version >}} {{< /text >}}
-
(Необовʼязково) Видаліть будь-які встановлені чарти шлюзів Istio:
{{< text syntax=bash snip_id=delete_delete_gateway_charts >}} $ helm delete istio-ingress -n istio-ingress $ kubectl delete namespace istio-ingress {{< /text >}}
-
Видаліть чарт виявлення Istio:
{{< text syntax=bash snip_id=helm_delete_discovery_chart >}} $ helm delete istiod -n istio-system {{< /text >}}
-
Видаліть базовий чарт Istio:
{{< tip >}} За задумом, видалення чарту через Helm не видаляє встановлені Custom Resource Definitions (CRDs), встановлені через чарт. {{< /tip >}}
{{< text syntax=bash snip_id=helm_delete_base_chart >}} $ helm delete istio-base -n istio-system {{< /text >}}
-
Видаліть простір імен
istio-system:{{< text syntax=bash snip_id=delete_istio_system_namespace >}} $ kubectl delete namespace istio-system {{< /text >}}
Видалення ресурсів з мітками стабільної версії
Якщо ви вирішите продовжити використовувати стару панель управління замість завершення оновлення, ви можете видалити новішу версію та її мітку, спочатку виконавши команду:
{{< text syntax=bash >}} $ helm template istiod istio/istiod -s templates/revision-tags.yaml --set revisionTags={prod-canary} --set revision=canary -n istio-system | kubectl delete -f - {{< /text >}}
Після цього ви повинні видалити версію Istio, на яку вона посилалася, слідуючи процедурі видалення, описаній вище.
Якщо ви встановили шлюз(и) для цієї версії за допомогою оновлень на місці, вам також потрібно вручну перевстановити шлюз(и) для попередньої версії. Видалення попередньої версії та її міток не поверне автоматично раніше оновлені шлюзи.
(Опціонально) Видалення CRD, встановлених Istio
Видалення CRD назавжди видаляє всі ресурси Istio, які ви створили у вашому кластері. Щоб видалити CRD Istio, встановлені у вашому кластері:
{{< text syntax=bash >}} $ kubectl get crd -oname | grep --color=never 'istio.io' | xargs kubectl delete {{< /text >}}
Генерація маніфесту перед встановленням
Ви можете згенерувати маніфести для кожного компонента перед встановленням Istio, використовуючи команду helm template. Наприклад, щоб згенерувати маніфест, який можна встановити за допомогою kubectl для компонента istiod:
{{< text syntax=bash snip_id=none >}} $ helm template istiod istio/istiod -n istio-system --kube-version {версія Kubernetes цільового кластера} > istiod.yaml {{< /text >}}
Згенерований маніфест можна використовувати для перевірки того, що саме встановлюється, а також для відстеження змін у маніфесті з часом.
{{< tip >}}
Будь-які додаткові прапорці або перевизначення значень, які ви зазвичай використовуєте для встановлення, також повинні бути передані команді helm template.
{{< /tip >}}
Щоб встановити маніфест, згенерований вище, який створить компонент istiod у цільовому кластері:
{{< text syntax=bash snip_id=none >}} $ kubectl apply -f istiod.yaml {{< /text >}}
{{< warning >}}
Якщо ви намагаєтеся встановити та керувати Istio за допомогою helm template, зверніть увагу на наступні застереження:
-
Простір імен Istio (стандартно
istio-system) повинен бути створений вручну. -
Ресурси можуть не встановлюватися з тією ж послідовністю залежностей, як при
helm install. -
Цей метод не тестується як частина випусків Istio.
-
Хоча
helm installавтоматично виявляє налаштування середовища з вашого контексту Kubernetes,helm templateне може це робити, оскільки він працює офлайн, що може призвести до несподіваних результатів. Зокрема, ви повинні переконатися, що ви дотримуєтеся цих кроків, якщо ваше середовище Kubernetes не підтримує токени сторонніх службових облікових записів. -
kubectl applyзгенерованого маніфесту може показувати тимчасові помилки через те, що ресурси не доступні в кластері в правильному порядку. -
helm installавтоматично видаляє будь-які ресурси, які повинні бути видалені при зміні конфігурації (наприклад, якщо ви видаляєте шлюз). Це не відбувається, коли ви використовуєтеhelm templateзkubectl, і ці ресурси повинні бути видалені вручну.
{{< /warning >}}