ACK 部署 Apache apisix-ingress-cotroller

开发 前端
Ingress 是 Kubernetes 中一个值得关注的模块,作为外部访问 Kubernetes 集群服务的入口,市面上已经有了多种 Ingress controller 的实现。

[[379230]]

本文转载自微信公众号「Kirito的技术分享」,作者金卫。转载本文请联系Kirito的技术分享公众号。金卫  

背景

Ingress 是 Kubernetes 中一个值得关注的模块,作为外部访问 Kubernetes 集群服务的入口,市面上已经有了多种 Ingress controller 的实现。国产实时、高性能的 API 网关 Apache APISIX 推出的 Apache/apisix-ingress-controller 就是其中一员,作为功能更加强大的 ingress 对外提供服务。笔者准备在阿里云 ACK 集群上部署测试。

主题描述

本文主要介绍在阿里云 ACK 部署 apisix-ingress-controller,并且使用 httpbin 测试一个简单的场景。

部署拓扑

网络拓扑

 

依赖项

阿里云的 ACK 集群 ;推荐最低配置:3个 master 节点:CPU 2核 内存 4G2个 worker 节点:CPU 4核 内存 8G

安装步骤

apisix 2.1 release

通过 helm 安装 apisix 2.1 release

  1. $ kubectl create ns apisix 
  2. $ git clone https://github.com/apache/apisix-helm-chart.git 
  3. $ cd ./apisix-helm-chart 
  4. $ helm repo add bitnami https://charts.bitnami.com/bitnami 
  5. $ helm dependency update ./chart/apisix 
  6. $ helm install apisix ./chart/apisix \ 
  7.   --set gateway.type=LoadBalancer \ 
  8.   --set allow.ipList="{0.0.0.0/0}" \ 
  9.   --namespace apisix 

tips: etcd 安装时指定 PVC, PVC 在阿里云部署时,需要指定 PV 为云盘, 请在 PVC 的 annotations 中增加:volume.beta.kubernetes.io/storage-class: alicloud-disk-ssd。(关于 PVC 和 PV 的关系请参考这里)

apisix-ingress-controller

通过 helm 安装 apisix-ingress-controller

  1. $ git clone https://github.com/apache/apisix-ingress-controller.git 
  2. $ cd ./apisix-ingress-controller 
  3. $ helm install ingress-apisix-base -n apisix ./charts/base 
  4. $ helm install ingress-apisix ./charts/ingress-apisix \    
  5.   --set ingressController.image.tag=dev \ 
  6.   --set ingressController.config.apisix.baseURL=http://apisix-admin:9180/apisix/admin \ 
  7.   --set ingressController.config.apisix.adminKey=edd1c9f034335f136f87ad84b625c8f1 \ 
  8.   --namespace apisix 

测试

检查集群是否部署成功

 

配置一个简单的路由做测试

  1. apiVersion: apisix.apache.org/v1 
  2. kind: ApisixRoute 
  3. metadata: 
  4.   name: httpbin-route 
  5.   namespace: apisix 
  6. spec: 
  7.   rules: 
  8.   - host: httpbin.apisix.com 
  9.     http: 
  10.       paths: 
  11.       - backend: 
  12.           serviceName: httpbin 
  13.           servicePort: 80 
  14.         path: /hello* 

通过 apisix admin api 查看结果,发现路由已经正确配置。

  1.     "action""get"
  2.     "count""2"
  3.     "header": { 
  4.         "revision""46"
  5.         "cluster_id""8320356269565269865"
  6.         "raft_term""2"
  7.         "member_id""3807956127770623265" 
  8.     }, 
  9.     "node": { 
  10.         "key""/apisix/upstreams"
  11.         "dir"true
  12.         "modifiedIndex": 27, 
  13.         "createdIndex": 3, 
  14.         "nodes": [ 
  15.             { 
  16.                 "key""/apisix/upstreams/00000000000000000041"
  17.                 "modifiedIndex": 42, 
  18.                 "value": { 
  19.                     "nodes": { 
  20.                         "172.20.1.12:80": 100 
  21.                     }, 
  22.                     "type""roundrobin"
  23.                     "pass_host""pass"
  24.                     "hash_on""vars"
  25.                     "desc""apisix_httpbin_80"
  26.                     "create_time": 1608561159, 
  27.                     "update_time": 1608561159 
  28.                 }, 
  29.                 "createdIndex": 42 
  30.             } 
  31.         ] 
  32.     } 

扩容 httpbin

 

查看 k8s 中 httpbin

查看 apisix 中 httpbin upstream

  1. // 格式化后 
  2.     ... 
  3.         "nodes": { 
  4.             "172.20.1.12:80": 100, 
  5.             "172.20.0.198:80": 100, 
  6.             "172.20.0.197:80": 100 
  7.         }, 
  8.         "id""00000000000000000041"
  9.         "key""/apisix/upstreams/00000000000000000041"
  10.         "desc""apisix_httpbin_80"
  11.   ... 

总结

本文在 ACK 集群环境依次安装了 Etcd、 Apache APISIX、Apache apisix-ingress-controller,并且使用 httpbin 服务验证 ingress 的基本配置功能,通过 CRD 配置了路由,检测了后端服务在扩缩容时服务注册发现机制。

另外值得一提的是 apisix-ingress-controller 可以完整的支持 Apache APISIX 提供的所有插件,甚至是自定义插件。功能丰富且扩展能力强,是一款不错的 Ingress 项目。

责任编辑:武晓燕 来源: Kirito的技术分享
相关推荐

2022-01-19 22:14:36

Apache APIAPI 网关插件

2022-01-12 08:10:40

APISIXIngress Url Rewrite

2022-04-25 10:34:19

云原生直播

2022-05-31 11:08:33

技术盛会

2022-01-07 07:49:07

Apache APISKubernetesAPISIX

2022-07-15 12:02:01

开发大会

2021-09-26 07:43:08

KongKongaK8s

2021-09-08 11:25:45

KubernetesAPISIXLinux

2023-03-31 07:17:16

2022-01-14 09:17:13

PythonAPISIX插件

2010-05-19 15:15:24

Apache+SVN部

2014-07-02 09:16:19

PassengerPuppetMaste

2011-03-23 15:55:41

LAMP

2024-08-13 15:46:57

2023-06-20 07:32:04

2012-03-02 10:14:12

JavaApache Ant

2023-03-01 07:35:05

APISIX源码Docker

2010-10-26 09:13:26

2017-12-17 16:49:44

Apache HadoYarnHadoop

2009-03-11 18:40:49

LinuxNagiosapache
点赞
收藏

51CTO技术栈公众号