# 从零开始学习如何在K8S上部署.NET Core Web应用

---

## 总览

在Kubernetes(K8S)上部署.NET Core Web应用需要经过一系列步骤,包括构建镜像、创建部署和服务等。下面是一个简单的流程图,展示了整个过程:

| 步骤 | 描述 |
|------|----------------|
| 1 | 编写.NET Core Web应用程序 |
| 2 | 创建Dockerfile用于构建镜像 |
| 3 | 构建Docker镜像 |
| 4 | 创建Deployment部署应用 |
| 5 | 创建Service暴露应用 |

---

## 详细步骤

### 步骤1:编写.NET Core Web应用程序

首先,我们需要编写一个简单的.NET Core Web应用程序。这里以一个简单的“Hello World”示例为例。

```csharp
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
}

public void Configure(IApplicationBuilder app)
{
app.UseRouting();

app.UseEndpoints(endpoints =>
{
endpoints.MapGet("/", async context =>
{
await context.Response.WriteAsync("Hello World!");
});
});
}
}

public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}

public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup();
});
}
```

### 步骤2:创建Dockerfile用于构建镜像

在应用程序根目录下创建一个名为`Dockerfile`的文件,用于指定如何构建Docker镜像。

```dockerfile
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
WORKDIR /app
COPY bin/Release/netcoreapp3.1/publish/ app/
ENTRYPOINT ["dotnet", "app/YourApp.dll"]
```

### 步骤3:构建Docker镜像

在终端中执行以下命令来构建Docker镜像:

```sh
docker build -t your-image-name .
```

### 步骤4:创建Deployment部署应用

创建一个名为`deployment.yaml`的Kubernetes Deployment配置文件,用于部署应用。

```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: your-deployment-name
spec:
replicas: 1
selector:
matchLabels:
app: your-app
template:
metadata:
labels:
app: your-app
spec:
containers:
- name: your-app
image: your-image-name
ports:
- containerPort: 80
```

执行以下命令来创建Deployment:

```sh
kubectl apply -f deployment.yaml
```

### 步骤5:创建Service暴露应用

创建一个名为`service.yaml`的Kubernetes Service配置文件,用于暴露应用。

```yaml
apiVersion: v1
kind: Service
metadata:
name: your-service-name
spec:
selector:
app: your-app
ports:
- protocol: TCP
port: 80
targetPort: 80
type: LoadBalancer
```

执行以下命令来创建Service:

```sh
kubectl apply -f service.yaml
```

---

通过以上步骤,我们成功在Kubernetes上部署了一个.NET Core Web应用。希望对你有所帮助!.

---

## 更多资源

- [.NET Core官方文档](https://docs.microsoft.com/en-us/dotnet/core/)
- [Kubernetes官方文档](https://kubernetes.io/docs/home/)