做者 | 阿里云智能事业群高级开发工程师 元毅html
导读:在实际应用中,经过 APIGateway(即 API 网关),能够为内部服务提供保护、提供统一的鉴权管理、限流、监控等能力,开发人员只须要关注内部服务的业务逻辑便可。做者元毅在本文中将会为你们介绍:如何经过阿里云 API 网关以及内网 SLB,将 Knative 服务对外发布,以打造生产级别的 Knative 服务。
阿里云 API 网关为您提供完整的 API 托管服务,辅助用户将能力、服务、数据以 API 的形式开放给合做伙伴,也能够发布到 API 市场供更多的开发者采购使用。segmentfault
建立内网 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 信息:api
此处内网 SLB 地址为:192.168.0.23安全
登陆阿里云容器服务控制台,建立 Knative 服务。
这里咱们建立 helloworld 服务,如图所示:session
验证一下服务是否能够访问:app
[root@iZbp1c1wa320d487jdm78aZ ~]# curl -H "Host:helloworld.default.example.com" http://192.168.0.23 Hello World!
接下来进入重头戏,如何配置 API 网关与 Knative Service 进行访问。less
因为 API 须要归属分组,咱们首先建立分组。登陆阿里云 API 网关控制台,开放 API-> 分组管理:运维
点击【建立分组】,选择共享实例(VPC)。curl
建立完成以后,咱们须要在分组详情中开启公网域名,以进行公网服务访问:能够经过 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 提供生产级别的服务。欢迎有兴趣的同窗一块儿交流。
做者简介:
元毅,阿里云容器平台高级开发工程师,负责阿里云容器平台 Knative 相关工做。
了解 ACK 容器服务,请查看:
https://www.aliyun.com/produc...
搜索「阿里巴巴云原生公众号」获取更多K8s容器技术内容