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/