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: whoaim
replicas: 1
template:
metadata:
labels:
app: whoaim
spec:
containers:
- name: whoaim
image: docker.io/containous/whoami:v1.5.0
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: whoaim
labels:
app: whoaim
spec:
ports:
- port: 80
selector:
app: whoaim
验证gateway api
创建gateway
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
name: nginx-gateway
spec:
gatewayClassName: nginx
listeners:
- name: http
protocol: HTTP
port: 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-gateway
hostnames:
- "www.example.com"
rules:
- matches:
- path:
type: PathPrefix
value: /login
backendRefs:
- name: whoaim
port: 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/