Tye是微軟開源的一款開發人員工具, 能夠用於簡化微服務以及分散式應用程式的開發、測試以及部署過程。
Tye 的首要目標是簡化微服務的開發,具體方式包括僅用一行命令執行多項服務、在容器中使用依賴專案,以及使用簡單的方法探索其他服務的地址。
安裝tye
首先我們安裝tye,使用dotnet cli命令。
dotnet tool install -g Microsoft.Tye --version "0.11.0-alpha.22111.1"
安裝完後即可使用tye命令
配置tye
首先我們使用tye init命令初始化tye.yaml配置檔案
結構大致入下:
name: funshow
services:
- name:
project:
- name:
project:
我們需要在配置檔案中新增我們的服務,包括繫結埠,環境變數等。
這裡完整的配置檔案如下:
name: FunShow
services:
- name: auth-server
project: apps/auth-server/src/FunShow.AuthServer/FunShow.AuthServer.csproj
bindings:
- protocol: https
port: 44322
env:
- Kestrel__Certificates__Default__Path=../../../../etc/dev-cert/localhost.pfx
- Kestrel__Certificates__Default__Password=e8202f07-66e5-4619-be07-72ba76fde97f
- name: administration-service
project: services/administration/src/FunShow.AdministrationService.HttpApi.Host/FunShow.AdministrationService.HttpApi.Host.csproj
bindings:
- protocol: https
port: 44367
env:
- Kestrel__Certificates__Default__Path=../../../../etc/dev-cert/localhost.pfx
- Kestrel__Certificates__Default__Password=e8202f07-66e5-4619-be07-72ba76fde97f
- name: identity-service
project: services/identity/src/FunShow.IdentityService.HttpApi.Host/FunShow.IdentityService.HttpApi.Host.csproj
bindings:
- protocol: https
port: 44388
env:
- Kestrel__Certificates__Default__Path=../../../../etc/dev-cert/localhost.pfx
- Kestrel__Certificates__Default__Password=e8202f07-66e5-4619-be07-72ba76fde97f
- name: logging-service
project: services/logging/src/FunShow.LoggingService.HttpApi.Host/FunShow.LoggingService.HttpApi.Host.csproj
bindings:
- protocol: https
port: 45124
env:
- Kestrel__Certificates__Default__Path=../../../../etc/dev-cert/localhost.pfx
- Kestrel__Certificates__Default__Password=e8202f07-66e5-4619-be07-72ba76fde97f
- name: web-gateway
project: gateways/web/src/FunShow.WebGateway/FunShow.WebGateway.csproj
bindings:
- protocol: https
port: 44325
env:
- Kestrel__Certificates__Default__Path=../../../../etc/dev-cert/localhost.pfx
- Kestrel__Certificates__Default__Password=e8202f07-66e5-4619-be07-72ba76fde97f
bindings表示我們繫結https以及埠號。
env裡面配置了我們的本地開發HTTPS證書。
建立本地證書
上面配置裡面我們有載入本地證書,那麼怎麼建立證書呢,在tye倉庫中也有說明
https://github.com/dotnet/tye/blob/main/docs/tutorials/hello-tye/00_run_locally.md#generate-the-certificate
倉庫中是在linux環境,但是在windows環境中localhost.conf是一樣的
[req]
default_bits = 2048
default_keyfile = localhost.key
distinguished_name = req_distinguished_name
req_extensions = req_ext
x509_extensions = v3_ca
[req_distinguished_name]
commonName = Common Name (e.g. server FQDN or YOUR name)
commonName_default = localhost
commonName_max = 64
[req_ext]
subjectAltName = @alt_names
[v3_ca]
subjectAltName = @alt_names
basicConstraints = critical, CA:false
keyUsage = keyCertSign, cRLSign, digitalSignature,keyEncipherment
[alt_names]
DNS.1 = localhost
DNS.2 = 127.0.0.1
建立etc/dev-cert目錄,在目錄下新增localhost.conf檔案,內容如上。
然後執行dotnet dev-certs命令
dotnet dev-certs https -v -ep localhost.pfx -p e8202f07-66e5-4619-be07-72ba76fde97f -t
使用tye執行微服務
在目錄下面執行tye執行命令
tye run --watch
效果如下:
當然執行服務前我們需要把我們的基礎服務都啟動,如資料庫,訊息佇列,redis等。
在tye dashboard可以檢視服務的日誌以及Metrics資訊
下面是服務啟動頁面。
閘道器服務
認證服務
到這我們後端功能就基本完成啦