Saat ini saya menggunakan spesifikasi Kubernetes Deployment.yaml
untuk menggunakan layanan. Spesifikasi ini mencakup referensi kata demi kata ke alamat IP tertentu (ditandai sebagai <static-ip-address>
berikut):
spec:
type: LoadBalancer
loadBalancerIP: <static-ip-address>
Saya khawatir tentang mendorong informasi seperti kata sandi atau alamat IP ke repositori Git jarak jauh. Dapatkah saya menghindari hal ini misalnya dengan memanfaatkan variabel lingkungan, misalnya dengan spesifikasi penyebaran dan penerapan aktual secara kasar sebagai berikut:
spec:
type: LoadBalancer
loadBalancerIP: ${SERVICE_ADDRESS}
dan
export SERVICE_ADDRESS=<static-ip-address>
kubectl create -f Deployment.yaml
Jelas sintaksis spesifik ini belum berfungsi. Tetapi apakah hal seperti ini mungkin dan jika demikian bagaimana?
Saya lebih suka tidak mengandalkan alat penyediaan terpisah . Rahasia dan ConfigMap
tampaknya menjanjikan, tetapi tampaknya rahasia tidak dapat dikonsumsi dengan cara yang sesuai dengan tujuan ini. Jika saya bisa langsung merujuk alamat IP statis yang didefinisikan dengan gcloud compute addresses create service-address
yang terbaik.
envsubst
. tidak tahu tentang ini sampai sekarangsed
. Menurut definisi Anda, solusi yang diusulkan dengansed
juga tidak akan lebih mudah / bersih, karena tidak ada yangsed
diinstal pada mesin Windows secara default.Ada solusi lain senang sederhana: Saya memiliki Google Compute Alamat
my-address
didefinisikan, dan saya ternyata dapat menggunakannya dalam layanan spek seperti:loadBalancerIP: my-address
.Dengan ini sebagai sumber "eksternal" untuk alamat IP dan rahasia kata sandi, tidak ada lagi kebutuhan untuk alat penyediaan (atau templat) untuk kasus penggunaan sederhana saya (dalam lingkungan GKE).
OBSOLETE SEKARANG: Saya telah memutuskan untuk menggunakan sejenis alat bawaan, yaitu "bawaan"
sed
.Saya
Deployment.yaml
sekarang berisi "variabel template" misalnya didan saya menggunakan layanan dengan, katakanlah, 1.2.3.4 sebagai alamat IP eksternal dengan
sumber
Anda dapat menulis pra-prosesor sederhana untuk melakukan substitusi variabel pada file yaml Anda (atau Anda dapat menggunakan jsonnet untuk mencapai hal yang sama pada file konfigurasi json).
Ada beberapa diskusi seputar menambahkan template langsung ke konfigurasi Kubernetes tetapi belum diimplementasikan atau tersedia.
sumber
Sampai template tersedia, cara termudah untuk melakukannya adalah menjalankan pekerjaan yang menggunakan API Kubernetes untuk memperbarui layanan. Script shell pendek dalam gambar berbasis alpine, ditambah dengan rahasia (berisi alamat IP) dan configmap (berisi templat), harus cukup sederhana. Bagian yang sulit dengan benar menggunakan fitur otentikasi dan otorisasi apiserver.
/programming/30690186/how-do-i-access-the-kubernetes-api-from-within-a-pod-container memberikan contoh mengakses API. Jelas, Anda ingin POST ke / api / v1 / namespaces / default / services daripada GET dalam contoh itu.
sumber