使用helm安装istio
创建命名空间
kubectl create namespace istio-system
安装Istio基础资源chart
helm install --namespace istio-system istio-base manifests/charts/base
安装istiod
helm install --namespace istio-system istiod manifests/charts/istio-control/istio-discovery \
--set global.hub="docker.io/istio" --set global.tag="1.8.0"
安装ingressgateway
helm install --namespace istio-system istio-ingress manifests/charts/gateways/istio-ingress \
--set global.hub="docker.io/istio" --set global.tag="1.8.0"
安装egressgateway
helm install --namespace istio-system istio-egress manifests/charts/gateways/istio-egress \
--set global.hub="docker.io/istio" --set global.tag="1.8.0"
升级
金丝雀升级
1.通过设置修订值来安装Istio发现表的Canary版本:
helm install --namespace istio-system istiod-canary manifests/charts/istio-control/istio-discovery --set revision=canary \
--set global.hub="docker.io/istio" --set global.tag=<version_to_upgrade>
kubectl get pods -n istio-system -l app=istiod -L istio.io/rev
NAME READY STATUS RESTARTS AGE REV
istiod-5649c48ddc-dlkh8 1/1 Running 0 71m default
istiod-canary-9cc9fd96f-jpc7n 1/1 Running 0 34m canary
要升级名称空间test-ns,请删除istio-injection标签,然后添加istio.io/rev标签以指向canary修订版本。该istio-injection标签必须拆除,因为它的优先级高于istio.io/rev标签向后兼容性。
kubectl label namespace test-ns istio-injection- istio.io/rev=canary
在命名空间更新之后,您需要重新启动Pod以触发重新注入。一种方法是使用:
kubectl rollout restart deployment -n test-ns
显示使用canary修订版的所有Pod
kubectl get pods -n test-ns -l istio.io/rev=canary
要验证test-ns名称空间中的新容器正在使用与修订istiod-canary相对应的服务canary,请选择一个新创建的容器,然后pod_name在以下命令中使用:
istioctl proxy-config endpoints ${pod_name}.test-ns --cluster xds-grpc -ojson | grep hostname
"hostname": "istiod-canary.istio-system.svc"
验证并迁移工作负载以使用Canary控制平面后,可以卸载旧的控制平面:
helm delete --namespace istio-system istiod
就地升级
您可以使用Helm升级工作流程在集群中执行Istio的就地升级。
helm upgrade --namespace istio-system istio-base manifests/charts/base
helm upgrade --namespace istio-system istiod manifests/charts/istio-control/istio-discovery \
--set global.hub="docker.io/istio" --set global.tag="<version_to_upgrade>"
如果集群中安装了Istio入口或出口网关chart,请升级:
helm upgrade --namespace istio-system istio-ingress manifests/charts/gateways/istio-ingress \
--set global.hub="docker.io/istio" --set "global.tag=<version_to_upgrade>"
helm upgrade --namespace istio-system istio-egress manifests/charts/gateways/istio-egress \
--set global.hub="docker.io/istio" --set "global.tag=<version_to_upgrade>"
卸载
您可以通过卸载上面安装的chart来卸载Istio及其组件。
列出安装在istio-system名称空间中的所有Istio chart:
helm ls --namespace istio-system
helm delete --namespace istio-system istio-egress
helm delete --namespace istio-system istio-ingress
helm delete --namespace istio-system istiod
按照设计,通过Helm删除chart不会删除通过chart安装的已安装自定义资源定义(CRD)。
helm delete --namespace istio-system istio-base
kubectl delete namespace istio-system
kubectl get crd | grep --color=never 'istio.io' | awk '{print $1}' \
| xargs -n1 kubectl delete crd