在实际应用中,通过 APIGateway(即 API 网关),可以为内部服务提供保护,提供统一的鉴权管理,限流、监控等能力,开发人员只需要关注内部服务的业务逻辑即可。本文就会介绍一下如何通过阿里云 API 网关结合内网 SLB,将 Knative 服务对外发布,以打造生产级别的 Knative 服务。
阿里云 API 网关为您提供完整的 API 托管服务,辅助用户将能力、服务、数据以 API 的形式开放给合作伙伴,也可以发布到 API 市场供更多的开发者采购使用。
创建内网SLB,绑定 Istio 网关应用。可以直接通过下面的 yaml 创建内网 SLB:
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.23
登录阿里云容器服务控制台,
创建 Knative 服务。
这里我们创建 helloworld 服务,如图所示:

验证一下服务是否可以访问:
[root@iZbp1c1wa320d487jdm78aZ ~]# curl -H "Host:helloworld.default.example.com" http://192.168.0.23Hello World!
接下来进入重头戏,如何配置 API 网关与 Knative Service 进行访问。
由于 API 需要归属分组,我们首先创建分组。登录
阿里云API 网关控制台,开放API->分组管理:

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

创建完成之后,我们需要在分组详情中开启公网域名,以进行公网服务访问:可以通过
1 开启公网二级域名进行测试,或者通过
2 设置独立域名。

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

由于我们是访问K8s VPC内的服务,需要创建 VPC 授权。选择 开放API->VPC 授权:

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

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

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

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

点击下一步,定义API请求。协议可以选择HTTP和HTTPS, 请求Path可设置
/。

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

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

点击下一步,完成创建。

创建完成之后,可直接进行发布。

选择
线上,点击【发布】

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

在调用API测试之前,我们需要对该API进行应用授权,进入API详情,选择【授权信息】

点击【添加授权】,这里我们选择上面创建的
knative应用进行授权

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

至此,我们通过阿里云 API 网关将 Knative 服务发布完成。
通过上面的介绍,相信大家对如何通过阿里云 API 网关将 Knative 服务对外发布有了初步的了解。在实际生产中我们对Serverless 服务的访问安全、流控、监控运维等要求是不必可少的,而通过阿里云 API 网关恰好可以对 Knative 服务提供保驾护航能力。通过阿里云 API 网关可以对 API 服务配置:
正是通过这些能力,阿里云 API 网关为 Knative 提供生产级别的服务。欢迎有兴趣的同学一起交流。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69947441/viewspace-2657418/ ,如需转载,请注明出处,否则将追究法律责任。