helm

使用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>
  1. 验证istiod集群中是否安装了两个版本:

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
  1. 验证金丝雀部署

要升级名称空间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的就地升级。

  • 升级Istio基本chart:

helm upgrade --namespace istio-system istio-base manifests/charts/base
  • 升级Istio discovery chart:

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
  • (可选)删除Istio入口/出口图表:

helm delete --namespace istio-system istio-egress
helm delete --namespace istio-system istio-ingress
  • 删除Istio discovery chart:

helm delete --namespace istio-system istiod
  • 删除Istio基本chart:

按照设计,通过Helm删除chart不会删除通过chart安装的已安装自定义资源定义(CRD)。

helm delete --namespace istio-system istio-base
  • 删除istio-system名称空间:

kubectl delete namespace istio-system
  • 删除CRD

kubectl get crd | grep --color=never 'istio.io' | awk '{print $1}' \
    | xargs -n1 kubectl delete crd

Last updated