Aturan firewall yang dikelola pengguna untuk Layanan LoadBalancer GKE


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

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

Untuk menonaktifkan aturan firewall yang dibuat otomatis untuk Layanan LoadBalancer, Anda harus menentukan tanda --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 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 gcloud components update.

Strategi untuk pengelolaan aturan firewall manual

Sebelum menonaktifkan pembuatan otomatis aturan firewall VPC untuk Layanan LoadBalancer di cluster GKE, bekerjasamalah dengan Admin Keamanan untuk mengembangkan strategi dalam 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 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 melarang traffic masuk. Jika Anda telah menonaktifkan pembuatan aturan firewall VPC secara 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 mencakup 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 dari aturan dalam kebijakan firewall, lihat Target.

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

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

      • Sertakan alamat IP semua Layanan LoadBalancer yang aturan firewallnya perlu diterapkan 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 menghilangkan parameter tujuan. Jika parameter tujuan dihilangkan, parameter target akan menentukan tujuan secara implisit. Untuk mengetahui informasi selengkapnya, lihat Target dan alamat IP untuk aturan ingress.
    • Parameter sumber: Tentukan sumber (misalnya, alamat IP) yang digunakan oleh klien yang perlu terhubung ke Layanan Load Balancer yang akan menerapkan aturan firewall.

    Untuk mengetahui langkah-langkah membuat aturan firewall, lihat:

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

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

    Untuk mengetahui informasi selengkapnya, lihat Memecahkan masalah konektivitas.

Menonaktifkan pembuatan aturan firewall VPC untuk Layanan LoadBalancer Anda

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

Membuat cluster GKE baru dengan penonaktifan pembuatan aturan firewall VPC

  1. Untuk menonaktifkan aturan firewall VPC yang dibuat secara otomatis untuk Layanan LoadBalancer di cluster yang baru dibuat, buat cluster dengan tanda --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 boleh menampilkan aturan firewall health check dalam bentuk k8s2-[cluster-id]-[namespace]-[service-name]-[suffixhash]-fw jika parameter externalTrafficPolicy disetel ke Local. Aplikasi ini menggunakan port TCP yang ditentukan oleh parameter spec.healthCheckNodePort. Jika tidak ditentukan, bidang 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 disetel ke Cluster, aturan firewall health check berikut akan ditampilkan.

    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 mengupdate 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 akan 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 flag --enable-l4-lb-firewall-reconciliation 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 boleh menampilkan aturan firewall health check dalam bentuk k8s2-[cluster-id]-[namespace]-[service-name]-[suffixhash]-fw jika parameter externalTrafficPolicy disetel ke Local. Aplikasi ini menggunakan port TCP yang ditentukan oleh parameter spec.healthCheckNodePort. Jika tidak ditentukan, bidang 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 disetel ke Cluster, aturan firewall health check berikut akan ditampilkan.

    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 menggambarkan cara menggunakan Uji Konektivitas Network Intelligence Center untuk menguji konektivitas ke cluster LoadBalancer Service eksternal:

  • Network Intelligence Center:

    1. Di konsol Google Cloud , 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: Project ID project yang berisi jaringan VPC cluster. Jika cluster Anda menggunakan jaringan VPC Bersama, gunakan project ID project host.
    • NETWORK_NAME: Nama jaringan VPC cluster Anda.

    Periksa hasil pengujian:

    gcloud network-management connectivity-tests describe TEST_NAME
    

Langkah berikutnya