Kuma 1.0(https://kuma.io)版本已经 GA 了,包含了 70 多种新功能和改进。Kuma 是一个现代的通用服务网格控制平面,基于 Envoy 搭建,Envoy 是一个为云原生应用设计的强大的代理软件。
Kuma 高效的数据平面和先进的控制平面,极大地降低了各团队使用的难度,可以在包括 Kubernetes、虚拟机、容器、裸机和传统环境在内的任意平台上运行,以落实整个组织中的云原生体验。
安装
我们可以直接使用 Helm 来安装 kuma,首先添加 Helm 的 Chart 仓库:
代码语言:javascript复制$ helm repo add kuma https://kumahq.github.io/charts
$ helm repo update
创建一个名为 kuma-system 的命名空间,然后直接使用 helm 安装:
代码语言:javascript复制$ kubectl create namespace kuma-system
$ helm install --namespace kuma-system kuma kuma/kuma
NAME: kuma
LAST DEPLOYED: Sat Nov 21 10:12:45 2020
NAMESPACE: kuma-system
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
The Kuma Control Plane has been installed!
You can access the control-plane via either the GUI, kubectl, the HTTP API, or the kumactl CLI.
安装完成后会在 kuma-system 命名空间下面运行一个控制平面的 Pod:
代码语言:javascript复制$ kubectl get pods -n kuma-system
NAME READY STATUS RESTARTS AGE
kuma-control-plane-68d584cfcc-qwfhk 1/1 Running 0 111m
示例
然后我们可以使用 kuma 提供的示例应用来测试:
代码语言:javascript复制$ kubectl apply -f https://bit.ly/demokuma
namespace/kuma-demo created
deployment.apps/postgres-master created
service/postgres created
deployment.apps/redis-master created
service/redis created
service/backend created
deployment.apps/kuma-demo-backend-v0 created
deployment.apps/kuma-demo-backend-v1 created
deployment.apps/kuma-demo-backend-v2 created
service/frontend created
deployment.apps/kuma-demo-app created
该示例会创建一个新的 kuma-demo 命名空间,其中包含示例应用的几个服务:
- frontend:这个 web 应用的入口点服务
- backend:支持前端服务的后端组件
- postgres:储存 marketplace 项目的数据库
- redis:存储评论的后端存储
部署完成后我们可以使用下面的命令来访问应用:
代码语言:javascript复制$ kubectl port-forward svc/frontend -n kuma-demo 8080:8080
由于上面的演示应用已经在 kuma-demo 命名空间上启用了 kuma.io/sidecar-injection
注解,所以 Kuma 已经知道它需要向每个 Kubernetes Pod 中自动注入一个 sidecar 代理。
apiVersion: v1
kind: Namespace
metadata:
name: kuma-demo
namespace: kuma-demo
annotations:
kuma.io/sidecar-injection: enabled
查看部署的应用 Pod 可以看到都是两个容器:
代码语言:javascript复制$ kubectl get pods -n kuma-demo
NAME READY STATUS RESTARTS AGE
kuma-demo-app-6787b4f7f5-4f9z5 2/2 Running 0 24m
kuma-demo-backend-v0-56db47c579-4lgnf 2/2 Running 0 24m
postgres-master-645bc44fd-5rjdq 2/2 Running 0 24m
redis-master-55fd8f6f54-rbksl 2/2 Running 0 24m
接下来我们就可以通过运行可视化的 sidecars 代理连接到 Kuma,Kuma 提供了一个只读的 GUI,你可以用它来查看 Kuma 资源。默认情况下,GUI 监听 API 端口,默认为:5681/gui
。
要访问Kuma,我们需要首先用以下方式转发 API 服务。
代码语言:javascript复制kubectl port-forward svc/kuma-control-plane -n kuma-system 5681:5681
Forwarding from 127.0.0.1:5681 -> 5681
Forwarding from [::1]:5681 -> 5681
在浏览中输入 http://127.0.0.1:5681/gui
即可访问了:
可以看到已经自动读取到了上面我们示例的几个应用: