Halaman ini memberikan petunjuk untuk mengonfigurasi traffic intra-cluster untuk cluster standar menggunakan kebijakan jaringan Kubernetes di Google Distributed Cloud (GDC) air-gapped.
NetworkPolicy Kubernetes adalah spesifikasi pemberian izin pada grup pod untuk berkomunikasi satu sama lain dan dengan endpoint jaringan lainnya. Resource NetworkPolicy menggunakan label untuk memilih pod, dan menentukan aturan yang menentukan traffic yang diizinkan ke pod yang dipilih. Kebijakan ini memiliki cakupan lokal dan hanya berlaku untuk traffic dalam cluster tempat kebijakan tersebut ditentukan, kecuali jika kebijakan izinkan semua dibuat, yang juga memungkinkan komunikasi dengan endpoint dari cluster standar dan bersama lainnya.
Sebelum memulai
Untuk mengonfigurasi kebijakan jaringan Kubernetes, Anda harus memiliki izin yang diperlukan dalam cluster untuk membuat, mengubah, dan menghapus resource NetworkPolicy di namespace yang relevan.
Membuat kebijakan pod-ke-pod intra-cluster
Kebijakan ini mengontrol traffic antar-pod dalam cluster standar yang sama.
Membuat kebijakan ingress pod-ke-pod intra-cluster
Untuk mengizinkan traffic ingress pod-ke-pod intra-cluster, buat dan terapkan resource berikut:
kubectl --kubeconfig CLUSTER_API_SERVER apply -f - <<EOF apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-intra-cluster-ingress-traffic namespace: SUBJECT_NAMESPACE spec: podSelector: matchLabels: SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE policyTypes: - Ingress ingress: - from: - namespaceSelector: matchLabels: Kubernetes.io/metadata.name: PEER_NAMESPACE podSelector: matchLabels: PEER_LABEL_KEY: PEER_LABEL_VALUE ports: - protocol: TCP port: PORT EOFGanti kode berikut:
CLUSTER_API_SERVER: jalur kubeconfig server API cluster. Jika Anda belum membuat file kubeconfig untuk server API, lihat Login untuk mengetahui detailnya.SUBJECT_NAMESPACE: namespace subjek di cluster standar.PEER_NAMESPACE: namespace peer di cluster standar.SUBJECT_LABEL_KEY: kunci label yang digunakan untuk memilih beban kerja subjek. Misalnya,app,tier, ataurole.SUBJECT_LABEL_VALUE: nilai yang terkait denganSUBJECT_LABEL_KEY. Misalnya, jikaSUBJECT_LABEL_KEYadalahapp, danSUBJECT_LABEL_VALUEadalahbackend, maka beban kerja dengan labelapp: backendakan menerima traffic.PEER_LABEL_KEY: kunci label yang digunakan untuk memilih workload peer.PEER_LABEL_VALUE: nilai yang terkait denganPEER_LABEL_KEY.PORT: port pada workload subjek tempat traffic diizinkan.
Membuat kebijakan egress pod-ke-pod intra-cluster
Untuk mengizinkan traffic keluar pod-ke-pod intra-cluster, buat dan terapkan resource berikut:
kubectl --kubeconfig CLUSTER_API_SERVER apply -f - <<EOF apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-egress-intra-cluster-traffic namespace: SUBJECT_NAMESPACE spec: podSelector: matchLabels: SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE policyTypes: - Egress egress: - to: - namespaceSelector: matchLabels: Kubernetes.io/metadata.name: PEER_NAMESPACE podSelector: matchLabels: PEER_LABEL_KEY: PEER_LABEL_VALUE ports: - protocol: TCP port: PORT EOFGanti kode berikut:
CLUSTER_API_SERVER: jalur kubeconfig server API cluster. Jika Anda belum membuat file kubeconfig untuk server API, lihat Login untuk mengetahui detailnya.SUBJECT_NAMESPACE: namespace subjek di cluster standar.PEER_NAMESPACE: namespace peer di cluster standar.SUBJECT_LABEL_KEY: kunci label yang digunakan untuk memilih beban kerja subjek. Misalnya,app,tier, ataurole.SUBJECT_LABEL_VALUE: nilai yang terkait denganSUBJECT_LABEL_KEY. Misalnya, jikaSUBJECT_LABEL_KEYadalahapp, danSUBJECT_LABEL_VALUEadalahbackend, maka workload dengan labelapp: backendakan mengirimkan traffic.PEER_LABEL_KEY: kunci label yang digunakan untuk memilih workload peer.PEER_LABEL_VALUE: nilai yang terkait denganPEER_LABEL_KEY.PORT: port pada workload peer tempat traffic diizinkan.
Membuat kebijakan pod-ke-pod intra-cluster menggunakan load balancer
Kebijakan ini mengontrol traffic antar-pod dalam cluster yang sama saat traffic dirutekan melalui load balancer eksternal.
Membuat kebijakan ingress pod-ke-pod intra-cluster menggunakan load balancer
Untuk mengizinkan traffic masuk pod-ke-pod intra-cluster menggunakan load balancer, buat dan terapkan resource berikut:
kubectl --kubeconfig CLUSTER_API_SERVER apply -f - <<EOF apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-intra-cluster-ingress-traffic-via-elb namespace: SUBJECT_NAMESPACE spec: podSelector: matchLabels: SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE policyTypes: - Ingress ingress: - from: - ipBlock: cidr: EGRESS_NAT_IP/32 ports: - protocol: TCP port: PORT EOFGanti kode berikut:
CLUSTER_API_SERVER: jalur kubeconfig server API cluster. Jika Anda belum membuat file kubeconfig untuk server API, lihat Login untuk mengetahui detailnya.SUBJECT_NAMESPACE: namespace subjek di cluster standar.SUBJECT_LABEL_KEY: kunci label yang digunakan untuk memilih beban kerja subjek. Misalnya,app,tier, ataurole.SUBJECT_LABEL_VALUE: nilai yang terkait denganSUBJECT_LABEL_KEY. Misalnya, jikaSUBJECT_LABEL_KEYadalahapp, danSUBJECT_LABEL_VALUEadalahbackend, maka beban kerja dengan labelapp: backendakan menerima traffic.EGRESS_NAT_IP: IP NAT keluar dari pod sumber.PORT: port pada workload subjek tempat traffic diizinkan.
Membuat kebijakan egress pod-ke-pod intra-cluster menggunakan load balancer
Untuk mengizinkan traffic keluar pod-ke-pod intra-cluster menggunakan load balancer, buat dan terapkan resource berikut:
kubectl --kubeconfig CLUSTER_API_SERVER apply -f - <<EOF apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-intra-cluster-egress-traffic-via-elb namespace: SUBJECT_NAMESPACE spec: podSelector: matchLabels: SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE policyTypes: - Egress egress: - to: - ipBlock: cidr: ELB_EXTERNAL_IP/32 ports: - protocol: TCP port: PORT EOFGanti kode berikut:
CLUSTER_API_SERVER: jalur kubeconfig server API cluster. Jika Anda belum membuat file kubeconfig untuk server API, lihat Login untuk mengetahui detailnya.SUBJECT_NAMESPACE: namespace subjek di cluster standar.SUBJECT_LABEL_KEY: kunci label yang digunakan untuk memilih beban kerja subjek. Misalnya,app,tier, ataurole.SUBJECT_LABEL_VALUE: nilai yang terkait denganSUBJECT_LABEL_KEY. Misalnya, jikaSUBJECT_LABEL_KEYadalahapp, danSUBJECT_LABEL_VALUEadalahbackend, maka workload dengan labelapp: backendakan mengirimkan traffic.ELB_EXTERNAL_IP: alamat IP eksternal load balancer.PORT: port pada endpoint eksternal yang trafficnya diizinkan.
Membuat kebijakan eksternal organisasi
Kebijakan ini mengontrol traffic antara pod dalam cluster standar dan endpoint eksternal (alamat IP di luar cluster).
Membuat kebijakan ingress untuk traffic eksternal organisasi
Untuk mengizinkan traffic masuk dari endpoint eksternal organisasi, buat dan terapkan resource berikut:
kubectl --kubeconfig CLUSTER_API_SERVER apply -f - <<EOF apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-ingress-from-organization-external-to-standard-cluster-pod namespace: SUBJECT_NAMESPACE spec: podSelector: matchLabels: SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE policyTypes: - Ingress ingress: - from: - ipBlock: cidr: EXTERNAL_CIDR ports: - protocol: TCP port: PORT EOFGanti kode berikut:
CLUSTER_API_SERVER: jalur kubeconfig server API cluster. Jika Anda belum membuat file kubeconfig untuk server API, lihat Login untuk mengetahui detailnya.SUBJECT_NAMESPACE: namespace subjek di cluster standar.SUBJECT_LABEL_KEY: kunci label yang digunakan untuk memilih beban kerja subjek. Misalnya,app,tier, ataurole.SUBJECT_LABEL_VALUE: nilai yang terkait denganSUBJECT_LABEL_KEY. Misalnya, jikaSUBJECT_LABEL_KEYadalahapp, danSUBJECT_LABEL_VALUEadalahbackend, maka beban kerja dengan labelapp: backendakan menerima traffic.EXTERNAL_CIDR: CIDR eksternal, misalnya:20.0.0.0/16.PORT: port pada workload subjek tempat traffic diizinkan.
Membuat kebijakan egress untuk traffic eksternal organisasi
Untuk mengizinkan traffic keluar ke endpoint eksternal organisasi, buat dan terapkan resource berikut:
kubectl --kubeconfig CLUSTER_API_SERVER apply -f - <<EOF apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-egress-from-standard-cluster-pod-to-organization-external namespace: SUBJECT_NAMESPACE spec: podSelector: matchLabels: SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE policyTypes: - Egress egress: - to: - ipBlock: cidr: EXTERNAL_CIDR ports: - protocol: TCP port: PORT EOFGanti kode berikut:
CLUSTER_API_SERVER: jalur kubeconfig server API cluster. Jika Anda belum membuat file kubeconfig untuk server API, lihat Login untuk mengetahui detailnya.SUBJECT_NAMESPACE: namespace subjek di cluster standar.SUBJECT_LABEL_KEY: kunci label yang digunakan untuk memilih beban kerja subjek. Misalnya,app,tier, ataurole.SUBJECT_LABEL_VALUE: nilai yang terkait denganSUBJECT_LABEL_KEY. Misalnya, jikaSUBJECT_LABEL_KEYadalahapp, danSUBJECT_LABEL_VALUEadalahbackend, maka workload dengan labelapp: backendakan mengirimkan traffic.EXTERNAL_CIDR: CIDR eksternal, misalnya:20.0.0.0/16.PORT: port pada endpoint eksternal yang trafficnya diizinkan.
Membuat kebijakan izinkan semua
Kebijakan berikut dapat digunakan untuk mengizinkan semua traffic secara eksplisit. Hal ini memungkinkan komunikasi dengan endpoint dari cluster standar dan bersama lainnya.
Membuat kebijakan ingress izinkan semua
Untuk mengizinkan semua traffic masuk, buat dan terapkan resource berikut:
kubectl --kubeconfig CLUSTER_API_SERVER apply -f - <<EOF apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-all-ingress-traffic namespace: SUBJECT_NAMESPACE spec: podSelector: {} policyTypes: - Ingress ingress: - {} EOFGanti kode berikut:
CLUSTER_API_SERVER: jalur kubeconfig server API cluster. Jika Anda belum membuat file kubeconfig untuk server API, lihat Login untuk mengetahui detailnya.SUBJECT_NAMESPACE: namespace subjek di cluster standar.
Membuat kebijakan egress izinkan-semua
Untuk mengizinkan semua traffic keluar, buat dan terapkan resource berikut:
kubectl --kubeconfig CLUSTER_API_SERVER apply -f - <<EOF apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-all-egress-traffic namespace: SUBJECT_NAMESPACE spec: podSelector: {} policyTypes: - Egress egress: - {} EOFGanti kode berikut:
CLUSTER_API_SERVER: jalur kubeconfig server API cluster. Jika Anda belum membuat file kubeconfig untuk server API, lihat Login untuk mengetahui detailnya.SUBJECT_NAMESPACE: namespace subjek di cluster standar.