Mengatur Akses Klaster Menggunakan Berkas kubeconfig
Gunakan berkas kubeconfig untuk mengatur informasi mengenai klaster, pengguna,
namespace, dan mekanisme autentikasi. Perintah kubectl
menggunakan berkas
kubeconfig untuk mencari informasi yang dibutuhkan untuk memilih klaster dan
berkomunikasi dengan API server dari suatu klaster.
kubeconfig
.
Secara default, kubectl
mencari berkas dengan nama config
pada direktori
$HOME/.kube
. Kamu bisa mengatur lokasi berkas kubeconfig dengan mengatur
nilai KUBECONFIG
pada variabel environment atau dengan mengatur menggunakan
tanda --kubeconfig
.
Instruksi langkah demi langkah untuk membuat dan menentukan berkas kubeconfig, bisa mengacu pada [Mengatur Akses Pada Beberapa Klaster] (/id/docs/tasks/access-application-cluster/configure-access-multiple-clusters).
Mendukung beberapa klaster, pengguna, dan mekanisme autentikasi
Misalkan kamu memiliki beberapa klaster, pengguna serta komponen dapat melakukan autentikasi dengan berbagai cara. Sebagai contoh:
- Kubelet yang berjalan dapat melakukan autentikasi dengan menggunakan sertifikat
- Pengguna bisa melakukan autentikasi dengan menggunakan token
- Administrator bisa memiliki beberapa sertifikat yang diberikan kepada pengguna individu.
Dengan berkas kubeconfig, kamu bisa mengatur klaster, pengguna, dan namespace. Kamu juga bisa menentukan konteks untuk mempercepat dan mempermudah perpindahan antara klaster dan namespace.
Konteks
Sebuah elemen konteks pada berkas kubeconfig digunakan untuk mengelompokkan
parameter akses dengan nama yang mudah. Setiap konteks akan memiliki 3 parameter:
klaster, pengguna, dan namespace. Secara default, perintah kubectl
menggunakan
parameter dari konteks yang aktif untuk berkomunikasi dengan klaster.
Untuk memilih konteks yang aktif, bisa menggunakan perintah berikut:
kubectl config use-context
Variabel environment KUBECONFIG
Variabel environment KUBECONFIG
berisikan beberapa berkas kubeconfig. Untuk
Linux dan Mac, beberapa berkas tersebut dipisahkan dengan tanda titik dua (:).
Untuk Windows, dipisahkan dengan menggunakan tanda titik koma (;). Variabel
environment KUBECONFIG
tidak diwajibkan untuk ada. Jika variabel environment
KUBECONFIG
tidak ada, maka kubectl
akan menggunakan berkas kubeconfig pada
$HOME/.kube/config
.
Jika variabel environment KUBECONFIG
ternyata ada, maka kubectl
akan menggunakan
konfigurasi yang merupakan hasil gabungan dari berkas-berkas yang terdapat pada
variabel environment KUBECONFIG
.
Menggabungkan berkas-berkas kubeconfig
Untuk melihat konfigurasimu, gunakan perintah berikut ini:
kubectl config view
Seperti yang dijelaskan sebelumnya, hasil perintah diatas bisa berasal dari sebuah berkas kubeconfig, atau bisa juga merupakan hasil gabungan dari beberapa berkas kubeconfig.
Berikut adalah aturan yang digunakan kubectl
ketika menggabungkan beberapa berkas
kubeconfig:
-
Jika menggunakan tanda
--kubeconfig
, maka akan menggunakan berkas yang ditentukan. Tidak digabungkan. Hanya 1 tanda--kubeconfig
yang diperbolehkan.Sebaliknya, jika variabel environment
KUBECONFIG
digunakan, maka akan menggunakan ini sebagai berkas-berkas yang akan digabungkan. Penggabungan berkas-berkas yang terdapat pada variabel environmentKUBECONFIG
akan mengikuti aturan sebagai berikut:- Mengabaikan berkas tanpa nama.
- Mengeluarkan pesan kesalahan untuk berkas dengan isi yang tidak dapat dideserialisasi.
- Berkas pertama yang menentukan nilai atau key pada map maka akan digunakan pada map tersebut.
- Tidak pernah mengubah nilai atau key dari suatu map.
Contoh: Pertahankan konteks pada berkas pertama yang mengatur
current-context
. Contoh: Jika terdapat dua berkas yang menentukan nilaired-user
, maka hanya gunakan nilaired-user
dari berkas pertama. Meskipun berkas kedua tidak memiliki entri yang bertentangan padared-user
, abaikan mereka.
Beberapa contoh pengaturan variabel environment
KUBECONFIG
, bisa melihat pada pengaturan vaiabel environment KUBECONFIG.Sebaliknya, bisa menggunakan berkas kubeconfig default,
$HOME/.kube/config
, tanpa melakukan penggabungan. -
Konteks ditentukan oleh yang pertama sesuai dari pilihan berikut:
- Menggunakan tanda
--context
pada perintah - Menggunakan nilai
current-context
dari hasil gabungan berkas kubeconfig.
Konteks yang kosong masih diperbolehkan pada tahap ini.
- Menggunakan tanda
-
Menentukan klaster dan pengguna. Pada tahap ini, mungkin akan ada atau tidak ada konteks. Menentukan klaster dan pengguna berdasarkan yang pertama sesuai dengan pilihan berikut, yang mana akan dijalankan dua kali: sekali untuk pengguna dan sekali untuk klaster:
- Jika ada, maka gunakan tanda pada perintah:
--user
atau--cluster
. - Jika konteks tidak kosong, maka pengguna dan klaster didapat dari konteks.
Pengguna dan klaster masih diperbolehkan kosong pada tahap ini.
- Jika ada, maka gunakan tanda pada perintah:
-
Menentukan informasi klaster sebenarnya yang akan digunakan. Pada tahap ini, mungkin akan ada atau tidak ada informasi klaster. Membentuk informasi klaster berdasarkan urutan berikut dan yang pertama sesuai akan digunakan:
- Jika ada, maka gunakan tanda pada perintah:
--server
,--certificate-authority
,--insecure-skip-tls-verify
. - Jika terdapat atribut informasi klaster dari hasil gabungan berkas kubeconfig, maka gunakan itu.
- Jika tidak terdapat informasi mengenai lokasi server, maka dianggap gagal.
- Jika ada, maka gunakan tanda pada perintah:
-
Menentukan informasi pengguna sebenarnya yang akan digunakan. Membentuk informasi pengguna dengan aturan yang sama dengan pembentukan informasi klaster, namun hanya diperbolehkan ada satu teknik autentikasi untuk setiap pengguna:
- Jika ada, gunakan tanda pada perintah:
--client-certificate
,--client-key
,--username
,--password
,--token
. - Menggunakan field
user
dari hasil gabungan berkas kubeconfig. - Jika terdapat dua teknik yang bertentangan, maka dianggap gagal.
- Jika ada, gunakan tanda pada perintah:
-
Untuk setiap informasi yang masih belum terisi, akan menggunakan nilai
default
dan kemungkinan akan meminta informasi autentikasi.
Referensi berkas
Referensi file dan path pada berkas kubeconfig adalah bernilai relatif terhadap
lokasi dari berkas kubeconfig.
Referensi file pada perintah adalah relatif terhadap direktori kerja saat ini.
Dalam $HOME/.kube/config
, relative path akan disimpan secara relatif, dan
absolute path akan disimpan secara mutlak.