【01】Istio-1.17 部署

1.1 部署Istio控制平面

  • 部署方法
    • istioctl
      1. istio的专用管理工具,支持定制控制平面和数据平面
      2. 通过命令行的选项支持完整的IstioOperator API
      3. 命令行各选项可用于单独设置,以及接收包含IstioOperator自定义资源(CR)的yaml文件
    • Istio Operator
      1. Istio相关的自定义资源的专用控制器,负责自动维护由CR定义的资源对象
      2. 管理员根据需要定义相应的CR文件,提交至K8S的API Server后,可由Opweator完成相应的操作
    • helm
      1. 基于特定的Chart,亦可由Helm安装配置Istio
      2. 截至目前,该功能处于alpha阶段

1.2 Istio内置的部署profile

  • istio提供了内置配置文件(profille)用于快速部署

    • default: 默认的配置,适用于生产环境;
    • demo:会部署较多的组件,旨在演示istio的功能
    • minimal:类似于default profile,但仅部署控制平面组件;
    • remote:用于配置共享control plan的多集群环境;
    • empty: 不部署任何组件,通常帮助用户在自定义profile时生成基础配置信息;
    • perview: 包含预览性的profile,用于探索istio新功能,但不保证稳定性和安全性。
  • 配置档案

    • 各配置档案,事实上是IstioOperator API内置的CR格式的配置文件
  • 了解内置的配置档案

    • istioctl profile list
      
    • istioctl profile dump [PROFILE]
      
      # 例如,打印default档案的资源配置信息
      istioctl profile dump default
      
      # --config-path 选项可用于仅打印指定的配置段
      
    • istioctl profile diff PROFILE1 PROFILE2
      
  • 内置的各profile默认启用的组件会有所不同

    【01】Istio-1.17 部署_第1张图片

1.3 Istio Operator配置说明

  • IstioOperator API主要包括以下几个配置段

    • components:组件配置参数
    • hub:获取各组件镜像仓库,默认为"docker.io/istio"
    • meshConfig: 网格(数据平面)相关的配置参数
    • values:传递给各chart的值
  • IstioOperator API 中定义的组件

    • base
    • pilot
    • ingressGateway
    • egressGatewway
    • cni
    • istioRemote
  • 以上配置段中的各参数,均可在istioctl命令行中使用–set选项进行独立设置;例如,部署default配置档案启用debbug日志功能,使用如下命令:

    istioctl install --set-profile=default --set values.global.logging.level=debug
    

2.2.4 使用istioctl 快速部署Istio 1.17

  • 前提:准备好kubernetes集群

  • 下载程序

    参考官网:https://istio.io/latest/docs/setup/getting-started/

    • 下载istioctl及相关的安装文件和示例文件

      # cd /usr/local
      # curl -L https://istio.io/downloadIstio | sh -
      # ln -sv istio-1.17.1 istio
      
    • istio安装目录结构介绍

      bin/   #二进制程序文件
      manifests/profiles/   #内置的配置档案
      samples/addons/      # 部署各扩展组件的示例清单
      samples/bbookinfo/   #示例微服务项目ookinfo
      tools/  
      
    • 将istioctl二进制文件放置在系统PATH环境变量

      cp bin/istioctl /usr/local/bin/
      
  • 部署Istio系统

    • 基于demo profile进行部署测试

      # istioctl install --set profile=demo -y
      
      ## 生成部署时使用的资源清单
      # istioctl manifest generate --set profile=demo > /tmp/demo-manifest.yaml
      
      ## istioctl 还支持使用--set选项定制要使用的功能特性,例如:
      # istioctl install --set meshConfig.enableTracing=true
      
    • 验证相关Pod和Service已经成功部署

      # kubectl get pods -n istio-system
      # kubectl get svc -n istio-system
      
    • 校验部署结果

      istioctl vverify-install -f $HOME/demo-manifest.yaml
      
  • 启用Sidercar自动注入功能

    • 在网格应用运行的kubernetes namespace上,为namespace添加标签,激活Sidercar自动注入

      kubectl label namespace default istio-injection=enabled
      
  • 按需部署Addons

    kubectl apply -f samples/addons/[MANIFEST_FILLE]
    

1.4 定制Istio部署环境

  • 定制配置

    • IstioOperator API中的个配置参数,均可在istioctl命令行中使用–set进行独立设置;例如

      1. 部署时,为default配置档案启用debug日志功能,可使用如下命令:

        istioctl install --set profile=default --set values.global.logging.level=debug
        
      2. 部署时,为default配置档案启用egressgateway组件

        istioctl install --set profile=default --set components.egressGateways.enabled=true
        
  • 定制kubernetes设置

    • IstioOperator API支持以一致性的方式定义每一个组件kubernetes设置,每个组件都有一个kubernetesResourceSpec
    • 它支持修改许多配置参数:包括Resources、Readiness probes、Replica count、HPA、PDB、Pod annotations、Service annotations、ImagePullPolicy、Node selector、Service、Toleration、Strategy、Env及Pod security context等.
      【01】Istio-1.17 部署_第2张图片

1.5 卸载Istio

  • 使用istioctl 命令卸载Istio

    istioctl experimental uninstall
    
  • 卸载方法

    • 卸载指定的控制平面

      1. 卸载指定文件中定义的控制平面

        istioctl x uninstall -f <FILE>
        
      2. 卸载指定的Revision

        istioctl x uninstall --revision <NAME>
        
      3. 基于安装时的选项生成配置信息后kubelet删除

        istioctl manifest generate <your original installation options> | kubectl delete -f -
        
    • 清除集群上部署的所有控制平面

      istioctl x uninstall --purge
      
  • 提示:控制平面的名称空间默认不会删除,如果确认不在需要,自行删除。

你可能感兴趣的:(Istio,istio,云原生)