點擊 "閱讀原文" 可以獲得更好的閱讀體驗。
前言
本文主要是對上一篇文章 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.ingressGateways
的 overlays
列表下面加上這麼一段:
- 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 知識圖譜
點擊 "閱讀原文" 獲取更好的閱讀體驗!
❤️給個「在看」,是對我最大的支持❤️