使用 Helm 自定义安装
Helm 的安装方法已被弃用。请改用使用 istioctl 安装。
请按照本指南安装和配置 Istio 网格,以进行深入评估或用于生产。
这种安装方式使用 Helm charts 自定义 Istio 控制平面和 Istio 数据平面的 sidecar。你只需使用 helm template
生成配置并使用 kubectl apply
命令安装它, 或者你可以选择使用 helm install
让Tiller来完全管理安装。
通过这些说明, 您可以选择 Istio 内置的任何一个配置文件并根据的特定的需求进行进一步的自定义配置。
先决条件
请使用 2.x 版本的 Helm。不支持 Helm 3。
添加 Helm chart 仓库
本指南的以下命令使用了包含 Istio 发行版镜像的 Helm charts。如果要使用 Istio 发行版 Helm chart ,建议使用下面的命令添加 Istio 发行版仓库:
$ helm repo add istio.io https://storage.googleapis.com/istio-release/releases/1.5.1/charts/
安装步骤
将目录切换到 Istio 发行版的根目录,然后在以下两个互斥选项选择一种安装:
- 如果您不使用 Tiller 部署 Istio,请查看方案 1。
- 如果您使用 Helm 的 Tiller pod 来管理 Istio 发行版, 请查看方案 2。
默认情况下,Istio 使用 LoadBalancer
服务类型。 而有些平台是不支持 LoadBalancer
服务的。 对于不支持 LoadBalancer
服务类型的平台, 执行下面的步骤时,可以在 Helm 命令中加入 —set gateways.istio-ingressgateway.type=NodePort
选项,使用 NodePort
来替代 LoadBalancer
服务类型。
方案 1: 使用 helm template 命令安装
在您的集群没有按照 Tiller而且您也不想安装它的情况下,选择此方案安装。
- 为 Istio 组件创建命名空间
istio-system
:
$ kubectl create namespace istio-system
- 使用
kubectl apply
安装所有 Istio 的自定义资源(CRDs) :
$ helm template install/kubernetes/helm/istio-init --name istio-init --namespace istio-system | kubectl apply -f -
- 等待所有的 Istio CRD 创建完成:
$ kubectl -n istio-system wait --for=condition=complete job --all
- 选择一个配置文件接着部署与您选择的配置文件相对应的 Istio 核心组件。我们建议在生产环境使用默认的配置文件:
您可以添加一个或多个 —set <key>=<value>
来进一步自定义 helm 命令的安装选项 。
$ helm template install/kubernetes/helm/istio --name istio --namespace istio-system | kubectl apply -f -
$ helm template install/kubernetes/helm/istio --name istio --namespace istio-system \
--values install/kubernetes/helm/istio/values-istio-demo.yaml | kubectl apply -f -
$ helm template install/kubernetes/helm/istio --name istio --namespace istio-system \
--values install/kubernetes/helm/istio/values-istio-minimal.yaml | kubectl apply -f -
$ helm template install/kubernetes/helm/istio --name istio --namespace istio-system \
--values install/kubernetes/helm/istio/values-istio-sds-auth.yaml | kubectl apply -f -
安装 Istio CNI 组件:
$ helm template install/kubernetes/helm/istio-cni --name=istio-cni --namespace=kube-system | kubectl apply -f -
将 —set istio_cni.enabled=true
设置追加到 helm 命令上,来启用 Istio CNI 插件。以 Istio 默认配置文件为例:
$ helm template install/kubernetes/helm/istio --name istio --namespace istio-system \
--set istio_cni.enabled=true | kubectl apply -f -
方案 2: 在 Helm 和 Tiller 的环境中使用 helm install 命令安装
这个方案使用 Helm 和 Tiller 来对 Istio 的生命周期进行管理。
本文档中介绍如何使用带 Tiller 的 Helm 不使用安全默认值。有关基于 Tiller 安全安装的进一步步骤请参考安全安装 Helm。
- 请确保您的集群的 Tiller 设置了
cluster-admin
角色的 Service Account。如果还没有定义,请执行下面命令创建:
$ kubectl apply -f @manifests/UPDATING-CHARTS.md@
- 使用 Service Account 在集群上安装 Tiller:
$ helm init --service-account tiller
- 安装
istio-init
chart,来启动 Istio CRD 的安装过程:
$ helm install install/kubernetes/helm/istio-init --name istio-init --namespace istio-system
- 等待所有的 Istio CRD 创建完成:
$ kubectl -n istio-system wait --for=condition=complete job --all
- 选择一个配置文件接着部署与您选择的配置文件相对应的
istio
的核心组件。我们建议在生成环境部署中使用默认配置文件:
您可以添加一个或多个 —set <key>=<value>
来进一步定义 Helm 命令的安装选项。
$ helm install install/kubernetes/helm/istio --name istio --namespace istio-system
$ helm install install/kubernetes/helm/istio --name istio --namespace istio-system \
--values install/kubernetes/helm/istio/values-istio-demo.yaml
$ helm install install/kubernetes/helm/istio --name istio --namespace istio-system \
--values install/kubernetes/helm/istio/values-istio-minimal.yaml
$ helm install install/kubernetes/helm/istio --name istio --namespace istio-system \
--values install/kubernetes/helm/istio/values-istio-sds-auth.yaml
安装 Istio CNI chart:
$ helm install install/kubernetes/helm/istio-cni --name istio-cni --namespace kube-system
将 —set istio_cni.enabled=true
设置追加到 helm 命令上,来启用 Istio CNI 插件。以 Istio 默认配置文件为例:
$ helm install install/kubernetes/helm/istio --name istio --namespace istio-system --set istio_cni.enabled=true
验证安装
- 查询配置文件的组件表,验证是否已部署了与您选择的配置文件相对应的 Kubernetes 服务
$ kubectl get svc -n istio-system
- 确保相应的 Kubernetes Pod 已部署并且
STATUS
是Running
:
$ kubectl get pods -n istio-system
卸载
- 如果你使用
helm template
命令安装的 Istio,使用如下命令卸载:
$ helm template install/kubernetes/helm/istio --name istio --namespace istio-system | kubectl delete -f -
$ kubectl delete namespace istio-system
$ helm template install/kubernetes/helm/istio --name istio --namespace istio-system \
--values install/kubernetes/helm/istio/values-istio-demo.yaml | kubectl delete -f -
$ kubectl delete namespace istio-system
$ helm template install/kubernetes/helm/istio --name istio --namespace istio-system \
--values install/kubernetes/helm/istio/values-istio-minimal.yaml | kubectl delete -f -
$ kubectl delete namespace istio-system
$ helm template install/kubernetes/helm/istio --name istio --namespace istio-system \
--values install/kubernetes/helm/istio/values-istio-sds-auth.yaml | kubectl delete -f -
$ kubectl delete namespace istio-system
$ helm template install/kubernetes/helm/istio --name istio --namespace istio-system \
--set istio_cni.enabled=true | kubectl delete -f -
$ helm template install/kubernetes/helm/istio-cni --name=istio-cni --namespace=kube-system | kubectl delete -f -
- 如果您使用的 Helm 和 Tiller 安装的 Istio, 使用如下命令卸载:
$ helm delete --purge istio
$ helm delete --purge istio-init
$ helm delete --purge istio-cni
$ kubectl delete namespace istio-system
删除 CRD 和 Istio 配置
Istio 的设计中,其自定义资源以 CRD 的形式存在于 Kubernetes 环境之中。CRD 中包含了运维过程中产生的运行时配置。正因如此,我们建议运维人员应该显式的对其进行删除,从而避免意外操作。
CRD 的删除,意味着删掉所有的用户配置。
istio-init
Chart 包含了 istio-init/files
目录中的所有原始 CRD。下载该 Chart 之后,可以简单的使用 kubectl
删除 CRD。要永久删除 Istio 的 CRD 以及所有 Istio 配置, 请运行如下命令
$ kubectl delete -f install/kubernetes/helm/istio-init/files
相关内容
关于 Istio 1.1 和 Istio 1.2 之间的 Helm chart 安装选项的变更。
本文详细介绍了 Istio 1.0 系列到 Istio 1.1 系列之间的安装参数变化详情。
本文详细介绍了 Istio 1.2 系列到 Istio 1.3 系列之间的安装参数变化详情。
安装并使用 Istio CNI 插件,可以让运维人员用更低的权限来部署服务。
描述使用 Helm chart 安装 Istio 时的可选项。
在 Istio 中配置和管理 DNS 证书。