diff --git a/Directory.Packages.props b/Directory.Packages.props
index f46c2486f76a660a9e5b0aa5c801443bd190bc74..ebc6a02e0b94883d7f75b4969e5d7ab98ab95f67 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -66,7 +66,7 @@
-
+
@@ -126,8 +126,8 @@
-
-
+
+
diff --git a/build/DaprTool.Solution.AppHost/aspirate-output.zip b/build/DaprTool.Solution.AppHost/aspirate-output.zip
new file mode 100644
index 0000000000000000000000000000000000000000..849721a8cd28e48a00b73880df4bd88b153bb0e9
Binary files /dev/null and b/build/DaprTool.Solution.AppHost/aspirate-output.zip differ
diff --git a/build/DaprTool.Solution.AppHost/aspirate-output/admin/deployment.yaml b/build/DaprTool.Solution.AppHost/aspirate-output/admin/deployment.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..57477e8cfd8878bf9f5b9b00f441623e14b9dedb
--- /dev/null
+++ b/build/DaprTool.Solution.AppHost/aspirate-output/admin/deployment.yaml
@@ -0,0 +1,41 @@
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: admin
+ labels:
+ app: admin
+ annotations:
+ dapr.io/enabled: 'true'
+ dapr.io/config: tracing
+ dapr.io/app-id: admin
+ dapr.io/enable-api-logging: 'true'
+spec:
+ minReadySeconds: 60
+ replicas: 1
+ selector:
+ matchLabels:
+ app: admin
+ strategy:
+ type: Recreate
+ template:
+ metadata:
+ labels:
+ app: admin
+ annotations:
+ dapr.io/enabled: 'true'
+ dapr.io/config: tracing
+ dapr.io/app-id: admin
+ dapr.io/enable-api-logging: 'true'
+ spec:
+ containers:
+ - name: admin
+ image: registry.cn-shenzhen.aliyuncs.com/huangshen/web-admin:latest
+ imagePullPolicy: IfNotPresent
+ ports:
+ - containerPort: 8080
+ - containerPort: 8443
+ envFrom:
+ - configMapRef:
+ name: admin-env
+ terminationGracePeriodSeconds: 180
\ No newline at end of file
diff --git a/build/DaprTool.Solution.AppHost/aspirate-output/admin/kustomization.yaml b/build/DaprTool.Solution.AppHost/aspirate-output/admin/kustomization.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..a99abeffd03e2b620e50f3d5711b4040a66216b8
--- /dev/null
+++ b/build/DaprTool.Solution.AppHost/aspirate-output/admin/kustomization.yaml
@@ -0,0 +1,16 @@
+resources:
+- deployment.yaml
+- service.yaml
+
+generatorOptions:
+ disableNameSuffixHash: true
+
+configMapGenerator:
+- name: admin-env
+ literals:
+ - OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EXCEPTION_LOG_ATTRIBUTES=true
+ - OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EVENT_LOG_ATTRIBUTES=true
+ - OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY=in_memory
+ - ASPNETCORE_FORWARDEDHEADERS_ENABLED=true
+ - ASPNETCORE_URLS=http://+:8080;
+
diff --git a/build/DaprTool.Solution.AppHost/aspirate-output/admin/service.yaml b/build/DaprTool.Solution.AppHost/aspirate-output/admin/service.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..2b8ba155d0ebe2292eb82e6d369bd0a16fed0902
--- /dev/null
+++ b/build/DaprTool.Solution.AppHost/aspirate-output/admin/service.yaml
@@ -0,0 +1,16 @@
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: admin
+spec:
+ type: ClusterIP
+ selector:
+ app: admin
+ ports:
+ - name: http
+ port: 51871
+ targetPort: 8080
+ - name: https
+ port: 8443
+ targetPort: 8443
diff --git a/build/DaprTool.Solution.AppHost/aspirate-output/auth-admin/deployment.yaml b/build/DaprTool.Solution.AppHost/aspirate-output/auth-admin/deployment.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..4984a37e46706fd4f455f61e20c81341d190f075
--- /dev/null
+++ b/build/DaprTool.Solution.AppHost/aspirate-output/auth-admin/deployment.yaml
@@ -0,0 +1,41 @@
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: auth-admin
+ labels:
+ app: auth-admin
+ annotations:
+ dapr.io/enabled: 'true'
+ dapr.io/config: tracing
+ dapr.io/app-id: auth-admin
+ dapr.io/enable-api-logging: 'true'
+spec:
+ minReadySeconds: 60
+ replicas: 1
+ selector:
+ matchLabels:
+ app: auth-admin
+ strategy:
+ type: Recreate
+ template:
+ metadata:
+ labels:
+ app: auth-admin
+ annotations:
+ dapr.io/enabled: 'true'
+ dapr.io/config: tracing
+ dapr.io/app-id: auth-admin
+ dapr.io/enable-api-logging: 'true'
+ spec:
+ containers:
+ - name: auth-admin
+ image: registry.cn-shenzhen.aliyuncs.com/huangshen/auth-admin:latest
+ imagePullPolicy: IfNotPresent
+ ports:
+ - containerPort: 8080
+ - containerPort: 8443
+ envFrom:
+ - configMapRef:
+ name: auth-admin-env
+ terminationGracePeriodSeconds: 180
\ No newline at end of file
diff --git a/build/DaprTool.Solution.AppHost/aspirate-output/auth-admin/kustomization.yaml b/build/DaprTool.Solution.AppHost/aspirate-output/auth-admin/kustomization.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..9d2b2b3c80b005bf31098b6ba709b566ed231427
--- /dev/null
+++ b/build/DaprTool.Solution.AppHost/aspirate-output/auth-admin/kustomization.yaml
@@ -0,0 +1,16 @@
+resources:
+- deployment.yaml
+- service.yaml
+
+generatorOptions:
+ disableNameSuffixHash: true
+
+configMapGenerator:
+- name: auth-admin-env
+ literals:
+ - OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EXCEPTION_LOG_ATTRIBUTES=true
+ - OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EVENT_LOG_ATTRIBUTES=true
+ - OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY=in_memory
+ - ASPNETCORE_FORWARDEDHEADERS_ENABLED=true
+ - ASPNETCORE_URLS=http://+:8080;
+
diff --git a/build/DaprTool.Solution.AppHost/aspirate-output/auth-admin/service.yaml b/build/DaprTool.Solution.AppHost/aspirate-output/auth-admin/service.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..caa03a0d09a032cc80175fe6c28214487e72296f
--- /dev/null
+++ b/build/DaprTool.Solution.AppHost/aspirate-output/auth-admin/service.yaml
@@ -0,0 +1,16 @@
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: auth-admin
+spec:
+ type: ClusterIP
+ selector:
+ app: auth-admin
+ ports:
+ - name: http
+ port: 53871
+ targetPort: 8080
+ - name: https
+ port: 8443
+ targetPort: 8443
diff --git a/build/DaprTool.Solution.AppHost/aspirate-output/auth-api/deployment.yaml b/build/DaprTool.Solution.AppHost/aspirate-output/auth-api/deployment.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..669d9fbfcb6795b8b91814b819443dfa579cc97a
--- /dev/null
+++ b/build/DaprTool.Solution.AppHost/aspirate-output/auth-api/deployment.yaml
@@ -0,0 +1,41 @@
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: auth-api
+ labels:
+ app: auth-api
+ annotations:
+ dapr.io/enabled: 'true'
+ dapr.io/config: tracing
+ dapr.io/app-id: auth-api
+ dapr.io/enable-api-logging: 'true'
+spec:
+ minReadySeconds: 60
+ replicas: 1
+ selector:
+ matchLabels:
+ app: auth-api
+ strategy:
+ type: Recreate
+ template:
+ metadata:
+ labels:
+ app: auth-api
+ annotations:
+ dapr.io/enabled: 'true'
+ dapr.io/config: tracing
+ dapr.io/app-id: auth-api
+ dapr.io/enable-api-logging: 'true'
+ spec:
+ containers:
+ - name: auth-api
+ image: registry.cn-shenzhen.aliyuncs.com/huangshen/auth-api:latest
+ imagePullPolicy: IfNotPresent
+ ports:
+ - containerPort: 8080
+ - containerPort: 8443
+ envFrom:
+ - configMapRef:
+ name: auth-api-env
+ terminationGracePeriodSeconds: 180
\ No newline at end of file
diff --git a/build/DaprTool.Solution.AppHost/aspirate-output/auth-api/kustomization.yaml b/build/DaprTool.Solution.AppHost/aspirate-output/auth-api/kustomization.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..90494ca1f632b911442c515efcae02eb0bada5e8
--- /dev/null
+++ b/build/DaprTool.Solution.AppHost/aspirate-output/auth-api/kustomization.yaml
@@ -0,0 +1,16 @@
+resources:
+- deployment.yaml
+- service.yaml
+
+generatorOptions:
+ disableNameSuffixHash: true
+
+configMapGenerator:
+- name: auth-api-env
+ literals:
+ - OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EXCEPTION_LOG_ATTRIBUTES=true
+ - OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EVENT_LOG_ATTRIBUTES=true
+ - OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY=in_memory
+ - ASPNETCORE_FORWARDEDHEADERS_ENABLED=true
+ - ASPNETCORE_URLS=http://+:8080;
+
diff --git a/build/DaprTool.Solution.AppHost/aspirate-output/auth-api/service.yaml b/build/DaprTool.Solution.AppHost/aspirate-output/auth-api/service.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..d6deea6141cdda3292a0de74b598b84ac56d5754
--- /dev/null
+++ b/build/DaprTool.Solution.AppHost/aspirate-output/auth-api/service.yaml
@@ -0,0 +1,16 @@
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: auth-api
+spec:
+ type: ClusterIP
+ selector:
+ app: auth-api
+ ports:
+ - name: http
+ port: 54871
+ targetPort: 8080
+ - name: https
+ port: 8443
+ targetPort: 8443
diff --git a/build/DaprTool.Solution.AppHost/aspirate-output/auth-sts/deployment.yaml b/build/DaprTool.Solution.AppHost/aspirate-output/auth-sts/deployment.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..dfb66859b95ba1b594d20586b8c78d5ad32a1792
--- /dev/null
+++ b/build/DaprTool.Solution.AppHost/aspirate-output/auth-sts/deployment.yaml
@@ -0,0 +1,41 @@
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: auth-sts
+ labels:
+ app: auth-sts
+ annotations:
+ dapr.io/enabled: 'true'
+ dapr.io/config: tracing
+ dapr.io/app-id: auth-sts
+ dapr.io/enable-api-logging: 'true'
+spec:
+ minReadySeconds: 60
+ replicas: 1
+ selector:
+ matchLabels:
+ app: auth-sts
+ strategy:
+ type: Recreate
+ template:
+ metadata:
+ labels:
+ app: auth-sts
+ annotations:
+ dapr.io/enabled: 'true'
+ dapr.io/config: tracing
+ dapr.io/app-id: auth-sts
+ dapr.io/enable-api-logging: 'true'
+ spec:
+ containers:
+ - name: auth-sts
+ image: registry.cn-shenzhen.aliyuncs.com/huangshen/auth-sts:latest
+ imagePullPolicy: IfNotPresent
+ ports:
+ - containerPort: 8080
+ - containerPort: 8443
+ envFrom:
+ - configMapRef:
+ name: auth-sts-env
+ terminationGracePeriodSeconds: 180
\ No newline at end of file
diff --git a/build/DaprTool.Solution.AppHost/aspirate-output/auth-sts/kustomization.yaml b/build/DaprTool.Solution.AppHost/aspirate-output/auth-sts/kustomization.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..156756d66151af2c89d92be5ee9925b9cfc9b1a3
--- /dev/null
+++ b/build/DaprTool.Solution.AppHost/aspirate-output/auth-sts/kustomization.yaml
@@ -0,0 +1,16 @@
+resources:
+- deployment.yaml
+- service.yaml
+
+generatorOptions:
+ disableNameSuffixHash: true
+
+configMapGenerator:
+- name: auth-sts-env
+ literals:
+ - OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EXCEPTION_LOG_ATTRIBUTES=true
+ - OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EVENT_LOG_ATTRIBUTES=true
+ - OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY=in_memory
+ - ASPNETCORE_FORWARDEDHEADERS_ENABLED=true
+ - ASPNETCORE_URLS=http://+:8080;
+
diff --git a/build/DaprTool.Solution.AppHost/aspirate-output/auth-sts/service.yaml b/build/DaprTool.Solution.AppHost/aspirate-output/auth-sts/service.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..32354faa2c2cc98864f8070116cb53561da297a8
--- /dev/null
+++ b/build/DaprTool.Solution.AppHost/aspirate-output/auth-sts/service.yaml
@@ -0,0 +1,16 @@
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: auth-sts
+spec:
+ type: ClusterIP
+ selector:
+ app: auth-sts
+ ports:
+ - name: http
+ port: 52871
+ targetPort: 8080
+ - name: https
+ port: 8443
+ targetPort: 8443
diff --git a/build/DaprTool.Solution.AppHost/aspirate-output/dashboard.yaml b/build/DaprTool.Solution.AppHost/aspirate-output/dashboard.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..604fb1afdd2e47658e6242ef88c5475ceedeba21
--- /dev/null
+++ b/build/DaprTool.Solution.AppHost/aspirate-output/dashboard.yaml
@@ -0,0 +1,64 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: aspire-dashboard
+ labels:
+ app: aspire-dashboard
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ app: aspire-dashboard
+ template:
+ metadata:
+ labels:
+ app: aspire-dashboard
+ spec:
+ terminationGracePeriodSeconds: 30
+ containers:
+ - name: aspire-dashboard
+ image: mcr.microsoft.com/dotnet/nightly/aspire-dashboard:8.0.0-preview.7
+ resources:
+ requests:
+ cpu: "500m"
+ memory: "512Mi"
+ limits:
+ memory: "512Mi"
+ ports:
+ - name: dashboard-ui
+ containerPort: 18888
+ - name: otlp
+ containerPort: 18889
+ env:
+ - name: DOTNET_DASHBOARD_UNSECURED_ALLOW_ANONYMOUS
+ value: "true"
+ livenessProbe:
+ httpGet:
+ path: /
+ port: 18888
+ initialDelaySeconds: 30
+ periodSeconds: 10
+ readinessProbe:
+ httpGet:
+ path: /
+ port: 18888
+ initialDelaySeconds: 30
+ periodSeconds: 10
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: aspire-dashboard
+spec:
+ selector:
+ app: aspire-dashboard
+ ports:
+ - name: dashboard-ui
+ protocol: TCP
+ port: 18888
+ targetPort: 18888
+ - name: otlp
+ protocol: TCP
+ port: 18889
+ targetPort: 18889
+ type: ClusterIP
\ No newline at end of file
diff --git a/build/DaprTool.Solution.AppHost/aspirate-output/kustomization.yaml b/build/DaprTool.Solution.AppHost/aspirate-output/kustomization.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..e6aa18e83e21c3e681f41227ba432d75ef6a3bf0
--- /dev/null
+++ b/build/DaprTool.Solution.AppHost/aspirate-output/kustomization.yaml
@@ -0,0 +1,16 @@
+namespace: dapr-playground
+
+resources:
+- admin
+- auth-sts
+- auth-admin
+- auth-api
+- order-api
+- proxy-server
+- namespace.yaml
+- dashboard.yaml
+
+generatorOptions:
+ disableNameSuffixHash: true
+
+
diff --git a/build/DaprTool.Solution.AppHost/aspirate-output/namespace.yaml b/build/DaprTool.Solution.AppHost/aspirate-output/namespace.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..cd0442df06789063e402a5968048ef504c4b075c
--- /dev/null
+++ b/build/DaprTool.Solution.AppHost/aspirate-output/namespace.yaml
@@ -0,0 +1,4 @@
+apiVersion: v1
+kind: Namespace
+metadata:
+ name: dapr-playground
\ No newline at end of file
diff --git a/build/DaprTool.Solution.AppHost/aspirate-output/order-api/deployment.yaml b/build/DaprTool.Solution.AppHost/aspirate-output/order-api/deployment.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..d5ea0db5de6ccc00dba4c414c58978538428db84
--- /dev/null
+++ b/build/DaprTool.Solution.AppHost/aspirate-output/order-api/deployment.yaml
@@ -0,0 +1,41 @@
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: order-api
+ labels:
+ app: order-api
+ annotations:
+ dapr.io/enabled: 'true'
+ dapr.io/config: tracing
+ dapr.io/app-id: order-api
+ dapr.io/enable-api-logging: 'true'
+spec:
+ minReadySeconds: 60
+ replicas: 1
+ selector:
+ matchLabels:
+ app: order-api
+ strategy:
+ type: Recreate
+ template:
+ metadata:
+ labels:
+ app: order-api
+ annotations:
+ dapr.io/enabled: 'true'
+ dapr.io/config: tracing
+ dapr.io/app-id: order-api
+ dapr.io/enable-api-logging: 'true'
+ spec:
+ containers:
+ - name: order-api
+ image: registry.cn-shenzhen.aliyuncs.com/huangshen/order-api:latest
+ imagePullPolicy: IfNotPresent
+ ports:
+ - containerPort: 8080
+ - containerPort: 8443
+ envFrom:
+ - configMapRef:
+ name: order-api-env
+ terminationGracePeriodSeconds: 180
\ No newline at end of file
diff --git a/build/DaprTool.Solution.AppHost/aspirate-output/order-api/kustomization.yaml b/build/DaprTool.Solution.AppHost/aspirate-output/order-api/kustomization.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..457dcf8507fe396f1e7a5f26675ac9a434632e8f
--- /dev/null
+++ b/build/DaprTool.Solution.AppHost/aspirate-output/order-api/kustomization.yaml
@@ -0,0 +1,16 @@
+resources:
+- deployment.yaml
+- service.yaml
+
+generatorOptions:
+ disableNameSuffixHash: true
+
+configMapGenerator:
+- name: order-api-env
+ literals:
+ - OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EXCEPTION_LOG_ATTRIBUTES=true
+ - OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EVENT_LOG_ATTRIBUTES=true
+ - OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY=in_memory
+ - ASPNETCORE_FORWARDEDHEADERS_ENABLED=true
+ - ASPNETCORE_URLS=http://+:8080;
+
diff --git a/build/DaprTool.Solution.AppHost/aspirate-output/order-api/service.yaml b/build/DaprTool.Solution.AppHost/aspirate-output/order-api/service.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..5d5aea31dcc37b171d7b1774413a4e2f5732f2f6
--- /dev/null
+++ b/build/DaprTool.Solution.AppHost/aspirate-output/order-api/service.yaml
@@ -0,0 +1,16 @@
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: order-api
+spec:
+ type: ClusterIP
+ selector:
+ app: order-api
+ ports:
+ - name: http
+ port: 31441
+ targetPort: 8080
+ - name: https
+ port: 8443
+ targetPort: 8443
diff --git a/build/DaprTool.Solution.AppHost/aspirate-output/proxy-server/deployment.yaml b/build/DaprTool.Solution.AppHost/aspirate-output/proxy-server/deployment.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..c7822b50f39d48984f2d6ba5603298eaf25ef0dd
--- /dev/null
+++ b/build/DaprTool.Solution.AppHost/aspirate-output/proxy-server/deployment.yaml
@@ -0,0 +1,31 @@
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: proxy-server
+ labels:
+ app: proxy-server
+spec:
+ minReadySeconds: 60
+ replicas: 1
+ selector:
+ matchLabels:
+ app: proxy-server
+ strategy:
+ type: Recreate
+ template:
+ metadata:
+ labels:
+ app: proxy-server
+ spec:
+ containers:
+ - name: proxy-server
+ image: registry.cn-shenzhen.aliyuncs.com/huangshen/proxy-server:latest
+ imagePullPolicy: IfNotPresent
+ ports:
+ - containerPort: 8080
+ - containerPort: 8443
+ envFrom:
+ - configMapRef:
+ name: proxy-server-env
+ terminationGracePeriodSeconds: 180
\ No newline at end of file
diff --git a/build/DaprTool.Solution.AppHost/aspirate-output/proxy-server/kustomization.yaml b/build/DaprTool.Solution.AppHost/aspirate-output/proxy-server/kustomization.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..a23dcc65f9c43e672de5b785a7434fca8f51cbb5
--- /dev/null
+++ b/build/DaprTool.Solution.AppHost/aspirate-output/proxy-server/kustomization.yaml
@@ -0,0 +1,21 @@
+resources:
+- deployment.yaml
+- service.yaml
+
+generatorOptions:
+ disableNameSuffixHash: true
+
+configMapGenerator:
+- name: proxy-server-env
+ literals:
+ - OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EXCEPTION_LOG_ATTRIBUTES=true
+ - OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EVENT_LOG_ATTRIBUTES=true
+ - OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY=in_memory
+ - ASPNETCORE_FORWARDEDHEADERS_ENABLED=true
+ - services__admin__http__0=http://admin:8080
+ - services__auth-admin__http__0=http://auth-admin:8080
+ - services__auth-sts__http__0=http://auth-sts:8080
+ - services__auth-api__http__0=http://auth-api:8080
+ - services__order-api__http__0=http://order-api:8080
+ - ASPNETCORE_URLS=http://+:8080;
+
diff --git a/build/DaprTool.Solution.AppHost/aspirate-output/proxy-server/service.yaml b/build/DaprTool.Solution.AppHost/aspirate-output/proxy-server/service.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..222329f04eaa456d706f1f59a4984610197453e5
--- /dev/null
+++ b/build/DaprTool.Solution.AppHost/aspirate-output/proxy-server/service.yaml
@@ -0,0 +1,16 @@
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: proxy-server
+spec:
+ type: ClusterIP
+ selector:
+ app: proxy-server
+ ports:
+ - name: http
+ port: 8080
+ targetPort: 8080
+ - name: https
+ port: 8443
+ targetPort: 8443
diff --git a/build/DaprTool.Solution.AppHost/aspirate-state.json b/build/DaprTool.Solution.AppHost/aspirate-state.json
new file mode 100644
index 0000000000000000000000000000000000000000..596ccb46c1c5946f7363b8282394d522190e077c
--- /dev/null
+++ b/build/DaprTool.Solution.AppHost/aspirate-state.json
@@ -0,0 +1,21 @@
+{
+ "projectPath": ".",
+ "outputPath": "aspirate-output",
+ "namespace": "dapr-playground",
+ "containerRegistry": "registry.cn-shenzhen.aliyuncs.com",
+ "containerImageTags": [
+ "latest"
+ ],
+ "containerBuilder": "docker",
+ "containerRepositoryPrefix": "huangshen",
+ "outputFormat": "kustomize",
+ "skipFinalKustomizeGeneration": false,
+ "privateRegistryEmail": "aspir8@aka.ms",
+ "useCustomNamespace": true,
+ "secrets": {
+ "salt": "IkrA7nfBQ7D\u002BCckn",
+ "hash": "zDNrZprNGlk91UFwKeYuvkbWnm9MuqzeHAckg6gyxkI=",
+ "secrets": {}
+ },
+ "processAllComponents": true
+}
\ No newline at end of file
diff --git a/build/DaprTool.Solution.AppHost/aspirate.json b/build/DaprTool.Solution.AppHost/aspirate.json
new file mode 100644
index 0000000000000000000000000000000000000000..2a1d7dc4c186b592d74108ec8a3151e64ec3613d
--- /dev/null
+++ b/build/DaprTool.Solution.AppHost/aspirate.json
@@ -0,0 +1,11 @@
+{
+ "TemplatePath": null,
+ "ContainerSettings": {
+ "Registry": "registry.cn-shenzhen.aliyuncs.com",
+ "RepositoryPrefix": "huangshen",
+ "Tags": [
+ "latest"
+ ],
+ "Builder": "docker"
+ }
+}
\ No newline at end of file
diff --git a/build/DaprTool.Solution.AppHost/manifest.json b/build/DaprTool.Solution.AppHost/manifest.json
new file mode 100644
index 0000000000000000000000000000000000000000..5ee701aedcf41622b2405101ba74c61d2d295fd7
--- /dev/null
+++ b/build/DaprTool.Solution.AppHost/manifest.json
@@ -0,0 +1,241 @@
+{
+ "resources": {
+ "admin": {
+ "type": "project.v0",
+ "path": "../../src/Web/WebAdmin/WebAdmin.csproj",
+ "env": {
+ "OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EXCEPTION_LOG_ATTRIBUTES": "true",
+ "OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EVENT_LOG_ATTRIBUTES": "true",
+ "OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY": "in_memory",
+ "ASPNETCORE_FORWARDEDHEADERS_ENABLED": "true"
+ },
+ "bindings": {
+ "http": {
+ "scheme": "http",
+ "protocol": "tcp",
+ "transport": "http"
+ },
+ "https": {
+ "scheme": "https",
+ "protocol": "tcp",
+ "transport": "http"
+ },
+ "http": {
+ "scheme": "http",
+ "protocol": "tcp",
+ "transport": "http",
+ "port": 51871
+ }
+ }
+ },
+ "admin-dapr": {
+ "type": "dapr.v0",
+ "dapr": {
+ "application": "admin",
+ "appId": "admin",
+ "daprHttpMaxRequestSize": 60,
+ "daprHttpPort": 12010,
+ "daprHttpReadBufferSize": 128,
+ "resourcesPath": [
+ "../../dapr/components"
+ ]
+ }
+ },
+ "auth-sts": {
+ "type": "project.v0",
+ "path": "../../src/IdentityServer4/src/Idsrv4.Admin.STS.Identity/Idsrv4.Admin.STS.Identity.csproj",
+ "env": {
+ "OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EXCEPTION_LOG_ATTRIBUTES": "true",
+ "OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EVENT_LOG_ATTRIBUTES": "true",
+ "OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY": "in_memory",
+ "ASPNETCORE_FORWARDEDHEADERS_ENABLED": "true"
+ },
+ "bindings": {
+ "http": {
+ "scheme": "http",
+ "protocol": "tcp",
+ "transport": "http"
+ },
+ "https": {
+ "scheme": "https",
+ "protocol": "tcp",
+ "transport": "http"
+ },
+ "http": {
+ "scheme": "http",
+ "protocol": "tcp",
+ "transport": "http",
+ "port": 52871
+ }
+ }
+ },
+ "auth-sts-dapr": {
+ "type": "dapr.v0",
+ "dapr": {
+ "application": "auth-sts",
+ "appId": "auth-sts",
+ "daprHttpMaxRequestSize": 60,
+ "daprHttpPort": 12020,
+ "daprHttpReadBufferSize": 128,
+ "resourcesPath": [
+ "../../dapr/components"
+ ]
+ }
+ },
+ "auth-admin": {
+ "type": "project.v0",
+ "path": "../../src/IdentityServer4/src/Idsrv4.Admin/Idsrv4.Admin.csproj",
+ "env": {
+ "OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EXCEPTION_LOG_ATTRIBUTES": "true",
+ "OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EVENT_LOG_ATTRIBUTES": "true",
+ "OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY": "in_memory",
+ "ASPNETCORE_FORWARDEDHEADERS_ENABLED": "true"
+ },
+ "bindings": {
+ "http": {
+ "scheme": "http",
+ "protocol": "tcp",
+ "transport": "http"
+ },
+ "https": {
+ "scheme": "https",
+ "protocol": "tcp",
+ "transport": "http"
+ },
+ "http": {
+ "scheme": "http",
+ "protocol": "tcp",
+ "transport": "http",
+ "port": 53871
+ }
+ }
+ },
+ "auth-admin-dapr": {
+ "type": "dapr.v0",
+ "dapr": {
+ "application": "auth-admin",
+ "appId": "auth-admin",
+ "daprHttpMaxRequestSize": 60,
+ "daprHttpPort": 12030,
+ "daprHttpReadBufferSize": 128,
+ "resourcesPath": [
+ "../../dapr/components"
+ ]
+ }
+ },
+ "auth-api": {
+ "type": "project.v0",
+ "path": "../../src/IdentityServer4/src/Idsrv4.Admin.Api/Idsrv4.Admin.Api.csproj",
+ "env": {
+ "OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EXCEPTION_LOG_ATTRIBUTES": "true",
+ "OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EVENT_LOG_ATTRIBUTES": "true",
+ "OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY": "in_memory",
+ "ASPNETCORE_FORWARDEDHEADERS_ENABLED": "true"
+ },
+ "bindings": {
+ "http": {
+ "scheme": "http",
+ "protocol": "tcp",
+ "transport": "http"
+ },
+ "https": {
+ "scheme": "https",
+ "protocol": "tcp",
+ "transport": "http"
+ },
+ "http": {
+ "scheme": "http",
+ "protocol": "tcp",
+ "transport": "http",
+ "port": 54871
+ }
+ }
+ },
+ "auth-api-dapr": {
+ "type": "dapr.v0",
+ "dapr": {
+ "application": "auth-api",
+ "appId": "auth-api",
+ "daprHttpMaxRequestSize": 60,
+ "daprHttpPort": 12040,
+ "daprHttpReadBufferSize": 128,
+ "resourcesPath": [
+ "../../dapr/components"
+ ]
+ }
+ },
+ "order-api": {
+ "type": "project.v0",
+ "path": "../../src/Services/Ordering/Presentation/Ordering.Api/Ordering.Api.csproj",
+ "env": {
+ "OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EXCEPTION_LOG_ATTRIBUTES": "true",
+ "OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EVENT_LOG_ATTRIBUTES": "true",
+ "OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY": "in_memory",
+ "ASPNETCORE_FORWARDEDHEADERS_ENABLED": "true"
+ },
+ "bindings": {
+ "http": {
+ "scheme": "http",
+ "protocol": "tcp",
+ "transport": "http"
+ },
+ "https": {
+ "scheme": "https",
+ "protocol": "tcp",
+ "transport": "http"
+ },
+ "http": {
+ "scheme": "http",
+ "protocol": "tcp",
+ "transport": "http",
+ "port": 31441
+ }
+ }
+ },
+ "order-api-dapr": {
+ "type": "dapr.v0",
+ "dapr": {
+ "application": "order-api",
+ "appId": "order-api",
+ "daprHttpMaxRequestSize": 60,
+ "daprHttpPort": 12050,
+ "daprHttpReadBufferSize": 128,
+ "resourcesPath": [
+ "../../dapr/components"
+ ]
+ }
+ },
+ "proxy-server": {
+ "type": "project.v0",
+ "path": "../../src/ProxyServer/ProxyServer.csproj",
+ "env": {
+ "OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EXCEPTION_LOG_ATTRIBUTES": "true",
+ "OTEL_DOTNET_EXPERIMENTAL_OTLP_EMIT_EVENT_LOG_ATTRIBUTES": "true",
+ "OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY": "in_memory",
+ "ASPNETCORE_FORWARDEDHEADERS_ENABLED": "true",
+ "services__admin__http__0": "{admin.bindings.http.url}",
+ "services__admin__https__0": "{admin.bindings.https.url}",
+ "services__auth-admin__http__0": "{auth-admin.bindings.http.url}",
+ "services__auth-admin__https__0": "{auth-admin.bindings.https.url}",
+ "services__auth-sts__http__0": "{auth-sts.bindings.http.url}",
+ "services__auth-sts__https__0": "{auth-sts.bindings.https.url}",
+ "services__auth-api__http__0": "{auth-api.bindings.http.url}",
+ "services__auth-api__https__0": "{auth-api.bindings.https.url}",
+ "services__order-api__http__0": "{order-api.bindings.http.url}",
+ "services__order-api__https__0": "{order-api.bindings.https.url}"
+ },
+ "bindings": {
+ "http": {
+ "scheme": "http",
+ "protocol": "tcp",
+ "transport": "http"
+ },
+ "https": {
+ "scheme": "https",
+ "protocol": "tcp",
+ "transport": "http"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/build/README.md b/build/README.md
index 01345940ce5313ef80add30d95ff88c215fd6d0c..e614f9a921f822aed2e9cb53fc07b961b7b576a5 100644
--- a/build/README.md
+++ b/build/README.md
@@ -10,10 +10,11 @@
## Quick Start
```
-dotnet run --publisher manifest --output-path manifest.json
-aspirate init
+# 初始化配置: 可以跳过这步,因为我运行过了,(可以删除掉,aspirate.json aspirate-state.json 再重新 init)
+aspirate init
+ # 构建项目并推送到 Registry 仓库(也可以是本地)
aspirate build
-# 默认生成 kubernetes
+# 默认生成 kubernetes yaml 清单 (上一步已经构建过了,可以添加参数 --skip-build 跳过构建)
aspirate generate
# 也可以生成 docker-compose 部署
# aspirate generate --output-format compose
diff --git a/src/IdentityServer4/src/Idsrv4.Admin.Api/Idsrv4.Admin.Api.csproj b/src/IdentityServer4/src/Idsrv4.Admin.Api/Idsrv4.Admin.Api.csproj
index 8f06e118852620a16e2621059851287d45a0f235..2efb2f1467df5990dd933221862f036a91c8a652 100644
--- a/src/IdentityServer4/src/Idsrv4.Admin.Api/Idsrv4.Admin.Api.csproj
+++ b/src/IdentityServer4/src/Idsrv4.Admin.Api/Idsrv4.Admin.Api.csproj
@@ -2,6 +2,9 @@
net8.0
1cc472a2-4e4b-48ce-846b-5219f71fc643
+ auth-api
+ registry.cn-shenzhen.aliyuncs.com
+ mcr.microsoft.com/dotnet/aspnet:8.0
diff --git a/src/IdentityServer4/src/Idsrv4.Admin.STS.Identity/Idsrv4.Admin.STS.Identity.csproj b/src/IdentityServer4/src/Idsrv4.Admin.STS.Identity/Idsrv4.Admin.STS.Identity.csproj
index 61b8c2725d091fbf2242486302a055d708958263..f88127ade2f039a0091a192e22b79ceef937c47b 100644
--- a/src/IdentityServer4/src/Idsrv4.Admin.STS.Identity/Idsrv4.Admin.STS.Identity.csproj
+++ b/src/IdentityServer4/src/Idsrv4.Admin.STS.Identity/Idsrv4.Admin.STS.Identity.csproj
@@ -3,6 +3,10 @@
net8.0
9c91d295-54c5-4d09-9bd6-fa56fb74011b
false
+ auth-sts
+ registry.cn-shenzhen.aliyuncs.com
+ mcr.microsoft.com/dotnet/aspnet:8.0
+ root
diff --git a/src/IdentityServer4/src/Idsrv4.Admin/Idsrv4.Admin.csproj b/src/IdentityServer4/src/Idsrv4.Admin/Idsrv4.Admin.csproj
index e1efb45864698673db3c896e0025dac9d3c8e3a5..589576c61929603e98cecaba78e36aef11fce534 100644
--- a/src/IdentityServer4/src/Idsrv4.Admin/Idsrv4.Admin.csproj
+++ b/src/IdentityServer4/src/Idsrv4.Admin/Idsrv4.Admin.csproj
@@ -4,6 +4,9 @@
8fe260ca-ef4c-4fa3-9364-029146f8d339
NU1803;NU1507;1701;1702;1591;8002;CS1573;NU1604;
false
+ auth-admin
+ registry.cn-shenzhen.aliyuncs.com
+ mcr.microsoft.com/dotnet/aspnet:8.0
diff --git a/src/ProxyServer/ProxyServer.csproj b/src/ProxyServer/ProxyServer.csproj
index 1050c6a4b4a1a2c9dc561f989dbdfe322910f6bb..728219948b4b9f409ede2eb9a67fd97dfc9496aa 100644
--- a/src/ProxyServer/ProxyServer.csproj
+++ b/src/ProxyServer/ProxyServer.csproj
@@ -1,5 +1,12 @@
-
+
+
+ proxy-server
+ registry.cn-shenzhen.aliyuncs.com
+ mcr.microsoft.com/dotnet/aspnet:8.0
+
+
+
diff --git a/src/Services/Ordering/Presentation/Ordering.Api/Ordering.Api.csproj b/src/Services/Ordering/Presentation/Ordering.Api/Ordering.Api.csproj
index a0edf6c27f447cc2e35109a22c63b13d73843044..879e1a1b8d884367be2c9172590006bf82976b39 100644
--- a/src/Services/Ordering/Presentation/Ordering.Api/Ordering.Api.csproj
+++ b/src/Services/Ordering/Presentation/Ordering.Api/Ordering.Api.csproj
@@ -2,7 +2,10 @@
db0f9eb4-ee32-47d3-8d93-f59a66d79da5
- false
+ false
+ order-api
+ registry.cn-shenzhen.aliyuncs.com
+ mcr.microsoft.com/dotnet/aspnet:8.0
diff --git a/src/Web/WebAdmin/WebAdmin.csproj b/src/Web/WebAdmin/WebAdmin.csproj
index 8e018bd295e703270b9a73c93198f1b85bf170b6..dbc7198a35d65eb33e887402fb8d778b85af9e10 100644
--- a/src/Web/WebAdmin/WebAdmin.csproj
+++ b/src/Web/WebAdmin/WebAdmin.csproj
@@ -1,6 +1,9 @@
false
+ web-admin
+ registry.cn-shenzhen.aliyuncs.com
+ mcr.microsoft.com/dotnet/aspnet:8.0