{"id":15108672,"url":"https://github.com/xiaomi/naftis","last_synced_at":"2025-05-15T14:05:16.940Z","repository":{"id":37580161,"uuid":"152059490","full_name":"XiaoMi/naftis","owner":"XiaoMi","description":"An awesome dashboard for Istio built with love.","archived":false,"fork":false,"pushed_at":"2023-08-19T12:40:59.000Z","size":22505,"stargazers_count":1893,"open_issues_count":30,"forks_count":240,"subscribers_count":83,"default_branch":"master","last_synced_at":"2025-04-07T18:09:08.382Z","etag":null,"topics":["admin","dashboard","istio","kubernetes","microservice","service-mesh","ui"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/XiaoMi.png","metadata":{"files":{"readme":"README-CN.md","changelog":null,"contributing":"CONTRIBUTING-CN.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2018-10-08T10:12:00.000Z","updated_at":"2025-04-07T12:25:04.000Z","dependencies_parsed_at":"2024-04-16T20:57:58.142Z","dependency_job_id":"f2597e61-1cb6-4b33-a3ff-8f00995e1d84","html_url":"https://github.com/XiaoMi/naftis","commit_stats":{"total_commits":75,"total_committers":12,"mean_commits":6.25,"dds":0.2666666666666667,"last_synced_commit":"f27324fd241b47cb264fb996dd469c6f91260669"},"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XiaoMi%2Fnaftis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XiaoMi%2Fnaftis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XiaoMi%2Fnaftis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XiaoMi%2Fnaftis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/XiaoMi","download_url":"https://codeload.github.com/XiaoMi/naftis/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254355334,"owners_count":22057354,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["admin","dashboard","istio","kubernetes","microservice","service-mesh","ui"],"created_at":"2024-09-25T22:21:30.655Z","updated_at":"2025-05-15T14:05:11.927Z","avatar_url":"https://github.com/XiaoMi.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Naftis\n\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://github.com/xiaomi/naftis/blob/master/LICENSE)\n[![Build Status](https://travis-ci.org/XiaoMi/naftis.svg?branch=master)](https://travis-ci.org/XiaoMi/naftis)\n\n[中文](https://github.com/xiaomi/naftis/blob/master/README-CN.md) | [English](https://github.com/xiaomi/naftis/blob/master/README.md)\n\nNaftis 是一个基于 web 的 Istio dashboard，通过任务模板的方式来帮助用户更方便地执行 Istio 任务。\n用户可以在 Naftis 中定义自己的任务模板，并填充变量来构造单个或多个构造任务实例，从而完成各种服务治理功能。\n\n## 功能\n\n- 内部集成了一些常用 dashboard\n- 可定制的任务模板支持\n- 支持回滚指定任务\n- 支持指定根服务节点的服务拓扑图\n- 提供查看 Istio 的 Services 和 Pod 的支持\n- 开箱即用，通过 Kubectl 相关指令即可快速部署\n- 支持 Istio 1.0\n\n## 快速开始\n\n```bash\n# 下载最新 release 文件和部署清单\nwget -O - https://raw.githubusercontent.com/XiaoMi/naftis/master/tool/getlatest.sh | bash\n\n# 在本地 Kubernetes 集群或 Minikuber 上\nkubectl create namespace naftis \u0026\u0026 kubectl apply -n naftis -f mysql.yaml \u0026\u0026 kubectl apply -n naftis -f naftis.yaml\n\n# 在各云服务商提供的 Kubernetes 集群上，比如 GKE、阿里云、AWS\nkubectl create namespace naftis \u0026\u0026 kubectl apply -n naftis -f mysql-cloud.yaml \u0026\u0026 kubectl apply -n naftis -f naftis-cloud.yaml\n\n# 通过端口转发的方式访问 Naftis\nkubectl -n naftis port-forward $(kubectl -n naftis get pod -l app=naftis-ui -o jsonpath='{.items[0].metadata.name}') 8080:80 \u0026\n\n# 打开浏览器访问 http://localhost:8080，默认用户名和密码分别为 admin、admin。\n```\n\n## 详细的部署流程\n\n```bash\n# 下载最新 release 文件和部署清单\nwget -O - https://raw.githubusercontent.com/XiaoMi/naftis/master/tool/getlatest.sh | bash\n\n# 创建 Naftis 命名空间\n$ kubectl create namespace naftis\n\n# 确认 Naftis 命名空间已创建\n$ kubectl get namespace naftis\nNAME           STATUS    AGE\nnaftis         Active    18m\n\n# 部署 Naftis MySQL 服务（本地 Kuberenetes 集群）\n$ kubectl apply -n naftis -f mysql.yaml\n# 部署 Naftis MySQL 服务（云服务商提供的 Kuberenetes 集群）\n$ kubectl apply -n naftis -f mysql-cloud.yaml\n\n# 确认 MySQL 已部署\nNAME                           READY     STATUS    RESTARTS   AGE\nnaftis-mysql-c78f99d6c-kblbq   0/1       Running   0          9s\nnaftis-mysql-test              1/1       Running   0          10s\n\n# 部署 Naftis API 和 UI 服务\nkubectl apply -n naftis -f naftis.yaml\n\n# 确认 Naftis 所有的服务已经正确定义并正常运行中\nkubectl get svc -n naftis\nNAME           TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE\nnaftis-api     ClusterIP      10.233.3.144    \u003cnone\u003e        50000/TCP      7s\nnaftis-mysql   ClusterIP      10.233.57.230   \u003cnone\u003e        3306/TCP       55s\nnaftis-ui      LoadBalancer   10.233.18.125   \u003cpending\u003e     80:31286/TCP   6s\n\nkubectl get pod -n naftis\nNAME                           READY     STATUS    RESTARTS   AGE\nnaftis-api-0                   1/2       Running   0          19s\nnaftis-mysql-c78f99d6c-kblbq   1/1       Running   0          1m\nnaftis-mysql-test              1/1       Running   0          1m\nnaftis-ui-69f7d75f47-4jzwz     1/1       Running   0          19s\n\n# 端口转发访问 Naftis\nkubectl -n naftis port-forward $(kubectl -n naftis get pod -l app=naftis-ui -o jsonpath='{.items[0].metadata.name}') 8080:80 \u0026\n\n# 打开浏览器，访问 http://localhost:8080 即可。默认用户名和密码分别为 admin、admin。\n```\n\n## 预览\n\n### Dashboard\n\nDashboard 页面集成了一些常用的图表，比如请求成功率、4XX请求数量等。\n![集成了一些常用的图表，比如请求成功率、4XX请求数量等](./tool/img/Naftis-dashboard.png)\n\n### 服务管理\n\n#### 服务详情\n\n服务详情页面可以查看查看已部署到 Kubernetes 中服务信息。\n![查看已部署到k8s中服务信息](./tool/img/Naftis-service.png)\n\n#### 服务 Pod 和拓扑图等\n\n服务详情页面可以查看服务 Pod 和拓扑图等信息。\n![Services-Pod](./tool/img/Naftis-service-1.png)\n\n### 任务模板管理\n\n#### 任务模板列表\n\n任务模板列表也可以查看已经添加好的任务模板卡片列表。\n![任务模板列表](./tool/img/Naftis-tasktpl.png)\n\n#### 查看指定模板\n\n点击“查看模板”可以查看指定模板信息。\n![查看指定模板](./tool/img/Naftis-tasktpl-view.png)\n\n#### 新增模板\n\n点击“新增模板”可以向系统中新增自定义模板。添加模板名称、模板简述、模板内容后，\n点击 \"Generate rows\"按钮，Naftis 会解析模板内容，提取变量列表。\n\n用户可以自行修改变量属性，包括变量注释、变量的表单元素类型、变量的数据元等。\n\n**注：默认提供了 `Host`、`Namespace` 两个数据源，如果用户对某个变量指定了这两个数据源，则需要同时将变量的表单元素类型设置为 `SELECT`。**\n![新增模板](./tool/img/Naftis-tasktpl-new.png)\n\n#### 创建任务\n\n初始化变量值。\n![创建任务-第一步](./tool/img/Naftis-taskcreate-1.png)\n\n确认变量值。\n![创建任务-第二步](./tool/img/Naftis-taskcreate-2.png)\n\n提交创建任务的分布表单。\n![创建任务-第三步](./tool/img/Naftis-taskcreate-3.png)\n\n#### Istio 诊断\n\nIstio 诊断页面可以查看 Istio Service 和 Pod 状态。\n![查看Istio状态](./tool/img/Naftis-istio.png)\n\n## 贡献代码\n\n参考 [CONTRIBUTING](./CONTRIBUTING-CN.md) 来获取提交 patch 和 contributing 工作流的详细信息。\n\n## License\n\n[Apache License 2.0](https://github.com/xiaomi/naftis/blob/master/LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxiaomi%2Fnaftis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxiaomi%2Fnaftis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxiaomi%2Fnaftis/lists"}