昨天我們聊了 Kubernetes 中常見的對外通訊方法,今天來談談一個比較特別的 Service Type:ExternalName。這個類型雖然不是用來對外通訊的,但在某些場景下可是個好幫手。
首先,ExternalName 是什麼?簡單來說,它就是一個 CNAME 記錄。當你創建一個 ExternalName 類型的 Service 時,Kubernetes 不會給它分配 ClusterIP,而是直接在 DNS 中創建一個 CNAME 記錄,指向你指定的外部域名。
聽起來有點抽象?來個例子就懂了。假設你有個外部的資料庫服務,地址是 db.example.com
。你可以創建一個 ExternalName Service,讓集群內的應用通過 my-db.default.svc.cluster.local
來訪問這個外部資料庫。這樣一來,如果哪天資料庫地址變了,你只需要修改 Service 的配置,而不用去改應用的程式碼。
來看看怎麼創建一個 ExternalName Service:
apiVersion: v1
kind: Service
metadata:
name: my-db
spec:
type: ExternalName
externalName: db.example.com
就這麼簡單!
那 ExternalName 有什麼好處呢?
但也有些限制要注意:
ExternalName 雖然看起來簡單,但在某些場景下可是個神器。比如說,你正在把應用從本地遷移到雲端,可以先用 ExternalName 指向本地服務,等遷移完成後再改指向雲端服務,整個過程應用完全不用改動。
今天的ExternalName介紹就到這裡。各位,明天見!