Istio 1.5 部署指南修正版


点击 "阅读原文" 可以获得更好的阅读体验。

前言

本文主要是对上一篇文章 Istio 1.5 部署指南 的修正和补充,由于微信公众号不能修改已经发布的文章,姑且再写一篇吧,本文会直接更新合并到博客中,公众号读者结合上一篇文章一起看吧,不过还是建议直接看博客(点击底部的阅读原文)。

主要有两处改动:

1. HostNetwork

为了暴露 Ingress Gateway,可以使用 HostNetwork 模式运行,上篇文章的方法是直接修改 Deployment,但这种方法还是不太优雅。经过我对  IstioOperator API 文档[1] 的研究,发现了一个更为优雅的方法,那就是直接修改资源对象 IstioOperator 的内容,在 components.ingressGateways 下面加上么一段:

        overlays:
        - apiVersion: apps/v1
          kind: Deployment
          name: istio-ingressgateway
          patches:
          - path: spec.template.spec
            value:
              hostNetwork: true
              dnsPolicy: ClusterFirstWithHostNet

具体含义我就不解释了,请看上篇文章。这里只对 IstioOperator 的语法做简单说明:

  • overlays 列表用来修改对应组件的各个资源对象的 manifest,这里修改的是组件 Ingress Gateway 的  Deployment

  • patches 列表里是实际要修改或添加的字段,我就不解释了,应该很好理解。

2. 只暴露必要端口

从安全的角度来考虑,我们不应该暴露那些不必要的端口,对于 Ingress Gateway 来说,只需要暴露 HTTP、HTTPS 和 metrics 端口就够了。方法和上面一样,直接在 components.ingressGatewaysoverlays 列表下面加上这么一段:

        - apiVersion: v1
          kind: Service
          name: istio-ingressgateway
          patches:
          - path: spec.ports
            value:
            - name: status-port
              port: 15020
              targetPort: 15020
            - name: http2
              port: 80
              targetPort: 80
            - name: https
              port: 443
              targetPort: 443

这个更简单,不用解释了,最终的 IstioOperator 清单文件如下:

apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
metadata:
  namespace: istio-system
  name: example-istiocontrolplane
spec:
  profile: demo
  components:
    cni:
      enabled: true
      namespace: kube-system
    ingressGateways:
    - enabled: true
      k8s:
        service:
          type: ClusterIP
        strategy:
          rollingUpdate:
            maxUnavailable: 100%
            maxSurge: 0%
        nodeSelector:
          kubernetes.io/hostname: sealos02
        overlays:
        - apiVersion: apps/v1
          kind: Deployment
          name: istio-ingressgateway
          patches:
          - path: spec.template.spec
            value:
              hostNetwork: true
              dnsPolicy: ClusterFirstWithHostNet
        - apiVersion: v1
          kind: Service
          name: istio-ingressgateway
          patches:
          - path: spec.ports
            value:
            - name: status-port
              port: 15020
              targetPort: 15020
            - name: http2
              port: 80
              targetPort: 80
            - name: https
              port: 443
              targetPort: 443
  values:
    cni:
      excludeNamespaces:
       - istio-system
       - kube-system
       - monitoring
      logLevel: info

脚注

[1]

IstioOperator API 文档: https://istio.io/docs/reference/config/istio.operator.v1alpha1/


你可能还喜欢

点击下方图片即可阅读

Istio 1.5 部署指南修正版_第1张图片

分享一款颜值爆表的 Kubernetes Dashboard

云原生是一种信仰 ????

码关注公众号

后台回复◉图谱◉领取史上最强 Kubernetes 知识图谱

点击 "阅读原文" 获取更好的阅读体验!

❤️给个「在看」,是对我最大的支持❤️

你可能感兴趣的:(Istio 1.5 部署指南修正版)