[Gitops--5]APISIX

news2024/9/21 4:35:05

APISIX

Apache APISIX是一款开源的高性能,动态云原生网关.Apache APISIX当前已经覆盖了API网关,LB,Ingress,Service,Mesh等多种场景

请添加图片描述

1. APISIX部署

使用Helm Chart部署Apache APISIX Ingress Controller

Apache APISIX Ingress Controller目前和Apache APISIX网关是强关联的,且目前通过Apache APISIX Helm Charts同时部署Apache APISIX Gateway+Dashboard+Ingress Controller是最方便的,因此推荐使用Apache APISIX的Helm Chart进行整套组件部署

1.1 创建APISIX的Helm仓库

仓库地址
charts.apiseven.com

请添加图片描述

请添加图片描述

1.2 创建项目部署APISIX

创建apisix-system 项目

请添加图片描述

1.3 创建应用

进入项目后,[应用负载] [应用] [创建] [从应用模板]

请添加图片描述

选择apisix

请添加图片描述

这里不需要改,直接点击安装

请添加图片描述

这里版本后面会用到需要记录一下,最新版的3.2.0好像有点问题,选不上,这里就先选择3.1.1了

3.1.1

请添加图片描述

修改helm配置

  allow:
    # -- The client IP CIDR allowed to access Apache APISIX Admin API service.
    ipList:
      - 192.168.31.0/24
 # 略
  
  plugins:
  #用以dashboard上展示服务信息
  - server-info  
  # 略
customPlugins:
  # -- Whether to configure some custom plugins
  enabled: false
  # -- the lua_path that tells APISIX where it can find plugins,
  # note the last ';' is required.
  luaPath: "/opts/custom_plugins/?.lua"
  plugins:
    # -- plugin name.
    ## 修改下面这行
    - name: "prometheus"
      # -- plugin attrs
      attrs:
      ## 修改下面这3行
        export_addr:
        ip: 0.0.0.0
        port: 9091
      # -- plugin codes can be saved inside configmap object.
      configMap:
        # -- name of configmap.
        ## 修改下面这行
        name: "prometheus"
# 略
serviceMonitor:
  # -- Enable or disable Apache APISIX serviceMonitor
  ## 修改下面这行
  enabled: true
  # -- namespace where the serviceMonitor is deployed, by default, it is the same as the namespace of the apisix
  ## 修改下面这行
  namespace: "apisix-system"
  
# 略
dashboard:
  # 修改下面这行
  enabled: true
  # 添加以下2行
  service:
    type: NodePort
# 修改以下几行
ingress-controller:
  enabled: true
  config:
    apisix:
      serviceNamespace: "apisix-system"
      adminAPIVersion: "v3"
    ServiceMonitor:
      enabled: true
      namespace: "apisix-system"
      interval: 15s

请添加图片描述

等待创建完成

请添加图片描述

请添加图片描述

1.4 登录Apisix Dashboard

http://192.168.31.131:31869/

用户名/密码

admin/admin

请添加图片描述

2. APISIX使用

2.1 创建应用及服务

请添加图片描述

请添加图片描述

创建无状态服务

请添加图片描述

请添加图片描述

创建服务

请添加图片描述

存储卷默认就过

请添加图片描述

点击创建

请添加图片描述

下一步

请添加图片描述

点击创建

请添加图片描述

此时应用创建完成

请添加图片描述

请添加图片描述

2.2 创建路由

请添加图片描述

请添加图片描述

指定域名

请添加图片描述

kubernetes.io/ingress.class: apisix

请添加图片描述

应用路由被创建完成

请添加图片描述

同时在APISIX的路由下也能看到该路由

请添加图片描述

2.3 访问测试

先获取到apisix的端口

请添加图片描述

看到这里的apisix-gateway的端口是30201

请添加图片描述

修改pod中index.html内容

echo web-app1-deploy-1-v1-5cf8c95d74-bzpfm > /usr/share/nginx/html/index.html

请添加图片描述

到hosts中绑定

192.168.31.131  ks-master.cluster.local ks-master web1.intra.com

此时再访问域名web1-intra.com

root@ks-master:~/openelb# curl http://web1.intra.com:30201/
web-app1-deploy-1-v1-5cf8d95d74-bzpfm

3. 结合OpenELB实现APISIX访问

上面实现了通过绑定节点nodeport方式来将流量转入apisix-gateway,但实际用户无法直接获取到该端口.

请添加图片描述

请添加图片描述

由于我们kubesphere环境中获取eip的名字

root@ks-master:~# kubectl get eip
NAME         CIDR                            USAGE   TOTAL
layer3-eip   192.168.31.210-192.168.31.220   1       11
	lb.kubesphere.io/v1alpha1: openelb
    protocol.openelb.kubesphere.io/v1alpha1: layer2
    eip.openelb.kubesphere.io/v1alpha2: layer3-eip

将以上值追加到注释中

请添加图片描述

添加完成后,就会有外部ip出现
请添加图片描述

修改hosts或dns后再次测试发现,此时就不需要再填写端口号,直接通过gateway地址进行绑定即可

root@ks-master:~# tail -1 /etc/hosts
192.168.31.211 web1.intra.com web2.intra.com web3.intra.com
root@ks-master:~# curl web1.intra.com
web1
root@ks-master:~# curl web2.intra.com
web2
root@ks-master:~# curl web3.intra.com
web3
# kubectl get eip
NAME         CIDR                            USAGE   TOTAL
layer3-eip   192.168.31.210-192.168.31.220   2       11

4. 自定义监控APISIX网关

4.1 暴露APISIX监控指标

请添加图片描述

点击编辑

请添加图片描述

有9091就可以,没有就加上

请添加图片描述

4.2 创建ServiceMonitor

Kubesphere通过Prometheus Operator来维护Prometheus系统,通过创建ServiceMonitor实现指定接口的接入

这里app.kubernetes.io/version和helm.sh/chart的值来自于我们安装时的选择.

请添加图片描述

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: apisix
  namespace: apisix-system
spec:
  endpoints:
    - scheme: http
      targetPort: prometheus
      path: /apisix/prometheus/metrics
      interval: 15s
  namespaceSelector:
    matchNames:
      - apisix-system
  selector:
    matchLabels:
      app.kubernetes.io/name: apisix
      app.kubernetes.io/version: 3.1.1
      helm.sh/chart: apisix-0.11.5

创建ServiceMonitor

# kubectl apply -f sm.yaml
Warning: resource servicemonitors/apisix is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by kubectl apply. kubectl apply should only be used on resources created declaratively by either kubectl create --save-config or kubectl apply. The missing annotation will be patched automatically.
servicemonitor.monitoring.coreos.com/apisix configured

确认是否创建完成

请添加图片描述

点击编辑

请添加图片描述

可以看到内容和我们之前创建的是一样的

请添加图片描述

4.3 项目级别的自定义监控

创建自定监控

请添加图片描述

监控指标sum(apisix_nginx_http_current_connections)

请添加图片描述

添加折线图

请添加图片描述

图表名称: Nginx 连接状态
图例名称:{{state}}
监控指标:sum(apisix_nginx_http_current_connections) by (state)

请添加图片描述

确认后将它保存为模板

请添加图片描述

4.4 集群级别的监控

在[平台管理]中操作

请添加图片描述

获取Grafana Dashboard的Json

请添加图片描述

请添加图片描述

请添加图片描述

将json文件上传

请添加图片描述

确认后自定义面板被创建

请添加图片描述

相关数据也被采集到

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/462739.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于html+css的图展示34

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

GoodSync 数据自动同步备份工具VS傲梅轻松备份系统数据备份工具 哪款更好?

备份和同步软件的使用越来越广泛,因为在这个数据驱动的时代,数据的备份和恢复非常重要。在这里我想向大家推荐两款备份和同步软件——GoodSync和傲梅轻松备份。 GoodSync是一款备份和同步软件,它可以在多个设备之间同步文件、文件夹、照片、音…

在电脑上剪辑视频用什么软件 如何在电脑上剪辑视频

工作中需要剪辑视频的场景越来越多了,视频剪辑已经成了打工人必备技能之一。但对很多新手小白来说,剪辑视频看起来比较困难,那可能是没有找到合适的软件和方法,下面就为大家介绍在电脑上剪辑视频用什么软件,如何在电脑…

Xcode14 设置Display Name不生效问题

一、前言 早在Xcode13苹果就对Info.plist做了一次大改革,新建的OC项目默认Info.plist文件是“空的”,Swift项目甚至干脆连Info.plist文件都没有了,苹果这样做是为了建立一个新的Info.plist管理方式,把Info.plist物理文件中的配置…

对数据库中存储的程序进行现代化改造,以使用 Amazon Aurora PostgreSQL 联合查询、pg_cron 和 Amazon Lambda

作为数据库迁移和现代化的一部分,您可以继续使用存储的程序和调度作业,将远程实例中的数据整合到集中式数据存储中。 Amazon Schema Conversion Tool(Amazon SCT)可帮助您将传统的 Oracle 和 SQL Server 函数转换为其等效的开源函…

PDF 预览和下载你是怎么实现的?

前言 在开发过程中要求对 PDF 类型的发票提供 预览 和 下载 功能,**PDF** 类型文件的来源又包括 H5 移动端 和 **PC 端**,而针对这两个不同端的处理会有些许不同,下文会有所提及。 针对 PDF 预览 的文章不在少数,但似乎都没有提…

排查和解决CentOS系统上Nacos服务启动报错“java.net.UnknownHostException: jmenv.tbsite.net“问题

背景 环境是CentOS7操作系统,nacos服务宕掉了,启动服务的时候报错。 Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.web.servlet.FilterRegistrationBean]: Factory method ‘di…

太酷啦,Transformer 的有效上下文长度可扩展至百万级

夕小瑶科技说 原创作者 | 智商掉了一地、iven 用 Recurrent Memory Transformer 架构:可输入长度取决于内存大小 Transformer 因其在自然语言处理领域的成功应用而备受瞩目,同时在计算机视觉领域的研究中,诸多的多模态大模型如 ViT、CLIP、BL…

iperf3使用教程

文章目录 简介1.下载2. 使用测试实例:案例一 TCP通信测试案例二:UDP测试案例三 传输东西进行测试 iperfs3简单使用样例 简介 iPerf3是用于主动测试IP网络上最大可用带宽的工具。它支持时序、缓冲区、协议(TCP,UDP,SCT…

软件测试方法——等价类划分法详解

1、等价类划分法的介绍和概念 划分 指互不相交的一组子集,这些子集的并是整个集合。 对测试的意义:完备性和无冗余性。 等价类 等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,具有等…

23.4.25总结

复习了MYSQL数据库的主键和外键的知识: 在设计表时,可以通过外键这个按钮,更改Update rule(更新规则)和Delete rule(删除规则)。 外键行为 默认情况下是:NO ACTION、RESTRICT 两…

传统机器学习(七)支持向量机(1)超平面、SVM硬间隔、软间隔模型和损失函数

传统机器学习(七)支持向量机(1) 1 算法概述 1.1 超平面的理解 1.1.1 超平面公式 我们对“平面”概念的理解,一般是定义在三维空间中的,如下: 假设M和M0为平面上的两点,n为该平面的法向量,那么,通过下图…

4.25~~~~~

接着之前PE文件结构的预习 DOS 定位到NT 怎么操作的? 用的是e_lfanew,然后是相对于文件头的偏移量(也就是raw表示方法) 现在有个问题,为什么e_lfanew 这个变量不直接存储PE头 的绝对地址呢? 比如说&…

python 基础语法学习之变量与运算符

一、注释 注释: 就是对代码的解释,方便阅读,被注释的代码不执行 分类 单行注释 # 1.单行注释 以#号开头 ,右边的所有东西都被当做说明文字 ,程序不进行编译运行。 print(hello world)多行注释 # 2.多行注释 三个单引号 或…

学习日记(刷题,学java)

先看看题目 给你一个字符串数组 names ,和一个由 互不相同 的正整数组成的数组 heights 。两个数组的长度均为 n 。 对于每个下标 i,names[i] 和 heights[i] 表示第 i 个人的名字和身高。 请按身高 降序 顺序返回对应的名字数组 names 。 示例 1&…

Chapter 4 :Constraining I/O Delay(ug903)

4.1 About Constraining I/O Delay 要在设计中准确地建模外部时序上下文,必须为输入和输出端口提供时序信息。由于XilinxVivado集成设计环境(IDE)只能识别FPGA边界内的时序,因此必须使用以下命令来指定超出这些边界的延迟…

Linux 系统文件权限管理(参考菜鸟教程)

一、查看文件用户,用户组,其他用户的文件权限,属主,属主用户组等信息 ls -l如图所示:  1、第一个字符代表这个文件是目录、文件或链接文件等等。 当为 d 则是目录当为 - 则是文件;若是 l 则表示为链接…

SpringBoot+Shiro+Jwt+Vue+elementUI实现前后端分离单体系统Demo

记录一下使用SpringBoot集成Shiro框架和Jwt框架实现前后端分离Web项目的过程,后端使用SpringBoot整合ShiroJwt(auth0),前端使用vueelementUI框架,前后端的交互使用的是jwt的token,shiro的会话关闭,后端只需要使用Shiro…

Sqlmap Tamper 编写/改写 学习

sqlmap的 --tamper 参数可以引入用户自定义的脚本修改注入时的payload ,达到sql注入时对一些敏感字符的一些绕过 下载 sqlmap 自带的 tamper 脚本就在 /sqlmap/tamper 目录下,是用 python 编写的,所以我们可以用 python 语言自己编写一些脚本…

bismark和bsmap比对原理

1,bismark比对方法比较简单粗暴,它制作两种类型的基因组:1),将所有的C转化为T的基因组;2),将所有的G转化为A的基因组。它将bisulfate(重chong硫酸盐)处理后的…