Tutorial Microk8s - Bagaimana cara deploy servis Kubernetes Dashboard & Role Base Access Control (RBAC)

    Konfigurasi Servis Dashboard & RBAC

    Enable Dashboard

    $ microk8s enable dashboard

    Image description

    **Gambar 1**

    Enable RBAC

    $ microk8s enable RBAC

    Sekarang, anda perlu menukar setting kubernetes-dashboard service supaya dapat di access menggunakan NodePort

    Run
    $ microk8s kubectl -n kube-system edit service kubernetes-dashboard

    apiVersion: v1
    ...
      name: kubernetes-dashboard
      namespace: kubernetes-dashboard
      resourceVersion: "343478"
      selfLink: /api/v1/namespaces/kubernetes-dashboard/services/kubernetes-dashboard
      uid: 8e48f478-993d-11e7-87e0-901b0e532516
    spec:
      clusterIP: 10.100.124.90
      externalTrafficPolicy: Cluster
      ports:
      - port: 443
        protocol: TCP
        targetPort: 8443
      selector:
        k8s-app: kubernetes-dashboard
      sessionAffinity: None
      type: ClusterIP <-- tukar ini kepada NodePort
    status:
      loadBalancer: {}

    Run command ini untuk melihat sama ada Kubernetes Dashboard runnning atau tidak. $ microk8s kubectl get svc -n kube-system
    atau
    $ microk8s kubectl get svc -n kubernetes-dashboard
    Seterusnya, create 1 file bernama sa-dashboard.yml dan masukkan code ini

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: admin-user
      namespace: kube-system # atau kubernetes-dashboard


    Run command ini

    $ microk8s kubectl apply -f sa-dashboard.yml

    Jika success , kita akan bind account admin-user ke Cluster yang ada sekarang. Create 1 file sa-dashboard-binding.yml

    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
    

    Run command ini untuk apply binding

    $ microk8s kubectl apply -f sa-dashboard-binding.yml


    Seterusnya, anda perlu dapatkan Token akses untuk akses Kubernetes Dashboard

    $ microk8s kubectl describe sa admin-user -n kube-system #atau kubernetes-dashboard

    Gambar 2

    Gambar 2

    Merujuk kepada Gambar 2, admin-user-token-clw9r adalah nama Secret yang dipakai oleh admin-user. Run command dibawah untuk melihat token

    $ microk8s kubectl describe secrets admin-user-token-clw9r -n kube-system #atau kubernetes-dashboard

    Image description

    Merujuk kepada Gambar 3, ia adalah contoh Token yang anda akan dapat dan perlu digunakan untuk akses ke dashboard. Copy Token ini untuk digunakan kemudian.

    Akses Kubernetes Dashboard melalui Web Browser

    Untuk mengakses Kubernetes Dashboard melalui Web Browser, and perlu mendapatkan Port yang telah dibuka sebelum ini. Run command ini untuk mendapatkan maklumat Port

    $ microk8s kubectl get svc -n kube-system #atau kubernetes-dashboard

    Image description

    Gambar 3

    Merujuk Gambar 3, Port yang telah dibuka untuk diakses adalah 31382. Jadi anda boleh menggunakan Port ini untuk mengakses Kubernetes Dashboard dari Host & Public network.

    Jangan lupa, gunakan Token yang anda Copy sebentar tadi untuk digunakan sebagai Access Token. Jika tiada apa-apa masalah anda akan dapat Authorization Page seperti Gambar 4 dibawah.

    Image description

    Gambar 4


    Image description

    Gambar 5

    Gambar 5 menunjukkan paparan yang anda akan dapat setelah log masuk dengan menggunakan Token.

    Untuk next notes, saya akan olah setiap komponen yang ada didalam Kubernetes Dashboard.

    Sekian,
    Terima Kasih
    Fariz Izwan Kamaruzzaman

    Rujukan:
    https://microk8s.io/docs/addon-dashboard
    https://github.com/kubernetes/dashboard/tree/master/docs/user/accessing-dashboard
    https://github.com/kubernetes/dashboard/blob/master/docs/user/access-control/README.md#admin-privileges
    https://github.com/kubernetes/dashboard/blob/master/docs/user/access-control/creating-sample-user.md

    Copyright © 2020