Kubeconfig nedir?
Tags: kubernetes, kubeconfig, k8s
Published: 2022-09-18 09:12:40

Kubeconfig, "**kubectl**" gibi uygulamalar ile kubernetes kümelerine uzaktan erişebilirliği sağlayan yapılandırma dosyasıdır. Dosya formatı ".**yaml**" olarak belirlenmiştir. 

Kubeconfig içerisinde 3 ana başlık vardır. Bunlar;
* Clusters (kümeler)
* Users (kullanıcılar)
* Contexts (bağlamlar)

Bu içerikler kubectl veya Kubernetes Lens gibi uygulamaları kullanabilmek için yani Kubernetes Kümenize uzaktan bağlantı yapabilmek için gerekli yapılardır. 

# Kubeconfig içeriği

## Clusters (kümeler)

Elimizdeki kubeconfig dosyası ile hangi kümelere erişebileceğimiz belirlenmektedir. Tek bir kümeye erişilebileceği gibi birden fazla küme de belirtilebilmektedir.

Aşağıda örnek bir k8s kümesinin kubeconfig üzerinde tanımı bulunmaktadır. Küme'nin adı, sunucu adresi ve sertifika otoritesi sertifika verisi bulunmaktadır.

```yaml
clusters:
- name: "yerelkume"
  cluster:
    server: "https://192.168.1.100/k8s/clusters/yerelkume"
    certificate-authority-data: "LS0tL...0tLS1"
```

Bu veriler kubeconfig üzerinde tanımlı kümeleri belirtmektedir.

## Users (kullanıcılar)

Kubeconfig dosyası içerisinde çeşitli kümelere giriş yapmak için gerekli kullanıcılar da tanımlıdır. Kullanıcılar token üzerinden giriş yapabileceği gibi, kullanıcı adı ve parola ile de tanımlanabilmektedir. Tabi ki tüm bunlar kümeyi oluştururken veya küme içerisinden belirlemeniz gerekmektedir.

Aşağıda bu iki duruma örnek sunulmaktadır:

```yaml
users:
- name: "yerelhesap1"
  user:
    token: "kubeconfig-user-jltpvsvzxk:bwdtdfsdfsdsfsdf...dsfsdsdfh"
- name: "yerelhesap2"
  user:
    username: hesap2
    password: Parola01.01.!
```

## Contexts (bağlamlar)

Kubeconfig içerisindeki bağlam(context)ları Diğer iki bölümün birleştiricisi olarak düşünülebiliriz. 

Aşağıda örneğini görebileceğimiz şekilde bir kümenin içerisinde, yukarıda tanımladığımız gibi 2 kullanıcıyı atayabilirsiniz. 

```yaml
contexts:
- name: "bir"
  context:
    user: "yerelhesap1"
    cluster: "yerelkume"
- name: "iki"
  context:
    user: "yerelhesap2"
    cluster: "yerelkume"
```

Ve tabi ki istediğiniz kombinasyon ile bu yapıları kullanabilirsiniz.

# kubectl ile kubeconfig dosyasının kullanımı

Genellikle kubectl ile birlikte kendi ev dizininizdeki `~./.kube/config` dosyası kullanılmaktadır. Fakat isterseniz aşağıdaki şekilde her komut içerisinde yapılandırma dosyasını vererek de çalıştırabilirsiniz.

```bash
kubectl cluster-info --kubeconfig=/istenilen/dizin/dosya
```

Bu yapının bir alternatifi olarak da aşağıdaki gibi **KUBECONFIG** BASH değişkeni olarak yapılandırma dosyasını verebilirsiniz. 

```bash
export KUBECONFIG=/istenilen/dizin/dosya
```

Fakat bu çevre değişkenini değiştirdiğinizde sadece bulunduğunuz oturumda değiştiğini bilmeniz gerekir. Gerekirse bu çevre değişkenini "bash profilinize" ekleyecek şekilde otomatikleştirebilirsiniz.

# Rancher üzerindeki küme yapılandırma dosyası

Rancher kullanıyorsanız ve çoklu küme kullanıyorsanız ilgili kümenin kubeconfig içeriğine rahatlıkla erişebilirsiniz. 

Bunun için öncelikle sol üstteki hamburger menü'den Cluster Management ( Küme YÖnetimi ) içerisinde kümelerin listelendiği ekrana gelmeniz gerekiyor. 

Bu ekranda kümeyi seçip Download KubeConfig diyebileceğiniz gibi en sağdaki üç noktaya basarak da aynı işlemi yapabilirsiniz.  

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gr2qbx5iwf6zdf9f9oyu.png)

Bu sayede Rancher üzerindeki kümenizi uzaktan kubectl veya Kubernetes Lens ile de yönetebilirsiniz.