Saya mencoba menerapkan aplikasi saya ke Kubernetes yang berjalan di Google Container Engine .
Aplikasi ini dapat ditemukan di: https://github.com/Industrial/docker-znc .
The Dockerfile dibangun ke sebuah gambar pada Google Kontainer Registry .
Saya telah menerapkan aplikasi di Kubernetes melalui tombol +. Saya tidak memiliki YAML untuk ini.
Saya telah memasukkan Rahasia di Kubernetes untuk file PEM yang dibutuhkan oleh aplikasi.
- Bagaimana cara mendapatkan YAML untuk Deployment , Service , dan Pod yang dibuat oleh Kubernetes dengan mengisi formulir?
- Bagaimana cara memasukkan Rahasia ke dalam Pod saya untuk digunakan?
--export
sudah tidak digunakan lagi; lihat disini . Anda dapat menggunakanget -o yaml
tanpa--export
, meskipun itu termasuk informasi tentang status objek saat ini, serta konfigurasi deklaratif yang diperlukan untuk mengkonfigurasi (ulang) objek.spec.clusterIP
danmetadata.resourceVersion
dalam layanan.kubectl get deployment,service,pod yourapp -o yaml --export
Menjawab pertanyaan @Sinaesthetic:
kubectl get deploy --all-namespaces -o yaml --export
Masalah dengan metode ini adalah ekspor tidak menyertakan namespace. Jadi jika Anda ingin mengekspor banyak sumber daya secara bersamaan, saya sarankan melakukannya per namespace:
kubectl get deploy,sts,svc,configmap,secret -n default -o yaml --export > default.yaml
Sayangnya kubernetes masih belum mendukung perintah true get all , jadi Anda perlu membuat daftar secara manual jenis sumber daya yang ingin Anda ekspor. Anda bisa mendapatkan daftar jenis sumber daya dengan
kubectl api-resources
sumber
kubectl get $(kubectl api-resources | awk '{print $1}' | tail -n +2 | tr '\n' ',' | sed s/,\$//) -o yaml > manifest.yaml
Masalah yang sama dibahas di kubernetes GitHub issues page dan pengguna "alahijani" membuat skrip bash yang mengekspor semua yaml dan menuliskannya ke satu file dan folder.
Karena pertanyaan ini mendapat peringkat bagus di Google dan karena saya menemukan solusi itu sangat bagus, saya mewakilinya di sini.
Skrip Bash mengekspor yaml ke sub-folder:
for n in $(kubectl get -o=name pvc,configmap,serviceaccount,secret,ingress,service,deployment,statefulset,hpa,job,cronjob) do mkdir -p $(dirname $n) kubectl get -o=yaml --export $n > $n.yaml done
User lain "acondrat" membuat script yang tidak menggunakan direktori, yang memudahkan pembuatannya
kubectl apply -f
nanti.Skrip Bash mengekspor yaml ke folder saat ini:
for n in $(kubectl get -o=name pvc,configmap,ingress,service,secret,deployment,statefulset,hpa,job,cronjob | grep -v 'secret/default-token') do kubectl get -o=yaml --export $n > $(dirname $n)_$(basename $n).yaml done
Skrip terakhir tidak termasuk akun layanan.
sumber
Sintaks untuk mengunduh yaml dari kubernetes
kubectl get [resource type] -n [namespace] [resource Name] -o yaml > [New file name]
Buat file yaml dari pod yang sedang berjalan:
kubectl get po -n nginx nginx-deployment-755cfc7dcf-5s7j8 -o yaml > podDetail.yaml
Buat file replicaset yaml dari menjalankan pod:
kubectl get rs -n nginx -o yaml > latestReplicaSet.yaml
Buat penerapan file yaml dari pod yang sedang berjalan:
kubectl get deploy -n nginx -o yaml > latestDeployement.yaml
sumber
untuk pertanyaan ke-2 tentang rahasianya, ini dari dokumentasi k8s. lihat https://kubernetes.io/docs/concepts/configuration/secret/#using-secrets untuk info lebih lanjut.
Saya telah menggunakan ini dan berfungsi dengan baik.
sumber
sumber
Gunakan perintah ini untuk mendapatkan format yaml dari layanan Anda
kubectl get service servicename -n <namespace> -o yaml
Anda juga dapat memasukkannya ke dalam beberapa file
kubectl get service servicename -n <namespace> -o yaml > service.yaml
sumber
kubectl -n <namespace> get <resource type> <resource Name> -o yaml
Dengan perintah di atas, sumber daya apa pun yang ditentukan di Kubernetes dapat diekspor dalam
YAML
format.sumber
Jika Anda perlu melihat dan mengedit file, gunakan:
kubectl edit service servicename
sumber
Anda bisa mendapatkan file yaml dari sumber daya menggunakan perintah ini
kubectl -n <namespace> get <resource type> <resource Name> -o yaml
Untuk memasukkan rahasia ke dalam pod Anda,
gunakan sesuatu seperti ini
env - valueFrom secretKeyRef: name: secret_name key: key_name
atau
envFrom - secretRef: name: secret_name
sumber
Saya tahu ini terlalu tua untuk dijawab, tetapi mudah-mudahan, seseorang akan merasa terbantu.
Kita dapat mencoba perintah di bawah ini untuk mengambil jenis ekspor dari semua namespace -
kubectl get <kind> --all-namespaces --export -o yaml
sumber
Hanya perbedaan kecil dari jawaban @Janos Lenart!
kubectl get deploy deploymentname -o yaml > outputFile.yaml
akan melakukansumber