Kuma 1.0 版本正式发布

2020-12-01 11:14:32 浏览数 (1)

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 代理。

代码语言:javascript复制
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 即可访问了:

可以看到已经自动读取到了上面我们示例的几个应用:

0 人点赞