Mengonfigurasi Gateway Konektivitas Jaringan

Dokumen ini menunjukkan cara mengonfigurasi Gateway Konektivitas Jaringan untuk cluster di Google Distributed Cloud Virtual untuk Bare Metal.

Terkadang, Anda memiliki Pod yang berjalan di cluster yang harus berkomunikasi dengan workload yang berjalan di Virtual Private Cloud (VPC). Komunikasi ini harus aman. Dan mungkin Anda perlu komunikasi ini terjadi melalui jaringan datar tanpa menggunakan server {i>proxy<i}. {i>Network Connectivity Gateway<i} memungkinkan komunikasi semacam ini.

Gateway Konektivitas Jaringan berjalan sebagai Pod di cluster Anda. Seperti yang ditunjukkan dalam diagram, solusi ini menyediakan tunnel IPsec untuk traffic dari Pod di cluster Anda ke VM di VPC. Saat Pod gateway menerima awalan untuk subnet VPC melalui sesi Border Gateway Protocol (BGP), Pod gateway akan menyiapkan penerusan dengan menggunakan Dataplane V2. Saat Pod lain mengirim traffic ke alamat dengan salah satu awalan tersebut, traffic akan diarahkan ke Pod gateway. Kemudian, Pod gateway akan merutekan traffic melalui tunnel IPsec menuju Google Cloud.

Diagram Gateway Konektivitas Jaringan untuk GDCV untuk Bare Metal

{i>Network Connectivity Gateway<i} tidak mendukung fitur dan kemampuan berikut:

  • IPv6 untuk VPN dengan ketersediaan tinggi (HA) (dan BGP)
  • MD5 untuk BGP
  • Deteksi Penerusan Dua Arah (BFD) untuk BGP

Membuat resource Google Cloud

Sebelum mengaktifkan Gateway Konektivitas Jaringan di cluster, Anda harus memiliki resource Google Cloud berikut:

  • Cloud Router

  • Gateway VPN dengan ketersediaan tinggi (HA)

  • Gateway VPN peer: satu antarmuka

  • Dua tunnel VPN

  • Dua sesi BGP: satu untuk setiap tunnel VPN

Untuk mengetahui informasi tentang cara membuat dan mengonfigurasi resource ini, lihat Membuat gateway VPN dengan ketersediaan tinggi (HA) ke gateway VPN peer.

Saat Anda membuat referensi ini, kumpulkan informasi berikut, dan sediakan untuk nanti:

  • Dua alamat IP eksternal yang ditetapkan Google Cloud ke gateway VPN dengan ketersediaan tinggi (HA) Anda.

  • Alamat IP publik untuk traffic IPsec/VPN yang keluar dari organisasi Anda. Alamat ini mungkin hasil dari penafsiran alamat jaringan (NAT).

  • Kunci yang dibagikan sebelumnya.

  • Nomor sistem otonom (ASN) yang Anda tetapkan ke Cloud Router untuk sesi BGP.

  • ASN yang telah Anda pilih untuk digunakan di cluster lokal untuk sesi BGP.

  • Untuk setiap sesi BGP, alamat link-local, seperti 169.254.1.1, yang akan digunakan oleh Cloud Router dan alamat link-local untuk digunakan di cluster lokal.

Untuk mengetahui informasi selengkapnya tentang konfigurasi sesi BGP, lihat Melihat konfigurasi sesi BGP.

Persyaratan cluster

Download alat command line Gateway Konektivitas Jaringan, ncgctl-v1.12.0-linux-amd64.tar.gz hanya kompatibel dengan GDCV versi 1.12 untuk Bare Metal. Jika membuat cluster versi 1.12.0 baru, Anda harus mengaktifkan Gateway Konektivitas Jaringan dengan anotasi dalam file konfigurasi cluster.

Untuk mengaktifkan Gateway Konektivitas Jaringan selama pembuatan cluster:

  1. Dalam file konfigurasi cluster, tambahkan anotasi baremetal.cluster.gke.io/enable-gng: "true".

    apiVersion: baremetal.cluster.gke.io/v1
    kind: Cluster
    metadata:
      annotations:
        baremetal.cluster.gke.io/enable-gng: "true"
      name: my-cluster
      namespace: cluster-my-cluster
    spec:
    ...
      anthosBareMetalVersion: 1.12.0
      ...
    
  2. Gunakan bmctl create untuk membuat cluster:

    bmctl create cluster -c CLUSTER_NAME
    

    Ganti CLUSTER_NAME dengan nama yang Anda tentukan saat membuat file konfigurasi cluster. Untuk mengetahui informasi selengkapnya tentang cara membuat cluster, lihat Ringkasan pembuatan cluster.

Download

Untuk mendownload ncgctl, alat command line Gateway Konektivitas Jaringan, ikuti langkah-langkah berikut:

  1. Download komponen Gateway Konektivitas Jaringan dan definisi resource kustom:

    gsutil cp gs://ncg-release/anthos-baremetal/ncgctl-v1.12.0-linux-amd64.tar.gz .
    
  2. Ekstrak arsip:

    tar -xvzf ncgctl-v1.12.0-linux-amd64.tar.gz
    

Instal

Untuk menginstal ncgctl, ikuti langkah-langkah berikut:

  1. Jalankan pemeriksaan preflight untuk memastikan cluster memenuhi prasyarat. Misalnya, pastikan Dataplane V2 diaktifkan.

    ./bin/ncgctl --verify --kubeconfig CLUSTER_KUBECONFIG
    

    Ganti CLUSTER_KUBECONFIG dengan jalur file kubeconfig cluster Anda.

  2. Menginstal {i>Network Connectivity Gateway<i}.

    ./bin/ncgctl --install --kubeconfig CLUSTER_KUBECONFIG
    
  3. Jika memiliki cluster versi 1.12.0, Anda dapat menggunakan perintah ncgctl berikut untuk mengaktifkan Gateway Konektivitas Jaringan:

    ./bin/ncgctl --enable-ncg-on-existing-cluster
    

    Perintah ncgctl menerima -e sebagai versi yang lebih singkat dari flag enable.

  4. Untuk melihat pintasan tambahan dan bantuan perintah lainnya, gunakan perintah berikut:

    ./bin/ncgctl --help
    

Membuat Secret untuk pre-shared key

Gateway di kedua ujung tunnel IPsec menggunakan Secret yang berisi kunci yang dibagikan sebelumnya untuk autentikasi.

Untuk membuat Secret, ikuti langkah-langkah berikut:

  1. Buat file bernama psk-secret.yaml dengan detail manifes Secret berikut:

    apiVersion: v1
    kind: Secret
    metadata:
      name: "ike-key"
      namespace: "kube-system"
    data:
      psk: PRE_SHARED_KEY
    

    Ganti PRE_SHARED_KEY dengan pre-shared key berenkode base64. Jika Anda memiliki kunci dalam teks biasa, enkode kunci tersebut ke format base64 sebelum membuat Secret ini. Misalnya, jika kunci Google Cloud membuat kunci untuk Anda, kunci tersebut akan ditampilkan dalam teks biasa, dan Anda harus mengenkodenya. Untuk mengenkode kunci dengan base64:

    echo -n PLAINTEXT_KEY | base64
    
  2. Buat Secret:

    kubectl --kubeconfig CLUSTER_KUBECONFIG apply -f psk-secret.yaml
    

Buat dua resource kustom OverlayVPNTunnel

Untuk memulai dua sesi IPsec, buat dua resource kustom OverlayVPNTunnel.

  1. Buat file bernama overlay-vpn-tunnels.yaml dengan detail manifes OverlayVPNTunnel berikut:

    apiVersion: networking.gke.io/v1alpha1
    kind: OverlayVPNTunnel
    metadata:
      namespace: "kube-system"
      name: TUNNEL_1_NAME
    spec:
      ikeKey:
        name: "ike-key"
        namespace: "kube-system"
      peer:
        publicIP: PEER_PUBLIC_IP_1
      self:
        publicIP: SELF_PUBLIC_IP
      localTunnelIP: SELF_LOCAL_TUNNEL_IP_1
    ---
    apiVersion: networking.gke.io/v1alpha1
    kind: OverlayVPNTunnel
    metadata:
      namespace: "kube-system"
      name: TUNNEL_2_NAME
    spec:
      ikeKey:
        name: "ike-key"
        namespace: "kube-system"
      peer:
        publicIP: PEER_PUBLIC_IP_2
      self:
        publicIP: SELF_PUBLIC_IP
      localTunnelIP: SELF_LOCAL_TUNNEL_IP_2
    

    Ganti kode berikut:

    • TUNNEL_NAME_1: nama pilihan Anda untuk OverlayVPNTunnel pertama.

    • TUNNEL_NAME_2: nama pilihan Anda untuk OverlayVPNTunnel kedua.

    • PEER_PUBLIC_IP_1: alamat IP publik dari satu antarmuka di gateway HA VPN Anda. Anda menentukan antarmuka ini saat membuat tunnel VPN pertama.

    • PEER_PUBLIC_IP_2: alamat IP publik antarmuka lainnya di gateway HA VPN Anda. Anda menentukan antarmuka ini saat membuat tunnel VPN kedua.

    • SELF_LOCAL_TUNNEL_IP_1: alamat link-local yang akan digunakan di cluster Anda untuk sesi BGP melalui tunnel pertama.

    • SELF_LOCAL_TUNNEL_IP_2: alamat link-local yang akan digunakan di cluster Anda untuk sesi BGP melalui tunnel kedua.

    • SELF_PUBLIC_IP: alamat IP publik untuk traffic IPsec/VPN yang keluar dari organisasi Anda. Alamat ini mungkin hasil dari penafsiran alamat jaringan (NAT).

  2. Buat dua OverlayVPNTunnels:

    kubectl --kubeconfig CLUSTER_KUBECONFIG apply -f overlay-vpn-tunnels.yaml
    
  3. Periksa status tunnel:

    kubectl --kubeconfig CLUSTER_KUBECONFIG get OverlayVPNTunnel \
        --namespace kube-system --output yaml
    

Buat dua resource kustom OverlayBGPPeer

Untuk memulai sesi BGP melalui setiap tunnel, buat dua resource kustom OverlayBGPPeer.

  1. Buat file bernama overlay-bgp-peers.yaml dengan detail manifes OverlayBGPPeer berikut.

    apiVersion: networking.gke.io/v1alpha1
    kind: OverlayBGPPeer
    metadata:
      namespace: "kube-system"
      name: BGP_PEER_1_NAME
    spec:
      localASN: LOCAL_ASN
      localIP: LOCAL_IP
      peerIP: PEER_IP_1
      peerASN: PEER_ASN
      vpnTunnel: TUNNEL_1_NAME
    ---
    apiVersion: networking.gke.io/v1alpha1
    kind: OverlayBGPPeer
    metadata:
      namespace: "kube-system"
      name: BGP_PEER_2_NAME
    spec:
      localASN: LOCAL_ASN
      localIP: LOCAL_IP
      peerIP: PEER_IP_2
      peerASN: PEER_ASN
      vpnTunnel: TUNNEL_2_NAME
    

    Ganti kode berikut:

    • BGP_PEER_1_NAME: nama pilihan Anda untuk OverlayBGPPeer pertama.

    • BGP_PEER_2_NAME: nama pilihan Anda untuk OverlayBGPPeer kedua.

    • LOCAL_ASN: ASN yang akan digunakan di cluster Anda untuk sesi BGP.

    • LOCAL_IP: alamat IP publik untuk traffic IPsec/VPN yang keluar dari organisasi Anda. Alamat ini mungkin merupakan hasil dari penafsiran alamat jaringan (NAT).

    • PEER_IP_1: alamat IP publik dari satu antarmuka di gateway VPN dengan ketersediaan tinggi (HA) Anda. Anda menentukan antarmuka ini saat membuat tunnel VPN pertama.

    • PEER_IP_2: alamat IP publik antarmuka lainnya di gateway VPN dengan ketersediaan tinggi (HA) Anda. Anda menentukan antarmuka ini saat membuat tunnel VPN kedua.

    • PEER_ASN: ASN yang ditetapkan ke Cloud Router untuk sesi BGP.

    • TUNNEL_1_NAME: nama OverlayVPNTunnel pertama yang Anda buat sebelumnya.

    • TUNNEL_2_NAME: nama OverlayVPNTunnel kedua yang Anda buat sebelumnya.

  2. Buat resource kustom OverlayBGPPeer:

    kubectl --kubeconfig CLUSTER_KUBECONFIG apply -f overlay-bgp-peers.yaml
    
  3. Periksa status sesi BGP:

    kubectl --kubeconfig CLUSTER_KUBECONFIG get OverlayBGPPeer --namespace kube-system \
        --output yaml
    

Memeriksa status Gateway Konektivitas Jaringan

Penginstalan membuat resource kustom NetworkConnectivityGateway.

  • Lihat resource kustom NetworkConnectivityGateway:

    kubectl --kubeconfig CLUSTER_KUBECONFIG get NetworkConnectivityGateway --namespace kube-system \
        --output yaml
    

    Output-nya mirip dengan yang berikut ini. Pastikan bahwa Anda melihat Status: Healthy:

    apiVersion: networking.gke.io/v1alpha1
    kind: NetworkConnectivityGateway
    metadata:
      namespace: kube-system
      name: default
    spec:
    status:
        CurrNode: worker1-node
        CreatedTime: 2021-09-07T03:18:15Z
        LastReportTime: 2021-09-21T23:57:54Z
        Status:  Healthy
    

Memeriksa log Gateway Konektivitas Jaringan

Pod gateway termasuk dalam DaemonSet bernama ncgd, sehingga nama Pod dimulai dengan ncgd.

Untuk melihat log Gateway Konektivitas Jaringan, ikuti langkah-langkah berikut:

  1. Temukan nama Pod gateway:

    kubectl --kubeconfig CLUSTER_KUBECONFIG pods --namespace kube-system | grep ncgd
    
  2. Lihat log dari Pod gateway:

    kubectl --kubeconfig CLUSTER_KUBECONFIG logs GATEWAY_POD --namespace kube-system \
        --output yaml
    

    Ganti GATEWAY_POD dengan nama Pod gateway.

Uninstal

Untuk meng-uninstal Gateway Konektivitas Jaringan dari cluster:

./bin/ncgctl –-uninstall --kubeconfig CLUSTER_KUBECONFIG

Pemecahan masalah

Untuk tips pemecahan masalah terkait Gateway Konektivitas Jaringan, lihat Memecahkan Masalah Gateway Konektivitas Jaringan.