基于 APIGateway 打造生产级别的 Knative 服务

在实际应用中,经过 APIGateway(即 API 网关),能够为内部服务提供保护,提供统一的鉴权管理,限流、监控等能力,开发人员只须要关注内部服务的业务逻辑便可。本文就会介绍一下如何经过阿里云 API 网关结合内网 SLB,将 Knative 服务对外发布,以打造生产级别的 Knative 服务。html

关于阿里云 API 网关

阿里云 API 网关为您提供完整的 API 托管服务,辅助用户将能力、服务、数据以 API 的形式开放给合做伙伴,也能够发布到 API 市场供更多的开发者采购使用。后端

  • 提供防攻击、防重放、请求加密、身份认证、权限管理、流量控制等多重手段保证 API 安全,下降 API 开放风险
  • 提供 API 定义、测试、发布、下线等全生命周期管理,并生成 SDK、API 说明文档,提高 API 管理、迭代的效率
  • 提供便捷的监控、报警、分析、API 市场等运维、运营工具,下降 API 运营、维护成本

基于阿里云 API 网关发布服务

绑定 Istio 网关到内网SLB

建立内网SLB,绑定 Istio 网关应用。能够直接经过下面的 yaml 建立内网 SLB:api

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/alicloud-loadbalancer-address-type: "intranet"
  labels:
    app: istio-ingressgateway
    istio: ingressgateway
  name: istio-ingressgateway-intranet
  namespace: istio-system
spec:
  externalTrafficPolicy: Cluster
  ports:
  - name: status-port
    port: 15020
    protocol: TCP
    targetPort: 15020
  - name: http2
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  - name: tls
    port: 15443
    protocol: TCP
    targetPort: 15443
  selector:
    app: istio-ingressgateway
    istio: ingressgateway
  sessionAffinity: None
  type: LoadBalancer

建立完成以后,能够在登陆阿里云容器服务控制台,进入 【路由和工做负载】菜单,选择 istio-system 命名空间,能够查看到所建立的内网 SLB 信息:安全

此处内网 SLB 地址为:192.168.0.23session

建立 Knative 服务

登陆阿里云容器服务控制台,建立 Knative 服务
这里咱们建立 helloworld 服务,如图所示:app

验证一下服务是否能够访问:less

[root@iZbp1c1wa320d487jdm78aZ ~]# curl -H "Host:helloworld.default.example.com" http://192.168.0.23
Hello World!

配置 API 网关

接下来进入重头戏,如何配置 API 网关与 Knative Service 进行访问。运维

建立分组

因为 API 须要归属分组,咱们首先建立分组。登陆阿里云API 网关控制台,开放API->分组管理:curl

点击【建立分组】,选择共享实例(VPC)工具

建立完成以后,咱们须要在分组详情中开启公网域名,以进行公网服务访问:能够经过 1 开启公网二级域名进行测试,或者经过 2 设置独立域名。

这里咱们开启公网二级域名进行测试访问,开启后如图所示:

建立 VPC 受权

因为咱们是访问K8s VPC内的服务,须要建立 VPC 受权。选择 开放API->VPC 受权:

点击【建立受权】,设置VPC Id以及内网SLB实例Id。这里建立 knative-test VPC 受权

建立应用

建立应用用于阿里云APP 身份认证。该认证要求请求者调用该 API 时,需经过对 APP 的身份认证。这里咱们建立 knative 应用。

建立 API

登陆阿里云API 网关控制台,开放API->API列表,选择【建立API】。关于建立API,详细可参考:建立API

接下来咱们输入【基本信息】,选择安全认证:阿里云APP,AppCode认证能够选择:容许AppCode认证(Header & Query)。具体AppCode认证方式能够参考:使用简单认证(AppCode)方式调用API

[](https://help.aliyun.com/docum...,定义API请求。协议能够选择HTTP和HTTPS, 请求Path可设置/

点击下一步,定义API后端服务。后端服务类型咱们设置为VPC,设置VPC受权名称等。

设置常量参数,其中后端参数名称:Host,参数值:helloworld.default.example.com,参数位置:Header。

点击下一步,完成建立。

发布 API

建立完成以后,可直接进行发布。

选择 线上,点击【发布】

验证 API

发布完成以后,咱们能够在【API列表】中看到当前API:线上 (运行中)

在调用API测试以前,咱们须要对该API进行应用受权,进入API详情,选择【受权信息】

点击【添加受权】,这里咱们选择上面建立的knative应用进行受权

接下来咱们进行验证API,点击在API详情中,选择【调试API】,点击【发送请求】,能够看到测试结果信息:

至此,咱们经过阿里云 API 网关将 Knative 服务发布完成。

小结

经过上面的介绍,相信你们对如何经过阿里云 API 网关将 Knative 服务对外发布有了初步的了解。在实际生产中咱们对Serverless 服务的访问安全、流控、监控运维等要求是没必要可少的,而经过阿里云 API 网关刚好能够对 Knative 服务提供保驾护航能力。经过阿里云 API 网关能够对 API 服务配置:

  • 流量控制
  • 访问鉴权
  • 日志监控
  • API 全生命周期管理 : 测试、发布、下线

正是经过这些能力,阿里云 API 网关为 Knative 提供生产级别的服务。欢迎有兴趣的同窗一块儿交流。



本文做者:元毅

原文连接

本文为云栖社区原创内容,未经容许不得转载。

相关文章
相关标签/搜索