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.
Linux sistem yöneticisi olarak başladığım kariyerime devops alanında devam ediyorum. Linux, kubernetes, docker ve go en sevdiğim alanlar.. Bunların dışında GCP ve AWS tecrübem var.