Topik ini menjelaskan cara menyimpan data sensitif dalam secret Kubernetes dan mengambil data dari variabel aliran dalam aliran proxy API.
Pengantar
Terkadang Anda ingin menyimpan data untuk diambil saat runtime—data yang tidak kedaluwarsa yang tidak boleh dikodekan secara permanen dalam logika proxy API Anda. Salah satu opsi adalah menggunakan fitur peta nilai kunci (KVM) hibrida. Jika Anda sudah menggunakan Kubernetes untuk pengelolaan secret di vault kustom untuk data sensitif, sebaiknya pertimbangkan untuk menggunakan fitur secret Kubernetes yang dijelaskan dalam topik ini. Sama seperti data KVM, Anda dapat mengakses data secret Kubernetes dalam variabel alur proxy API.
Jenis data apa yang dapat disimpan dalam secret Kubernetes?
Apigee hybrid membatasi Anda untuk menyimpan jenis file data berikut dalam secret Kubernetes. Komponen ini mencakup:
| Format file | Ekstensi file yang didukung |
|---|---|
| File kunci dan sertifikat TLS | *.crt, *.key, dan *.pem |
| File properti | *.properties |
File properti adalah file yang berisi key-value pair. Contoh:
username=admin password=1f2d1e2e7df
Membuat secret Kubernetes
Bagian ini menjelaskan cara membuat secret Kubernetes untuk menyimpan data sensitif di cluster.
- Buat file yang ingin Anda simpan di secret Kubernetes. File harus dalam salah satu format yang didukung dengan ekstensi file yang tercantum dalam Jenis data yang dapat disimpan dalam rahasia Kubernetes.
- Jalankan perintah
kubectl create secret generic. Contoh:kubectl -n namespace create secret generic org-env-policy-secret \ --from-file=filepath/prop-file.properties \ --from-file=filepath/key-file.key \ --from-file="filepath/cert-file.pem
Dengan:
- namespace: Namespace Kubernetes tempat komponen runtime Anda di-deploy.
- org: Nama organisasi Apigee Anda.
- env: Nama lingkungan di organisasi Anda.
- filepath: Jalur ke file yang ingin Anda sertakan dalam secret. Anda harus menentukan setidaknya satu file untuk disertakan dalam rahasia.
- prop-file: Nama file properti yang akan disertakan dalam secret.
- key-file: Nama file kunci TLS yang akan disertakan dalam secret.
- cert-file: Nama file sertifikat TLS yang akan disertakan dalam secret.
Anda dapat menyertakan satu atau beberapa file dalam rahasia. Contoh:
kubectl -n apigee create secret generic myorg-test-policy-secret \ --from-file="$policy_secrets_path"/credential.properties \ --from-file="$policy_secrets_path"/secrets.properties \ --from-file="$policy_secrets_path"/public.key \ --from-file="$policy_secrets_path"/fullchain.pem
Setelah dibuat, mungkin perlu waktu hingga 90 detik agar perubahan tercermin di semua cluster. Prosesor pesan melakukan polling untuk perubahan secret setiap 30 detik. Jika mendeteksi perubahan, cache akan diperbarui.
Mengambil data dari secret
Setelah secret dibuat dan tersedia (biasanya sekitar 90 detik setelah pembuatan), Anda dapat
mengakses data secret dalam variabel alur di alur proxy API di organisasi/lingkungan
tempat secret disimpan.
Misalnya, anggaplah secret Anda berisi file *.properties
bernama credentials.properties
dengan kunci API di dalamnya, sebagai berikut:
apikey=OrxYQptBMlY1TqmiGLTtyFiaLzzrD25Z
Kemudian, Anda dapat mengambil kunci API dari variabel alur menggunakan kebijakan seperti Assign Message. Contoh:
<AssignMessage name="assignvariable-2"> <AssignVariable> <Name>my-apikey</Name> <Ref>private.secret.credential.properties.apikey</Ref> </AssignVariable> </AssignMessage>
Nama variabel yang dirujuk dalam elemen Ref,
private.secret.credential.properties.apikey, terdiri dari bagian-bagian berikut:
| Bagian nama variabel | Deskripsi |
|---|---|
private.secret |
Namespace tetap variabel. Semua secret Kubernetes yang disimpan di cluster hybrid berbagi namespace ini. |
credential.properties |
Nama file yang disimpan dalam secret Kubernetes. |
apikey |
Nama kunci yang disimpan dalam file properti. |
Dalam contoh ini, kebijakan Tetapkan Pesan mengambil nilai apikey OrxYQptBMlY1TqmiGLTtyFiaLzzrD25Z dan
menyimpannya dalam variabel alur my-apikey.
Memperbarui secret
Karena kubectl tidak mendukung update secret Kubernetes, Anda harus
menghapus secret yang ada terlebih dahulu dan membuatnya ulang dengan mengikuti langkah-langkah di
Membuat secret Kubernetes.