2019-10-27 13:11:24 +00:00
|
|
|
---
|
2019-12-16 13:11:37 +00:00
|
|
|
title: Mengatur Akses Klaster Menggunakan Berkas kubeconfig
|
2019-10-27 13:11:24 +00:00
|
|
|
content_template: templates/concept
|
|
|
|
weight: 60
|
|
|
|
---
|
|
|
|
|
|
|
|
{{% capture overview %}}
|
|
|
|
|
2019-12-16 13:11:37 +00:00
|
|
|
Gunakan berkas kubeconfig untuk mengatur informasi mengenai klaster, pengguna,
|
2019-10-27 13:11:24 +00:00
|
|
|
_namespace_, dan mekanisme autentikasi. Perintah `kubectl` menggunakan berkas
|
2019-12-16 13:11:37 +00:00
|
|
|
kubeconfig untuk mencari informasi yang dibutuhkan untuk memilih klaster dan
|
|
|
|
berkomunikasi dengan API server dari suatu klaster.
|
2019-10-27 13:11:24 +00:00
|
|
|
|
|
|
|
{{< note >}}
|
2019-12-16 13:11:37 +00:00
|
|
|
Sebuah berkas yang digunakan untuk mengatur akses pada klaster disebut dengan
|
2019-10-27 13:11:24 +00:00
|
|
|
berkas kubeconfig. Ini cara yang umum digunakan untuk mereferensikan berkas
|
|
|
|
konfigurasi. Ini tidak berarti ada berkas dengan nama `kubeconfig`.
|
|
|
|
{{< /note >}}
|
|
|
|
|
|
|
|
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`](/docs/reference/generated/kubectl/kubectl/).
|
|
|
|
|
|
|
|
Instruksi langkah demi langkah untuk membuat dan menentukan berkas kubeconfig,
|
2019-12-16 13:11:37 +00:00
|
|
|
bisa mengacu pada [Mengatur Akses Pada Beberapa Klaster]
|
2019-10-27 13:11:24 +00:00
|
|
|
(/docs/tasks/access-application-cluster/configure-access-multiple-clusters).
|
|
|
|
|
|
|
|
{{% /capture %}}
|
|
|
|
|
|
|
|
|
|
|
|
{{% capture body %}}
|
|
|
|
|
2019-12-16 13:11:37 +00:00
|
|
|
## Mendukung beberapa klaster, pengguna, dan mekanisme autentikasi
|
2019-10-27 13:11:24 +00:00
|
|
|
|
2019-12-16 13:11:37 +00:00
|
|
|
Misalkan kamu memiliki beberapa klaster, pengguna serta komponen dapat melakukan
|
2019-10-27 13:11:24 +00:00
|
|
|
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.
|
|
|
|
|
2019-12-16 13:11:37 +00:00
|
|
|
Dengan berkas kubeconfig, kamu bisa mengatur klaster, pengguna, dan _namespace_.
|
2019-10-27 13:11:24 +00:00
|
|
|
Kamu juga bisa menentukan konteks untuk mempercepat dan mempermudah perpindahan
|
2019-12-16 13:11:37 +00:00
|
|
|
antara klaster dan _namespace_.
|
2019-10-27 13:11:24 +00:00
|
|
|
|
|
|
|
## Konteks
|
|
|
|
|
|
|
|
Sebuah elemen konteks pada berkas kubeconfig digunakan untuk mengelompokkan
|
|
|
|
parameter akses dengan nama yang mudah. Setiap konteks akan memiliki 3 parameter:
|
2019-12-16 13:11:37 +00:00
|
|
|
klaster, pengguna, dan _namespace_. Secara _default_, perintah `kubectl` menggunakan
|
|
|
|
parameter dari konteks yang aktif untuk berkomunikasi dengan klaster.
|
2019-10-27 13:11:24 +00:00
|
|
|
|
|
|
|
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:
|
|
|
|
|
|
|
|
```shell
|
|
|
|
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:
|
|
|
|
|
|
|
|
1. 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 _environment_ `KUBECONFIG` 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 nilai `red-user`, maka hanya gunakan
|
|
|
|
nilai `red-user` dari berkas pertama.
|
|
|
|
Meskipun berkas kedua tidak memiliki entri yang bertentangan pada `red-user`,
|
|
|
|
abaikan mereka.
|
|
|
|
|
|
|
|
Beberapa contoh pengaturan variabel _environment_ `KUBECONFIG`, bisa melihat pada
|
|
|
|
[pengaturan vaiabel _environment_ KUBECONFIG](/docs/tasks/access-application-cluster/configure-access-multiple-clusters/#set-the-kubeconfig-environment-variable).
|
|
|
|
|
|
|
|
Sebaliknya, bisa menggunakan berkas kubeconfig _default_, `$HOME/.kube/config`,
|
|
|
|
tanpa melakukan penggabungan.
|
|
|
|
|
|
|
|
1. Konteks ditentukan oleh yang pertama sesuai dari pilihan berikut:
|
|
|
|
|
|
|
|
1. Menggunakan tanda `--context` pada perintah
|
|
|
|
1. Menggunakan nilai `current-context` dari hasil gabungan berkas kubeconfig.
|
|
|
|
|
|
|
|
Konteks yang kosong masih diperbolehkan pada tahap ini.
|
|
|
|
|
2019-12-16 13:11:37 +00:00
|
|
|
1. 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:
|
2019-10-27 13:11:24 +00:00
|
|
|
|
|
|
|
1. Jika ada, maka gunakan tanda pada perintah: `--user` atau `--cluster`.
|
2019-12-16 13:11:37 +00:00
|
|
|
1. Jika konteks tidak kosong, maka pengguna dan klaster didapat dari konteks.
|
2019-10-27 13:11:24 +00:00
|
|
|
|
2019-12-16 13:11:37 +00:00
|
|
|
Pengguna dan klaster masih diperbolehkan kosong pada tahap ini.
|
2019-10-27 13:11:24 +00:00
|
|
|
|
2019-12-16 13:11:37 +00:00
|
|
|
1. Menentukan informasi klaster sebenarnya yang akan digunakan. Pada tahap ini, mungkin
|
|
|
|
akan ada atau tidak ada informasi klaster. Membentuk informasi klaster berdasarkan urutan
|
2019-10-27 13:11:24 +00:00
|
|
|
berikut dan yang pertama sesuai akan digunakan:
|
|
|
|
|
|
|
|
1. Jika ada, maka gunakan tanda pada perintah: `--server`, `--certificate-authority`, `--insecure-skip-tls-verify`.
|
2019-12-16 13:11:37 +00:00
|
|
|
1. Jika terdapat atribut informasi klaster dari hasil gabungan berkas kubeconfig,
|
2019-10-27 13:11:24 +00:00
|
|
|
maka gunakan itu.
|
|
|
|
1. Jika tidak terdapat informasi mengenai lokasi server, maka dianggap gagal.
|
|
|
|
|
|
|
|
1. Menentukan informasi pengguna sebenarnya yang akan digunakan. Membentuk informasi
|
2019-12-16 13:11:37 +00:00
|
|
|
pengguna dengan aturan yang sama dengan pembentukan informasi klaster, namun hanya
|
2019-10-27 13:11:24 +00:00
|
|
|
diperbolehkan ada satu teknik autentikasi untuk setiap pengguna:
|
|
|
|
|
|
|
|
1. Jika ada, gunakan tanda pada perintah: `--client-certificate`, `--client-key`, `--username`, `--password`, `--token`.
|
|
|
|
1. Menggunakan _field_ `user` dari hasil gabungan berkas kubeconfig.
|
|
|
|
1. Jika terdapat dua teknik yang bertentangan, maka dianggap gagal.
|
|
|
|
|
|
|
|
1. 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.
|
|
|
|
|
|
|
|
{{% /capture %}}
|
|
|
|
|
|
|
|
|
|
|
|
{{% capture whatsnext %}}
|
|
|
|
|
2019-12-16 13:11:37 +00:00
|
|
|
* [Mengatur Akses Pada Beberapa Klaster](/docs/tasks/access-application-cluster/configure-access-multiple-clusters/)
|
2019-10-27 13:11:24 +00:00
|
|
|
* [`kubectl config`](/docs/reference/generated/kubectl/kubectl-commands#config)
|
|
|
|
|
|
|
|
{{% /capture %}}
|
|
|
|
|
|
|
|
|