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/


你可能還喜歡

點擊下方圖片即可閱讀

分享一款顏值爆表的 Kubernetes Dashboard

雲原生是一種信仰 ????

碼關注公衆號

後臺回覆◉圖譜◉領取史上最強 Kubernetes 知識圖譜

點擊 "閱讀原文" 獲取更好的閱讀體驗!

❤️給個「在看」,是對我最大的支持❤️
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章