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

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 在实际应用中,通过 APIGateway(即 API 网关),可以为内部服务提供保护,提供统一的鉴权管理,限流、监控等能力,开发人员只需要关注内部服务的业务逻辑即可。本文就会介绍一下如何通过阿里云 API 网关结合内网 SLB,将 Knative 服务对外发布,以打造生产级别的 Knative 服务。

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

关于阿里云 API 网关

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

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

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

绑定 Istio 网关到内网SLB

创建内网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 信息:
image

此处内网 SLB 地址为:192.168.0.23

创建 Knative 服务

登录阿里云容器服务控制台,创建 Knative 服务
这里我们创建 helloworld 服务,如图所示:
image

验证一下服务是否可以访问:

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

配置 API 网关

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

创建分组

由于 API 需要归属分组,我们首先创建分组。登录阿里云API 网关控制台,开放API->分组管理:
image

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

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

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

创建 VPC 授权

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

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

创建应用

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

创建 API

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

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

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

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

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

点击下一步,完成创建。
image

发布 API

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

选择 线上,点击【发布】
image

验证 API

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

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

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

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

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

小结

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

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

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

欢迎加入 Knative 交流群

image

目录
相关文章
|
1月前
|
Prometheus 监控 前端开发
七步成诗 - 快速创建有效 SLO
七步成诗 - 快速创建有效 SLO
|
1月前
|
Kubernetes 监控 物联网
IoT 边缘集群基于 Kubernetes Events 的告警通知实现(二):进一步配置
IoT 边缘集群基于 Kubernetes Events 的告警通知实现(二):进一步配置
|
1月前
|
SQL 存储 监控
|
1月前
|
存储 Kubernetes 监控
IoT 边缘集群基于 Kubernetes Events 的告警通知实现
IoT 边缘集群基于 Kubernetes Events 的告警通知实现
|
7月前
|
Kubernetes 应用服务中间件 API
k8s--deployment 控制器、扩缩容、升级策略
k8s--deployment 控制器、扩缩容、升级策略
|
11月前
|
运维 Kubernetes Cloud Native
OpenKruise V1.4 版本解读:新增 Job Sidecar Terminator 能力
OpenKruise V1.4 版本解读:新增 Job Sidecar Terminator 能力
|
Kubernetes 监控 网络性能优化
kubernetes 资源管理策略 Pod 的服务质量(QoS)
kubernetes 资源管理策略 Pod 的服务质量(QoS)
|
运维 监控 微服务
在ASM中为应用服务启用SLO(1):服务等级目标SLO概览
服务等级目标 (SLO) 提供了一种形式化的方式来描述、衡量和监控微服务应用程序的性能、质量和可靠性。SLO 为应用开发和平台团队、运维团队提供了一个共享的质量基准,作为衡量服务水平质量以及持续改进的参考。SLO 由一个或多个服务等级指标 (SLI) 组成。使用 SLI 组合定义的 SLO 允许团队以更精确和相关的方式描述服务健康状况。 阿里云服务网格ASM提供了开箱即用的基于服务等级目标SLO的监控和告警能力,用于监控应用服务之间调用的延迟和错误率特征。
424 1
在ASM中为应用服务启用SLO(1):服务等级目标SLO概览
|
资源调度 Kubernetes Perl
kubernetes 资源管理策略 LimitRange
kubernetes 资源管理策略 LimitRange
|
边缘计算 运维 Kubernetes
OpenYurt v1.1.0: 新增 DaemonSet 的 OTA 和 Auto 升级策略
在 OpenYurt v1.1.0 版本中,我们提供了 Auto 和 OTA 的升级策略。Auto 的升级策略重点解决由于节点 NotReady 而导致 DaemonSet升级阻塞的问题,OTA 的升级策略主要应对边缘侧用户需要自主控制升级时机的场景。以下对这两种策略做简要的介绍。
OpenYurt v1.1.0: 新增 DaemonSet 的 OTA 和 Auto 升级策略

相关产品

  • 容器镜像服务
  • 容器服务Kubernetes版