Будучи новичком в Kubernetes, я пытаюсь запустить простое приложение .NET Core 3 MVC в Kubernetes и ответить на порт 443, а также на порт 80. У меня есть работающая установка Docker-Compose, которую я пытаюсь перенести на Kubernetes.
Запуск Docker Desktop CE с nginx-ingress на Win 10 Pro.
Пока он работает на 80-м порту. (http://mymvc.local на хосте Win 10 - файл hosts перенаправляет mymvc .local на 127.0.0.1)
Мое приложение MVC работает за сервисом mvc на порту 5000.
Я сделал самозаверяющий сертификат для домена mymvc.local, который работает в настройке Docker-Compose.
Это мой входной файл
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: mvc-ingress
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/ssl-passthrough: "true"
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
tls:
- hosts:
- mymvc.local
secretName: mvcsecret-tls
rules:
- host: mymvc.local
http:
paths:
- path: /
backend:
serviceName: mvc
servicePort: 5000
Это мой файл секретов (ключи сокращены):
apiVersion: v1
kind: Secret
metadata:
name: mvcsecret-tls
data:
tls.crt: MIIDdzCCAl+gAwIBAgIUIok60uPHId5kve+/bZAw/ZGftIcwDQYJKoZIhvcNAQELBQAwKTELMAkGBxGjAYBgN...
tls.key: MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDPGN6yq9yzxvDL8fEUJChqlnaTQW6bQX+H0...
type: kubernetes.io/tls
kubectl описывает вход следующим образом:
Name: mvc-ingress
Namespace: default
Address: localhost
Default backend: default-http-backend:80 (<none>)
TLS:
mvcsecret-tls terminates mymvc.local
Rules:
Host Path Backends
---- ---- --------
mymvc.local
/ mvc:5000 (10.1.0.27:5000)
Annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/ssl-passthrough: true
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal CREATE 11m nginx-ingress-controller Ingress default/mvc-ingress
Normal UPDATE 11m nginx-ingress-controller Ingress default/mvc-ingress
В моей настройке Docker-Compose у меня есть обратный прокси-сервер Nginx, перенаправляющий 80 и 443 в мою службу MVC, но я решил, что это роль входа в Kubernetes?
Моя служба YAML:
apiVersion: v1
kind: Service
metadata:
name: mvc
labels:
app: mymvc
spec:
ports:
- name: "mvc"
port: 5000
targetPort: 5000
selector:
app: mymvc
type: ClusterIP
РЕДАКТИРОВАТЬ: Добавление nginx.ingress.kubernetes.io/rewrite-target: / для входящих аннотаций означает, что пересылка https работает, но представленный сертификат является «поддельным сертификатом Kubernetes Ingress Controller», а не моим самоподписанный.