Print this page

Contour Ingress Controller

21 August 2024
Rate this item
(0 votes)

Чтобы не запутаться в терминологии, нужно разграничить два определения.

  • Ingress — сущность/объект кластера Kubernetes, где создается описание конфигурации самого Ingress Сontroller.
  • Ingress Controller — обрабатывает трафик. Его конфигурация формируется из всех Ingress внутри одного кластера.

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

#-------------------ingress-hosts.yaml--------------------------------
# Manifest File to create Ingess Rules for Hosts
#---------------------------------------------------------------------
apiVersion: networking.k8s.io/v1beta1 #Зависит от версии K8s
kind: Ingress
metadata:
  name: ingress-hosts
spec:
  rules:
  - host: www.devopz.tech.net
    http:
      paths:
        - backend:
           serviceName: main
           servicePort: 80
  - host: web1.devopz.tech.net
    http:
      paths:
        - backend:
           serviceName: web1
           servicePort: 80
  - host: web2.devopz.tech.net
    http:
      paths:
        - backend:
           serviceName: web2
           servicePort: 80
  - host: cat.devopz.tech.net
    http:
      paths:
        - backend:
           serviceName: tomcat
           servicePort: 8080
#-------------------ingress-paths.yaml--------------------------------
# Manifest File to create Ingess Rules for Host Paths
#---------------------------------------------------------------------
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: ingress-paths
spec:
  rules:
  - host: www.devopz.tech.net
    http:
      paths:
      - path: "/page1"
        backend:
          serviceName: webx
          servicePort: 80
      - path: "/page2"
        backend:
          serviceName: webx
          servicePort: 80
      - path: "/page3"
        backend:
          serviceName: webx
          servicePort: 80
### Install Ingress Controller: Contour
kubectl apply -f https://projectcontour.io/quickstart/contour.yaml
kubectl get services -n projectcontour envoy -o wide
Get LoadBalancer IP or DNS Name and assign Your Domain to this DNS name
# Create Deployments
kubectl create deployment main   --image=nginx:latest
kubectl create deployment web1   --image=nginx:version1
kubectl create deployment web2   --image=nginx:version2
kubectl create deployment webx   --image=nginx:versionx
kubectl create deployment tomcat --image=tomcat:8.5.38
# Scale Deployments
kubectl scale deployment main  --replicas 2
kubectl scale deployment web1  --replicas 2
kubectl scale deployment web2  --replicas 2
kubectl scale deployment webx  --replicas 2
# Create Services, default type is: --type=ClusterIP
kubectl expose deployment main   --port 80
kubectl expose deployment web1   --port 80
kubectl expose deployment web2   --port 80
kubectl expose deployment webx   --port 80
kubectl expose deployment tomcat --port 8080
kubectl get services -o wide
kubectl apply -f ingress-hosts.yaml
kubectl apply -f ingress-paths.yaml
kubectl get ingress
kubectl describe ingress
# Completely delete Ingress Controller: Contour
kubectl delete ns projectcontour