Dokumen ini menunjukkan cara membuat dan menggunakan kredensial untuk mengakses Cloud Storage menggunakan VM Runtime di GDC. Plugin Cloud Storage memungkinkan Anda menggunakan Pengimpor Data yang Dikontainerkan (CDI) untuk mengimpor image VM dari bucket Cloud Storage. Anda kemudian dapat membuat disk virtual dari image ini di Cloud Storage dan melampirkannya ke VM yang berjalan di cluster Anda. CDI diaktifkan secara otomatis di cluster yang menjalankan VM Runtime di GDC.
Sebelum memulai
Untuk menyelesaikan dokumen ini, Anda memerlukan akses ke resource berikut:
- Akses ke cluster Google Distributed Cloud versi 1.12.0 (
anthosBareMetalVersion: 1.12.0) atau yang lebih tinggi. Anda dapat menggunakan jenis cluster apa pun yang dapat menjalankan workload. Jika diperlukan, coba Google Distributed Cloud di Compute Engine atau lihat ringkasan pembuatan cluster. - Akun layanan dan kunci akun layanan yang ingin Anda gunakan untuk akses Cloud Storage. Jika perlu, konfigurasi akun layanan yang dapat mengakses bucket Cloud Storage.
Ringkasan kredensial
Untuk mengakses Cloud Storage, Anda menggunakan akun layanan yang menyediakan kredensial ke bucket penyimpanan. Akun layanan memerlukan hak istimewa yang berbeda untuk berhasil mengakses bucket penyimpanan:
- Bucket penyimpanan publik: Anda menggunakan akun layanan untuk identifikasi diri sendiri, tetapi tidak ada izin khusus yang diperlukan.
- Bucket penyimpanan pribadi: Akun penyimpanan memerlukan hak istimewa pelihat atau admin ke bucket penyimpanan.
Ada dua cara untuk memberikan kredensial akun layanan ke CDI:
- Konfigurasi Kredensial Default Aplikasi (ADC) Google di node di cluster Anda. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan ADC untuk penyedia lokal atau penyedia cloud lain.
- Berikan Secret yang berisi kunci akun layanan untuk mengakses Cloud Storage. Bagian selanjutnya dari dokumen ini menunjukkan cara membuat kunci akun layanan dan Secret.
Buat Secret
Anda meneruskan kunci akun layanan ke Kubernetes menggunakan Secret yang dibuat di namespace Volume Data. Bagian data Secret berisi entri
untuk creds-gcp.json. Nilainya adalah data berenkode base64 dari file kunci akun layanan. CLI membuat data berenkode base64 ini untuk Anda. Jika Anda menggunakan manifes YAML untuk membuat Secret, buat terlebih dahulu hash base64 dari konten file kunci akun layanan Anda.
CLI
Buat Secret menggunakan
kubectl:kubectl create secret generic SECRET_NAME \ --from-file=creds-gcp.json=SERVICE_ACCOUNT_KEY_PATH \ --namespace NAMESPACE_NAMEGanti nilai berikut:
SECRET_NAME: nama untuk Secret Anda.SERVICE_ACCOUNT_KEY_PATH: jalur ke file kunci akun layanan Anda.NAMESPACE_NAME: namespace untuk Secret Anda.- Buat Secret Anda di cluster tempat CDI berjalan dan di namespace yang sama dengan Volume Data. CDI diaktifkan secara otomatis di cluster yang menjalankan VM Runtime di GDC.
Manifes
Buat manifes
Secret, seperti my-secret.yaml, di editor pilihan Anda:nano my-secret.yamlSalin dan tempel manifes YAML berikut:
apiVersion: v1 data: creds-gcp.json: BASE64_SERVICE_ACCOUNT_FILE kind: Secret metadata: name: SECRET_NAME namespace: NAMESPACE_NAME type: OpaqueGanti nilai berikut:
BASE64_SERVICE_ACCOUNT_FILE: hash base64 dari konten file kunci akun layanan Anda.SECRET_NAME: nama untuk Secret Anda.NAMESPACE_NAME: namespace untuk Secret Anda.- Buat Secret Anda di cluster tempat CDI berjalan dan di namespace yang sama dengan Volume Data. CDI diaktifkan secara otomatis di cluster yang menjalankan VM Runtime di GDC.
Simpan dan tutup manifes Secret di editor Anda.
Terapkan manifes Secret menggunakan
kubectl:kubectl apply -f my-secret.yaml
Meneruskan Secret yang ada
Daripada membuat Secret, Anda dapat membuat SecretForwarder untuk meneruskan Secret yang ada untuk digunakan. SecretForwarder mendukung penerusan Secret
dalam cluster yang sama, atau di seluruh cluster, seperti dari cluster admin ke
cluster pengguna.
Untuk menggunakan Secret target guna mengakses Cloud Storage, Secret sumber harus memiliki kunci creds-gcp.json di bagian data-nya.
Cluster yang sama
Contoh manifes SecretForwarder berikut meneruskan secret di cluster yang sama:
apiVersion: baremetal.cluster.gke.io/v1
kind: SecretForwarder
metadata:
name: cdi-gcs
namespace: default
spec:
inClusterTargetSecrets:
name: gcs-sa
namespaces:
- default
sourceSecret:
name: gke-connect
namespace: anthos-creds
Contoh ini melakukan hal berikut:
- Membuat
SecretForwarderbernamacdi-gcsdi namespacedefault. - Meneruskan secret bernama
gke-connectdi namespaceanthos-credske secret baru bernamagcs-sadi namespacedefault. - Membuat secret baru di cluster yang sama.
Untuk meneruskan Secret di cluster yang sama, selesaikan langkah-langkah berikut:
Buat manifes
SecretForwarder, seperti my-forwarded-secret.yaml, di editor pilihan Anda:nano my-forwarded-secret.yamlSalin dan tempel manifes YAML berikut:
apiVersion: baremetal.cluster.gke.io/v1 kind: SecretForwarder metadata: name: SECRET_FORWARDER_NAME namespace: NAMESPACE_NAME spec: inClusterTargetSecrets: name: TARGET_SECRET_NAME namespaces: - TARGET_NAMESPACE_NAME sourceSecret: name: SOURCE_SECRET_NAME namespace: SOURCE_NAMESPACE_NAMEGanti nilai berikut:
SECRET_FORWARDER_NAME: nama untuk SecretForwarder Anda.NAMESPACE_NAME: namespace untuk SecretForwarder Anda.TARGET_SECRET_NAME: nama untuk Secret baru Anda.TARGET_NAMESPACE_NAME: namespace untuk Secret baru Anda.- Buat Secret Anda di cluster tempat CDI berjalan dan di namespace yang sama dengan Volume Data. CDI diaktifkan secara otomatis di cluster yang menjalankan VM Runtime di GDC.
SOURCE_SECRET_NAME: nama Secret sumber yang akan diteruskan.SOURCE_NAMESPACE_NAME: namespace Secret sumber yang akan diteruskan.
Simpan dan tutup manifes
SecretForwarderdi editor Anda.Terapkan manifes
SecretForwardermenggunakankubectl:kubectl apply -f my-forwarded-secret.yaml
Di seluruh cluster
Contoh manifes SecretForwarder berikut meneruskan secret di seluruh
cluster:
apiVersion: baremetal.cluster.gke.io/v1
kind: SecretForwarder
metadata:
name: cdi-gcs
namespace: cluster-user1
spec:
RemoteClusterTargetSecrets:
name: gcs-sa
namespaces:
- default
sourceSecret:
name: gke-connect
namespace: anthos-creds
Contoh ini melakukan hal berikut:
- Membuat
SecretForwarderbernamacdi-gcsdi namespacecluster-user1. - Meneruskan secret bernama
gke-connectdi namespaceanthos-credske secret baru bernamagcs-sadi namespacedefault. - Membuat secret baru di cluster bernama
user1.
Untuk meneruskan Secret di cluster yang sama, selesaikan langkah-langkah berikut:
Buat manifes
SecretForwarder, seperti my-forwarded-secret.yaml, di editor pilihan Anda:nano my-forwarded-secret.yamlSalin dan tempel manifes YAML berikut:
apiVersion: baremetal.cluster.gke.io/v1 kind: SecretForwarder metadata: name: SECRET_FORWARDER_NAME namespace: NAMESPACE_NAME spec: RemoteClusterTargetSecrets: name: TARGET_SECRET_NAME namespaces: - TARGET_NAMESPACE_NAME sourceSecret: name: SOURCE_SECRET_NAME namespace: SOURCE_NAMESPACE_NAMEGanti nilai berikut:
SECRET_FORWARDER_NAME: nama untuk SecretForwarder di cluster jarak jauh.NAMESPACE_NAME: namespace untuk SecretForwarder di cluster jarak jauh.TARGET_SECRET_NAME: nama untuk Secret baru Anda di cluster jarak jauh.TARGET_NAMESPACE_NAME: namespace untuk Secret baru Anda di cluster jarak jauh.- Buat Secret Anda di cluster tempat CDI berjalan dan di namespace yang sama dengan Volume Data. CDI diaktifkan secara otomatis di cluster yang menjalankan VM Runtime di GDC.
SOURCE_SECRET_NAME: nama Secret sumber yang akan diteruskan.SOURCE_NAMESPACE_NAME: namespace Secret sumber yang akan diteruskan.
Simpan dan tutup manifes
SecretForwarderdi editor Anda.Terapkan manifes
SecretForwarderdi cluster admin menggunakankubectldenganKUBECONFIGcluster admin:kubectl apply -f my-forwarded-secret.yaml
Menggunakan Secret untuk mengimpor gambar
Untuk menggunakan Secret guna mengimpor image dari Cloud Storage saat Anda membuat disk virtual dan VM, selesaikan langkah-langkah berikut:
Buat manifes yang menentukan
VirtualMachineDiskdanVirtualMachine, seperti my-vm.yaml, di editor pilihan Anda:nano my-vm.yamlSalin dan tempel definisi YAML berikut:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: VM_NAME-boot-dv spec: size: 20Gi source: gcs: url: IMAGE_URL secretRef: SECRET_NAME --- apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: VM_NAME spec: interfaces: - name: eth0 networkName: pod-network default: true disks: - boot: true virtualMachineDiskName: VM_NAME-boot-dvGanti nilai berikut:
VM_NAME- nama VM Anda.IMAGE_URL- URL ke image disk Anda di Cloud Storage, sepertigs://my-images-bucket/disk.qcow2.SECRET_NAME- nama secret Anda.
Simpan dan tutup manifes di editor Anda.
Buat VM dan disk menggunakan
kubectl:kubectl apply -f my-vm.yaml