Episode ini membahas HostEndpoint: melindungi node Kubernetes itu sendiri, policy untuk traffic ke node, mengunci port manajemen, menerapkan policy ke host VM, dan mengatur koneksi node-to-node.

Sejauh ini semua policy melindungi pod. Tapi node Kubernetes sendiri — kubelet, API server, SSH, dan port manajemen lain — juga butuh perlindungan. Siapa yang membatasi akses SSH ke node? Di kebanyakan klaster, jawabannya "tidak ada" sampai firewall eksternal turun tangan.
Episode 14 memperkenalkan HostEndpoint: cara Calico melindungi interface host itu sendiri. Dengan ini, keamanan yang kalian bangun untuk pod diperluas ke node, dalam satu model policy yang sama.
HostEndpoint adalah representasi interface jaringan pada node, lengkap dengan label dan expected IP. Setelah dibuat, semua policy yang menyeleksi label host endpoint berlaku untuk traffic yang masuk atau keluar interface itu. Pola paling sederhana — tandai interface utama semua node:
apiVersion: projectcalico.org/v3
kind: HostEndpoint
metadata:
name: eth0-all-nodes
labels:
host-endpoint: eth0
spec:
node: '*'
interfaces:
- eth0
expectedIPs:
- 172.18.0.0/16node: '*' mencocokkan semua node Calico. Endpoint ini menandai interface eth0 sebagai unit keamanan yang bisa diseleksi policy.
calicoctl apply -f eth0-all-nodes.yaml
calicoctl get hostendpoint -o widecalicoctl get hostendpoint menampilkan endpoint host beserta node dan interface-nya. Kalau kolomnya kosong, selector node tidak cocok.
Policy yang menyasar host endpoint memakai selector pada hostEndpoints (bukan selector untuk workload):
apiVersion: projectcalico.org/v3
kind: GlobalNetworkPolicy
metadata:
name: security-allow-ssh-office
spec:
tier: security
order: 100
selector: host-endpoint == 'eth0'
types:
- Ingress
ingress:
- action: Allow
protocol: TCP
source:
selector: office-ip == 'true'
destination:
ports:
- 22Dengan default deny global dari episode 6, policy ini memastikan SSH hanya bisa masuk dari sumber yang ditandai. Traffic lain ke port 22 ditolak.
Sumber "office-ip" cukup didefinisikan sekali sebagai GlobalNetworkSet (episode 6), misalnya calicoctl apply -f office-nets.yaml dengan nets 203.0.113.0/24 dan label office-ip: true. Policy dan set ini bekerja tanpa menyentuh firewall node — semuanya ditangani Felix.
Untuk produksi, port yang wajib dipertimbangkan dikunci: SSH (22), kubelet (10250), API server (6443), node-exporter (9100), dan port Kubernetes lain. Contoh policy untuk traffic masuk API server hanya dari subnet admin:
apiVersion: projectcalico.org/v3
kind: GlobalNetworkPolicy
metadata:
name: security-allow-apiserver-admin
spec:
tier: security
order: 110
selector: host-endpoint == 'eth0'
types:
- Ingress
ingress:
- action: Allow
protocol: TCP
source:
selector: admin-nets == 'true'
destination:
ports:
- 6443Peringatan terpenting di episode ini: policy host endpoint bisa mengunci kalian keluar dari node sendiri. Selalu uji dengan hati-hati dan sediakan jalur pemulihan — misalnya policy break-glass dari subnet jump host dengan order paling kecil. Setelah diterapkan, pastikan kubectl get nodes masih menampilkan node dan kubelet masih terhubung.
Kadang workload perlu mengakses node — misalnya untuk metrics. Buat policy yang menyeleksi host endpoint sebagai tujuan:
apiVersion: projectcalico.org/v3
kind: GlobalNetworkPolicy
metadata:
name: platform-allow-node-exporter
spec:
tier: platform
selector: host-endpoint == 'eth0'
types:
- Ingress
ingress:
- action: Allow
protocol: TCP
source:
selector: app == 'prometheus'
destination:
ports:
- 9100Traffic antar node (kubelet ke kubelet, misalnya) perlu diizinkan eksplisit saat node diketatkan:
apiVersion: projectcalico.org/v3
kind: GlobalNetworkPolicy
metadata:
name: security-allow-node-to-node
spec:
tier: security
order: 90
selector: host-endpoint == 'eth0'
types:
- Ingress
- Egress
ingress:
- action: Allow
source:
selector: host-endpoint == 'eth0'
egress:
- action: Allow
destination:
selector: host-endpoint == 'eth0'Urutan order: 90 — lebih kecil dari order default deny (100) — membuat traffic node-to-node diizinkan sebelum deny dievaluasi.
Episode 14 memperluas keamanan Calico ke node: HostEndpoint sebagai unit keamanan host, policy untuk port manajemen, dan pengaturan traffic workload-ke-node serta node-to-node dalam satu model policy.
Inti yang harus dibawa pulang:
hostEndpoints menyeleksi host endpoint, bukan workload.Di episode 15 selanjutnya kita membahas encryption dan network security lanjutan — WireGuard untuk enkripsi traffic node-to-node, kombinasi dengan encapsulation, dan penyusunan posture keamanan berlapis yang menggabungkan network, host, dan workload.