关于网关:如何与-Dapr-集成打造-Apache-APISIX-网关控制器

5次阅读

共计 3991 个字符,预计需要花费 10 分钟才能阅读完成。

实质上,Apache APISIX 控制器将配置雷同规范 Dapr annotations 以注入 daprd sidecar。通过公开这个 sidecar,将容许内部应用程序与集群中启用 Dapr 的应用程序进行通信。

下图为理论我的项目中的架构流程:

根本我的项目概览

Apache APISIX Ingress

在 K8s 生态中,Ingress 作为示意 K8s 流量入口的一种资源,想要让其失效,就须要有一个 Ingress Controller 去监听 K8s 中的 Ingress 资源,并对这些资源进行相应规定的解析和理论承载流量。在当下趋势中,像 Kubernetes Ingress Nginx 就是应用最宽泛的 Ingress Controller 实现。

而 APISIX Ingress 则是另一种 Ingress Controller 的实现。跟 Kubernetes Ingress Nginx 的区别次要在于 APISIX Ingress 是以 Apache APISIX 作为理论承载业务流量的数据面。如下图所示,当用户申请到具体的某一个服务 /API/ 网页时,通过内部代理将整个业务流量 / 用户申请传输到 K8s 集群,而后通过 APISIX Ingress 进行后续解决。

从上图能够看到,APISIX Ingress 分成了两局部。一部分是 APISIX Ingress Controller,作为管制面它将实现配置管理与散发。另一部分 APISIX Proxy Pod 负责承载业务流量,它是通过 CRD(Custom Resource Definitions) 的形式实现的。Apache APISIX Ingress 除了反对自定义资源外,还反对原生的 K8s Ingress 资源。

更多详情可参考:https://www.apiseven.com/zh/b…

### Dapr

Dapr 是一个可移植、事件驱动的运行时。它使开发人员简略地去构建运行在云和 edge 上弹性、无状态和有状态的利用,并且蕴含多种语言和开发人员框架。

明天,咱们正经验一波云利用浪潮。开发人员相熟 web+ 数据库应用程序架构 (例如经典的 3 层设计),但不相熟实质上是分布式的微服务应用程序架构。开发人员心愿专一于业务逻辑,同时依附平台为他们的应用程序注入伸缩性、弹性、可维护性、弹性和其余本地云架构的属性。

这就是 Dapr 的用武之地。

Dapr 能够将构建微服务应用程序的最佳实际编入凋谢、独立的构建块中,使用户可能应用本人抉择的语言和框架构建可移植的应用程序。每个构建块都是齐全独立,并可在应用程序中应用其中的一个或多个。

此外,Dapr 与平台无关,这意味着用户能够在任何 Kubernetes 集群和其余与 Dapr 集成的托管环境本地运行应用程序。

更多详情可参考:https://docs.dapr.io/zh-hans/…

实际开始

环境筹备

  • Kubernetes 1.19+ 集群,集群上曾经配置了 Dapr
  • 装置了 Helm CLI 3x
  • Kubectl CLI 已装置并配置为拜访集群
  • 可选:用于创立自签名证书的 OpenSSL
  • Apache APISIX 的 Helm Chart 版本为 0.7.2+。具体起因参考:https://github.com/apache/api…

步骤一:Apache APISIX Helm 配置

通过运行以下命令为 Apache APISIX 控制器增加最新的 helm chart repo:

$ helm repo add apisix https://charts.apiseven.com
$ helm repo update

步骤二:创立 Apache APISIX Ingerss 命名空间

确保以后 kubectl 上下文指向正确的 Kubernetes 集群,而后运行以下命令:

kubectl create namespace ingress-apisix

应用以下内容创立一个名为 dapr-annotations.yaml 的文件,以在 Apache APISIX Proxy Pod 上设置正文。

apisix:
podAnnotations:
dapr.io/enabled: "true"
dapr.io/app-id: "apisix-gateway"
dapr.io/app-port: "9080"
dapr.io/enable-metrics: "true"
dapr.io/metrics-port: "9099"
dapr.io/sidecar-listen-addresses: 0.0.0.0
dapr.io/config: ingress-apisix-config

留神:下面的 app-port 是通知 daprd sidecar Proxy 在监听哪个端口。无关受反对的正文残缺列表,可参考 Dapr Kubernetes pod 正文标准 [1]。

上面以我集体在 AKS 上装置的示例 dapr-annotations.yaml 进行展现。

apisix:
podAnnotations:
dapr.io/app-id: apisix-gateway
dapr.io/app-port: '9080'
dapr.io/enable-metrics: 'true'
dapr.io/enabled: 'true'
dapr.io/metrics-port: '9099'
dapr.io/sidecar-listen-addresses: 0.0.0.0
dapr.io/config: ingress-apisix-config
gateway:
type: LoadBalancer
ingress-controller:
enabled: true
dashboard:
enabled: true

接下来运行以下命令(援用上述文件):

helm install apisix apisix/apisix -f dapr-annotations.yaml -n ingress-apisix

步骤四:创立 Apache APISIX 的 Dapr Sidecar 资源

首先,配置 Apache APISIX upstream-apisix-dapr。

在这里主机名填写:apisix-gateway-dapr,端口号填写 3500。

{
"nodes": [
{
"host": "apisix-gateway-dapr",
"port": 3500,
"weight": 1
}
],
"retries": 1,
"timeout": {
"connect": 6,
"read": 6,
"send": 6
},
"type": "roundrobin",
"scheme": "http",
"pass_host": "pass",
"name": "apisix-dapr"
}

而后配置 Apache APISIX 服务 apisix-gateway-dapr,上游服务抉择 apisix-dapr。

{
"name": "apisix-gateway-dapr",
"upstream_id": "376187148778341098"
}

步骤五:部署测试示例我的项目

HTTPBin 是以 Python+Flask 写的一款工具,这款工具涵盖了各类 HTTP 场景,且每个接口都有返回。接下来,咱们应用 kennethreitz/httpbin 作为示例我的项目进行演示。

``
kubectl apply -f 01.namespace.yaml
kubectl apply -f 02.deployment.yaml
kubectl apply -f 03.svc.yaml
``

上图为假如有一个应用 Dapr app-id kennethreitz-httpbin 运行的微服务。

门路匹配改写

这里补充一下对于门路匹配的相干设置。比方申请网关是 /httpbin/*,后端接管门路应该是 /*,两头的 httpbin 只充当服务名的标识。

在反对命名空间的托管平台上,Dapr 利用 ID 是合乎无效的 FQDN 格局,其中包含指标名称空间。例如,以下字符串蕴含利用 ID(svc-kennethreitz-httpbin)以及利用运行在命名空间(kind-test)。

最初能够通过拜访:http://20.195.90.43/httpbin/get 来查看代理是否胜利。

额定补充阐明

当然,在进行部署的过程中,也能够在 Kubernetes 中应用 Apache APISIX 官网 Helm 仓库间接部署 Apache APISIX 和 APISIX Ingress Controller。这样能够间接将 Apache APISIX 作为网关,进行 APISIX Ingress Controller 的数据面来承载业务流量。

最初将 Dapr 通过 Sidecar annotations 注入到 Apache APISIX Proxy Pod,通过服务调用模块来调用集群中的微服务,实现残缺流程部署。

删除 Apache APISIX 控制器

如我的项目完结,想要删除 Apache APISIX 控制器,可按下方命令操作(记得不要遗记删除之前创立的命名空间 ingress-apisix)。

helm delete apisix -n ingress-apisix

流动预报

Apache APISIX 大咖面对面第一期举办后,小伙伴们在评论区直呼播种满满、不过瘾、期待下期!

11 月 30 日 19:30 第二期大咖面对面如约而至,本期嘉宾邀请到了融云联结创始人兼 CTO – 杨攀、Kyligence 联结创始人兼首席架构师 – 史少锋、KubeSphere 创始人 – 周小四、Apache APISIX Committer – 王晔倞,众咖齐聚一起畅谈面对职场变动和转型分岔路,技术人投身 To B 畛域的问题与挑战。

  • 中国的 To B 企业为什么倒退很难?
  • 技术人投身 To B 畛域胜利的起因有哪些、转型失败的起因又有哪些?
  • “年纪轻了做技术,年纪大了转治理”这是不是惟一的路径?职业倒退还有哪些路径?
  • 开源根底软件 To B 商业化和传统根底软件 To B 商业化,经营形式有哪些不同?

入群交换

扫描下方二维码,或在公众号后盾回复【直播交换群】,退出 Apache APISIX 线上直播交换群,理解更多社区动静!

正文完
 0