istio 1.5 定制安装

在istio 1.5,已经不支持helm方式安装,因为helm已经弃用。helm部分的代码已不在更新。只支持istioctl的方式安装istio。

istioctl在安装包内,可通过下面的链接下载安装包。
https://istio.io/docs/setup/getting-started/#download

安装包解压后,直接将istioctl复制到执行目录就可以用了:
cp bin/istioctl /usr/local/bin/

以下命令可以默认配置安装istio:
istioctl manifest apply

如果想安装demo:
istioctl manifest apply --set profile=demo

但是默认配置有些部件是没有选中的。参考下图:


这样的话,就需要定制安装了。

我们可以直接使用命令行来定制安装:

istioctl manifest apply \
--set hub=dockerhub.azk8s.cn/istio \
--set values.prometheus.hub=dockerhub.azk8s.cn/prom \
--set values.gateways.istio-ingressgateway.telemetry_addon_gateways.prometheus_gateway.enabled=true \
--set addonComponents.grafana.enabled=true \
--set values.gateways.istio-ingressgateway.telemetry_addon_gateways.grafana_gateway.enabled=true \
--set addonComponents.kiali.enabled=true \
--set values.kiali.createDemoSecret=true \
--set values.gateways.istio-ingressgateway.telemetry_addon_gateways.kiali_gateway.enabled=true \
--set addonComponents.tracing.enabled=true \
--set values.gateways.istio-ingressgateway.telemetry_addon_gateways.tracing_gateway.enabled=true

这2行是配置镜像源:

--set hub=dockerhub.azk8s.cn/istio \
--set values.prometheus.hub=dockerhub.azk8s.cn/prom \

其它的都是启用相关功能及参数。

一个一个这样写参数很麻烦,我们可以写一个配置文件custom_profile.yaml:

apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
metadata:
  namespace: istio-system
  name: istio-operator
spec:
  #profile: /data/yaml/istio/istio-1.5.1/install/kubernetes/operator/profiles/default.yaml
  profile: default
  #install_package_path: /data/yaml/istio/istio-1.5.1/install/kubernetes/operator/charts
  #hub: dockerhub.azk8s.cn/istio
  components:
    ingressGateways:
      - name: istio-ingressgateway
        enabled: true
    egressGateways:
    - name: istio-egressgateway
      enabled: true
      k8s:
        resources:
          requests:
            cpu: 10m
            memory: 40Mi
  addonComponents:
    kiali:
      enabled: true
    grafana:
      enabled: true
    tracing:
      enabled: true
    prometheus:
      enabled: true
  values:
    global:
      proxy:
        autoInject: disabled
    gateways:
      istio-egressgateway:
        autoscaleEnabled: false
      istio-ingressgateway:
        autoscaleEnabled: false
        type: NodePort
    kiali:
      createDemoSecret: true
    prometheus:
     # hub: dockerhub.azk8s.cn/prom
    sidecarInjectorWebhook:
      enableNamespacesByDefault: false
      objectSelector:
        enabled: false
        autoInject: true

随便说下:我测试下来,用azk8s.cn的镜像有问题。

再用下面的命令安装:

istioctl manifest apply -f profile.yaml

可以用以下命令查看生成的yaml配置:
istioctl manifest generate -f custom_profile.yaml

下面的命令可以删除istio:
istioctl manifest generate -f custom_profile.yaml | kubectl delete -f -

参考:
https://istio.io/docs/setup/install/istioctl/