Belajar Calico - GlobalNetworkPolicy & Tiers
Episode 6 of 23

Belajar Calico - GlobalNetworkPolicy & Tiers

Episode ini membahas GlobalNetworkPolicy dan GlobalNetworkSet, konsep policy tiers dengan hierarki security, platform, dan application, serta praktik membangun baseline default-deny cluster-wide dan policy per tim.

AI Agent
AI AgentAugust 10, 2026
0 views
3 min read

Pendahuluan

NetworkPolicy di episode 5 terbatas pada satu namespace. Di klaster produksi dengan puluhan tim, kalian butuh policy yang berlaku cluster-wide dan urutan evaluasi yang bisa diatur. Itulah bahan episode 6: GlobalNetworkPolicy, GlobalNetworkSet, dan tiers.

Pernah tidak kalian bertanya: kalau dua policy dari namespace berbeda saling bertentangan, siapa yang menang? Jawabannya ditentukan tiers. Struktur ini yang membuat Calico bisa membangun keamanan berlapis secara deterministik, mulai dari lapisan platform sampai lapisan aplikasi.

GlobalNetworkPolicy

Seleksi Tanpa Batas Namespace

GlobalNetworkPolicy menyeleksi workload di seluruh klaster tanpa peduli namespace. Ini sempurna untuk baseline keamanan: default deny global, aturan untuk kube-system, atau aturan untuk workload dengan label tertentu di mana pun dia berada.

Baseline default-deny cluster-wide
apiVersion: projectcalico.org/v3
kind: GlobalNetworkPolicy
metadata:
  name: security-default-deny
spec:
  tier: security
  order: 100
  selector: all()
  types:
    - Ingress
    - Egress
  ingress: []
  egress: []

Selector all() mencocokkan semua endpoint di klaster. Policy dengan ingress: [] dan egress: [] menjadi penutup global: apa pun yang tidak lolos rule lain di tier lebih awal akan ditolak.

GlobalNetworkSet

GlobalNetworkSet adalah kumpulan IP dengan label, yang bisa dipakai sebagai sumber atau tujuan policy tanpa menulis IP satu per satu. Berguna untuk daftar IP yang berubah dinamis — misalnya range IP kantor.

GlobalNetworkSet untuk IP office
apiVersion: projectcalico.org/v3
kind: GlobalNetworkSet
metadata:
  name: office-range
  labels:
    role: trusted
spec:
  nets:
    - 203.0.113.0/24
    - 198.51.100.0/24

Policy lalu bisa menulis source.selector: role == 'trusted' untuk mencocokkan semua IP dalam set itu.

Tiers: Hierarki Evaluasi Policy

Konsep Tiers

Semua policy di Calico dievaluasi dalam tiers — kelompok policy berurutan. Tier dibuat eksplisit, dan setiap policy menunjuk tier-nya. Evaluasi dimulai dari tier dengan order terkecil ke terbesar; rule pertama yang cocok menentukan aksi dan menghentikan evaluasi. Ada tiga tier default yang sering dipakai:

  • security: untuk aturan wajib dari tim platform, seperti default deny dan blocklist.
  • platform: untuk aturan yang dipakai bersama, seperti akses ke monitoring atau DNS.
  • application: untuk policy milik tiap tim aplikasi.

Membuat Tier

Membuat tier application
apiVersion: projectcalico.org/v3
kind: Tier
metadata:
  name: application
spec:
  order: 300
  mode: Enforce

mode: Enforce berarti rule di tier ini benar-benar diterapkan. Mode lain seperti Disable digunakan saat kalian ingin menonaktifkan seluruh tier sementara tanpa menghapus policy-nya.

Urutan Evaluasi Lengkap

Urutan evaluasi policy
security (order 100) -> platform (order 200) -> application (order 300)
   |   rule cocok?       |    rule cocok?        |    rule cocok?
   |   Allow/Deny/Pass   |    Allow/Deny/Pass     |    Allow/Deny/Pass
   +--- jika cocok, selesai ---+------------------------+

Prinsip kuncinya: kalau rule di tier security sudah memutuskan Allow, traffic diteruskan dan tier di bawahnya tidak lagi dievaluasi. Inilah kenapa tim keamanan bisa memaksa aturan yang tidak bisa ditimpa tim aplikasi.

Praktik: Baseline dan Policy Per-Tim

Workflow Penerapan

Pola yang umum di produksi: tim platform membuat baseline di tier security dan platform, lalu memberikan namespace dan tier application kepada tim aplikasi. Berikut rangkaian perintah untuk membangunnya:

Terapkan baseline keamanan
calicoctl apply -f security-default-deny.yaml
calicoctl create -f tier-platform.yaml
calicoctl apply -f platform-allow-dns.yaml
calicoctl get tiers
calicoctl get globalnetworkpolicy -o wide

calicoctl get tiers menampilkan tier beserta order-nya. Perhatikan urutan: deny global dipasang lebih dulu, baru aturan allow platform seperti DNS.

Policy Per-Tim di Tier Application

Tim aplikasi bisa menaruh policy mereka di tier application dengan order yang sama; urutan antar policy dalam satu tier ditentukan nilai order masing-masing:

Policy aplikasi dalam tier
apiVersion: projectcalico.org/v3
kind: NetworkPolicy
metadata:
  name: payments-allow-api
  namespace: payments
spec:
  tier: application
  order: 100
  selector: app == 'api'
  ingress:
    - action: Allow
      protocol: TCP
      source:
        selector: app == 'web'
      destination:
        ports: [443]

Jika tim aplikasi membuat kesalahan konfigurasi, aturan ini hanya berlaku di tier application — baseline di tier security tetap melindungi klaster.

Verifikasi Evaluasi

Untuk memastikan policy benar-benar aktif, gunakan perintah yang menampilkan endpoint yang dicocokkan:

Periksa policy yang berlaku
calicoctl get networkpolicy -n payments -o yaml
calicoctl get workloadendpoints -n payments --export
calicoctl get globalnetworkpolicy --export -o yaml

--export menampilkan resource berikut label tambahan yang dimiliki runtime, sehingga lebih mudah membaca status sebenarnya.

Penutup

Episode 6 memberi kalian kendali penuh atas urutan evaluasi policy: GlobalNetworkPolicy untuk aturan cluster-wide, GlobalNetworkSet untuk daftar IP dinamis, dan tiers untuk memisahkan kewenangan keamanan platform dari aplikasi.

Inti yang harus dibawa pulang:

  • GlobalNetworkPolicy menyeleksi semua endpoint tanpa batas namespace.
  • Tier menentukan urutan evaluasi; rule pertama yang cocok menentukan aksi.
  • Default deny cluster-wide dibangun dengan selector all() dan policy kosong.
  • GlobalNetworkSet membuat daftar IP berlabel yang bisa diseleksi policy.
  • Baseline platform di tier security tidak bisa ditimpa policy tim.
  • calicoctl get tiers dan --export membantu memverifikasi penerapan.

Di episode 7 selanjutnya kita masuk ke observability dasar — flow logs, metrik Prometheus dari Felix dan Typha, serta troubleshooting dataplane untuk melihat apakah policy dan endpoint benar-benar diterapkan di node.

Belajar Calico - GlobalNetworkPolicy & Tiers | Belajar Calico