- vừa được xem lúc

Kubernetes - Dashboard with Ingress

0 0 3

Người đăng: Kiệt Tuấn

Theo Viblo Asia

[Trà đá ký sự] Nay Hà Nội nó mưa, thời tiết se lạnh, trà đá càng ế. Ngồi nghĩ về tương lai thấy nó mờ mịt như bầu trời lúc này. Bán nước thế này baoh mới mua được Audi đời 2003 🙁 Thôi thì tiện đang rảnh, ngồi nghiên cứu về Role trong K8s, thì viết luôn 1 cái bài này. Nó rất dễ rồi, nhưng cũng ok phết. Ai rảnh qua ủng hộ cốc nước nhé 😃) Kubernetes Dashboard hơi chuối. Nay rảnh rỗi, ngồi hí hoáy tí cho nó vui.

  1. Install Nginx Ingress

helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx

helm repo update

helm search repo nginx

helm pull ingress-nginx/ingress-nginx

tar -zxvf ingress-nginx-4.11.3.tgz

helm -n <namespaces> install <release name> -f <value file> <helm chart>

helm -n ingress-nginx install ingress-nginx -f ingress-nginx/values.yaml ingress-nginx

Chỉnh sửa file values.yaml:

vim values.yaml

Trong phần service, change type LoadBalancer → NodePort image.png

Thêm port trong phần NodePort:

http: “30080”

https: “30443”

image.png image.png

helm -n ingress-nginx install ingress-nginx -f ingress-nginx/values.yaml ingress-nginx

  1. Install nginx

apt install nginx -y

  1. Tạo 1 file config cho domain chúng ta muốn dùng :

vim /etc/nginx/conf.d/dashboard.conf

upstream k8s-cluster {

server 192.168.100.10:30443; server 192.168.100.11:30443; server 192.168.100.12:30443;

}

server {

listen 8000; server_name product.co;

location / { proxy_pass http://k8s-cluster;

proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme;
}

} image.png

  1. Install Kubernetes Dashboard:

helm repo add kubernetes-dashboard https://kubernetes.github.io/dashboard/

helm update repo

helm repo list

image.png

helm pull repo kubernetes-dashboard/kubernetes-dashboard

tar -zxvf kubernetes-dashboard-7.10.0.tgz

image.png

vim kubernetes-dashboard/values.yaml

Tìm và chỉnh sửa phần kong như sau :

NodePort → ClusterIP

image.png

helm upgrade kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard -f values.yaml -n kubernetes-dashboard

image.png image.png

  1. Create service account dashboard-user, và tạo cluster role binding, secret.

apiVersion: v1

kind: ServiceAccount

metadata:

name: dashboard-user namespace: kubernetes-dashboard

apiVersion: rbac.authorization.k8s.io/v1

kind: ClusterRoleBinding

metadata:

name: dashboard-user

roleRef: apiGroup: rbac.authorization.k8s.io

kind: ClusterRole name: cluster-admin

subjects:

- kind: ServiceAccount name: dashboard-user namespace: kubernetes-dashboard

apiVersion: v1 kind: Secret metadata:

name: dashboard-user namespace: kubernetes-dashboard

annotations: kubernetes.io/service-account.name: "dashboard-user"

type: kubernetes.io/service-account-token

image.png

Mục đích của việc này :

  • To protect your cluster data, Dashboard deploys with a minimal RBAC configuration by default.
  • Currently, Dashboard only supports logging in with a Bearer Token.

Nguồn : https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/

https://github.com/kubernetes/dashboard/blob/master/docs/user/access-control/creating-sample-user.md

In most cases after provisioning the cluster using kopskubeadm or any other popular tool, the ClusterRole cluster-admin already exists in the cluster. We can use it and create only a ClusterRoleBinding for our ServiceAccount. If it does not exist then you need to create this role first and grant required privileges manually.

→ ClusterRole cluster-admin đã có sẵn khi ta khỏi tạo k8s cluster, thế nên chúng ta chỉ việc tạo 1 ClusterRoleBinding cho service account ở trên.

Tiếp đến là tạo 1 secret để lưu trữ token để access vào UI Dashboard.

image.png

image.png image.png

Get token để access nào :

kubectl -n kubernetes-dashboard get secret dashboard-user -o jsonpath="{.data.token}" | base64 --decode > key.txt

image.png

  1. Tạo ingress-dashboard.yml để thực hiện việc access từ bên ngoài thông qua domain.

    image.png

Apply nó thôi.

image.png

Sau khi apply, phần rule của ingress đi vào backend là thằng kong-proxy là ok.

  1. Access và tận hưởng thành quả :

Add host trên máy cá nhân :

image.png

Mở browser và truy cập :

image.png

Nhập token và tận hưởng.

  1. Troubleshot lỗi

image.png

Tôi lượn 1 vòng gg thì thấy nhiều bài về cái lỗi này, nhưng với tôi thì là do trước đó tôi truy cập bằng

http://dashboard.test.com

Có vẻ thằng này nó k cho xác thực qua http. Thế nên tôi đã sửa lại ở các bước trên để làm sao có thể truy cập được qua https.

Chúc các bạn cuối tuần vui vẻ.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Build, Deploy Express Nodejs App với Docker Image, Kubernetes và Gitlab Registry

I, Đôi chút về Kubernetes. Kubernetes: là dịch vụ điều phối container.

0 0 56

- vừa được xem lúc

XÂY DỰNG MÔ HÌNH GITOPS CƠ BẢN VỚI ARGOCD

Xin chào mọi người. Đây là dự án về DevOps đầu tiên của mình, dạo gần đây thì mình đọc qua nhiều JD thì thấy rất nhiều công ty đã, đang và chuẩn bị đưa hệ thống chay trên hệ thống Kubernetes, và mình

0 0 28

- vừa được xem lúc

KUBERNETES AUTOSCALING WITH CUSTOM METRICS.

Giới thiệu. Nếu như các bạn đã từng tìm hiểu về Kubernetes thì nó có một tính năng rất đặc biệt đó là có thể tự động mở rộng ( Auto Scaling ) khi workload của hệ thống tăng cao.

0 0 4

- vừa được xem lúc

Xây dựng hệ thống Microservices đơn giản bằng Kubernetes (K8S)

Trong bài viết này, tôi sẽ trình bày cách để xây dựng một hệ thống microservices đơn giản, sử dụng Kubernetes (K8S). .

0 0 2