ABP微服務系列學習-使用Tye啟動微服務

2023-03-02 12:01:02

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

就會在目錄下面生成localhost.pfx證書檔案。

使用tye執行微服務

在目錄下面執行tye執行命令

tye run --watch

效果如下:


當然執行服務前我們需要把我們的基礎服務都啟動,如資料庫,訊息佇列,redis等。
在tye dashboard可以檢視服務的紀錄檔以及Metrics資訊



下面是服務啟動頁面。
閘道器服務



認證服務


到這我們後端功能就基本完成啦