Topik ini menjelaskan cara menyimpan data sensitif di secret Kubernetes dan mengambil data dari variabel alur dalam alur proxy API.
Pengantar
Terkadang Anda ingin menyimpan data untuk diambil saat runtime—data yang tidak habis masa berlakunya yang tidak boleh di-hardcode dalam logika proxy API Anda. Salah satu opsi adalah menggunakan fitur peta nilai kunci (KVM) campuran. Jika 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 di secret Kubernetes?
Apigee hybrid membatasi Anda untuk menyimpan jenis file data berikut dalam secret Kubernetes. Hal 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 di Jenis data yang dapat disimpan dalam secret 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 keterangan:
- 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 secret.
- 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 secret. 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 pembuatan, mungkin perlu waktu hingga 90 detik agar perubahan diterapkan di semua cluster. Pemroses 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 dalam alur proxy API di organisasi/lingkungan
tempat secret disimpan.
Misalnya, anggap 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 Tetapkan Pesan. 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 campuran menggunakan 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 pembaruan secret Kubernetes, Anda harus menghapus secret yang ada terlebih dahulu dan membuatnya ulang dengan mengikuti langkah-langkah di Membuat secret Kubernetes.