Istio 安装

使用 helm 安装 istio。最新版本:1.9.0


安装 helm

  • 安装 helm:
curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash
  • 命令补全:
echo "source <(helm completion bash)" >> ~/.bash_profile

source !$

如果提示 WARNING: Kubernetes configuration file is group-readable. This is insecure. Location: /root/.kube/config,执行 chmod 600 /root/.kube/config

  • 查看版本:
helm version

version.BuildInfo{
    
    Version:"v3.5.2", GitCommit:"167aac70832d3a384f65f9745335e9fb40169dc2", GitTreeState:"dirty", GoVersion:"go1.15.7"}

安装 istio

  • 下载 istio:
curl -L https://istio.io/downloadIstio | sh -

cd istio-1.9.0

export PATH=$PWD/bin:$PATH              #将 istioctl 加入环境变量

如果 helm 部署入站或出站网关 charts 时报错:Readiness probe failed: HTTP probe failed with statuscode: 503,可以注释掉 readinessProbe

vim manifests/charts/gateways/istio-ingress/templates/deployment.yaml               #注释掉 readinessProbe

#          readinessProbe:
#            failureThreshold: 30
#            httpGet:
#              path: /healthz/ready
#              port: 15021
#              scheme: HTTP
#            initialDelaySeconds: 1
#            periodSeconds: 2
#            successThreshold: 1
#            timeoutSeconds: 1
vim manifests/charts/gateways/istio-egress/templates/deployment.yaml                #注释掉 readinessProbe

#          readinessProbe:
#            failureThreshold: 30
#            httpGet:
#              path: /healthz/ready
#              port: 15021
#              scheme: HTTP
#            initialDelaySeconds: 1
#            periodSeconds: 2
#            successThreshold: 1
#            timeoutSeconds: 1
  • 安装 istio:

default chart 配置将安全的第三方令牌映射到服务账户令牌, 此令牌将被 istio 代理用于认证 istio 控制平面。继续安装下面 chart 之前,需要用下面 步骤 验证:在集群中,第三方令牌是否启用。 如果尚未启用第三方令牌,应该将参数 --set global.jwtPolicy=first-party-jwt 添加到 helm 安装命令中。 如果设置 jwtPolicy 时出了问题,各类 Pod,比如关联到 istiod、网关的 Pod、 以及被注入 Envoy 代理的工作负载的 Pod 等,都会因为缺少 istio-token 卷的原因,而不能部署。

为 istio 组件,创建命名空间 istio-system :

kubectl create namespace istio-system

安装 istio base chart,它包含了 istio 控制平面用到的集群范围的资源:

helm install istio-base manifests/charts/base -n istio-system

安装 istio discovery chart,它用于部署 istiod 服务:

helm install istiod manifests/charts/istio-control/istio-discovery \
  --set global.hub="docker.io/istio" \
  --set global.tag="1.9.0" \
  --set global.jwtPolicy=first-party-jwt \
  -n istio-system

安装 istio 的入站网关 chart,它包含入站网关组件(可选项):

helm install istio-ingress manifests/charts/gateways/istio-ingress \
  --set global.hub="docker.io/istio" \
  --set global.tag="1.9.0" \
  --set global.jwtPolicy=first-party-jwt \
  -n istio-system

安装 Istio 的出站网关 chart,它包含了出站网关组件(可选项):

helm install istio-egress manifests/charts/gateways/istio-egress \
  --set global.hub="docker.io/istio" \
  --set global.tag="1.9.0" \
  --set global.jwtPolicy=first-party-jwt \
  -n istio-system
  • 验证安装:
kubectl get pod -n istio-system

NAME                                    READY   STATUS    RESTARTS   AGE
istio-egressgateway-84d5f75579-7qxz8    1/1     Running   0          6s
istio-ingressgateway-59fb598cc9-gb84h   1/1     Running   0          19s
istiod-666444b865-77x5q                 1/1     Running   0          16m
kubectl get crd | grep 'istio.io'

authorizationpolicies.security.istio.io               2021-02-20T07:11:18Z
destinationrules.networking.istio.io                  2021-02-20T07:11:18Z
envoyfilters.networking.istio.io                      2021-02-20T07:11:18Z
gateways.networking.istio.io                          2021-02-20T07:11:18Z
istiooperators.install.istio.io                       2021-02-20T07:11:19Z
peerauthentications.security.istio.io                 2021-02-20T07:11:18Z
requestauthentications.security.istio.io              2021-02-20T07:11:18Z
serviceentries.networking.istio.io                    2021-02-20T07:11:18Z
sidecars.networking.istio.io                          2021-02-20T07:11:18Z
virtualservices.networking.istio.io                   2021-02-20T07:11:18Z
workloadentries.networking.istio.io                   2021-02-20T07:11:18Z
workloadgroups.networking.istio.io                    2021-02-20T07:11:18Z
  • 更新 istio 配置:

可以用自己的安装参数,覆盖掉前面用到的 istio helm chart 的默认行为, 然后按照 helm 升级流程来定制安装你的 istio 网格系统。至于可用的配置项,可以在 values.yaml 文件内找到, 此文件位于 istio 发行包的 manifests/charts 目录中。


升级 istio

istio 不支持 跨版本升级。仅支持从 1.8 版本升级到 1.9 版本。如果使用的是旧版本,请先升级到 1.8 版本。

  • 备份定制安装配置文件:

在集群中升级 istio 之前,建议备份定制安装配置文件,以备不时之需。

kubectl get crds | grep 'istio.io' | cut -f1-1 -d "." | \
  xargs -n1 -I{
    
    } sh -c "kubectl get --all-namespaces -o yaml {}; echo ---" > $HOME/ISTIO_RESOURCE_BACKUP.yaml

恢复定制的配置文件:

kubectl apply -f $HOME/ISTIO_RESOURCE_BACKUP.yaml
  • 使用 helm 升级:

使用 helm 的升级流程,在你的集群中就地升级 istio:

此升级路径仅支持 Istio 1.8+ 的版本。将用于覆盖默认配置的值文件(values file)或自定义选项添加到下面的命令中, 以在 Helm 升级过程中保留自定义配置。

升级 istio base chart:

helm upgrade istio-base manifests/charts/base -n istio-system

升级 istio discovery chart:

helm upgrade istiod manifests/charts/istio-control/istio-discovery \
  --set global.hub="docker.io/istio" \
  --set global.tag=<version_to_upgrade> \
  -n istio-system

如果集群中安装了 istio 的入站或出站网关 charts,则升级它们(可选项):

helm upgrade istio-ingress manifests/charts/gateways/istio-ingress \
  --set global.hub="docker.io/istio" \
  --set global.tag=<version_to_upgrade>\
  -n istio-system

helm upgrade istio-egress manifests/charts/gateways/istio-egress \
  --set global.hub="docker.io/istio" \
  --set global.tag=<version_to_upgrade> \
  -n istio-system

卸载 istio

卸载前面安装的 chart,以便卸载 istio 和它的各个组件。

  • 列出所有 istio chart:
helm ls -n istio-system
  • 删除 istio 的入/出站网关 chart (可选项):
helm uninstall -n istio-system istio-ingress

helm uninstall -n istio-system istio-egress
  • 删除 istio discovery chart:
helm uninstall -n istio-system istiod
  • 删除 istio base chart:

通过 helm 删除 chart 并不会级联删除它安装的定制资源定义(CRD)。

helm uninstall -n istio-system istio-base
  • 删除命名空间 istio-system:
kubectl delete namespace istio-system
  • 删除 istio 安装的 CRD (可选项):

永久删除 CRD, 会删除在集群中创建的所有 istio 资源。用下面命令永久删除集群中安装的 Istio CRD:

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

猜你喜欢

转载自blog.csdn.net/miss1181248983/article/details/115769691