当前官方已经提供了两种可选的运行模式

  • 通用模式
  • kubernetes 模式

kuma 组件说明

  • kuma-cp kuma 的控制面板
  • kuma-dp kuma 的数据面板
  • enovy 提供sidecar 服务的
  • kumactl 命令行与kuma-cp 通信的
  • kuma-injector 只有kubernetes 环境需要,用来自动处理容器的sidecar

通用模式

对于通用模式,需要依赖一个后端进行状态存储,官方当前建议的是pg

  • 参考架构图

kubernetes 模式

需要依赖kuma-injector ,我们需要在运行的pod中添加注解

kuma.io/sidecar-injection: enabled
  • 参考图

后端存储

kuma-cp 对于在通用模式依赖状态存储,默认是内存,实际上在安装包中的配置文件中我们也可以看到
对于pg 数据库的配置如下:

 
KUMA_STORE_TYPE=postgres \
KUMA_STORE_POSTGRES_HOST=localhost \
KUMA_STORE_POSTGRES_PORT=5432 \
KUMA_STORE_POSTGRES_USER=kuma-user \
KUMA_STORE_POSTGRES_PASSWORD=kuma-password \
KUMA_STORE_POSTGRES_DB_NAME=kuma \
kuma-cp run

kubernetes 模式

KUMA_STORE_TYPE=kubernetes kuma-cp run

数据面板以及数据模型

当kuma-cp 启动之后,需要等待数据面板进行连接以及注册,为了保障数据面板可以正常运行,需要准备两件事情

  • 必须至少存在一个mesh,当控制面板启动的时候自动创建一个default 的
  • 当通过数据面板连接的时候必须存在一个数据面板实体
    参考模型图

    说明:
    在通用模式中,数据面板实体需要手工创建

数据面板实体

实际可以参考数据面板实体的规范https://kuma.io/docs/0.1.1/documentation/#dataplane-specification
当我们需要启动一个新的数据面板的时候,同样需要包含两件事情

  • 数据面板,必须通知自己负责的服务,这个是通过数据面板实体定义的
  • 数据面板进程需要处理输入以及输出请求
    以上步骤通过两个不行的 命令处理
  • 数据面板的注册通过kumactl 或者http api
  • 启动数据面板通过kuma-dp run
    说明:
    在kuberntes 中以上是自动处理的
    以下是一个处理redis 服务的
 
echo "type: Dataplane
mesh: default
name: redis-1
networking:
  inbound:
  - interface: 127.0.0.1:9000:6379
    tags:
      service: redis" | kumactl apply -f -
KUMA_CONTROL_PLANE_BOOTSTRAP_SERVER_URL=http://control-plane:5682 \
KUMA_DATAPLANE_MESH=default \
KUMA_DATAPLANE_NAME=redis-1 \
kuma-dp run
 
 

以下是一个后端服务依赖redis的

echo "type: Dataplane
mesh: default
name: backend-1
networking:
  inbound:
  - interface: 127.0.0.1:8000:80
    tags:
      service: backend
  outbound:
  - interface: :10000
    service: redis" | kumactl apply -f -
KUMA_CONTROL_PLANE_BOOTSTRAP_SERVER_URL=http://control-plane:5682 \
KUMA_DATAPLANE_MESH=default \
KUMA_DATAPLANE_NAME=redis-1 \
kuma-dp run
 

说明:我们需要处理inbound 以及outbound

envoy

因为kuma 依赖envoy 通过9901 端口我们可以方便的调试常见问题

tags

为了标示服务的角色,需要注意的是必须包含一个service 的tag

数据面板指南

参考格式

type: Dataplane
mesh: default
name: web-01
networking:
  inbound:
  - interface: 127.0.0.1:11011:11012
    tags:
      service: backend
  outbound:
  - interface: :33033
    service: redis

格式说明:
type: 必须为Dataplane
mesh: 我们需要关联的数据面板
name: 数据面板实例的名字,必须唯一
networking: 配置数据流量的inbound 以及outbound规则
inbound: 一个数组定义通过数据面板可以暴露的访问地址
interface: 决定请求格式 {address}:{dataplane-port}:{service-port}
tags:定义服务的角色,必须包含一个serevice 的tag
outbound: 服务发出的每个传出请求也必须通过DP,此对象指定DP在接受服务的传出请求时必须侦听的端口
inerface: 向外部服务访问暴露的端口
service: 定义关联的服务

kuma 的几个端口

以下是kuma-cp 暴露的端口
5677: sds 服务的端口
5678: xds grpc 的端口
5680: http 服务,返回健康状态
5681: http 服务 kumactl 依赖次服务端口
5682: 提供envoy bootstrap 配置,当数据面板启动的时候

kuma http api

kuma 通过5681提供管理配置
包含的请求url
/meshes
/meshes/{name}
/meshes/{name}/dataplanes
/meshes/{name}/dataplanes/{name}

参考资料

https://kuma.io/docs/0.1.1/documentation/#overview

kuma 学习三 组件说明的更多相关文章

  1. Vue学习笔记-Vue.js-2.X 学习(三)===>组件化高级

    (四) 组件化高级 1.插槽(slot)的基本使用 A:基本使用: <slot></slot> B:默认置:<slot><h1>中间可以放默认值< ...

  2. stenciljs 学习三 组件生命周期

    stenciljs 组件包含好多生命周期方法, will did load update unload 实现生命周期的方法比价简单类似 componentWillLoad ....,使用typescr ...

  3. DjangoRestFramework学习三之认证组件、权限组件、频率组件、url注册器、响应器、分页组件

    DjangoRestFramework学习三之认证组件.权限组件.频率组件.url注册器.响应器.分页组件   本节目录 一 认证组件 二 权限组件 三 频率组件 四 URL注册器 五 响应器 六 分 ...

  4. day 83 Vue学习三之vue组件

    本节目录 一 什么是组件 二 v-model双向数据绑定 三 组件基础 四 父子组件传值 五 平行组件传值 六 xxx 七 xxx 八 xxx 一 什么是组件 首先给大家介绍一下组件(componen ...

  5. day91 DjangoRestFramework学习三之认证组件、权限组件、频率组件、url注册器、响应器、分页组件

    DjangoRestFramework学习三之认证组件.权限组件.频率组件.url注册器.响应器.分页组件   本节目录 一 认证组件 二 权限组件 三 频率组件 四 URL注册器 五 响应器 六 分 ...

  6. day 89 DjangoRestFramework学习三之认证组件、权限组件、频率组件、url注册器、响应器、分页组件

    DjangoRestFramework学习三之认证组件.权限组件.频率组件.url注册器.响应器.分页组件   本节目录 一 认证组件 二 权限组件 三 频率组件 四 URL注册器 五 响应器 六 分 ...

  7. day 82 Vue学习三之vue组件

      Vue学习三之vue组件   本节目录 一 什么是组件 二 v-model双向数据绑定 三 组件基础 四 父子组件传值 五 平行组件传值 六 xxx 七 xxx 八 xxx 一 什么是组件 首先给 ...

  8. Vue学习笔记-Vue.js-2.X 学习(二)===>组件化开发

    ===重点重点开始 ========================== (三) 组件化开发 1.创建组件构造器: Vue.extends() 2.注册组件: Vue.component() 3.使用 ...

  9. Jetpack Compose学习(5)——从登录页美化开始学习布局组件使用

    原文:Jetpack Compose学习(5)--从登录页美化开始学习布局组件使用 | Stars-One的杂货小窝 本篇主要讲解常用的布局,会与原生Android的布局控件进行对比说明,请确保了解A ...

随机推荐

  1. Android.mk文件官方使用说明

    本页介绍了 ndk-build 所使用的 Android.mk 编译文件的语法. 概览 Android.mk 文件位于项目 jni/ 目录的子目录中,用于向编译系统描述源文件和共享库.它实际上是编译系 ...

  2. Logback获取SkyWalking的全局唯一标识 trace-id 记录到日志中

    为什么要获取trace-id 通过上文Docker-Compose搭建单体SkyWalking我们搭建了SkyWalking服务,我们需要在日志中记录下来每次请求的唯一标识(trace-id),这样就 ...

  3. Java的常用API之System类简介

    Syetem类 java.lang.System类中提供了大量的静态方法,可以获取与系统相关的信息或系统级操作,在System类的API文档中,常用的方法有: public static long c ...

  4. servlet是一组规范--Servlet是JavaEE规范的一种

    Java Servlet API是Servlet容器和Servlet之间的接U,它定义了Servlet的各种方法, 还定义了Servlet容器传送给Servlet的对象类,其中最重要的是请求对象Ser ...

  5. excel查找定位操作(for lutai)

    产成品出库的单价要根据订单号和存货编码引用产成品入库的单价 方法一:使用Index 和Match =INDEX(产成品入库!I2:P13    ,IF( ) ,7) 方法二:使用vlookup ,首先 ...

  6. Windows下非PE方式载荷投递方式研究

    0. 引言 0x1:载荷是什么?在整个入侵过程中起到什么作用? 载荷的作用在整个入侵链路的作用起到纽带的作用,它借助于目标系统提供的某些功能:组件:执行环境,将攻击者的传递的恶意payload包裹起来 ...

  7. SUSE12Sp3-使用Docker导入镜像并安装redis,zookeeper,kafka

    首先在另外一台联网电脑拉取最新的redis,zookeeper,kafka镜像 docker pull redis docker pull zookeeper docker pull wurstmei ...

  8. 【JVM学习笔记二】垃圾收集器与内存分配策略

    1. 概述 1) GC的历史比Java久远 2) GC需要完成的三件事: | 哪些内存需要回收 | 什么时候回收 | 如何回收 3) Java内存运行时区域各个部分: | Java虚拟机栈.计数器.本 ...

  9. Active Directory渗透测试典型案例

    0x01 前言 我有几个客户在渗透测试之前来找我,说他们的系统安全做得非常好,因为他们的漏洞扫描显示没有严重的漏洞并且已准备好进行安全测试,这使我在15分钟内利用AD中的错误配置获得了域管理员权限. ...

  10. python 使用Anaconda管理项目环境

    Pycharm没有内置的python解释器,需要我们自己下载python解释器. 在很多python项目中,会导入第三方的模块,逐个去下载导入很不方便. 我们通常使用Anaconda来管理python ...