Saya memiliki Kubernetes yang bekerja dengan baik di dua lingkungan yang berbeda, yaitu di lingkungan lokal saya (MacBook menjalankan minikube) dan juga di Google Container Engine (GCE, Kubernetes di Google Cloud). Saya menggunakan MacBook / lingkungan lokal untuk mengembangkan dan menguji file YAML saya dan kemudian, setelah selesai, mencobanya di GCE.
Saat ini saya perlu bekerja dengan setiap lingkungan secara individual: Saya perlu mengedit file YAML di lingkungan lokal saya dan, jika siap, (git) mengkloningnya ke lingkungan GCE dan kemudian menggunakan / menerapkannya. Ini adalah proses yang agak rumit.
Idealnya, saya ingin menggunakan kubectl dari Macbook saya untuk dengan mudah beralih antara lingkungan minikube lokal atau GCE Kubernetes dan untuk dengan mudah menentukan di mana file YAML digunakan. Adakah cara sederhana untuk mengganti konteks untuk melakukan ini?
sumber
grep 'name:' ~/.kube/config
. Ituminikube
, jadi saya bisa beralih kembali ke itu dengankubectl config use-context minikube
Jalan pintas yang lebih cepat ke perintah kubectl standar adalah dengan menggunakan kubectx :
kubectx
kubectl config get-contexts
kubectx foo
kubectl config use-context foo
Untuk menginstal di macOS:
brew install kubectx
Paket kubectx juga menyertakan alat serupa untuk berpindah namespace yang disebut
kubens
.Keduanya sangat nyaman jika Anda bekerja dalam berbagai konteks dan ruang nama secara teratur.
Info lebih lanjut: https://ahmet.im/blog/kubectx/
sumber
Jika Anda mencari solusi berbasis GUI untuk Mac dan menginstal Docker Desktop, Anda dapat menggunakan ikon Menu Bar Docker. Di sini Anda dapat menemukan menu "Kubernetes" dengan semua konteks yang Anda miliki di kubeconfig dan dengan mudah beralih di antaranya.
sumber
gcloud container clusters get-credentials $CLUSTER_NAME
komentar dari Justin Thomas hingga jawaban yang diterima).Jawaban terbaru 2020 ada di sini,
Cara sederhana untuk beralih di antara konteks kubectl,
Anda juga dapat menyimpan nama konteks sebagai env seperti context01name = gke _ $ {GOOGLE_CLOUD_PROJECT} _us-central1-a_standard-cluster-1
sumber
TL; DR: Saya membuat GUI untuk mengganti konteks Kubernetes melalui AppleScript. Saya mengaktifkannya melalui shift-cmd-x.
Saya juga memiliki masalah yang sama. Itu adalah konteks pengalihan rasa sakit oleh baris perintah. Saya menggunakan FastScripts untuk mengatur kombo kunci (shift-cmd-x) untuk menjalankan AppleScript berikut (ditempatkan di direktori ini: $ (HOME) / Library / Scripts / Applications / Terminal).
sumber
Saya bosan mengetik ini berulang kali, jadi saya menulis utilitas bash sederhana untuk mengganti konteks
Anda dapat menemukannya di sini https://github.com/josefkorbel/kube-switch
sumber
Mengkloning file YAML di repo untuk lingkungan yang berbeda sangatlah ideal. Yang harus Anda lakukan adalah membuat template file YAML Anda - dengan mengekstrak parameter yang berbeda dari lingkungan ke lingkungan.
Anda tentu saja dapat menggunakan beberapa mesin template dan memisahkan nilai dalam sebuah YAML dan menghasilkan YAML untuk lingkungan tertentu. Tapi ini mudah dilakukan jika Anda mengadopsi Diagram Helm . Untuk melihat beberapa bagan contoh, buka direktori stabil di repo Github ini
Untuk mengambil contoh bagan Wordpress , Anda dapat memiliki dua perintah berbeda untuk dua lingkungan:
Untuk Dev:
helm install --name dev-release --set \ wordpressUsername=dev_admin, \ wordpressPassword=dev_password, \ mariadb.mariadbRootPassword=dev_secretpassword \ stable/wordpress
Tidak perlu meneruskan nilai-nilai ini pada CLI, Anda dapat menyimpan nilai dalam sebuah file bernama aptly
values.yml
dan Anda dapat memiliki file yang berbeda untuk lingkungan yang berbeda.Anda akan membutuhkan usaha untuk mengubah ke standar bagan Helm, tetapi usaha itu akan sia-sia.
sumber
Jawaban kanonik untuk beralih / membaca / memanipulasi lingkungan kubernetes yang berbeda (alias konteks kubernetes) adalah, seperti yang disebutkan Mark, untuk digunakan
kubectl config
, lihat di bawah ini:Di balik layar, ada
~/.kube/config
file YAML yang menyimpan semua konteks yang tersedia dengan kredensial dan endpoint yang sesuai untuk setiap konteks.Kubectl off the shelf tidak membuatnya mudah untuk mengelola konteks kubernetes yang berbeda seperti yang mungkin sudah Anda ketahui. Daripada memutar skrip Anda sendiri untuk mengelola semua itu, pendekatan yang lebih baik adalah dengan menggunakan fitur dewasa yang disebut
kubectx
, dibuat oleh Googler bernama "Ahmet Alp Balkan" yang berada di Kubernetes / Google Cloud Platform developer, mengalami Tim yang membuat fitur seperti ini. Saya sangat merekomendasikannya.https://github.com/ahmetb/kubectx
sumber
Periksa juga terbaru (buruh pelabuhan 19,03)
docker context
perintah .Ajeet Singh Raina ) mengilustrasikannya dalam " Docker 19.03.0 Pre-Release: Fast Context Switching, Rootless Docker, Sysctl support for Swarm Services "
Sebagai contoh:
sumber
Jika Anda mungkin mencari cara sederhana untuk beralih di antara konteks yang berbeda mungkin ini akan membantu.
Saya terinspirasi oleh
kubectx
dankswitch
skrip telah disebutkan, yang dapat saya rekomendasikan untuk sebagian besar kasus penggunaan. Mereka membantu menyelesaikan tugas pengalihan, tetapi melanggar beberapa konfigurasi standar yang lebih besar atau kurang dari~/.kube/config
. Jadi saya membuat pembungkus permintaan sys-exec dan short-handkubectl
.Jika Anda memanggil k tanpa params, Anda akan melihat prompt dicegat untuk beralih konteks.
Selanjutnya,
k
terus bertindak sebagai tangan pendek. Berikut ini setara:sumber
Buat daftar konteks
Ganti konteks
sumber
Untuk mendapatkan semua konteks
Untuk mendapatkan konteks saat ini
Untuk mengganti konteks
sumber
ya, saya pikir ini yang Anda tanyakan. Untuk melihat konfigurasi Anda saat ini, gunakan kubectl config view. kubectl memuat dan menggabungkan konfigurasi dari lokasi berikut (secara berurutan)
saya menggunakan --kubeconfig karena saya beralih banyak di antara beberapa cluster. itu sedikit rumit tetapi bekerja dengan baik.
lihat ini untuk info lebih lanjut. https://kubernetes.io/docs/tasks/administer-cluster/share-configuration/ dan https://kubernetes.io/docs/concepts/cluster-administration/authenticate-across-clusters-kubeconfig/
sumber