首先需要先啟用 microk8s 的 Ingress:
查看可以使用的 ingressclass:
範例輸出:
查看 kubernetes-dashboard 服務的連接埠:
範例輸出:
建立 dashboard-ingress.yaml 檔案來定義 ingress:
輸入以下內容:
因為 ingress 需要綁定 Domain name,這裡我們使用一個不存在的網域 dashboard.local 代替。因為網域不存在,瀏覽器去 DNS 尋找此網域對應的 IP 會找不到,所以我們需要手動指定電腦的 IP 映射, 使用 Windows 的讀者可以查看這篇:Windows 手動設定本機網域名稱對應 hosts
假設 k8s 的 IP 是 192.168.0.30 ,那我們只要設定上面指定的網域 dashboard.local 為 192.168.0.30 即可。
將 dashboard-ingress.yaml 定義的資源套用的 k8s 中:
可以使用下面的指令確認 dashboard-ingress.yaml 定義的資源的狀態:
範例輸出:
查看 ingress 對應的網域:
( -n kube-system 代表的是 namespace)
範例輸出:
然後使用瀏覽器開啟下面的網頁即可看到 Kubernetes Dashboard 的頁面:
如果要將 dashboard-ingress.yaml 定義的資源刪掉可以使用下面的指令:
文章撰寫中...請稍後...
參考資料:
kubernetes - Ingress
kubernetes - Ingress Controllers
microk8s enable ingress
查看可以使用的 ingressclass:
microk8s kubectl get ingressclass
範例輸出:
microk8s kubectl get ingressclass
NAME CONTROLLER PARAMETERS AGE
nginx k8s.io/ingress-nginx <none> 2d4h
public k8s.io/ingress-nginx <none> 2d4h
查看 kubernetes-dashboard 服務的連接埠:
microk8s kubectl get service kubernetes-dashboard -n kube-system
範例輸出:
microk8s kubectl get service kubernetes-dashboard -n kube-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes-dashboard ClusterIP 10.152.183.80 <none> 443/TCP 3d23h
建立 dashboard-ingress.yaml 檔案來定義 ingress:
sudo vi dashboard-ingress.yaml
輸入以下內容:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: dashboard-ingress
namespace: kube-system
annotations:
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" # 指定後端通訊使用 HTTPS
spec:
ingressClassName: public # 上面使用指令查詢到的 ingressClassName
rules:
- host: dashboard.local # 指定要連接的網域
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: kubernetes-dashboard
port:
number: 443 # 上面使用指令查詢到的連接埠
因為 ingress 需要綁定 Domain name,這裡我們使用一個不存在的網域 dashboard.local 代替。因為網域不存在,瀏覽器去 DNS 尋找此網域對應的 IP 會找不到,所以我們需要手動指定電腦的 IP 映射, 使用 Windows 的讀者可以查看這篇:Windows 手動設定本機網域名稱對應 hosts
假設 k8s 的 IP 是 192.168.0.30 ,那我們只要設定上面指定的網域 dashboard.local 為 192.168.0.30 即可。
將 dashboard-ingress.yaml 定義的資源套用的 k8s 中:
microk8s kubectl apply -f dashboard-ingress.yaml
可以使用下面的指令確認 dashboard-ingress.yaml 定義的資源的狀態:
microk8s kubectl describe -f dashboard-ingress.yaml
範例輸出:
microk8s kubectl describe -f dashboard-ingress.yaml
Name: dashboard-ingress
Labels: <none>
Namespace: kube-system
Address: 127.0.0.1
Ingress Class: public
Default backend: <default>
Rules:
Host Path Backends
---- ---- --------
dashboard.local
/ kubernetes-dashboard:443 (10.1.36.193:8443)
Annotations: nginx.ingress.kubernetes.io/backend-protocol: HTTPS
nginx.ingress.kubernetes.io/ssl-redirect: true
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Sync 2s (x2 over 18s) nginx-ingress-controller Scheduled for sync
Normal Sync 2s (x2 over 18s) nginx-ingress-controller Scheduled for sync
查看 ingress 對應的網域:
( -n kube-system 代表的是 namespace)
microk8s kubectl get ingress -n kube-system
範例輸出:
microk8s kubectl get ingress -n kube-system
NAME CLASS HOSTS ADDRESS PORTS AGE
dashboard-ingress public dashboard.local 127.0.0.1 80 4m2s
然後使用瀏覽器開啟下面的網頁即可看到 Kubernetes Dashboard 的頁面:
https://dashboard.local
如果要將 dashboard-ingress.yaml 定義的資源刪掉可以使用下面的指令:
microk8s kubectl delete -f dashboard-ingress.yaml
文章撰寫中...請稍後...
參考資料:
kubernetes - Ingress
kubernetes - Ingress Controllers
留言
張貼留言
如果有任何問題、建議、想說的話或文章題目推薦,都歡迎留言或來信: a@ruyut.com