Skip to main content

Kubernetes - Network Policy

Network Policy là một tài nguyên quan trọng trong Kubernetes để quản lý luồng dữ liệu giữa các Pod và Service. Nó cho phép bạn định nghĩa các quy tắc để kiểm soát truy cập từ các Pod khác nhau trong cùng một cụm Kubernetes.

kubernetes.png

Một Network Policy được định nghĩa bằng một file YAML, bao gồm các thông tin như tên Network Policy, các quy tắc truy cập và các thông tin khác. Các quy tắc truy cập sử dụng các kết hợp của các giá trị sau:

  • podSelector: định nghĩa các Pod mà Network Policy này áp dụng.
  • policyTypes: định nghĩa các loại truy cập được phép, bao gồm Ingress và Egress.
  • ingress: định nghĩa các quy tắc truy cập Ingress.
  • egress: định nghĩa các quy tắc truy cập Egress.

Bạn có thể tạo một Network Policy mới bằng lệnh kubectl create -f <tên file YAML>. Sau đó, bạn có thể sửa file YAML của Network Policy bằng lệnh kubectl edit networkpolicy <tên Network Policy>.

Ví dụ: Sau đây minh họa cách sử dụng Network Policy để kiểm soát truy cập giữa các Pod trong cùng một cụm Kubernetes.

Giả sử bạn có hai Pod trong cùng một cụm Kubernetes: Pod A và Pod B. Bạn muốn chỉ cho phép Pod A truy cập Pod B qua cổng 80. Để làm điều này, bạn tạo một Network Policy với các quy tắc truy cập Ingress như sau:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-pod-a-to-pod-b
spec:
  podSelector:
    matchLabels:
      app: pod-b
  policyTypes:
  - Ingress
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: pod-a
    ports:
    - protocol: TCP
      port: 80

Trong file YAML này, một Network Policy có tên là allow-pod-a-to-pod-b sẽ được tạo. Policy này chỉ cho phép Pod A truy cập Pod B qua cổng 80. Các Pod được liên kết với Network Policy bằng cách sử dụng selector app: pod-aapp: pod-b.

Sau khi triển khai file YAML này, Network Policy sẽ được áp dụng và chỉ cho phép Pod A truy cập Pod B qua cổng 80.