K3s Traefik dashboard
To install the K3s, on the new VM instance, you can simply run the script in the terminal:
curl -sfL https://get.k3s.io | sh -
After the installation and initial setup process (which can take a few minutes), you can access the k3s cluster using the kube config file located at the /etc/rancher/k3s/k3s.yaml
.
Configure access to the cluster
First way
To access the cluster copy the k3s.yaml to the ~/.kube/config
.
$ mkdir ~/.kube
$ cp ~/.kube/config ~/.kube/config.bak
$ sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
Second way
After the installation and initial setup process (which can take a few minutes), you can access the k3s cluster using the kube config file located at the /etc/rancher/k3s/k3s.yaml
.
You can easily use this file as a Kube config exporting KUBECONF environment variable.
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
ubuntu@k3s:~$ k get pods -n kube-system
NAME READY STATUS
local-path-provisioner-6c79684f77-zv678 1/1 Running
coredns-d76bd69b-j9b6z 1/1 Running
metrics-server-7cd5fcb6b7-g5ff6 1/1 Running
helm-install-traefik-crd-w7b52 0/1 Completed
helm-install-traefik-tnt4w 0/1 Completed
svclb-traefik-c7zxl 2/2 Running
traefik-df4ff85d6-w8wn4 1/1 Running
/etc/rancher
to be under root ownership so you should set permissions accordingly for the user. For the current setup: sudo chown $USER /etc/rancher/k3s/k3s.yaml
.Configure traefik dashboard on the k3s
K3s is managing Traefik using CRs and helm-controller. To configure Traefik to expose the dashboard apply the next YAML configuration.
K3s install URL from above will install Traefik by default.
$ kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
local-path-provisioner-957fdf8bc-rhxr4 1/1 Running 0 109s
metrics-server-648b5df564-djdwd 1/1 Running 0 109s
coredns-77ccd57875-ps9v7 1/1 Running 0 109s
traefik-7fbbb44c44-d2t9q 0/1 ContainerCreating 0 23s
helm-install-traefik-crd-dlkkx 0/1 Completed 0 109s
helm-install-traefik-fvz42 0/1 Completed 1 109s
svclb-traefik-923b92ea-gszp9 2/2 Running 0 23s
Traefik dashboard is disabled by default. You need to enable it explicitly.
K3s uses HelmChartConfig object to install helm charts. Using the HelmChartConfig below will restart the cluster and expose the dashboard.
apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
name: traefik
namespace: kube-system
spec:
valuesContent: |-
additionalArguments:
- "--api"
- "--api.dashboard=true"
- "--api.insecure=true"
ports:
traefik:
expose: true
providers:
kubernetesCRD:
allowCrossNamespace: true
It's important to say that you need to specify the namespace as kube-system
, since Traefik should be running there.
When you run kubectl apply -f traefik-custom-conf.yaml
, Traefik will be restarted and the new pod will pick up the configuration provided (Can take some time).
If you want to persist the changes on k3s restart you can create a new file in the /etc/rancher/k3s/server/manifests/
named traefik-anything-you-want.yaml
and k3s will pick up the configuration on file change and k3s restarts.
➜ kubectl get svc -n kube-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kube-dns ClusterIP 10.43.0.10 <none> 53/UDP,53/TCP,9153/TCP 121d
metrics-server ClusterIP 10.43.165.156 <none> 443/TCP 121d
traefik LoadBalancer 10.43.17.43 10.8.0.2 9000:31012/TCP,80:32380/TCP,443:31450/TCP 121d
You will see the 9000 port exposed in the service trefik. This is the traefik port and you can access the dashboard via 9000 port.
Access traefik dashboard
If you installed directly on your operating system you can access the Traefik dashboard via IP of your machine.
http://localhost:9000/dashboard/
Ingresses are exposed via 80 and 443 ports.