【发布时间】:2021-06-24 15:16:31
【问题描述】:
我有一个 ASP.NET Core 应用程序,我想在本地 kubernetes 集群中使用 minikube 配置 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
但不幸的是,当我运行 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 文件夹中。
为什么我做错了?
【问题讨论】:
标签: asp.net-core kubernetes asp.net-core-mvc kubectl minikube