Dokumen ini menunjukkan cara mengonfigurasi Gateway Konektivitas Jaringan untuk cluster di Google Distributed Cloud.
Terkadang Anda memiliki Pod yang berjalan di sebuah cluster yang harus berkomunikasi dengan workload yang berjalan di Virtual Private Cloud (VPC). Komunikasi ini harus aman. Dan mungkin Anda membutuhkan komunikasi ini untuk terjadi melalui jaringan datar tanpa menggunakan server {i>proxy<i}. {i>Network Connectivity Gateway<i} memungkinkan jenis komunikasi.
Gateway Konektivitas Jaringan berjalan sebagai Pod di cluster Anda. Seperti yang ditampilkan dalam diagram berikut, menyediakan IPsec tunnel untuk traffic dari Pod di cluster Anda ke VM di VPC. Saat Pod gateway menerima awalan untuk subnet VPC melalui Gateway Border Protokol (BGP), lalu menyiapkan penerusan dengan menggunakan Dataplane V2. Saat Pod lain mengirim traffic ke alamat dengan salah satu awalan tersebut, traffic diarahkan ke gateway Pod. Lalu, Pod gateway akan mengarahkan traffic melalui tunnel IPsec menuju Google Cloud.
Gateway Konektivitas Jaringan 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 dalam cluster, Anda harus memiliki hal berikut Referensi Google Cloud:
Cloud Router
Gateway VPN HA
Gateway VPN peer: satu antarmuka
Dua tunnel VPN
Dua sesi BGP: satu untuk setiap tunnel VPN
Untuk 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 minta tersedia untuk nanti:
Dua alamat IP eksternal yang ditetapkan Google Cloud ke gateway VPN dengan ketersediaan tinggi (HA).
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 Anda untuk sesi BGP.
Untuk setiap sesi BGP, link-local address, seperti
169.254.1.1
, untuk digunakan oleh Cloud Router dan alamat link-local untuk digunakan di cluster lokal Anda.
Untuk mengetahui informasi tentang cara menemukan detail konfigurasi sesi BGP Anda, baca Melihat konfigurasi sesi BGP.
Persyaratan cluster
Download alat command line Gateway Konektivitas Jaringan, ncgctl-v1.12.0-linux-amd64.tar.gz
adalah
hanya kompatibel dengan Google Distributed Cloud versi 1.12. Jika Anda membuat
cluster 1.12.0 yang baru, Anda mengaktifkan Gateway Konektivitas Jaringan dengan anotasi di
file konfigurasi cluster Anda.
Untuk mengaktifkan Gateway Konektivitas Jaringan selama pembuatan cluster:
Di 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 ...
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 selengkapnya untuk mengetahui informasi tentang cara membuat cluster, lihat Ringkasan pembuatan cluster.
Download
Untuk mendownload ncgctl
, alat command line Gateway Konektivitas Jaringan, ikuti langkah-langkah berikut:
Download komponen Gateway Konektivitas Jaringan dan definisi resource kustom:
gcloud storage cp gs://ncg-release/anthos-baremetal/ncgctl-v1.12.0-linux-amd64.tar.gz .
Ekstrak arsip:
tar -xvzf ncgctl-v1.12.0-linux-amd64.tar.gz
Instal
Untuk menginstal ncgctl
, ikuti langkah-langkah berikut:
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 {i> cluster kubeconfig<i} Anda.Instal Gateway Konektivitas Jaringan.
./bin/ncgctl --install --kubeconfig CLUSTER_KUBECONFIG
Jika sudah memiliki cluster versi 1.12.0, Anda dapat menggunakan Perintah
ncgctl
untuk mengaktifkan Gateway Konektivitas Jaringan:./bin/ncgctl --enable-ncg-on-existing-cluster
Perintah
ncgctl
menerima-e
sebagai versi singkat dari flag pengaktif.Untuk melihat pintasan tambahan dan bantuan perintah lainnya, gunakan perintah berikut berikut:
./bin/ncgctl --help
Buat Secret untuk kunci yang dibagikan sebelumnya
Gateway di kedua ujung tunnel IPsec menggunakan Secret yang berisi {i>pre-shared key<i} untuk otentikasi.
Untuk membuat Secret, ikuti langkah-langkah berikut:
Buat file bernama
psk-secret.yaml
dengan manifes Secret berikut detail:apiVersion: v1 kind: Secret metadata: name: "ike-key" namespace: "kube-system" data: psk: PRE_SHARED_KEY
Ganti
PRE_SHARED_KEY
dengan kunci bersama yang dienkode base64. Jika Anda memiliki kunci dalam teks polos, enkode kunci tersebut ke format base64 sebelum Anda membuat Secret ini. Misalnya, jika konsol Google Cloud membuat itu berupa teks biasa, dan Anda harus mengenkodenya. Mengenkode base64 kunci:echo -n PLAINTEXT_KEY | base64
Buat Secret:
kubectl --kubeconfig CLUSTER_KUBECONFIG apply -f psk-secret.yaml
Membuat dua resource kustom OverlayVPNTunnel
Untuk memulai dua sesi IPsec, buat dua resource kustom OverlayVPNTunnel
.
Buat file bernama
overlay-vpn-tunnels.yaml
dengan kode berikut Detail manifesOverlayVPNTunnel
: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 untukOverlayVPNTunnel
pertama.TUNNEL_NAME_2
: nama pilihan untukOverlayVPNTunnel
kedua.PEER_PUBLIC_IP_1
: publik Alamat IP dari satu antarmuka di gateway VPN dengan ketersediaan tinggi (HA) Anda. Anda menentukan antarmuka ini saat Anda membuat tunnel VPN pertama Anda.PEER_PUBLIC_IP_2
: publik Alamat IP antarmuka lain di gateway VPN HA 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 melewati terowongan pertama.SELF_LOCAL_TUNNEL_IP_2
: alamat link-local yang akan digunakan di cluster Anda untuk sesi BGP melewati terowongan kedua.SELF_PUBLIC_IP
: IP publik untuk traffic IPsec/VPN yang keluar dari organisasi Anda. Alamat ini mungkin merupakan hasil dari penafsiran alamat jaringan (NAT).
Buat keduanya
OverlayVPNTunnels
:kubectl --kubeconfig CLUSTER_KUBECONFIG apply -f overlay-vpn-tunnels.yaml
Periksa status tunnel:
kubectl --kubeconfig CLUSTER_KUBECONFIG get OverlayVPNTunnel \ --namespace kube-system --output yaml
Membuat dua resource kustom OverlayBGPPeer
Untuk memulai sesi BGP pada setiap tunnel, buat dua OverlayBGPPeer
resource kustom.
Buat file bernama
overlay-bgp-peers.yaml
dengan kode berikut Detail manifesOverlayBGPPeer
.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 untukOverlayBGPPeer
pertama.BGP_PEER_2_NAME
: nama pilihan Anda untukOverlayBGPPeer
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 adalah hasil penafsiran alamat jaringan (NAT).PEER_IP_1
: alamat IP publik di satu antarmuka di gateway VPN HA Anda. Anda telah menentukan ini saat Anda membuat tunnel VPN pertama Anda.PEER_IP_2
: alamat IP publik antarmuka lainnya di gateway VPN HA Anda. Anda menentukan antarmuka ini saat Anda 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.
Buat resource kustom
OverlayBGPPeer
:kubectl --kubeconfig CLUSTER_KUBECONFIG apply -f overlay-bgp-peers.yaml
Periksa status sesi BGP:
kubectl --kubeconfig CLUSTER_KUBECONFIG get OverlayBGPPeer --namespace kube-system \ --output yaml
Memeriksa status Gateway Konektivitas Jaringan
Penginstalan ini membuat resource kustom NetworkConnectivityGateway
.
Lihat resource kustom
NetworkConnectivityGateway
:kubectl --kubeconfig CLUSTER_KUBECONFIG get NetworkConnectivityGateway --namespace kube-system \ --output yaml
Outputnya mirip dengan yang berikut ini. Pastikan 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 dimiliki oleh DaemonSet yang bernama ncgd
, jadi nama Pod dimulai
dengan ncgd
.
Untuk melihat log Gateway Konektivitas Jaringan, ikuti langkah-langkah berikut:
Temukan nama gateway Pod:
kubectl --kubeconfig CLUSTER_KUBECONFIG pods --namespace kube-system | grep ncgd
Lihat log dari Pod gateway:
kubectl --kubeconfig CLUSTER_KUBECONFIG logs GATEWAY_POD --namespace kube-system \ --output yaml
Ganti
GATEWAY_POD
dengan nama gateway Pod.
Uninstal
Untuk meng-uninstal Gateway Konektivitas Jaringan dari cluster:
./bin/ncgctl –-uninstall --kubeconfig CLUSTER_KUBECONFIG
Pemecahan masalah
Untuk tips pemecahan masalah yang terkait dengan Gateway Konektivitas Jaringan, lihat Memecahkan Masalah Gateway Konektivitas Jaringan.