使用 Helm 自定义安装
请按照本指南安装和配置 Istio 网格,以进行深入评估或用于生产。
这种安装方式使用 Helm charts 自定义 Istio 控制平面和 Istio 数据平面的 sidecar。
你只需使用 helm template
生成配置并使用 kubectl apply
命令安装它, 或者你可以选择使用 helm install
让
Tiller
来完全管理安装。
通过这些说明, 您可以选择 Istio 内置的任何一个 配置文件 并根据的特定的需求进行进一步的自定义配置。
先决条件
添加 Helm chart 仓库
本指南的以下命令使用了包含 Istio 发行版镜像的 Helm charts。 如果要使用 Istio 发行版 Helm chart ,建议使用下面的命令添加 Istio 发行版仓库:
$ helm repo add istio.io https://storage.googleapis.com/istio-release/releases/1.6.8/charts/
安装步骤
将目录切换到 Istio 发行版的根目录,然后在以下两个互斥选项选择一种安装:
- 如果您不使用 Tiller 部署 Istio,请查看方案 1。
- 如果您使用 Helm 的 Tiller pod 来管理 Istio 发行版, 请查看方案 2。
方案 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 核心组件。 我们建议在生产环境使用默认的配置文件:
$ 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 设置了
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
的核心组件。 我们建议在生成环境部署中使用默认配置文件:
$ 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 中包含了运维过程中产生的运行时配置。正因如此,我们建议运维人员应该显式的对其进行删除,从而避免意外操作。
istio-init
Chart 包含了 istio-init/files
目录中的所有原始 CRD。下载该 Chart 之后,可以简单的使用 kubectl
删除 CRD。要永久删除 Istio 的 CRD 以及所有 Istio 配置, 请运行如下命令
$ kubectl delete -f install/kubernetes/helm/istio-init/files