Halaman ini menunjukkan cara menggunakan kumpulan pribadi Cloud Build untuk mengakses resource dari jaringan Virtual Private Cloud pribadi.
Dalam tutorial ini, Anda akan membuat JFrog Artifactory di Compute Engine yang dihosting di jaringan VPC pribadi, lalu mengonfigurasi build yang berjalan di kumpulan pribadi untuk mengakses data dari Artifactory tersebut. Jfrog Artifactory adalah pengelola repositori biner open source.
Tujuan
- Menyiapkan Jfrog Artifactory di Compute Engine
- Mengupload file ke Artifactory
- Membuat kumpulan pribadi
- Hubungkan jaringan produsen layanan yang menghosting kumpulan pribadi ke jaringan Virtual Private Cloud Artifactory
- Tulis file konfigurasi build untuk mengakses data di Artifactory
Biaya
Dalam dokumen ini, Anda akan menggunakan komponen Google Cloudyang dapat ditagih berikut:
- Compute Engine
- Cloud Build
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Sebelum memulai
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Compute Engine, Cloud Build, Service Networking APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Compute Engine, Cloud Build, Service Networking APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. Buka Google Cloud console.
Klik tombol Activate Cloud Shell
di bagian atas jendela konsol Google Cloud .Sesi Cloud Shell akan terbuka di dalam frame baru di bagian bawah konsol Google Cloud dan menampilkan perintah command line.
Menginstal Google Cloud CLI.
Opsi A: Menggunakan Cloud Shell
Anda dapat mengikuti tutorial ini menggunakan Cloud Shell, yang telah diinstal sebelumnya dengan Google Cloud CLI yang digunakan dalam tutorial ini. Jika Anda menggunakan Cloud Shell, Anda tidak perlu menginstal alat command line ini di workstation.
Untuk menggunakan Cloud Shell:
Opsi B: Menggunakan alat command line secara lokal
Jika Anda lebih suka mengikuti tutorial ini di workstation, ikuti langkah-langkah berikut untuk menginstal alat yang diperlukan.
Membuat Artifactory pribadi
Buat instance Compute Engine dari container:
gcloud compute instances create-with-container jfrog \ --container-image docker.bintray.io/jfrog/artifactory-jcr:latest \ --zone us-central1-aSSH ke instance. Mungkin perlu waktu beberapa menit untuk menginisialisasi penampung.
gcloud compute ssh --zone us-central1-a jfrogUji koneksi dengan menjalankan perintah berikut. Setelah siap, penampung akan merespons dengan kode HTTP
200, diikuti dengan halaman HTML.curl -i http://localhost:8081Untuk membuat repositori di Artifactory, Anda harus menandatangani EULA (Perjanjian Lisensi Pengguna Akhir) JFrog:
curl -XPOST -vu admin:password http://localhost:8081/artifactory/ui/jcr/eula/acceptAnda akan melihat output yang mirip dengan berikut ini:
* Trying 127.0.0.1:8081... * Connected to localhost (127.0.0.1) port 8081 (#0) * Server auth using Basic with user 'admin' > POST /artifactory/ui/jcr/eula/accept HTTP/1.1 > Host: localhost:8081 > Authorization: Basic …. > User-Agent: curl/7.74.0 > Accept: */* > * Mark bundle as not supporting multiuse < HTTP/1.1 200 OK < X-JFrog-Version: Artifactory/7.19.9 71909900 < X-Artifactory-Id: …. < X-Artifactory-Node-Id: jfrog2 < SessionValid: false < Content-Length: 0 < Date: Fri, 25 Jun 2021 19:08:10 GMT * Connection #0 to host localhost left intact
Mengupload file ke Artifactory
Buat file txt untuk diupload ke Artifactory:
echo "Hello world" >> helloworld.txtJFrog dilengkapi dengan repositori contoh default. Upload ke repositori menggunakan kredensial default:
curl -u admin:password -X PUT \ "http://localhost:8081/artifactory/example-repo-local/helloworld.txt" \ -T helloworld.txtTindakan ini akan menampilkan:
{ "repo" : "example-repo-local", "path" : "/helloworld.txt", "created" : "2021-06-25T19:08:24.176Z", "createdBy" : "admin", "downloadUri" : "http://localhost:8081/artifactory/example-repo-local/helloworld.txt", "mimeType" : "text/plain", "size" : "12", "checksums" : { "sha1" : "...", "md5" : "...", "sha256" : "..." }, "originalChecksums" : { "sha256" : "..." }, "uri" : "http://localhost:8081/artifactory/example-repo-local/helloworld.txt" }Akhiri sesi SSH dengan mengetik
exit.Hapus alamat IP eksternal, sehingga Artifactory hanya dapat diakses dari sumber internal pribadi.
gcloud compute instances delete-access-config --zone us-central1-a jfrog
Coba akses data dari Artifactory
Tetapkan variabel lingkungan untuk menyimpan project ID dan nomor project Anda:
PROJECT_ID=$(gcloud config list --format='value(core.project)') PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')Berikan peran Compute Engine Viewer ke akun layanan yang Anda gunakan agar build dapat melihat alamat IP internal untuk instance JFrog Anda:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member=serviceAccount:SERVICE_ACCOUNT \ --role=roles/compute.viewerDengan SERVICE_ACCOUNT adalah email akun layanan.
Buat file bernama
cloudbuild.yamlyang berisi kode berikut untuk membaca dari Artifactory. Ini adalah file konfigurasi build.Langkah pertama mengambil alamat IP internal dari Artifactory yang Anda buat. Langkah kedua mengirimkan permintaan ke alamat tersebut untuk membaca file
helloworld.txtyang Anda buat. Langkah-langkah ini dipisahkan untuk mempermudah mengisolasi error izin dan jaringan. Jika langkah pertama gagal, hal ini disebabkan oleh error izin dan Anda harus memastikan bahwa akun layanan build memiliki akses ke resource Compute Engine, seperti yang ditunjukkan pada langkah sebelumnya. Jika langkah kedua gagal, hal ini disebabkan oleh error jaringan. Bagian selanjutnya dalam tutorial ini membahas konfigurasi jaringan.Mulai build menggunakan file konfigurasi build.
Secara default, saat Anda menjalankan build di Cloud Build, build tersebut dijalankan di lingkungan terhosting yang aman dengan akses ke internet publik. Setiap build berjalan di worker-nya sendiri dan diisolasi dari beban kerja lainnya. Kumpulan default memiliki batasan terkait seberapa banyak Anda dapat menyesuaikan lingkungan, terutama terkait akses jaringan pribadi. Dalam contoh ini, Anda mencoba mengakses jaringan pribadi dari pekerja publik.
Jalankan
cloudbuild.yamldengan perintah berikut. Seharusnya gagal.gcloud builds submit --no-sourceOutputnya akan terlihat seperti ini:
BUILD Starting Step #0 - "Get Private Artifactory Address" Step #0 - "Get Private Artifactory Address": Already have image (with digest): gcr.io/cloud-builders/gcloud Finished Step #0 - "Get Private Artifactory Address" Starting Step #1 - "Pull from Private Artifactory" Step #1 - "Pull from Private Artifactory": Already have image (with digest): gcr.io/cloud-builders/curl Step #1 - "Pull from Private Artifactory": % Total % Received % Xferd Average Speed Time Time Time Current Step #1 - "Pull from Private Artifactory": Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:02:09 --:--:-- 0curl: (7) Failed to connect to 10.128.0.2 port 8081: Connection timed out Finished Step #1 - "Pull from Private Artifactory" ERROR ERROR: build step 1 "gcr.io/cloud-builders/curl" failed: step exited with non-zero status: 7Anda dapat melihat dari waktu tunggu koneksi bahwa Cloud Build tidak dapat menjangkau alamat IP internal. Untuk mengakses resource pribadi ini, Anda harus menggunakan Kumpulan Pribadi Cloud Build.
Buat koneksi pribadi antara jaringan VPC Artifactory dan jaringan produsen layanan
Pertama, pastikan jaringan VPC Anda mengizinkan ingress. Buat aturan firewall untuk mengizinkan traffic internal masuk ke jaringan dengan instance
jfrog. Rentang10.0.0.0/16berada di ruang alamat pribadi, yang akan Anda gunakan untuk kumpulan pribadi Cloud Build dalam langkah-langkah di bawah.gcloud compute firewall-rules create allow-private-pools --direction=INGRESS \ --priority=1000 --network=default --action=ALLOW --rules=all --source-ranges=10.0.0.0/16Buat rentang yang dicadangkan untuk kumpulan pribadi Cloud Build yang akan digunakan oleh pekerja. Rentang yang dicadangkan harus berada di jaringan tempat Artifactory Anda berada. Dalam hal ini, jaringan komputasinya adalah
default.Anda memiliki dua opsi saat menetapkan rentang yang dicadangkan. Anda dapat menentukan rentang secara eksplisit dengan memberikan
--addressesdan--prefix-length, atau Anda dapat mengizinkan Google Cloud untuk menyediakan rentang yang tersedia berdasarkanprefix-lengthyang diberikan.Dalam contoh di bawah, Anda secara eksplisit menetapkan alamat agar cocok dengan aturan firewall yang Anda buat. Pool pribadi akan menggunakan ruang alamat ini dan traffic masuk tidak akan diblokir.
gcloud compute addresses create jfrog-ranges --global --purpose=VPC_PEERING \ --addresses=10.0.0.0 --prefix-length=16 --network=defaultLakukan peering jaringan VPC dengan Service Networking API.
Kumpulan pribadi Cloud Build menjalankan pekerja menggunakan Service Networking API. Hal ini memungkinkan Anda menawarkan layanan terkelola di alamat IP internal. Hal ini dicapai dengan melakukan peering pada VPC yang dikelola Google yang menjalankan pekerja kumpulan pribadi Cloud Build dengan VPC Anda sendiri. Mungkin perlu waktu beberapa menit untuk menyelesaikan prosesnya.
gcloud services vpc-peerings connect --service=servicenetworking.googleapis.com \ --ranges=jfrog-ranges --network=default
Buat kumpulan pribadi
Jaringan VPC
defaultkini siap digunakan dengan kumpulan pribadi Cloud Build. Buat kumpulan pribadi dan lakukan peering dengan jaringan VPC.gcloud builds worker-pools create jfrog-pool --region us-central1 \ --peered-network=projects/${PROJECT_ID}/global/networks/defaultUntuk menjalankan build dengan pool pribadi baru, Anda dapat meneruskan flag
--worker-pooldengan perintahgcloudatau memperbarui konfigurasicloudbuild.yamluntuk memastikan konfigurasi tersebut selalu menggunakan pool pribadi. Untuk tutorial ini, perbaruicloudbuild.yamldengan menambahkan opsi berikut:File lengkapnya akan terlihat seperti berikut:
Mulai build:
gcloud builds submit --no-sourceBuild akan menggunakan kumpulan pribadi baru, yang di-peering dengan jaringan VPC, sehingga dapat mengakses alamat IP internal Artifactory. Output akan berhasil dan
Step #1akan mencetak "Hello world".
Pembersihan
Agar tidak perlu membayar biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.
Jika Anda membuat project baru untuk tutorial ini, hapus project tersebut. Jika Anda menggunakan project yang ada dan ingin mempertahankannya tanpa ada perubahan yang ditambahkan dalam tutorial ini, hapus resource yang dibuat untuk tutorial.
Menghapus project
Cara termudah untuk menghilangkan penagihan adalah dengan menghapus project yang Anda buat untuk tutorial.
Untuk menghapus project:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Menghapus resource tutorial
Hapus layanan Compute Engine yang Anda deploy dalam tutorial ini:
gcloud compute instances delete jfrogHapus aturan firewall:
gcloud compute firewall-rules delete allow-private-pools --network=defaultHapus rentang yang dicadangkan:
gcloud compute addresses delete jfrog-ranges --globalHapus kumpulan pribadi Cloud Build:
gcloud builds worker-pools delete jfrog-pool
Langkah berikutnya
- Pelajari cara mengonfigurasi penyiapan jaringan pribadi yang umum digunakan dengan kumpulan pribadi
- Pelajari cara menggunakan kontrol layanan VPC dengan kumpulan pribadi