Как я могу развернуть .NET-контейнер с HTTPS (порт 443) в AWS Kubernetes?

#asp.net-core #kubernetes #.net-core #amazon-eks

#asp.net-core #kubernetes #.net-ядро #amazon-eks

Вопрос:

Я много пробовал Google и выполнил множество настроек, но все еще не работает.

  • У меня есть кластер Kubernetes в Amazon EKS, и я пытаюсь развернуть .NET-контейнер, который, конечно же, является веб-сайтом.
  • Создайте классический балансировщик нагрузки, чтобы предоставить его в Интернет.

Что я хочу, так это предоставить доступ к Интернету как HTTP, так и HTTPS — 80, 443

  • Я вижу много руководств по решению этой проблемы, указывая как 80, так и 443 на один порт 80 контейнера
  • Это означает, что сам контейнер запускается только на порту 80 -> который мне не нужен

Насколько я понимаю, чтобы открыть и запустить приложение в контейнере с 443, я должен установить SSL-сертификат, тогда модуль, который запускает контейнер, каким-то образом должен автоматически доверять сертификату, иначе он не сможет получать запросы от балансировщика нагрузки. Я прав?

 apiVersion: apps/v1
kind: Deployment
metadata:
  name: dev-demo
spec:
  selector:
    matchLabels:
      app: dev-demo
      tier: backend
      track: stable
  replicas: 1
  template:
    metadata:
      labels:
        app: dev-demo
        tier: backend
        track: stable
    spec:
      containers:
      - name: dev-demo
        image: xxxxxxxxxxx
        ports:
        - containerPort: 80
        - containerPort: 443
        imagePullPolicy: Always
        resources:
          requests:
            cpu: 500m
            memory: 256Mi
          limits:
            cpu: 1000m
            memory: 512Mi
        env:
        - name: ASPNETCORE_URLS
          value: "https://*:443;http://*:80"
        - name: ASPNETCORE_HTTPS_PORT
          value: "443"
        - name: ASPNETCORE_Kestrel__Certificates__Default__Path
          value: "xxxxxx.pfx"
        - name: ASPNETCORE_Kestrel__Certificates__Default__Password
          value: "xxxxxx"

      nodeSelector:
        kubernetes.io/os: linux


apiVersion: v1
kind: Service
metadata:
  name: dev-demo
  labels:
    run: dev-demo
  annotations:
    # Note that the backend talks over HTTP.
    service.beta.kubernetes.io/aws-load-balancer-backend-protocol: https
    # TODO: Fill in with the ARN of your certificate.
    service.beta.kubernetes.io/aws-load-balancer-ssl-cert: xxxxxxxxxx
    # Only run SSL on the port named "https" below.
    service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "https"
spec:
  ports:
  - name: http
    port: 80
    targetPort: 80
  - name: https
    port: 443
    targetPort: 443
  selector:
    app: dev-demo
    tier: backend
    track: stable
  sessionAffinity: None
  type: LoadBalancer
  

Комментарии:

1. Вы нашли какое-либо решение?