Memanggil proxy API dengan akses khusus internal

Halaman ini berlaku untuk Apigee, tetapi tidak untuk Apigee Hybrid.

Baca dokumentasi Apigee Edge.

Dokumen ini menjelaskan cara memanggil proxy API dari klien yang berjalan di jaringan internal Anda. Langkah-langkah ini berguna untuk menguji penyiapan Anda jika Apigee disediakan untuk menggunakan perutean jaringan internal. Anda dapat mengikuti langkah-langkah dalam dokumen ini jika Apigee telah disediakan dengan salah satu konfigurasi perutean jaringan berikut:

Opsi penyediaan Opsi jaringan Langkah-langkah penyediaan
Langganan berbayar Dengan peering VPC Pemilihan rute internal (VPC)
Pemilihan rute internal (PSC)
Pay-as-you-go Dengan peering VPC Pemilihan rute internal (VPC)
Pemilihan rute internal (PSC)
Evaluasi Dengan peering VPC Mengonfigurasi pemilihan rute (internal)
Evaluasi Tanpa peering VPC Pemilihan rute internal (PSC)

Lihat juga Opsi jaringan.

Sebelum memulai

Lakukan langkah-langkah penyiapan awal berikut:

  1. Jika Anda belum melakukannya, lakukan inisialisasi Cloud SDK, seperti yang dijelaskan dalam Melakukan inisialisasi gcloud CLI, atau pastikan bahwa project Google Cloud yang Anda buat di Prasyarat adalah project default untuk gcloud.
  2. Tentukan variabel lingkungan lokal berikut:

    export PROJECT_ID=YOUR_PROJECT_ID
    export AUTH="Authorization: Bearer $(gcloud auth print-access-token)"
    export SUBNET=NETWORK_NAME
    export INSTANCE_NAME=INSTANCE_NAME
    export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")

    Dengan keterangan:

    • PROJECT_ID adalah project ID Cloud yang Anda buat sebagai bagian dari Prasyarat.
    • AUTH menentukan header Authentication dengan token pemilik. Anda akan menggunakan header ini ketika memanggil API Apigee. Perlu diperhatikan bahwa masa berlaku token telah berakhir setelah jangka waktu tertentu dan jika token sudah habis masa berlakunya, Anda cukup membuatnya kembali menggunakan perintah yang sama. Untuk mengetahui informasi selengkapnya, lihat halaman referensi untuk perintah print-access-token.
    • SUBNET adalah subnet yang ditentukan selama penyediaan. Misalnya: default
    • INSTANCE_NAME: Nama instance baru Anda. Contoh, my-runtime-instance. Nama harus diawali dengan huruf kecil, maksimal 32 karakter, dan hanya boleh menyertakan huruf kecil, angka, dan tanda hubung. Nama ini tidak boleh diawali atau diakhiri dengan tanda hubung dan panjangnya minimal harus dua karakter.
    • PROJECT_NUMBER adalah nomor project Cloud yang Anda buat sebagai bagian dari Prasyarat. Contoh ini memberikan perintah gcloud untuk mendapatkan nomor project Anda.
  3. Dapatkan nilai properti location dari instance Apigee Anda. Nilai ini adalah region tempat instance berada, seperti us-west1:
    curl -H "$AUTH" https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances
  4. Pilih zona dalam region instance, dan masukkan nama zona dalam variabel. Zona harus berada dalam instance. Contoh:
    export VM_ZONE="us-west1-b"

    Jika memerlukan bantuan dalam mengidentifikasi zona dalam region instance, Anda dapat menggunakan perintah gcloud ini untuk menampilkan nama zona untuk region runtime yang dikonfigurasi. Contoh:

    VM_ZONE=$(gcloud compute zones list | grep "us-west1" | head -n 1 | awk '{print $1}')

Membuat VM dan memanggil proxy API

Selanjutnya, buat VM baru di dalam jaringan VPC Anda menggunakan perintah gcloud beta compute. VM bertindak sebagai jembatan yang memungkinkan Anda mengirim permintaan ke IP load balancer internal. Setelah VM disiapkan, Anda dapat memanggil proxy API yang di-deploy:

  1. Contoh berikut membuat VM baru dengan beberapa opsi umum dan menggunakan variabel lingkungan yang Anda tentukan sebelumnya sebagai input.
    gcloud beta compute --project=$PROJECT_ID \
      instances create $INSTANCE_NAME \
      --zone=$VM_ZONE \
      --machine-type=e2-micro \
      --subnet=$SUBNET \
      --network-tier=PREMIUM \
      --no-restart-on-failure \
      --maintenance-policy=TERMINATE \
      --preemptible \
      --service-account=$PROJECT_NUMBER-compute@developer.gserviceaccount.com \
      --scopes=https://www.googleapis.com/auth/cloud-platform \
      --tags=http-server,https-server \
      --image=debian-10-buster-v20210217 \
      --image-project=debian-cloud \
      --boot-disk-size=10GB \
      --boot-disk-type=pd-standard \
      --boot-disk-device-name=$INSTANCE_NAME \
      --no-shielded-secure-boot \
      --shielded-vtpm \
      --shielded-integrity-monitoring \
      --reservation-affinity=any
  2. Buka koneksi yang aman ke VM baru yang baru saja Anda buat.

    gcloud compute ssh $INSTANCE_NAME --zone=$VM_ZONE --project=$PROJECT_ID
  3. Di shell VM, instal utilitas jq. Parameter ini digunakan dalam langkah-langkah berikutnya:
    sudo apt-get update -y
    sudo apt-get install -y jq
    
  4. Dalam shell VM, buat variabel lingkungan berikut untuk memudahkan penyalinan/tempel permintaan proxy API:
    export AUTH="Authorization: Bearer $(gcloud auth print-access-token)"
    export PROJECT_ID=YOUR_PROJECT_ID
    export ENV_GROUP_HOSTNAME=$(curl -H "$AUTH" https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups -s | jq -r '.environmentGroups[0].hostnames[0]')
    
  5. Pastikan variabel ditetapkan dengan benar:
    echo $AUTH
    echo $PROJECT_ID
    echo $ENV_GROUP_HOSTNAME
  6. Memanggil proxy API. Pilih opsi di bawah yang sesuai dengan cara Anda mengonfigurasi perutean selama penyediaan Apigee.

    Opsi untuk penginstalan yang menggunakan peering VPC

    • (Opsi TLS #1) Jika Anda mengonfigurasi load balancer internal (ILB) dalam project, seperti yang dijelaskan dalam Perutean internal (VPC), panggil proxy menggunakan IP ILB tersebut. Opsi ini menggunakan sertifikat CA yang berada di bawah kendali Anda dan yang dibuat saat load balancer internal dibuat:
      1. Dapatkan IP ILB di project Anda, seperti yang dijelaskan dalam Menyiapkan Load Balancing HTTP(S) Internal dengan backend grup instance VM.
      2. Panggil proxy API:
        curl -H "Host: $ENV_GROUP_HOSTNAME" \
          https://INTERNAL_LOAD_BALANCER_IP/PROXY_BASEPATH
    • (Opsi TLS #2) Gunakan nama domain default yang sepenuhnya memenuhi syarat, yang di-resolve ke load balancer internal dalam project Apigee. Dengan opsi ini, TLS digunakan menggunakan sertifikat yang ditandatangani sendiri Apigee yang dibuat secara internal. Anda tidak memiliki kontrol atas sertifikat ini.
      1. Dapatkan IP load balancer internal di project Apigee:
        export INTERNAL_LOAD_BALANCER_IP=$(curl -H "$AUTH" https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances -s | jq -r '.instances[0].host')
      2. Dapatkan Sertifikat CA yang dibuat saat pembuatan organisasi dengan perintah berikut:
        curl -H "$AUTH" https://apigee.googleapis.com/v1/organizations/$PROJECT_ID | jq -r .caCertificate | base64 -d > cacert.crt
      3. Kirim permintaan ke proxy API yang di-deploy, dengan example.$PROJECT_ID.apigee.internal adalah nama domain internal, default, dan yang sepenuhnya memenuhi syarat yang me-resolve ke load balancer internal.
        curl -is -H "Host: $ENV_GROUP_HOSTNAME" \
          https://example.$PROJECT_ID.apigee.internal/PROXY_BASEPATH \
          --cacert cacert.crt \
          --resolve example.$PROJECT_ID.apigee.internal:443:$INTERNAL_LOAD_BALANCER_IP
    • (Opsi Non-TLS) Jika tidak memerlukan TLS, Anda dapat menggunakan flag -k pada perintah curl untuk menonaktifkan TLS dan mungkin menghindari masalah SSL:
      1. Dapatkan IP load balancer internal di project Apigee:
        export INTERNAL_LOAD_BALANCER_IP=$(curl -H "$AUTH" https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances -s | jq -r '.instances[0].host')
      2. Panggil proxy API:
        curl -i -k \
          -H "Host: $ENV_GROUP_HOSTNAME" \
          https://$INTERNAL_LOAD_BALANCER_IP/PROXY_BASEPATH
    • (Opsi endpoint layanan) Jika Anda menyediakan organisasi berbayar atau evaluasi dengan PSC dan memilih opsi perutean endpoint layanan:
      1. Mendapatkan IP endpoint layanan. Jika Anda perlu mencari IP endpoint, lihat Mencantumkan endpoint.
      2. Panggil proxy API:
        curl -i -k \
           -H "Host: $ENV_GROUP_HOSTNAME" \
           https://SERVICE_ENDPOINT_IP/PROXY_BASEPATH

        Contoh:

        curl -H "Host: $ENV_GROUP_HOSTNAME" https://10.138.0.2/helloworld -k

    Opsi untuk penginstalan yang tidak menggunakan peering non-VPC

    • (Opsi endpoint layanan) Jika Anda menyediakan organisasi berbayar atau evaluasi dengan PSC dan memilih opsi perutean endpoint layanan:
      1. Mendapatkan IP endpoint layanan. Jika Anda perlu mencari IP endpoint, lihat Mencantumkan endpoint.
      2. Panggil proxy API:
        curl -i -k \
            -H "Host: $ENV_GROUP_HOSTNAME" \
            https://SERVICE_ENDPOINT_IP/PROXY_BASEPATH

        Contoh:

        curl -H "Host: $ENV_GROUP_HOSTNAME" https://10.138.0.2/helloworld -k

    Jika Anda mengalami error selama bagian proses ini, pastikan semua variabel lingkungan yang Anda buat dan gunakan dalam perintah memiliki nilai yang valid. Lihat juga Pemecahan masalah.

    Langkah berikutnya

    Coba buat proxy yang kemudian dapat Anda deploy, atau ikuti tur tutorial Apigee yang akan memperkenalkan Anda pada fitur-fitur Apigee, seperti menjaga dari lonjakan traffic yang tiba-tiba atau mendapatkan gambaran mendetail tentang alur permintaan/respons.

    (Lanjutan) Jika berencana mengubahnya menjadi penyiapan produksi, Anda dapat mengonfigurasi perimeter keamanan di sekitar cluster baru dan layanan Cloud terkait. Hal ini dapat dilakukan dengan Kontrol Layanan VPC.