Aturan firewall yang dikelola pengguna untuk Layanan LoadBalancer GKE

Halaman ini menjelaskan cara menonaktifkan aturan firewall VPC izinkan traffic masuk yang dibuat GKE untuk Layanan LoadBalancer.

Menonaktifkan aturan firewall yang dibuat secara otomatis untuk Layanan LoadBalancer ini dapat berguna dalam situasi berikut:

Untuk menonaktifkan aturan firewall yang dibuat secara otomatis untuk Layanan LoadBalancer, Anda harus menentukan flag --disable-l4-lb-firewall-reconciliation saat membuat atau memperbarui cluster. Flag --disable-l4-lb-firewall-reconciliation tidak memengaruhi aturan firewall VPC yang dibuat secara otomatis lainnya, seperti aturan yang memfasilitasi komunikasi antar-node atau aturan yang mengizinkan health check untuk Layanan Anda.

Persyaratan

  • Untuk menggunakan Aturan firewall yang dikelola pengguna untuk Layanan LoadBalancer, cluster GKE Anda harus menggunakan versi 1.31.3-gke.105600 atau yang lebih baru.

Batasan

GKE mendukung penonaktifan pembuatan aturan firewall otomatis untuk jenis Layanan LoadBalancer berikut:

Anda tidak dapat menonaktifkan pembuatan aturan firewall otomatis untuk jenis Layanan LoadBalancer berikut:

  • Layanan LoadBalancer internal yang tidak menggunakan subsetelan GKE
  • Layanan LoadBalancer eksternal berbasis kumpulan target

Sebelum memulai

Sebelum memulai, pastikan Anda telah melakukan tugas berikut:

  • Aktifkan Google Kubernetes Engine API.
  • Aktifkan Google Kubernetes Engine API
  • Jika ingin menggunakan Google Cloud CLI untuk tugas ini, instal lalu lakukan inisialisasi gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan perintah gcloud components update. Versi gcloud CLI yang lebih lama mungkin tidak mendukung perintah yang ada dalam dokumen ini.

Strategi untuk pengelolaan aturan firewall manual

Sebelum Anda menonaktifkan pembuatan aturan firewall VPC otomatis untuk Layanan LoadBalancer di cluster GKE, berkolaborasilah dengan Admin Keamanan untuk mengembangkan strategi mengonfigurasi aturan firewall secara manual.

  1. Tentukan jenis kebijakan firewall yang akan digunakan: kebijakan firewall hierarkis, kebijakan firewall jaringan global, atau kebijakan firewall jaringan regional. Untuk mengetahui langkah-langkah membuat kebijakan firewall, lihat:

    Anda juga dapat menggunakan aturan firewall VPC, yang tidak menggunakan kebijakan apa pun.

  2. Aturan firewall yang Anda buat secara manual harus berupa aturan izinkan traffic masuk karena aturan firewall tolak traffic masuk yang tersirat rule melarang traffic masuk. Jika Anda telah menonaktifkan pembuatan aturan firewall VPC otomatis, traffic masuk tidak akan mencapai node Anda kecuali jika Anda telah membuat aturan firewall izinkan traffic masuk yang cocok dengan traffic untuk Layanan LoadBalancer Anda.

    Bergantung pada parameter aturan firewall, satu aturan firewall izinkan traffic masuk dapat berlaku untuk satu atau beberapa Layanan LoadBalancer. Untuk setiap aturan firewall izinkan traffic masuk yang Anda buat, tentukan parameter berikut:

    • Parameter target: Pastikan aturan firewall setidaknya menyertakan semua node cluster yang berisi Layanan LoadBalancer. Target yang didukung bergantung pada jenis kebijakan firewall tempat aturan berada atau jika Anda menggunakan aturan firewall VPC. Untuk mengetahui informasi tentang parameter target aturan dalam kebijakan firewall, lihat Target.

    • Protokol dan port: Sertakan semua protokol dan port tujuan yang digunakan oleh Layanan LoadBalancer yang harus diterapkan oleh aturan firewall.

    • Parameter tujuan: Anda dapat menggunakan salah satu strategi berikut untuk parameter tujuan:

      • Sertakan alamat IP semua Layanan LoadBalancer yang harus diterapkan oleh aturan firewall dalam parameter tujuan. Untuk menemukan alamat IP Layanan LoadBalancer, gunakan perintah berikut:
         kubectl get svc LOADBALANCER_NAME \
            -n NAMESPACE_NAME \
            -o jsonpath='{.status.loadBalancer.ingress[0].ip}
      
      • Anda dapat memilih untuk menghapus parameter tujuan. Jika parameter tujuan dihapus, parameter target akan menentukan tujuan secara implisit. Untuk mengetahui informasi selengkapnya, lihat Target dan alamat IP untuk aturan ingress rules.
    • Parameter sumber: Tentukan sumber (misalnya, alamat IP) yang digunakan oleh klien yang perlu terhubung ke Layanan Load Balancer yang harus diterapkan oleh aturan firewall.

    Untuk mengetahui langkah-langkah membuat aturan firewall, lihat:

  3. Untuk memastikan aturan firewall yang Anda buat secara manual berfungsi dengan benar, jalankan Uji Konektivitas Network Intelligence Center (NIC). Saat menjalankan Uji Konektivitas:

    • Tetapkan tujuan ke alamat IP Layanan LoadBalancer.
    • Tetapkan sumber ke alamat IP klien.

    Untuk mengetahui informasi selengkapnya, lihat Memecahkan masalah konektivitas masalah.

Menonaktifkan pembuatan aturan firewall VPC untuk Layanan LoadBalancer

Bagian ini menjelaskan langkah-langkah untuk menonaktifkan pembuatan aturan firewall VPC otomatis untuk Layanan LoadBalancer.

Membuat cluster GKE baru dengan pembuatan aturan firewall VPC dinonaktifkan

  1. Untuk menonaktifkan aturan firewall VPC yang dibuat secara otomatis untuk Layanan LoadBalancer di cluster yang baru dibuat, buat cluster dengan flag --disable-l4-lb-firewall-reconciliation:

    Autopilot:

    gcloud container clusters create-auto CLUSTER_NAME \
      --disable-l4-lb-firewall-reconciliation \
      --cluster-version=VERSION
    

    Standard:

    gcloud container clusters create CLUSTER_NAME \
      --disable-l4-lb-firewall-reconciliation \
      --enable-l4-ilb-subsetting \
      --cluster-version=VERSION
    

    Ganti kode berikut:

    • CLUSTER_NAME: nama cluster baru.
    • VERSION: versi GKE.
  2. Buat Layanan LoadBalancer eksternal atau internal:

  3. Pastikan GKE tidak membuat aturan firewall izinkan traffic masuk untuk Layanan LoadBalancer. (Aturan firewall izinkan traffic masuk yang dibuat secara otomatis memiliki nama dalam bentuk berikut: k8s2-[cluster-id]-[namespace]-[service-name]-[suffixhash]).

    Perintah berikut menampilkan daftar aturan firewall yang berisi k8s2:

    gcloud compute firewall-rules list --format="value(name)" | grep "k8s2"
    

    Respons hanya akan menampilkan aturan firewall health check dalam bentuk k8s2-[cluster-id]-[namespace]-[service-name]-[suffixhash]-fw jika parameter externalTrafficPolicy ditetapkan ke Local. Aturan ini menggunakan port TCP yang ditentukan oleh parameter spec.healthCheckNodePort. Jika tidak ditentukan, panel kontrol Kubernetes akan menetapkan port health check dari rentang port node.

    k8s2-rkdld6go-default-ilb-svc-dluvsefq-fw  default  INGRESS  1000  tcp:30868  False
    

    Jika parameter externalTrafficPolicy ditetapkan ke Cluster, aturan firewall health check berikut akan ditampilkan sebagai gantinya.

    k8s2-rkdld6go-l4-shared-hc-fw  default  INGRESS  1000  tcp:10256  False
    

    Untuk mengetahui informasi selengkapnya tentang aturan firewall yang dibuat untuk Layanan GKE, lihat Aturan firewall yang dibuat secara otomatis.

Memperbarui cluster GKE yang ada untuk menonaktifkan pembuatan aturan firewall VPC

Sebelum menonaktifkan pembuatan aturan firewall VPC, perhatikan poin-poin berikut tentang memperbarui cluster yang ada:

  • Saat Anda memperbarui cluster yang ada untuk menonaktifkan pembuatan aturan firewall VPC, GKE tidak akan menghapus aturan firewall yang ada yang dibuat GKE secara otomatis untuk Layanan LoadBalancer Anda.
  • GKE berhenti memperbarui aturan yang ada dan tidak akan membuat aturan baru untuk Layanan LoadBalancer baru.
  • Untuk mengaktifkan kembali pembuatan aturan firewall VPC, Anda dapat menggunakan --enable-l4-lb-firewall-reconciliation flag dengan perintah gcloud_name container clusters update.

Untuk menonaktifkan pembuatan aturan firewall otomatis di cluster yang ada:

  1. Perbarui cluster untuk menonaktifkan pembuatan dan pengelolaan aturan firewall otomatis untuk Layanan LoadBalancer:

    gcloud container clusters update CLUSTER_NAME \
    --disable-l4-lb-firewall-reconciliation \
    --cluster-version=supported_version
    

    Ganti kode berikut:

    • CLUSTER_NAME: nama cluster baru.
    • VERSION: versi GKE.
  2. Buat Layanan LoadBalancer eksternal atau internal:

  3. Pastikan GKE tidak membuat aturan firewall izinkan traffic masuk untuk Layanan LoadBalancer. (Aturan firewall izinkan traffic masuk yang dibuat secara otomatis memiliki nama dalam bentuk berikut: k8s2-[cluster-id]-[namespace]-[service-name]-[suffixhash]).

    Perintah berikut menampilkan daftar aturan firewall yang berisi k8s2:

    gcloud compute firewall-rules list --format="value(name)" | grep "k8s2"
    

    Respons hanya akan menampilkan aturan firewall health check dalam bentuk k8s2-[cluster-id]-[namespace]-[service-name]-[suffixhash]-fw jika parameter externalTrafficPolicy ditetapkan ke Local. Aturan ini menggunakan port TCP yang ditentukan oleh parameter spec.healthCheckNodePort. Jika tidak ditentukan, panel kontrol Kubernetes akan menetapkan port health check dari rentang port node.

    k8s2-rkdld6go-default-ilb-svc-dluvsefq-fw  default  INGRESS  1000  tcp:30868  False
    

    Jika parameter externalTrafficPolicy ditetapkan ke Cluster, aturan firewall health check berikut akan ditampilkan sebagai gantinya.

    k8s2-rkdld6go-l4-shared-hc-fw  default  INGRESS  1000  tcp:10256  False
    

    Untuk mengetahui informasi selengkapnya tentang aturan firewall yang dibuat untuk Layanan GKE, lihat Aturan firewall yang dibuat secara otomatis.

Memecahkan masalah konektivitas

Contoh berikut mengilustrasikan cara menggunakan Uji Konektivitas Network Intelligence Center untuk menguji konektivitas ke Layanan LoadBalancer eksternal:cluster:

  • Network Intelligence Center:

    1. Di Google Cloud konsol, buka Network Intelligence Center dan mulai uji konektivitas baru.
    2. Dari menu drop-down, pilih Alamat IP publik eksternal mana pun sebagai sumber dan pilih load balancer Anda dari tujuan.
    3. Jalankan kembali uji konektivitas.
  • gcloud CLI:

    Contoh perintah berikut membuat dan menjalankan pengujian dengan alamat IP publik workstation lokal Anda sebagai sumber dan alamat IP eksternal load balancer eksternal sebagai tujuan:

    gcloud network-management connectivity-tests create TEST_NAME \
    --source-ip-address=SOURCE_IP_ADDRESS \
    --source-network-type=NON_GCP_NETWORK \
    --destination-ip-address=$(kubectl get svc LOADBALANCER_NAME -o jsonpath='{.status.loadBalancer.ingress[0].ip}') \
    --destination-port=$(kubectl get svc LOADBALANCER_NAME -o jsonpath='{.spec.ports[0].targetPort}') \
    --destination-network=projects/PROJECT_ID/global/networks/NETWORK_NAME
    

    Ganti kode berikut:

    • TEST_NAME: Nama untuk uji konektivitas.
    • SOURCE_IP_ADDRESS: Alamat IP sistem yang perlu terhubung ke Layanan LoadBalancer eksternal. Contohnya
    • LOADBALANCER_NAME: Nama Layanan LoadBalancer eksternal.
    • PROJECT_ID: ID project dari project yang berisi jaringan VPC cluster. Jika cluster Anda menggunakan jaringan VPC Bersama, gunakan ID project host.
    • NETWORK_NAME: Nama jaringan VPC cluster Anda.

    Periksa hasil pengujian:

    gcloud network-management connectivity-tests describe TEST_NAME
    

Langkah berikutnya