VPC+NLB+ALB+DDoS+DNS
April 20, 2023

ALB ingress

Разные примеры под ключ.

Пример с одним приложением и одним сервисом.

cat <<EOF | kubectl apply -f -
apiVersion: apps/v1
kind: Deployment
metadata:
  name: cam-deploy-nginx
  namespace: default
  labels:
    app: app22
spec:
  replicas: 1
  selector:
    matchLabels:
      app: app22
  template:
    metadata:
      labels:
        app: app22
    spec:
      containers:
        - name: nginx
          image: nginx:latest
          ports:
          - name: http
            containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: cam-mynginx22
  namespace: default
spec:
  type: NodePort
  selector:
    app: app22
  ports:
    - name: http
      port: 80
      targetPort: 80
      protocol: TCP
      nodePort: 30081
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: cam-mynginx22
  namespace: default
  annotations:
    ingress.alb.yc.io/subnets: e9b16nenl5a52h6o9djb
    ingress.alb.yc.io/external-ipv4-address: 51.250.91.99
    ingress.alb.yc.io/group-name: infra-alb
    ingress.alb.yc.io/security-groups: enpauibqifvmvss6balo
spec:
  rules:
    - host: testest.cameda.ga
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: cam-mynginx22
                port:
                  number: 80
EOF

Пример с несколькими приложениями.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: app1
  namespace: default
  labels:
    app: app1
spec:
  replicas: 1
  selector:
    matchLabels:
      app: app1
  template:
    metadata:
      labels:
        app: app1
    spec:
      containers:
        - name: nginx
          image: nginx:latest
          ports:
            - name: http
              containerPort: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: app2
  namespace: default
  labels:
    app: app2
spec:
  replicas: 1
  selector:
    matchLabels:
      app: app2
  template:
    metadata:
      labels:
        app: app2
    spec:
      containers:
        - name: httpbin
          image: kennethreitz/httpbin:latest
          ports:
            - name: http
              containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: app1
  namespace: default
spec:
  type: NodePort
  selector:
    app: app1
  ports:
    - name: http
      port: 8080
      targetPort: 80
      protocol: TCP
      nodePort: 30080
---
apiVersion: v1
kind: Service
metadata:
  name: app2
  namespace: default
spec:
  type: NodePort
  selector:
    app: app2
  ports:
    - name: http
      port: 8081
      targetPort: 80
      protocol: TCP
      nodePort: 30081
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: httpbin
  namespace: default
  annotations:
    ingress.alb.yc.io/subnets: e9b16nenl5a52h6o9djb
    ingress.alb.yc.io/external-ipv4-address: 51.250.15.214
    ingress.alb.yc.io/group-name: infra-alb
    ingress.alb.yc.io/security-groups: enpauibqifvmvss6balo
    ingress.alb.yc.io/upgrade-types: WebSocket
    ingress.alb.yc.io/idle-timeout: 5m
spec:
  rules:
    - host: mac.infra.cameda.ga
      http:
        paths:
          - path: /app1
            pathType: Prefix
            backend:
              service:
                name: app1
                port:
                  number: 8080
          - path: /app2
            pathType: Prefix
            backend:
              service:
                name: app2
                port:
                  number: 8081

Полезные ссылки

Список аннотаций: https://cloud.yandex.ru/docs/application-load-balancer/k8s-ref/ingress#annotations