CKA 版本:1.32
第九套題是涉及gateway api相關。
注意:本文不是題目,只是為了學習相關知識點做的實驗。僅供參考
實驗目的
創建一個gateway api,來實現后端鏡像的外部訪問。
gateway api 通過nginx實現
實驗開始
安裝nginx gateway
第一步 安裝gateway api 資源
https://github.com/kubernetes-sigs/gateway-api/releases/tag/v1.3.0
確定資源安裝完成。
第二步 安裝crd
kubectl apply -f https://raw.githubusercontent.com/nginx/nginx-gateway-fabric/v2.0.0/deploy/crds.yaml
第三步 安裝nginx Gateway Fabric
kubectl apply -f https://raw.githubusercontent.com/nginx/nginx-gateway-fabric/v2.0.0/deploy/default/deploy.yaml
#國內鏡像下載很慢,需要等待較長時間。
檢查pod
檢查gc
kubectl get gc
可以看到 gc已經安裝完成。
創建后端service
apiVersion: apps/v1
kind: Deployment
metadata:name: whoaim
spec:selector:matchLabels:app: whoaimreplicas: 1template:metadata:labels:app: whoaimspec:containers:- name: whoaimimage: docker.io/containous/whoami:v1.5.0imagePullPolicy: IfNotPresentports:- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:name: whoaimlabels:app: whoaim
spec:ports:- port: 80selector:app: whoaim
驗證gateway api
創建gateway
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:name: nginx-gateway
spec:gatewayClassName: nginxlisteners:- name: httpprotocol: HTTPport: 80
檢查gateway
注意 這里創建gateway后,會在gateway所在的創建一個pod,來實現流量監控。
出現新的pod
檢查,出現新的svc
注意: gateway刪除后,自動生成的svc和pod都會被刪除。
創建http route
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:name: httproute
spec:parentRefs:- name: nginx-gatewayhostnames:- "www.example.com"rules:- matches:- path:type: PathPrefixvalue: /loginbackendRefs:- name: whoaimport: 80
添加dns解析:192.168.100.41 www.example.com
訪問測試:
curl www.example.com:31930/login
通過地址成功訪問。
刪除gateway,自動生成的pod被刪除。
參考鏈接:
https://docs.nginx.com/nginx-gateway-fabric/install/manifests/