程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何在 minikube 本地为 asp.net core 应用程序配置部署 yaml 文件上的 https?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何在 minikube 本地为 asp.net core 应用程序配置部署 yaml 文件上的 https??

开发过程中遇到如何在 minikube 本地为 asp.net core 应用程序配置部署 yaml 文件上的 https?的问题如何解决?下面主要结合日常开发的经验,给出你关于如何在 minikube 本地为 asp.net core 应用程序配置部署 yaml 文件上的 https?的解决方法建议,希望对你解决如何在 minikube 本地为 asp.net core 应用程序配置部署 yaml 文件上的 https?有所启发或帮助;

我有一个 ASP.NET Core 应用,我想使用 minikube 在本地 kubernetes clustur 中配置 httpS。

部署yaml文件为:

APIVersion: apps/v1
kind: Deployment
Metadata:
  name: kube-volume
  labels:
    app: kube-volume-app
spec:
  replicas: 1
  SELEctor: 
    matchLabels:
      component: web
  template:
    Metadata: 
      labels:
        component: web
    spec:
      containers:
        - name: ckubevolume
          image: kubevolume
          imagePullPolicy: Never
          ports:
            - containerPort: 80
            - containerPort: 443
          env:
            - name: ASPNETCORE_ENVIRONMENT
              value: Development
            - name: ASPNETCORE_URLS
              value: https://+:443;http://+:80
            - name: ASPNETCORE_httpS_PORT
              value: '443'
            - name: ASPNETCORE_Kestrel__Certificates__Default__password
              value: mypass123
            - name: ASPNETCORE_Kestrel__Certificates__Default__Path
              value: /app/https/aspnetapp.pfx
          volumeMounts:
            - name: ssl
              mountPath: "/app/https"
      volumes:
        - name: ssl
          configMap:
            name: game-config

您可以看到我在 yaml 文件中为 https 添加了环境变量

我还为此部署创建了一个服务。服务的yaml文件为:

APIVersion: v1
kind: service
Metadata:
  name: service-1
spec:
  type: NodePort
  SELEctor:
    component: web
  ports:
    - name: http
      protocol: TCP
      port: 100
      targetPort: 80
    - name: https
      protocol: TCP
      port: 200
      targetPort: 443

但不幸的是,当我运行 @H_121_11@minikube service service-1 命令时,该应用没有被服务打开。

但是,当我删除 https 的 env 变量时,该应用程序正在由服务打开。这些是我删除应用程序时打开的行:

- name: ASPNETCORE_URLS
  value: https://+:443;http://+:80
- name: ASPNETCORE_httpS_PORT
  value: '443'
- name: ASPNETCORE_Kestrel__Certificates__Default__password
  value: mypass123
- name: ASPNETCORE_Kestrel__Certificates__Default__Path
  value: /app/https/aspnetapp.pfx

我还通过 sHell 确认证书存在于 /app/https 文件夹中。

我做错了什么?

解决方法

我认为您的方法不适合 Kubernetes 的架构。 TLS 证书(用于 https)与主机名相关联。

我会推荐两种不同方法中的一种:

  • 使用 type: LoadBalancer 服务公开您的应用
  • 使用 Ingress resource
  • 公开您的应用

使用 LoadBalancer 类型的服务公开您的应用

这通常称为网络负载均衡器,因为它直接为 TCP 或 UDP 公开您的应用。

请参阅 Minikube 文档中的 LoadBalancer access。但请注意,您的应用会从 LoadBalancer 获取外部地址,而您的 TLS 证书可能必须与该地址匹配。

使用 Ingress 资源公开您的应用

这是 Kubernetes 中最常见的微服务方法。除了您的 type: NodePort 服务之外,您还需要为您的应用创建一个 Ingress resource。

集群需要一个 Ingress 控制器,网关将处理您的 TLS 证书,而不是您的应用。

有关如何在 Minikube 中配置 Ingress 和 TLS 证书的信息,请参阅 How to use custom TLS certificate with ingress addon。

我建议走这条路。

大佬总结

以上是大佬教程为你收集整理的如何在 minikube 本地为 asp.net core 应用程序配置部署 yaml 文件上的 https?全部内容,希望文章能够帮你解决如何在 minikube 本地为 asp.net core 应用程序配置部署 yaml 文件上的 https?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。