Итак, у меня есть собственный веб-сайт, на котором я работаю, и я хочу перенести одну из своих служб в свой текущий кластер в поддомене моего фактического веб-сайта, и у меня возникли некоторые проблемы.
У меня есть веб-сайт, который я купил у 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: /
нет, никакой разницы. Смена шифрования сработала. Но теперь я предполагаю, что моему поддомену/кластеру Kubernetes нужен сертификат, чтобы я мог запустить его в режиме «Полный».
РЕШЕНО
Итак, все исправлено, и это связано с двумя небольшими проблемами. Ссылка на страницу 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: /
Я бы начал с обновления nginx ingress до более новой версии. Проверьте ссылку kubernetes.github.io/ingress-nginx/deploy/#digital-ocean и дайте мне знать, если она решит эту проблему.