1. Введение
Добро пожаловать в гостиМедленный разговор тыквы www.pkslow.comПолучайте больше отличных статей!
Ingress
даKubernetes
очень важныйController
, который похож на компонент переадресации маршрутизации, который позволяет внешнему миру получить доступKubernetes
ВнутреннийService
. КромеIngress
,иNodePort
,LoadBalance
и так далее,Ingress
Способ воздействия на внешний мир по-прежнему очень популярен.
2 Установите вход
мы проходимhelm
Давай устанавливай, будет удобнее, сначала обновиhelm
склад.
$ helm repo update
Helm
Статьи по Теме:Разверните приложение Kubernetes с помощью HELM, поддержка развертывания нескольких условий окружающей среды и отката версии
Статьи по теме контейнерных технологий
После обновления найдите репозиторий оIngress
Какие есть пакеты:
$ $ helm search repo ingress
NAME CHART VERSION APP VERSION DESCRIPTION
azure/gce-ingress 1.2.0 1.4.0 A GCE Ingress Controller
azure/ingressmonitorcontroller 1.0.48 1.0.47 IngressMonitorController chart that runs on kub...
azure/nginx-ingress 1.41.2 v0.34.1 An nginx Ingress controller that uses ConfigMap...
stable/nginx-ingress 0.9.5 0.10.2 An nginx Ingress controller that uses ConfigMap...
azure/contour 0.2.0 v0.15.0 Contour Ingress controller for Kubernetes
azure/external-dns 1.8.0 0.5.14 Configure external DNS servers (AWS Route53, Go...
azure/kong 0.36.7 1.4 DEPRECATED The Cloud-Native Ingress and API-man...
azure/lamp 1.1.3 7 Modular and transparent LAMP stack chart suppor...
azure/nginx-lego 0.3.1 Chart for nginx-ingress-controller and kube-lego
azure/traefik 1.87.2 1.7.24 A Traefik based Kubernetes ingress controller w...
azure/voyager 3.2.4 6.0.0 DEPRECATED Voyager by AppsCode - Secure Ingress...
stable/external-dns 0.4.9 0.4.8 Configure external DNS servers (AWS Route53, Go...
stable/lamp 0.1.4 Modular and transparent LAMP stack chart suppor...
stable/nginx-lego 0.3.1 Chart for nginx-ingress-controller and kube-lego
stable/traefik 1.24.1 1.5.3 A Traefik based Kubernetes ingress controller w...
stable/voyager 3.1.0 6.0.0-rc.0 Voyager by AppsCode - Secure Ingress Controller...
выберитеazure/nginx-ingress
Для установки обратите внимание, что есть версии. Установите следующим образом:
$ helm install pkslow-ingress azure/nginx-ingress
После успешной установки консоль выдаст соответствующие инструкции. Но будьте осторожны, идите кKubernetes Dashboard
Проверьте, действительно ли установка прошла успешно. Я столкнулся с ошибками установки, и все из-за того, что загрузка зеркала не удалась. Решение состоит в том, чтобы открыть глобальный代理
, сначала вручную загрузите соответствующее зеркало. как:
us.gcr.io/k8s-artifacts-prod/ingress-nginx/controller:v0.34.1
k8s.gcr.io/defaultbackend-amd64:1.5
jettech/kube-webhook-certgen:v1.0.0
quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.32.0
После успешной установки соответствующиеPods
Все побежали. СвязанныйDeployment
имеют:
3 Использование входа
3.1 Доступ к сервису
Простейший пример заключается в следующем:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 1
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.19.0
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
labels:
app: nginx
name: nginx-service
spec:
ports:
- port: 80
name: nginx-service
protocol: TCP
targetPort: 80
selector:
app: nginx
type: ClusterIP
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: example-ingress
annotations:
kubernetes.io/ingress.class: nginx
spec:
rules:
- http:
paths:
- path: /
backend:
serviceName: nginx-service
servicePort: 80
host: localhost
После этой конфигурации, когда мы посещаемhttp://localhost/
, наш запрос будет переадресованnginx-service
из80
порт вверх. Следующее:
3.2 Доступ к нескольким службам
Все усложняется, когда необходимо получить доступ к нескольким службам. Существует два метода конфигурации для доступа к нескольким службам, один из них — черезURL
Совпадение пути перенаправлено, другое через子域名
Вперед.
3.2.1 Метод субдомена
Переадресация через поддомены настраивается следующим образом:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: example-ingress
annotations:
kubernetes.io/ingress.class: nginx
spec:
rules:
- http:
paths:
- path: /
backend:
serviceName: nginx-service
servicePort: 80
host: nginx.localhost
- http:
paths:
- path: /
backend:
serviceName: springboot-service
servicePort: 8080
host: springboot.localhost
Только в целях экономии местаIngress
настроен.
доступhttp://nginx.localhost/
следующее:
доступhttp://springboot.localhost/swagger-ui.html
Как следует, обратите внимание на этоURL
с подпутьюswagger-ui.html
:
3.2.2 Метод сопоставления пути URL
который проходитURL
Настроен ли метод сопоставления путей таким образом?
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: example-ingress
annotations:
kubernetes.io/ingress.class: nginx
spec:
rules:
- http:
paths:
- path: /nginx
backend:
serviceName: nginx-service
servicePort: 80
host: localhost
- http:
paths:
- path: /springboot
backend:
serviceName: springboot-service
servicePort: 8080
host: localhost
После этой конфигурации он будет напрямую сообщать404
,но нетIngress
из404
, ноNginx
илиSpringboot
из404
. Указывает, что запрос был успешно перенаправлен в соответствующийservice
, но есть проблема с путем. Причина в том, что при такой настройкеIngress
Воляpath
также направленоservice
начальство. Таким образом, фактический эффект выглядит следующим образом:
localhost/nginx --> nginx-service/nginx
localhost/springboot --> springboot-service/springboot
так служитьWeb Context
Путь для настройкиpath
совпадение. Напримерnginx-service
Базовый путь будет изменен на/nginx
, вместо/
.
Если вы хотите продолжать служитьWeb Context
путь/
, то нужно настроитьrewrite
правила, такие какnginx.ingress.kubernetes.io/rewrite-target: /$1
.
4 Резюме
Пройдя его один раз, ям действительно много. использовать子域名
Это кажется лучшим способом. Кроме того,Ingress
Есть и яма, это реализацияHTTP/HTTPS
переадресовано, ноTCP
Это не сработает, например, я вKubernetes
установилMySQL
базу данных, вам нужно поставить адрес и3306
отTCP
Более проблематично представить метод внешнему миру, и мы обсудим его позже.
Добро пожаловать в публичный аккаунт WeChatТыква медленный разговор>, буду обновлять для вас...
Читайте больше, делитесь больше, пишите больше, организуйте больше.