• 使用 Istioctl 安装
    • 先决条件
    • 使用默认配置文件安装 Istio
    • 安装其他配置文件
    • 显示可用配置文件的列表
    • 显示配置文件的配置
    • 显示配置文件中的差异
    • 安装前生成清单
    • 显示清单差异
    • 验证安装成功
    • 定制配置
      • 识别 Istio 功能或组件
      • 配置功能或组件设置
      • 自定义 Kubernetes 设置
      • 使用 Helm API 自定义 Istio 设置
    • 卸载 Istio
    • 相关内容

    使用 Istioctl 安装

    请按照本指南安装和配置 Istio 网格,以进行深入评估或用于生产。

    本指南使用可以高度自定义 Istio 控制平面和数据平面的 istioctl 命令行工具。该命令行工具具有用户输入校验,可以防止错误的安装和自定义选项。

    使用这些说明,您可以选择 Istio 的任何内置组件配置文件 然后根据您的特定需求进一步自定义配置。

    先决条件

    开始之前,请检查以下先决条件:

    • 下载 Istio 发行版本。
    • 执行任何必要的 特定于平台的设置。
    • 检查 Pods 和 Services 的要求。

    使用默认配置文件安装 Istio

    最简单的选择是安装 default Istio 配置文件 使用以下命令:

    1. $ istioctl manifest apply

    此命令在您定义的集群上安装 default 配置文件 Kubernetes 配置。默认配置文件是一个很好的开始,用于建立生产环境,这与较大的 demo 配置文件不同,用于评估广泛的 Istio 功能。

    安装其他配置文件

    可以通过在命令行上设置配置文件名称安装其他 Istio 配置文件到群集中。例如,可以使用以下命令,安装 demo 配置文件:

    1. $ istioctl manifest apply --set profile=demo

    显示可用配置文件的列表

    您可以使用以下 istioctl 命令来列出 Istio 配置文件名称:

    1. $ istioctl profile list
    2. minimal
    3. demo
    4. sds
    5. default

    显示配置文件的配置

    您可以查看配置文件的配置设置。 例如,通过以下命令查看 default 配置文件的设置:

    1. $ istioctl profile dump
    2. autoInjection:
    3. components:
    4. injector:
    5. enabled: true
    6. k8s:
    7. replicaCount: 1
    8. enabled: true
    9. configManagement:
    10. components:
    11. galley:
    12. enabled: true
    13. k8s:
    14. replicaCount: 1
    15. resources:
    16. requests:
    17. cpu: 100m
    18. enabled: true
    19. defaultNamespace: istio-system
    20. gateways:
    21. components:
    22. egressGateway:
    23. enabled: false
    24. k8s:
    25. hpaSpec:
    26. maxReplicas: 5
    27. metrics:
    28. - resource:
    29. name: cpu
    30. targetAverageUtilization: 80
    31. type: Resource
    32. minReplicas: 1
    33. ...

    要查看整个配置的子集,可以使用 —config-path 标志,该标志仅选择部分给定路径下的配置:

    1. $ istioctl profile dump --config-path trafficManagement.components.pilot
    2. enabled: true
    3. k8s:
    4. env:
    5. - name: POD_NAME
    6. valueFrom:
    7. fieldRef:
    8. apiVersion: v1
    9. fieldPath: metadata.name
    10. - name: POD_NAMESPACE
    11. valueFrom:
    12. fieldRef:
    13. apiVersion: v1
    14. fieldPath: metadata.namespace
    15. - name: GODEBUG
    16. value: gctrace=1
    17. - name: PILOT_TRACE_SAMPLING
    18. value: "1"
    19. - name: CONFIG_NAMESPACE
    20. value: istio-config
    21. hpaSpec:
    22. maxReplicas: 5
    23. metrics:
    24. - resource:
    25. name: cpu
    26. targetAverageUtilization: 80
    27. type: Resource
    28. minReplicas: 1
    29. scaleTargetRef:
    30. apiVersion: apps/v1
    31. kind: Deployment
    32. name: istio-pilot
    33. readinessProbe:
    34. httpGet:
    35. path: /ready
    36. port: 8080
    37. initialDelaySeconds: 5
    38. periodSeconds: 30
    39. timeoutSeconds: 5
    40. resources:
    41. requests:
    42. cpu: 500m
    43. memory: 2048Mi

    显示配置文件中的差异

    profile diff 子命令可用于显示配置文件之间的差异,在将更改应用于集群之前,这对于检查自定义的效果很有用。

    您可以使用以下命令显示默认配置文件和演示配置文件之间的差异:

    1. $ istioctl profile dump default > 1.yaml
    2. $ istioctl profile dump demo > 2.yaml
    3. $ istioctl profile diff 1.yaml 2.yaml

    安装前生成清单

    您可以在安装 Istio 之前使用 manifest generate 子命令生成清单,而不是 manifest apply。例如,使用以下命令为 default 配置文件生成清单:

    1. $ istioctl manifest generate > $HOME/generated-manifest.yaml

    根据需要检查清单,然后使用以下命令应用清单:

    1. $ kubectl apply -f $HOME/generated-manifest.yaml

    由于集群中的资源不可用,此命令可能显示暂时错误。

    显示清单差异

    您可以使用以下命令显示默认配置文件和自定义安装之间生成的清单中的差异:

    1. $ istioctl manifest generate > 1.yaml
    2. $ istioctl manifest generate -f samples/pilot-k8s.yaml > 2.yaml
    3. $ istioctl manifest diff 1.yam1 2.yaml

    验证安装成功

    您可以使用 verify-install 命令检查 Istio 安装是否成功,它将集群上的安装与您指定的清单进行比较。

    如果未在部署之前生成清单,请运行以下命令以现在生成它:

    1. $ istioctl manifest generate <your original installation options> > $HOME/generated-manifest.yaml

    然后运行以下 verify-install 命令以查看安装是否成功:

    1. $ istioctl verify-install -f $HOME/generated-manifest.yaml

    定制配置

    除了安装 Istio 的任何内置组件 配置文件,istioctl manifest 提供了用于自定义配置的完整 API。

    • IstioControlPlane API可以使用命令上的 —set 选项分别设置此 API 中的配置参数。 例如,要在默认配置文件中禁用遥测功能,请使用以下命令:
    1. $ istioctl manifest apply --set telemetry.enabled=false

    或者,可以使用 istioctl-f 选项来指定具有完整配置的YAML文件:

    1. $ istioctl manifest apply -f samples/pilot-k8s.yaml

    识别 Istio 功能或组件

    IstioControlPlane API 按功能对控制平面组件进行分组,如下表所示:

    功能组件
    BaseCRDs
    Traffic ManagementPilot
    PolicyPolicy
    TelemetryTelemetry
    SecurityCitadel
    SecurityNode agent
    SecurityCert manager
    Configuration managementGalley
    GatewaysIngress gateway
    GatewaysEgress gateway
    AutoInjectionSidecar injector

    除了核心的 Istio 组件之外,还提供了第三方附加功能和组件:

    功能组件
    TelemetryPrometheus
    TelemetryPrometheus Operator
    TelemetryGrafana
    TelemetryKiali
    TelemetryTracing
    ThirdPartyCNI

    可以启用或禁用功能,这可以启用或禁用作为功能一部分的所有组件。可以通过组件,功能部件或全局设置组件安装到的名字空间。

    配置功能或组件设置

    从上表中识别功能部件或组件的名称后,可以使用 API 设置值使用 —set 标志,或创建一个覆盖文件并使用 —filename 标志。—set 标志自定义一些参数的效果很好。覆盖文件旨在进行更广泛的自定义,或者跟踪配置更改。

    最简单的自定义是从配置配置文件默认值打开或关闭功能或组件。

    要在默认配置配置文件中禁用遥测功能,请使用以下命令:

    1. $ istioctl manifest apply --set telemetry.enabled=false

    或者,您可以使用配置覆盖文件禁用遥测功能:

    • 创建一个文件 telemetry_off.yaml 文件并且写入以下内容:
    1. apiVersion: install.istio.io/v1alpha2
    2. kind: IstioControlPlane
    3. spec:
    4. telemetry:
    5. enabled: false
    • telemetry_off.yaml 覆盖文件与 manifest apply 命令一起使用:
    1. $ istioctl manifest apply -f telemetry_off.yaml

    您还可以使用这种方法来设置组件级配置,例如启用节点代理:

    1. $ istioctl manifest apply --set security.components.nodeAgent.enabled=true

    另一个定制是为功能部件和组件选择不同的命名空间。以下是一个定制命名空间的例子:

    1. apiVersion: install.istio.io/v1alpha2
    2. kind: IstioControlPlane
    3. spec:
    4. defaultNamespace: istio-system
    5. security:
    6. namespace: istio-security
    7. components:
    8. citadel:
    9. namespace: istio-citadel

    安装此文件将应用默认配置文件,并将组件安装到以下命名空间中:

    • Citadel 组件 将被安装到 istio-citadel 命名空间
    • 所有其他安全相关的组件将被安装到 istio-security 命名空间
    • 剩余的 Istio 组件安装到 istio-system 命名空间

    自定义 Kubernetes 设置

    IstioControlPlane API 允许以一致的方式自定义每个组件的 Kubernetes 设置。

    每一个组件都有一个允许修改配置的 KubernetesResourceSpec。使用此列表来标识要自定义的设置:

    • Resources
    • Readiness probes
    • Replica count
    • HorizontalPodAutoscaler
    • PodDisruptionBudget
    • Pod annotations
    • Service annotations
    • ImagePullPolicy
    • Priority class name
    • Node selector
    • Affinity and anti-affinity所有这些 Kubernetes 设置都使用 Kubernetes API 定义,因此 Kubernetes文档 可以用作参考。

    以下示例覆盖文件可调整 TrafficManagement 功能的资源和 pod 的自动水平缩放的 Pilot 设置:

    1. apiVersion: install.istio.io/v1alpha2
    2. kind: IstioControlPlane
    3. spec:
    4. trafficManagement:
    5. components:
    6. pilot:
    7. k8s:
    8. resources:
    9. requests:
    10. cpu: 1000m # override from default 500m
    11. memory: 4096Mi # ... default 2048Mi
    12. hpaSpec:
    13. maxReplicas: 10 # ... default 5
    14. minReplicas: 2 # ... default 1

    使用 manifest apply 将修改后的设置应用于集群:

    Zip

    1. $ istioctl manifest apply -f @samples/pilot-k8s.yaml@

    使用 Helm API 自定义 Istio 设置

    IstioControlPlane API 使用 values 字段直接调用 Helm API 的接口对于字段进行设值。

    下面的 YAML 文件可以通过 Helm API 配置全局和 Pilot 配置:

    1. apiVersion: install.istio.io/v1alpha2
    2. kind: IstioControlPlane
    3. spec:
    4. trafficManagement:
    5. components:
    6. pilot:
    7. values:
    8. traceSampling: 0.1 # override from 1.0
    9. # global Helm settings
    10. values:
    11. monitoringPort: 15050

    一些参数将在 Helm 和 IstioControlPlane API 中暂时存在,包括 Kubernetes 资源,命名空间和启用设置。 Istio 社区建议使用 IstioControlPlane API,因为它更专一,经过验证并遵循社区毕业流程。

    卸载 Istio

    可以使用以下命令来卸载 Istio:

    1. $ istioctl manifest generate <your original installation options> | kubectl delete -f -

    相关内容

    Installing with Istioctl

    Install and customize any Istio configuration profile for in-depth evaluation or production use.

    Helm Changes

    Details the Helm chart installation options differences between Istio 1.0 and Istio 1.1.

    Helm Changes

    Details the Helm chart installation options differences between Istio 1.1 and Istio 1.2.

    Helm Changes

    Details the Helm chart installation options differences between Istio 1.2 and Istio 1.3.

    Helm Changes

    Details the Helm chart installation options differences between Istio 1.3 and Istio 1.4.

    Installation Options

    Describes the options available when installing Istio using the included Helm chart.