Dokumen ini menunjukkan cara membuat dan menggunakan kredensial untuk mengakses Cloud Storage menggunakan VM Runtime di GDC. {i>Cloud Storage<i} plugin memungkinkan Anda menggunakan Pengimpor Data dalam Container (CDI) untuk mengimpor image VM dari bucket Cloud Storage. Anda kemudian dapat membuat dari image ini di Cloud Storage dan memasangnya ke VM yang berjalan di cluster Anda. CDI diaktifkan secara otomatis di cluster yang menjalankan Runtime VM di GDC.
Sebelum memulai
Untuk menyelesaikan dokumen ini, Anda memerlukan akses ke referensi berikut:
- Akses ke Google Distributed Cloud versi 1.12.0 (
anthosBareMetalVersion: 1.12.0
) atau cluster 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 Cloud Storage akses. Jika diperlukan, mengonfigurasi akun layanan yang dapat mengakses bucket Cloud Storage.
Ringkasan kredensial
Untuk mengakses Cloud Storage, Anda menggunakan akun layanan yang menyediakan kredensial yang berbeda ke bucket penyimpanan. Akun layanan memerlukan agar berhasil mengakses bucket penyimpanan:
- Bucket penyimpanan publik: Anda menggunakan akun layanan untuk identifikasi mandiri, tetapi tidak ada izin akses khusus yang diperlukan.
- Bucket penyimpanan pribadi: Akun penyimpanan memerlukan penampil atau hak istimewa admin ke bucket penyimpanan.
Ada dua cara untuk memberikan kredensial akun layanan ke CDI:
- Konfigurasikan Kredensial Default Aplikasi (ADC) Google pada node di cluster Anda. Untuk informasi selengkapnya, lihat Mengautentikasi sebagai akun layanan.
- Berikan Rahasia yang berisi kunci akun layanan untuk mengakses Cloud Storage. Bagian selanjutnya dari dokumen ini menunjukkan cara membuat kunci akun layanan dan Rahasia.
Buat Secret
Anda meneruskan kunci akun layanan ke Kubernetes menggunakan Secret yang dibuat di
namespace Volume Data. Bagian data
dari Secret berisi entri
untuk creds-gcp.json
. Nilainya adalah data layanan yang dienkode dengan base64
file kunci akun. CLI akan membuatkan data yang dienkode dengan base64. Jika Anda menggunakan
Manifes YAML untuk membuat Secret, pertama-tama buat hash base64 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_NAME
Ganti nilai berikut:
SECRET_NAME
: nama untuk Secret Anda.SERVICE_ACCOUNT_KEY_PATH
: jalur ke file kunci akun layanan.NAMESPACE_NAME
: namespace untuk Secret Anda.- Buat Secret Anda di cluster tempat CDI berjalan dan di cluster yang sama sebagai Volume Data. CDI diaktifkan secara otomatis di yang menjalankan VM Runtime di GDC.
Manifes
Buat manifes
Secret
, seperti my-secret.yaml, di editor pilihan:nano my-secret.yaml
Salin 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: Opaque
Ganti nilai berikut:
BASE64_SERVICE_ACCOUNT_FILE
: hash base64 dari isi 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 cluster yang sama sebagai Volume Data. CDI diaktifkan secara otomatis di 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 sudah ada
Anda dapat membuat SecretForwarder
untuk diteruskan, bukan membuat Secret
Secret yang ada untuk digunakan. SecretForwarder
mendukung penerusan Secret
dalam cluster yang sama, atau lintas cluster, seperti dari cluster admin ke
cluster pengguna.
Agar dapat menggunakan Secret target untuk mengakses Cloud Storage, Secret sumber harus
memiliki kunci creds-gcp.json
di bagian data
-nya.
Cluster yang sama
Contoh manifes SecretForwarder
berikut meneruskan rahasia dengan cara
:
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
SecretForwarder
bernamacdi-gcs
di namespacedefault
. - Meneruskan rahasia bernama
gke-connect
dalam namespaceanthos-creds
ke secret baru bernamagcs-sa
di 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.yaml
Salin 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_NAME
Ganti nilai berikut:
SECRET_FORWARDER_NAME
: nama untuk {i>SecretForwarder<i}.NAMESPACE_NAME
: namespace untuk {i>SecretForwarder<i}.TARGET_SECRET_NAME
: nama untuk Secret baru Anda.TARGET_NAMESPACE_NAME
: namespace untuk Rahasia.- Buat Secret Anda di cluster tempat CDI berjalan dan di cluster yang sama sebagai Volume Data. CDI diaktifkan secara otomatis di yang menjalankan VM Runtime di GDC.
SOURCE_SECRET_NAME
: nama Secret sumber Anda untuk diteruskan.SOURCE_NAMESPACE_NAME
: namespace sumber Rahasia untuk diteruskan.
Simpan dan tutup manifes
SecretForwarder
di editor Anda.Terapkan manifes
SecretForwarder
menggunakankubectl
:kubectl apply -f my-forwarded-secret.yaml
Di seluruh cluster
Contoh manifes SecretForwarder
berikut meneruskan rahasia ke seluruh
{i>cluster <i}(klaster):
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
SecretForwarder
bernamacdi-gcs
di namespacecluster-user1
. - Meneruskan rahasia bernama
gke-connect
dalam namespaceanthos-creds
ke secret baru bernamagcs-sa
di 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.yaml
Salin 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_NAME
Ganti 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 di cluster jarak jauh.- Buat Secret Anda di cluster tempat CDI berjalan dan di cluster yang sama sebagai Volume Data. CDI diaktifkan secara otomatis di yang menjalankan VM Runtime di GDC.
SOURCE_SECRET_NAME
: nama Secret sumber Anda untuk diteruskan.SOURCE_NAMESPACE_NAME
: namespace sumber Rahasia untuk diteruskan.
Simpan dan tutup manifes
SecretForwarder
di editor Anda.Terapkan manifes
SecretForwarder
di cluster admin menggunakankubectl
denganKUBECONFIG
cluster admin:kubectl apply -f my-forwarded-secret.yaml
Menggunakan Secret untuk mengimpor gambar
Untuk menggunakan Secret guna mengimpor gambar dari Cloud Storage saat Anda membuat disk virtual dan VM, selesaikan langkah-langkah berikut:
Buat manifes yang menentukan
VirtualMachineDisk
danVirtualMachine
, seperti my-vm.yaml, di editor pilihan Anda:nano my-vm.yaml
Salin 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-dv
Ganti nilai berikut:
VM_NAME
- nama VM Anda.IMAGE_URL
- URL ke disk image Anda Cloud Storage, sepertigs://my-images-bucket/disk.qcow2
.SECRET_NAME
- nama rahasia Anda.
Simpan dan tutup manifes di editor Anda.
Buat VM dan disk menggunakan
kubectl
:kubectl apply -f my-vm.yaml