> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apinizer.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Dashboard

> Kubernetes Dashboard'ı deploy ederek cluster kaynaklarını görselleştirebilir ve yönetebilir. RBAC yapılandırması ile güvenli erişim sağlayabilir ve NodePort üzerinden dışarıdan erişilebilir hale getirebilir.

## Dashboard Arayüzünü Deploy Etme

Dashboard kullanıcı arayüzü varsayılan olarak konuşlandırılmamıştır. Dağıtmak için aşağıdaki adımları takip edin:

<Info>
  Küme verilerinizi korumak için, Dashboard varsayılan olarak en az bir RBAC yapılandırması ile konuşlandırır. Dashboard yalnızca Bearer Token ile giriş yapmayı destekler.
</Info>

```bash theme={null}
vi dashboard-service.yaml
```

```yaml theme={null}
apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kubernetes-dashboard
```

```bash theme={null}
vi dashboard-adminuser.yaml
```

```yaml theme={null}
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
  - kind: ServiceAccount
    name: admin-user
    namespace: kubernetes-dashboard
```

```bash theme={null}
kubectl apply -f dashboard-service.yaml
kubectl apply -f dashboard-adminuser.yaml
kubectl create clusterrolebinding permissive-binding --clusterrole=cluster-admin --user=admin --user=kubelet --group=system:serviceaccounts
kubectl create clusterrolebinding kubernetes-dashboard -n kube-system --clusterrole=cluster-admin --serviceaccount=kube-system:kubernetes-dashboard
```

```bash theme={null}
vi dashboard-deployment.yaml
```

```yaml theme={null}
apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kubernetes-dashboard
```

```bash theme={null}
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.1.0/aio/deploy/recommended.yaml
```

## NodePort Ayarı

Kubernetes dashboard yukarıdaki adımlar ile kurulduğunda varsayılan olarak ClusterIP ile açacaktır. Dışarıdan erişim için Service içindeki değeri aşağıdaki gibi değiştirmeliyiz.

```bash theme={null}
kubectl -n kubernetes-dashboard edit service kubernetes-dashboard
```

```yaml theme={null}
apiVersion: v1
...
name: kubernetes-dashboard
namespace: kube-system
resourceVersion: "343478"
selfLink: /api/v1/namespaces/kube-system/services/kubernetes-dashboard-head
uid: 8e48f478-993d-11e7-87e0-901b0e532516
spec:
  clusterIP: <YOUR_CLUSTER_IP>
  externalTrafficPolicy: Cluster
  ports:
    - port: 443
      protocol: TCP
      targetPort: 8443
      nodePort: 32100
  selector:
    k8s-app: kubernetes-dashboard
  sessionAffinity: None
  type: NodePort
status:
  loadBalancer: {}
```

Daha sonra Dashboard'un bulunduğu bağlantı noktasını kontrol etmemiz gerekiyor. Aşağıdakine benzer bir servis görüntüsü olmalıdır.

```bash theme={null}
kubectl -n kubernetes-dashboard get service kubernetes-dashboard
```

Örnek çıktı:

```
NAME                   TYPE       CLUSTER-IP   EXTERNAL-IP   PORT(S)         AGE
kubernetes-dashboard   NodePort   <YOUR_CLUSTER_IP>   <none>        443:32100/TCP   13d
```

Dashboard 32100 numaralı bağlantı noktasında (HTTPS) görüntülendi. Artık tarayıcınızdan erişebilirsiniz: `https://<YOUR_CLUSTER_IP>:32100`.

**Token Almak:**

```bash theme={null}
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | awk '/^deployment-controller-token-/{print $1}') | awk '$1=="token:"{print $2}'
```
