APIG Ingress 基于火山引擎 API 网关(API Gateway,APIG) 提供托管的云原生网关功能,实现高可用、高扩展的 Ingress 流量管理方式。本文主要介绍使用 APIG Ingress 实现业务发布的操作方法和注意事项。
apiVersion: loadbalancer.vke.volcengine.com/v1beta1 kind: APIGInstance metadata: name: apig-instance-demo # APIGInstance 资源名称 spec: id: gcqplplr8a*** # 已有 APIG 实例 ID ingress: enable: true # 开启 APIG 路由同步 enableAllIngressClasses: false enableIngressWithoutIngressClass: false ingressClasses: # 配置路由同步生效的 IngressClasses - apig enableAllNamespaces: true # 同步所有的命名空间中的 Ingress
说明
本例中使用已有的 APIG 实例对接 APIGInstance,采用了最简单的配置方式。更多配置详情,请参见 通过 kubectl 创建 APIG Ingress。
deployment-demo.yaml
代码如下:apiVersion: apps/v1 kind: Deployment metadata: name: deployment-demo # 无状态负载名称 namespace: default # 无状态负载所在的命名空间 spec: replicas: 1 # 无状态负载的副本数 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx # 容器名称 image: doc-cn-beijing.cr.volces.com/vke/nginx-demo:v1.0 # 应用镜像的地址和版本,请配置为您自己的镜像地址 ports: - containerPort: 80 # 容器开放的端口号
kubectl apply -f deployment-demo.yaml
deployment-demo.yaml
代码如下:apiVersion: v1 kind: Service metadata: name: service-demo # 服务名称 spec: selector: app: nginx # 通过标签选择器将服务与后段容器组(Pod)绑定。 ports: - name: rule # 端口映射规则名称 protocol: TCP # 服务协议,支持 TCP 或 UDP port: 80 # 服务端口 nodePort: 30000 # 节点端口,取值范围为 30000~32767。 targetPort: 80 # 容器端口,即工作负载对外提供服务的端口号或端口名称,例如:Nginx 开放的默认端口号为 80 type: NodePort # 服务的类型
kubectl apply -f service-demo.yaml
apig-ingress.yaml
代码如下:apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: apig-ingress # 路由规则的名称 namespace: default # 路由规则所属的命名空间 annotations: ingress.vke.volcengine.com/apig-instance-name: apig-instance-demo # 指定 APIGInstance 资源名称 spec: ingressClassName: apig rules: - host: example.com # 需要对外提供访问的域名 http: paths: - pathType: Prefix # 路径匹配规则,默认为 Prefix(前缀匹配) path: / # 请求匹配的路径 backend: service: name: service-demo # 需要对接的服务名称 port: number: 80 # 需要对接服务的端口号
说明
本例中使用最简单的方式创建 APIG Ingress。更多配置,请参见 通过 kubectl 创建 APIG Ingress。
kubectl apply -f apig-ingress.yaml
使用 APIG Ingress 中配置的域名访问服务。
curl http://example.com
预期结果如下,表示能够通过 APIG Ingress 访问到后端的服务。
<!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style> html { color-scheme: light dark; } body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>Welcome to nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p> <p>For online documentation and support please refer to <a href="http://nginx.org/">nginx.org</a>.<br/> Commercial support is available at <a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p> </body> </html>