Kubernetes Dashboard Kurulumu ve Nodeport ile Erişilmesi

Kubernetes Dashboard Kurulumu ve Nodeport ile Erişilmesi

Dashboard web tabanlı bir Kubernetes kullanıcı arayüzüdür. Bu arayüzü kullanarak metriklere bakabilir, ve kubectl ile yapabileceklerinizin bir kısmı biraz daha görsel halde deneyimleyebilirsiniz. Monitoring dışında; deployment ölçeklendirebilir, bir güncelleştirme başlatabilir, bir podu yeniden başlatabilir veya yeni uygulamalar oluşturabilirsiniz...

Her ne kadar kendim kullanmasam da takımdaki diğer arkadaşlar için zaman zaman kurmam gerekebiliyor.(kubectl çok daha kullanışlı) Birkaç farklı yolu var, kimisi daha güvenlik öncelikli kimisinin kurulumu ve yönetimi kolay. Ben bu yazımda önerilen "recomended way" ile kuracağım.

Kubernetes, git reposunda recomended way adında dashboard için oluşturulmuş yml'ı bulabilirsiniz. Bu yaml dashboard için ayrı bir namespace oluşturarak izolasyon sağlamanın yanında sizi bir sürü yaml yazmak ve yönetmek derdinden de kurtarıyor.

Not: İsteyenler için kubernetes helm chart da sağlıyor.

wget https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended.yaml
mv recommended.yaml kubernetes-dashboard.yml

wget ile bu yamlı alıp biraz özelleştirelim.

1- Dashboard service tipini nodeport'a çeviriyoruz.

kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
spec:
  ports:
    - port: 443
      nodePort: 31994
      targetPort: 8443
  selector:
    k8s-app: kubernetes-dashboard
  type: NodePort

Opsiyonel: Nodeport değerini vermez iseniz kendi bir değer atar.

kubectl apply -f kubernetes-dashboard.yml

Deployment statusüne bakalım;

$ kubectl get deployments -n kubernetes-dashboard                              
NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
dashboard-metrics-scraper   1/1     1            1           26s
kubernetes-dashboard        1/1     1            1           26s

Kurduğumuz dashboard'umuza erişmek için kubernetes https://api-server-ip-adresi:31994 üzerinden veya kubectl proxy komutu çalıştırdıktan sonra localhost:31994 üzerinden erişebiliriz.

Token Alma

Tarayıcınız üzerinden eriştiğinizde, token ve kubeconfig olmak üzere iki seçenek çıktığını göreceksiniz. İsterseniz, basic ( username, pass ) olarak erişim de sağlayabilirsiniz ama o konu bu yazının içine dahil değil. Belki ilerleyen zamanlarda güncelleme ile ekleyebilirim.

Token almak için bir tane service account oluşturup yetkilendirmemiz gerekiyor:

---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: kubernetes-turkey
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: kubernetes-turkey
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
  - kind: ServiceAccount
    name: kubernetes-turkey
    namespace: kube-system

Daha sonrasında kubectl apply -f admin-token.yml.

Komutlarımızı rahat çalıştırabilmek için;

SA_NAME="kubernetes-turkey"

Artık token almaya hazırız.

kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep ${SA_NAME} | awk '{print $1}')

....
====
token:
....
c0ykpdrzUzGmk5Q3JIpfqeorDI0lZd52-
....
....

Token kısmını kopyalayıp, tarayıcımıza yapıştırdıktan sonra, dashboardumuz hazır.

Her ne kadar dashboard bize görsel olarak kolaylık sağlasa da, şiddetle kubectl'e alışmanızı tavsiye ediyorum.

CKA sınavında bütün soruları/problemleri kubectl kullanarak çözmeniz bekleniyor, en azından ben aldığım zamanlar öyleydi.

Yorum Yapın