Инструменты пользователя

Инструменты сайта


k8s-install-nginx-ingress

Устанавливаем Nginx-Ingress

Ingress — это объект Kubernetes, описывающий правила проксирования трафика от внешнего источника до сервисов внутри кластера K8S.

Самый простой вариант:
Идем вот сюда: https://kubernetes.github.io/ingress-nginx/deploy/#bare-metal-clusters

Там забираем актуальную ссылку на манифест и скачиваем манифест:

wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.12.0-beta.0/deploy/static/provider/baremetal/deploy.yaml

Если у нас уже установлен PureLB или MetalLB, то логично использовать load-balancer для получения адреса.

Поправим манифест: Ищем в файле Service у которого type: NodePort и меняем на type: LoadBalancer

По другому, это можно сделать так:

sed s/NodePort/LoadBalancer/  -i deploy.yaml

После этого, применяем манифест:

kubectl apply -f deploy.yaml

Посмотрим, какой внешний ip (EXTERNAL-IP) выдал load-balancer нашему ingress-controller-у:

kubectl -n ingress-nginx get svc
NAMETYPECLUSTER-IPEXTERNAL-IPPORT(S)AGE
ingress-nginx-controller LoadBalancer 10.110.58.41 192.168.254.231 80:31455/TCP,443:32265/TCP 1m
ingress-nginx-controller-admission ClusterIP 10.107.252.6 <none> 443/TCP 1m

Ну и проверим работу ingress-controller-а:
Создадим манифест в файле test.yaml

---
apiVersion: v1
kind: Namespace
metadata:
  name: test

---
apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: rs-nodeport
  namespace: test
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx-rs
  template:
    metadata:
      name: nginx-ss
      labels:
        app: nginx-rs
    spec:
      containers:
      - name: nginx-container
        image: nginxdemos/nginx-hello:plain-text
        ports:
        - name: http
          containerPort: 8080
          protocol: TCP
            
---
apiVersion: v1
kind: Service
metadata:
  name: ng-nodeport
  namespace: test
spec:
  type: ClusterIP
  ports:
  - name: name-np
    port: 80
    targetPort: 8080
  selector:
    app: nginx-rs

---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: minimal-ingress
  namespace: test
spec:
  ingressClassName: nginx
  rules:
  - http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: ng-nodeport
            port: 
              number: 8080

Применим созданный манифест:

kubectl apply -f test.yaml

Проверим, что все это работает:

curl http://192.168.254.231

Теперь создадим возможность контейнерам сохранять файлы при помощи NFS CSI драйвер для Kubernetes

k8s-install-nginx-ingress.txt · Последнее изменение: 2024/10/25 12:35 — admin

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki