Dapr微服务应用开发系列1:环境配置
題記:上篇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-systemDapr安裝到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 # 卸載本機開發環境包括Redis和Zipkin容器實例 dapr uninstall --all # 卸載Kubernetes中的測試環境 dapr uninstall --kubernetes # 卸載Kubernetes中的生產環境 helm uninstall dapr -n dapr-system參考資料
[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
總結
以上是生活随笔為你收集整理的Dapr微服务应用开发系列1:环境配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用 Visual Studio 201
- 下一篇: 译 | Azure 应用服务中的程序崩溃