我有一个控制台应用程序,它充当一些消息代理的监听器。我已经将其容器化并成功地在本地docker上运行。现在我想将其部署到Kubernetes(特别是AWS上的EKS)。
因此,我创建了一个需要用于部署的yaml文件,但是,我对yaml文件中需要的端口感到困惑。从部署API的经验来看,我知道端口应该与Docker Image公开的端口相同,但是控制台应用程序既不公开任何端口,也不需要运行端口。
因此,我只是随便写了一些端口尝试部署。自然而然地,它无法正常工作。我已经从ECR拉取了图像并运行以确认它可以工作。只有部署到EKS时才出现问题。
请问是否有正确的方法将.NET Core控制台应用程序部署到Kubernetes?
以下是我的Dockerfile:
以下是我为这个控制台应用程序编写的yaml文件:
因此,我创建了一个需要用于部署的yaml文件,但是,我对yaml文件中需要的端口感到困惑。从部署API的经验来看,我知道端口应该与Docker Image公开的端口相同,但是控制台应用程序既不公开任何端口,也不需要运行端口。
因此,我只是随便写了一些端口尝试部署。自然而然地,它无法正常工作。我已经从ECR拉取了图像并运行以确认它可以工作。只有部署到EKS时才出现问题。
请问是否有正确的方法将.NET Core控制台应用程序部署到Kubernetes?
以下是我的Dockerfile:
FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY ["Listener/Listener.csproj", "Listener/"]
COPY ["Infra/Infra.csproj", "Infra/"]
RUN dotnet restore "Listener/Listener.csproj"
COPY . .
WORKDIR "/src/Listener"
RUN dotnet build "Listener.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "Listener.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Listener.dll"]
以下是我为这个控制台应用程序编写的yaml文件:
apiVersion: apps/v1
items:
- apiVersion: v1
kind: Service
metadata:
annotations:
Process: listener
creationTimestamp: null
labels:
app: listener
name: listener
spec:
type: LoadBalancer
ports:
- name: "5999"
port: 5999
targetPort: 5999
selector:
app: listener
status:
loadBalancer: {}
- apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
Process: listener
creationTimestamp: null
labels:
app: listener
name: listener
spec:
replicas: 1
selector:
matchLabels:
app: listener
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: listener
spec:
containers:
- env:
image: *****.dkr.ecr.<region>.amazonaws.com/listener:latest
name: listener
ports:
- containerPort: 5999
resources: {}
restartPolicy: Always
status: {}
kind: List
metadata: {}
如果有人能提供帮助,我会非常感激!谢谢!