Субдомен Kubernetes Ingress — настройка Cloudfare

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

У меня есть веб-сайт, который я купил у NameCheap, и я использую Cloudfare для всего, что связано с DNS. Значит все настроено правильно. Что я не могу понять, что делать, так это заставить мой веб-сайт субдомена работать.

Я попытался добавить запись "A" и "CNAME" и до сих пор не могу заставить ее работать.

Я также пытался следить за этим сайтом и не повезло. Я пробовал другие ссылки на stackoverflow и ссылки, опубликованные cloudfare. Но я не мог заставить что-либо работать: https://www.digitalocean.com/community/tutorials/how-to-set-up-an-nginx-ingress-with-cert-manager-on-digitalocean-kubernetes

Мои службы также работают без проблем. Мои модули и развертывания также в порядке, не показывают ошибок, и мой веб-сайт уже работает по другой ссылке, которую я удаляю, чтобы сэкономить деньги. www.ecoders.ca. Все, что я сделал для переноса своей службы, — это добавил материал в мой вход и повторно развернул все в моем текущем кластере. В моем текущем кластере я использую NGINX.

LMK, если требуется дополнительная информация.

Ingress.yaml

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/from-to-www-redirect: "true"
#    nginx.ingress.kubernetes.io/rewrite-target: /
  name: ingress
spec:
  rules:
   - host: www.foo.com
     http:
       paths:
         - backend:
             serviceName: nk-webapp-service
             servicePort: 80
           path: /
         - backend:
             serviceName: stockapp-service
             servicePort: 80
           path: /stock
   - host: www.bar.foo.com <----------- this does not work
     http:
       paths:
         - backend:
             serviceName: ecoders-webapi-service
             servicePort: 80
           path: /


Настройка Cloudfare

CNAME -> www -> foo.com  
CNAME -> bar -> foo.com  
A -> foo.com -> IP ADDRESS  

Настройка службы

apiVersion: apps/v1
kind: Deployment
metadata:
  name: ecoders-webapi
spec:
  replicas: 1
  selector:
    matchLabels:
      name: ecoders-webapi
  template:
    metadata:
      labels:
        name: ecoders-webapi
    spec:
      containers:
        - name: webapi
          image: astronik/webservice:latest
          imagePullPolicy: Always
          ports:
            - containerPort: 8080

apiVersion: v1
kind: Service
metadata:
  name: ecoders-webapi-service
spec:
  type: ClusterIP
  ports:
    - name: http
      port: 80
      targetPort: 8080
  selector:
    name: ecoders-webapi

ОБНОВЛЕНО

Ingress.yaml

   - host: www.bar.foo.com
     http:
       paths:
         - backend:
             serviceName: ecoders-webapi-service
             servicePort: 80
           path: /
   - host: bar.foo.com
     http:
       paths:
         - backend:
             serviceName: ecoders-webapi-service
             servicePort: 80
           path: /

Я также добавил версию ссылки «www», и теперь я получаю это (до того, как я заметил):

Это как-то связано с TLS/SSL? Что означает, что у моего субдомена нет сертификата?

НОВОЕ ОБНОВЛЕНИЕ

Итак, в разделе «SSL/TLS» на панели инструментов Cloudfare. Как только я отключил его, я смог без проблем получить доступ к своему поддомену. Но как мне заставить его работать на полную мощность? Требуется ли для моего кластера kubernetes сертификат?

РЕШЕНО

Итак, все исправлено, и это связано с двумя небольшими проблемами.

Проблема 1:

По сути, мне нужно изменить настройки DNS, добавив www. добавлял еще один субдомен. Я удалил 2 CNAME, которые я создал ранее, и сделал это.

A -> bar -> 10.0.0.0 
A -> foo.com -> 10.0.0.0 

Проблема 2:

Необходимо обновить мой вход, чтобы удалить эту строку

nginx.ingress.kubernetes.io/from-to-www-redirect: "true"

Обновлен вход

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
  name: ingress
spec:
  rules:
   - host: foo.com
     http:
       paths:
         - backend:
             serviceName: nk-webapp-service
             servicePort: 80
           path: /
         - backend:
             serviceName: stockapp-service
             servicePort: 80
           path: /stock
   - host: bar.foo.com
     http:
       paths:
         - backend:
             serviceName: ecoders-web-service
             servicePort: 80
           path: /

Я бы начал с обновления nginx ingress до более новой версии. Проверьте ссылку kubernetes.github.io/ingress-nginx/deploy/#digital-ocean и дайте мне знать, если она решит эту проблему.

Matt 24.12.2020 09:53

нет, никакой разницы. Смена шифрования сработала. Но теперь я предполагаю, что моему поддомену/кластеру Kubernetes нужен сертификат, чтобы я мог запустить его в режиме «Полный».

Nikster 24.12.2020 21:11
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
1
2
344
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

РЕШЕНО

Итак, все исправлено, и это связано с двумя небольшими проблемами. Ссылка на страницу Cloudfare

Проблема 1:

По сути, мне нужно изменить настройки DNS, добавив www. добавлял еще один субдомен. Я удалил 2 CNAME, которые я создал ранее, и сделал это.

A -> bar -> 10.0.0.0 
A -> foo.com -> 10.0.0.0 

Проблема 2:

Необходимо обновить мой вход, чтобы удалить эту строку

nginx.ingress.kubernetes.io/from-to-www-redirect: "true"

Обновлен вход

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
  name: ingress
spec:
  rules:
   - host: foo.com
     http:
       paths:
         - backend:
             serviceName: nk-webapp-service
             servicePort: 80
           path: /
         - backend:
             serviceName: stockapp-service
             servicePort: 80
           path: /stock
   - host: bar.foo.com
     http:
       paths:
         - backend:
             serviceName: ecoders-web-service
             servicePort: 80
           path: /

Другие вопросы по теме