文章目录
项目地址
- 教程作者:
- 教程地址:
- 代码仓库地址:
- 所用到的框架和插件:
dbt
airflow
一、微服务
1.1 分析User的Domian Verb和Nouns
-
根据用户行为分析用户需要的实体和查询条件
-
列出所有的实体
Customer
Order
Order Details
Product
Shopping Cart
Shopping Cart ltems
Supplier
User
Address
Brand
Category
- 根据动词设计关系图
二、运行docker和k8s
2.1 Docker
1. 编写dockerfile
- 编写好.net的dockerfile
# See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.
# 使用官方的 .NET 5 ASP.NET 基础镜像作为构建环境(base-env
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build-env
#设置容器中的工作目录为 /app。后续的所有命令都将在这个目录下运行。
WORKDIR /app
#将当前目录下的所有 .csproj 文件(通常是项目文件)复制到容器的工作目录中。
COPY *.csproj ./
#恢复项目的依赖项
RUN dotnet restore
#将整个项目的代码复制到容器中。
COPY . ./
#编译和打包应用程序代码,生成可以运行的 .NET 程序。输出的构建文件存储在 /app/out 目录中。
RUN dotnet publish -c Release -o out
#使用官方的 .NET 5 ASP.NET 基础运行时镜像作为生产环境(最终运行的容器)
FROM mcr.microsoft.com/dotnet/aspnet:5.0
#再次设置容器的工作目录为 /app。
WORKDIR /app
#从前面定义的 base-env 阶段复制 /app/out 文件夹的内容到当前工作目录。
COPY --from=build-env /app/out .
#设置容器的入口点为 dotnet 命令,启动 PlatformService.dll 程序。
ENTRYPOINT ["dotnet", "PlatformService.dll"]
2. 创建docker image
- pjj521/platformservice 是镜像名称
docker build -t pjj521/platformservice .
3. 运行docker使用指定端口
- 后面是镜像名称
docker run -p 8080:80 -d pjj521/platformservice
4. 查看当前运行的镜像
docker ps
5. 停止当前所有运行的docker
docker stop $(docker ps -q)
6. 删除不用的docker images
- 查看
docker images
- 删除
docker -rmi -f 镜像ID
7. 将本地的image上传到hub里
docker push pjj521/platformservice1
2.2 K8S
1. 创建k8s的部署
- 创建部署的文件
platform-depl.yaml
apiVersion: apps/v1 # 自定义apps/v1 代表使用 Deployment 资源
kind: Deployment # 自定义资源类型,表示这是一个 Deployment 对象
metadata:
name: platform-deployment # Deployment 的名称,这个名称在 Kubernetes 中唯一
spec:
replicas: 1 # 副本数,表示部署一个 Pod 副本,Kubernetes 会确保有一个 Pod 在运行
selector: #选择器,用于查找属于这个 Deployment 的 Pods
matchLabels:
app: platformservice1 # 选择标签为 app=platformservice1 的 Pods,Kubernetes 使用这个标签来选择受此 Deployment 管理的 Pods
template: # Pod 模板,描述 Pods 应该如何创建
metadata:
labels:
app: platformservice1 # Pod 的标签,用于与 selector 配合选择该 Pod
spec: # Pod 的规格定义
containers: #容器定义,说明该 Pod 中将运行的容器
- name: platformservice1 # 容器的名称
image: pjj521/platformservice1 # 容器使用的镜像,这里是一个本地镜像 "pjj521/platformservice1"
ports:
- containerPort: 80 #容器暴露的端口,这里表示容器会监听 80 端口
2. 创建node服务
- platform-np-srv.yaml
apiVersion: v1
kind: Service
metadata:
name: platformservice1-service
spec:
type: NodePort # 使用 NodePort 类型来暴露服务
selector:
app: platformservice1 # 匹配 platform-depl里的标签
ports:
- name: platformservice1 # 给端口命名(可选,便于理解)
protocol: TCP
port: 80 # 对外暴露的端口
targetPort: 80 # 容器内的端口
nodePort: 30001 # 可以指定 NodePort 的端口范围(可选,如果没有指定,Kubernetes 会自动分配一个在 30000-32767 之间的端口)
3. 运行当前的环境
- 先启动环境
kubectl apply -f .\platform-depl.yaml
- 在部署Node
kubectl apply -f .\platform-np-srv.yaml
4. 查看运行状态
- 查看部署的状态
kubectl get deployments
- 查看pods的状态
kubectl get pods
- 查看服务状态
kubectl get services
- 查看 Kubernetes 事件
kubectl get events --sort-by='.lastTimestamp'
5. 删除部署
- 查看当前部署的集群
kubectl get deployments
- 删除
kubectl delete deployment platforms-depl