昨天在 Kubernetes Summit 2020 主持了一場實戰工作坊,幫助大家體驗 Istio 強大的 Service Mesh 能力。今天在家抽空玩了一下原先由微軟主導的 Open Service Mesh (OSM),這套最近貢獻給 CNCF (雲端原生運算基金會),正式成為 CNCF 沙盒專案的成員之一,十分有發展潛力。本篇文章就帶大家試試這套 SMI 服務網格介面 (Service Mesh Interface) 實作。
前置條件 (Prerequisites)
本篇雖然文章主要採用 Windows 10 與 WSL 2 進行實作,但事實上你只要有 Docker Engine 與 Shell 環境就可以進行操作:
實作步驟
-
安裝各項建置工具 (make
)
sudo apt-get install build-essential -y
-
安裝 Go 建置環境
curl -sLO https://golang.org/dl/go1.15.2.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.15.2.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin
go version
-
安裝 kind 工具
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.9.0/kind-linux-amd64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind
-
下載 OSM CLI 工具
curl -sLO https://github.com/openservicemesh/osm/releases/download/v0.4.0/osm-v0.4.0-linux-amd64.tar.gz
tar zxvf osm-v0.4.0-linux-amd64.tar.gz --strip-components=1 -C /usr/local/bin/ linux-amd64/osm
-
下載 OSM 專案原始碼
git clone https://github.com/openservicemesh/osm.git
cd osm
-
建立 kind 叢集
預設透過以下命令建立的 kind 叢集名稱為 osm
,執行命令為 ./scripts/kind-with-registry.sh
,他會額外建立一個 Docker Registry 供 kind 叢集使用:
make kind-up
如果你想建立含有 Docker Registry 的 kind 叢集,可以參考 kind 網站的 Local Registry 文件。
建立完成後,你可以用 kind get clusters
查詢所有已建立的 kind 叢集名稱。
-
建立範例應用程式
先準備好 .env
環境變數檔 (Declare default environment variables in file)
cat .env.example > .env
請修改 .env
檔案的內容,特別將 export ENABLE_GRAFANA=true
環境變數啟用(請取消這行的註解)
正式建立 OSM 內建的 Demo 應用程式
make kind-demo
上述命令也會包含 make kind-up
動作,但如果你已經建立,他會自動跳過建立 kind 叢集的動作。
-
建立 Web UI 連線
預設該應用程式所有的 Service Type 都是以 ClusterIP
為主,並沒有對外連接的端點。因此你可以透過 kubectl port-forward
命令,快速建立本機網路可連接的端點。以下是 OSM 內建的命令,可一次開啟所有 Web UI 的連線。
相關連結:Use Port Forwarding to Access Applications in a Cluster
/scripts/port-forward-all.sh
-
刪除 kind 叢集
make kind-reset
相關連結