CKA Резюме — Ingress та NetworkPolicy

Ingress

  • ingress для забезпечення доступу ззовні: domain_name:port/path
  • Поля:
  • rules.ingressClassName
  • path -> шлях
  • backend.service.name -> сервіс
  • port -> порт сервісу
  • host -> доменне ім’я
apiVersion: networking.k8s.io/v1  
kind: Ingress  
metadata:  
 name: ingress-wildcard-host  
 annotations:  
 nginx.ingress.kubernetes.io/rewrite-target: /  
spec:  
 ingressClassName: nginx # використовується для контролера ingress  
 rules:  
 - host: "foo.bar.com"  
 http:  
 paths:  
 - pathType: Prefix  
 path: "/bar" # http://domain/path  
 backend:  
 service:  
 name: service1 # svc  
 port:  
 number: 80 # порт сервісу  
 - host: "*.foo.com"  
 http:  
 paths:  
 - pathType: Prefix  
 path: "/foo"  
 backend:  
 service:  
 name: service2  
 port:  
 number: 80

Перевірка

1. перевірте, чи встановлено контролер ingress

k get ingressclass

якщо немає, встановіть його

helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx  
helm repo update  
helm install my-nginx-ingress ingress-nginx/ingress-nginx -n ingress-nginx --create-namespace

2. перевірте IP, домен, порт

# 1. перевірте порт  
# svc asia|europe зв’язаний з pod  
# svc ingress-nginx-controller зв’язаний з pod контролера ingress  
# і target_port:порт це 80:30080, тому порт доступу 30080  
controlplane $ k get svc -A  
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE  
default kubernetes ClusterIP 10.96.0.1  443/TCP 35h  
ingress-nginx ingress-nginx-controller NodePort 10.106.174.82  80:30080/TCP,443:30443/TCP 2m12s  
ingress-nginx ingress-nginx-controller-admission ClusterIP 10.110.84.81  443/TCP 2m13s  
kube-system kube-dns ClusterIP 10.96.0.10  53/UDP,53/TCP,9153/TCP 35h  
world asia ClusterIP 10.100.146.115  80/TCP 44s  
world europe ClusterIP 10.99.31.152  80/TCP 45s  
# 2. знайдіть IP (endpoint -> ingress)  
controlplane $ k get endpoints  
NAME ENDPOINTS AGE  
kubernetes 172.30.1.2:6443 35h  
controlplane $ k get ing -owide -A  
NAMESPACE NAME CLASS HOSTS ADDRESS PORTS AGE  
world world nginx world.universe.mine 172.30.1.2 80 63s  
# 3. перевірте домен (якщо немає, додайте його)  
controlplane $ cat /etc/hosts  
127.0.0.1 localhost  
127.0.0.1 ubuntu  
127.0.0.1 host01  
127.0.0.1 controlplane  
172.30.1.2 world.universe.mine

Зверніть увагу: не плутайте додаток svc і ingress svc. Додаток svc зв’язаний з pod додатку (наприклад, asia), інші pod можуть отримати доступ до нього через svc_ip:svc_port; ingress svc зв’язаний з pod контролера ingress, ці створюються під час встановлення ingress в ingress-nginx namespace. Зовнішній доступ до pod має використовувати порт ingress svc.

3.

curl ingress IP/path

# curl domain_name:port/path  
controlplane $ curl world.universe.mine:30080/asia

NetworkPolicy

  • фільтрація трафіку
  • Поля:
  • діє на pod:
    namespacepodSelector
  • тип np:
    ingress.from & egress.to
  • потік трафіку від/до pod
    namespaceSelector
    podSelector
    ports
apiVersion: networking.k8s.io/v1  
kind: NetworkPolicy  
metadata:  
 name: test-network-policy  
 namespace: default # встановлюємо мітку для pod ns  
spec:  
 podSelector:  
 matchLabels:  
 role: db # встановлюємо мітку для pod  
 policyTypes:  
 - Ingress  
 - Egress  
 ingress:  
 - from:  
 - ipBlock:  
 cidr: 172.17.0.0/16  
 except:  
 - 172.17.1.0/24  
 - namespaceSelector:  
 matchLabels:  
 project: myproj # встановлюємо мітку для src/dst pod ns  
 - podSelector:  
 matchLabels:  
 role: frontend # встановлюємо мітку для src/dst pod  
 ports:  
 - protocol: TCP  
 port: 6379  
 egress:  
 - to:  
 - ipBlock:  
 cidr: 10.0.0.0/24  
 ports:  
 - protocol: TCP  
 port: 5978 # встановлюємо фільтрацію за портом

і знайти мітки

k get ns --show-labels  
k get pod -A --show-labels

Перевірка

Згідно з правилами фільтрації, виберіть вихідний pod і цільовий pod, щоб перевірити трафік

k exec -it pod01 -- curl svc02.ns02.svc.cluster.local  
k exec -it test_pod -- curl svc02.ns02.svc.cluster.local




Перекладено з: [CKA Recap — Ingress & NetworkPolicy](https://medium.com/@cheedgelee/cka-recap-ingress-networkpolicy-1bacd60c71f1)

Leave a Reply

Your email address will not be published. Required fields are marked *