You need to enable JavaScript to run this app.
容器服务

容器服务

复制全文
APIG Ingress
使用 APIG Ingress 实现业务发布
复制全文
使用 APIG Ingress 实现业务发布

APIG Ingress 基于火山引擎 API 网关(API Gateway,APIG) 提供托管的云原生网关功能,实现高可用、高扩展的 Ingress 流量管理方式。本文主要介绍使用 APIG Ingress 实现业务发布的操作方法和注意事项。

使用限制

  • 请勿擅自在 APIG 控制台上更改通过创建 APIG Ingress 维护的 APIG 实例,否则将造成 APIG 服务异常,须自行承担责任。
  • 若在 APIG 控制台上修改 APIG Ingress 指定或维护的资源和配置,可能存在配置被覆盖的风险。
  • 使用 APIG 产品,会产生资源使用费用。详情请参见 APIG 产品计费

前提条件

  • 已开通 API 网关服务。若未开通,请登录 API 网关控制台,根据控制台向导提示,开通服务。
  • 已安装 apig-controller 组件,详情请参见 安装组件
  • 已在集群中生成私网 KubeConfig,详情请参见 连接集群
  • (可选)如果需要对接已有 API 网关实例,请确保 API 网关控制台上存在状态为 运行中 的实例。详情请参见 创建实例

操作步骤

步骤一:创建 APIGInstance

  1. 登录 容器服务控制台
  2. 单击左侧导航栏中的 集群
  3. 在集群列表页面,单击目标集群。
  4. 在左侧导航栏中,选择 工作负载 > 对象浏览器。 单击 使用 Yaml 创建,创建路由规则。指定外部域名和服务的映射关系。
    • 在 类型 下拉菜单中选择 自定义
    • 在 Yaml 配置框内输入 Yaml 配置。
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

  1. 创建完成后,在 对象浏览器 页面,单击 apiginstance,进入详情页面,查看创建的 APIGInstance 资源。

步骤二:部署应用和服务

  1. 创建工作负载的 YAML 文件。示例文件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 # 容器开放的端口号
  1. 执行以下命令,创建工作负载。
kubectl apply -f deployment-demo.yaml
  1. 创建服务的 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 # 服务的类型
  1. 执行以下命令,创建服务。
kubectl apply -f service-demo.yaml

步骤三: 创建 APIG Ingress

  1. 创建路由规则(Ingress)的 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

  2. 执行以下命令,创建 APIG Ingress。
    kubectl apply -f apig-ingress.yaml
    

结果验证

查看 APIG Ingress 状态

  1. 登录 容器服务控制台
  2. 单击左侧导航栏中的 集群
  3. 在集群列表页面,单击需要配置路由规则的目标集群。
  4. 在集群管理页面的左侧导航栏中,选择 服务与路由 > 路由规则,在路由规则列表中查看 APIG Ingress 的状态。
    alt
  5. 单击 APIG Ingress 名称,进入详情页面。选择 事件 页签,即可查看 APIG Ingress 的路由同步事件。
    alt

访问应用

使用 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>
最近更新时间:2024.08.14 17:08:58
这个页面对您有帮助吗?
有用
有用
无用
无用