題記:上篇Dapr系列文章簡要介紹了Dapr,這篇來談一下開發和運行環境配置
本機開發環境配置
安裝Docker
為了方便進行Dapr開發,最好(其實不一定必須)首先在本機(開發機器)上安裝Docker。安裝方式可以參考Docker的官方文檔:https://docs.docker.com/install/。
如果你是Windows平台,那么需要選擇Linux容器模式。對於我這樣的Windows 10用戶而言,個人建議最好的方式就是把Windows 10升級到2004,並啟用WSL2,然后啟用Docker Desktop WSL 2 backend[1]。這種方式可以獲得很好的用戶體驗和性能。
安裝CLI
通過如下腳本在不同平台安裝最新的CLI(Dapr命令行工具):
- Windows:
powershell -Command "iwr -useb https://raw.githubusercontent.com/dapr/cli/master/install/install.ps1 | iex"
默認會安裝到 c:\dapr
目錄
- Linux:
wget -q https://raw.githubusercontent.com/dapr/cli/master/install/install.sh -O - | /bin/bash
默認會安裝到 /usr/local/bin
目錄
- MacOS
curl -fsSL https://raw.githubusercontent.com/dapr/cli/master/install/install.sh | /bin/bash
默認會安裝到 /usr/local/bin
目錄
或者通過Homebrew來安裝:brew install dapr/tap/dapr-cli
如果你想手動安裝CLI,比如希望安裝不同版本或者安裝到不同目錄。那么可以從這里(https://github.com/dapr/cli/releases)直接下載平台對應的二進制文件並解壓到適合的地方,並在PATH中注冊這個目錄。
安裝Runtime
在本機安裝Dapr運行時分為兩種模式,一種是完整模式,一種是簡易模式:
- 完整模式:需要Docker環境,運行
dapr init
,會自動下載Dapr的運行時daprd
,並在Docker中啟動3個容器:- dapr_placement:Image為“daprio/dapr”,用於Dapr的Actor應用的注冊
- dapr_zipkin:Image為“openzipkin/zipkin”,用於分布式跟蹤的處理
- dapr_redis:Image為“redis”,用於狀態存儲和發布訂閱處理
- 簡易模式:不需要Docker環境,運行
dapr init --slim
,同樣會自動下載Dapr的運行時,並下載placement服務的二進制文件。
兩種模式下,有些配置也有所不同:
- 完整模式:會在Linux/MacOS的
$HOME/.dapr/components
目錄或Windows的%USERPROFILE%\.dapr\components
目錄下面創建3個默認組件配置文件:pubsub.yaml
使用redis容器作為發布訂閱組件、statestore.yaml
使用redis容器作為狀態存儲組件和zipkin.yaml
把分布式跟蹤的信息導出到zipkin容器;並添加Linux/MacOS的$HOME/.dapr/config.yaml
或Windows的%USERPROFILE%\.dapr\config.yaml
的默認配置文件,重點配置了分布式跟蹤的采樣率為1。 - 簡易模式:雖然會創建默認
components
目錄,但是不會創建默認組件配置文件。后續運行的時候,你需要自行創建默認組件配置文件或者指定服務的自定義組件配置文件。
容器開發環境配置
如果不想在本機安裝Dapr的CLI和Runtime,還可以利用Visual Studio Code Remote - Containers[2]的強大功能來實現開發環境的容器化。
Dapr為各種支持的開發語言默認提供了開發容器,方便你把任何項目轉換為Dapr應用。
大致步驟如下:
- 創建項目,(可選)引用對應語言的Dapr SDK
- 在VS Code中打開項目的工作區(Workspace)
- 在命令面板中輸入“Remote-Containers: Add Development Container Configuration Files...”
- 在選擇開發容器的時候,輸入“dapr”來進行查找,選擇對應的語言版本,比如“Dapr with C#”
- VS Code會自動給你的項目添加相關的Dockerfile和其他配置文件(比如“.devcontainer”文件夾)
- VS Code檢測到.devcontainer文件夾后,會提示你是否要使用容器模式打開
- 通過容器模式打開后,會自動構建項目工作區的容器鏡像,同時還會額外啟動用於容器開發的placement和zipkin容器實例(名稱為:dapr_placement_dapr-dev-container和dapr_zipkin_dapr-dev-container)
開發容器如下圖所示:
使用這種開發容器帶來的好處就是:整個Dapr開發的依賴環境可以通過Dockerfile來自動配置完成。
測試與生產環境配置
雖然Dapr可以運行到任意托管環境,不過目前最自然的選擇還是發布到 Kubernetes 集群當中。
首先,你需要配置好一個Kubernetes集群,建議使用Azure Kubernetes Service(AKS),基本可以一鍵創建好集群[3]。
在做好kubectl和Kubernetes集群的連接之后,就可以開始安裝Dapr了。
如果是配置測試環境,那么只需要執行如下命令就可以完成:
dapr init -k
如果要配置生產環境,那么建議使用helm3來進行安裝:
helm repo add dapr https://daprio.azurecr.io/helm/v1/repo
helm repo update
kubectl create namespace dapr-system
helm install dapr dapr/dapr --namespace dapr-system
Dapr安裝到Kubernetes集群之后,會啟動如下Pod:
- dapr-operator: 用來管理Dapr組件的更新和Dapr的kubernetes服務端點(比如狀態存儲、發布訂閱等)
- dapr-sidecar-injector: 用來把Dapr運行時注入到被標記了的應用Pod里面(即把Dapr運行時作為sidecar容器注入到Pod當中)
- dapr-placement: 管理Dapr的Actor應用注冊
- dapr-sentry: 管理服務之間的mTLS,並作為一個證書CA
總結
至此,Dapr的開發、測試和生產環境就配置完成了,接下來就是進入到開發階段了。
當然,如果你需要卸載Dapr環境的話,只需要運行如下命令:
dapr uninstall //卸載本機開發環境
dapr uninstall --all //卸載本機開發環境包括Redis和Zipkin容器實例
dapr uninstall --kubernetes //卸載Kubernetes中的測試環境
helm uninstall dapr -n dapr-system //卸載Kubernetes中的生產環境
參考資料
[1] Docker Desktop WSL 2 backend: https://docs.docker.com/docker-for-windows/wsl/[2] Visual Studio Code Remote - Containers: https://code.visualstudio.com/docs/remote/containers
[3] Quickstart: Deploy an Azure Kubernetes Service cluster using the Azure CLI: https://docs.microsoft.com/en-us/azure/aks/kubernetes-walkthrough