如何确保我在 EKS 中运行的 .NET Core 服务可以找到 https 端口?

问题描述 投票:0回答:2

我已使用 Microsoft 登录创建了一个 .NET Core 微服务,如此处所述。当在本地或本地 Docker 容器中运行它时,一切都按预期运行。但是,在 EKS 中运行时,我在日志中收到一条警告消息:

无法确定重定向的 https 端口。

此警告如下图所示,这也表明我还检查了使用了哪些端口号(http 仅使用 80)。如果

netstat -tulp
能够显示 https 的端口号,我会很高兴,因为这样我就可以在应用程序设置中设置它(如 Microsoft 文档所解释的)并直接解析它。

微软文档清楚地解释了何时该做什么

中间件记录警告“无法确定 https 端口 用于重定向。”

但是这些并没有明确说明如果在所有环境中一切正常(除了在 EKS 中运行应用程序时),该怎么做。也许,我应该在我的 EKS/Kubernetes 配置中做一些事情,但我不知道该怎么做。

这是服务文件:

enter image description here

以下是日志中显示的警告消息:

enter image description here

如何解决警告消息?

asp.net-core kubernetes https amazon-eks
2个回答
1
投票

我可以看到您在

app.UseHsts();
文件中使用
Startup.cs
,这将强制客户端使用 https。请参阅文档此处

但是根据您的日志

Now listening on: http://[::]:80
,您的服务仅侦听http,而不侦听https。

也许你可以试试这个

  1. 只需删除代码
    app.UseHsts();
    并仅使用http。
  2. 通过k8s部署.yaml中的配置
    spec.template.spec.containers.env
    启用https。您的容器中需要一个服务器 tls 证书。
apiVersion: apps/v1
kind: Deployment
metadata:
  name: webapi
  labels:
    app: weather-forecast
spec:
  replicas: 1
  selector:
    matchLabels:
      service: webapi
  template:
    metadata:
      labels:
        app: weather-forecast
        service: webapi
    spec:
      containers:
        - name: webapi
          image: exploredocker.azurecr.io/webapi:v1
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 80
              protocol: TCP
            - containerPort: 443
              protocol: TCP
          env:
            - name: ASPNETCORE_URLS
              value: https://+:443;http://+:80
            - name: ASPNETCORE_Kestrel__Certificates__Default__Path
              value: /https/server_cert.pfx
            - name: ASPNETCORE_Kestrel__Certificates__Default__Password
              value: password

0
投票

确保您的应用程序实际上正在侦听配置中端口上的 HTTPS 连接:

targetPort: 9377
nodePort: 30098

这个其他类似的问题可能有助于解决您的设置的一些问题: 通过 http 和 https 访问 Kubernetes 上的 .NET Core 应用程序。如果这些不是您的设置问题,那么 yip102011answer 很好。

© www.soinside.com 2019 - 2024. All rights reserved.