├── .editorconfig ├── .eslintignore ├── .eslintrc.js ├── .github ├── ISSUE_TEMPLATE.md ├── PULL_REQUEST_TEMPLATE.md └── workflows │ └── build.yml ├── .gitignore ├── .gitmodules ├── .husky ├── .gitignore └── pre-commit ├── .prettierrc.js ├── .stylelintignore ├── .stylelintrc.js ├── .versionrc.js ├── .vscode └── settings.json ├── CHANGELOG.md ├── LICENSE ├── README.md ├── SECURITY.md ├── apps ├── kubegems │ ├── .dockerignore │ ├── .env │ ├── .eslintignore │ ├── .eslintrc.js │ ├── .stylelintignore │ ├── .stylelintrc.js │ ├── 50x.html │ ├── Dockerfile │ ├── README.md │ ├── arm64.Dockerfile │ ├── crowdin.yml │ ├── index.html │ ├── nginx.conf.template │ ├── package.json │ ├── public │ │ ├── ava.jpg │ │ ├── css │ │ │ ├── fonts.googleapis.com.css │ │ │ ├── materialdesignicons.css.map │ │ │ ├── materialdesignicons.min.css │ │ │ └── skeleton.css │ │ ├── dashboard.png │ │ ├── favicon.ico │ │ ├── favicon2.ico │ │ ├── fonts │ │ │ ├── kubegems-sample.ttf │ │ │ ├── materialdesignicons-webfont.woff2 │ │ │ ├── pxiByp8kv8JHgFVrLCz7Z1xlFd2JQEk.woff2 │ │ │ ├── pxiByp8kv8JHgFVrLDz8Z1xlFd2JQEk.woff2 │ │ │ ├── pxiByp8kv8JHgFVrLGT9Z1xlFd2JQEk.woff2 │ │ │ └── pxiEyp8kv8JHgFVrJJfecnFHGPc.woff2 │ │ ├── icon │ │ │ ├── ai-model.svg │ │ │ ├── aliyun.svg │ │ │ ├── amd.svg │ │ │ ├── apisix.svg │ │ │ ├── apm-server.svg │ │ │ ├── arrow.svg │ │ │ ├── asteroid.svg │ │ │ ├── banzaicloud-logo.svg │ │ │ ├── banzaicloud.svg │ │ │ ├── bitnami.svg │ │ │ ├── bucket.svg │ │ │ ├── caffe.svg │ │ │ ├── calico.svg │ │ │ ├── carina.svg │ │ │ ├── ceph.svg │ │ │ ├── cert-manager.svg │ │ │ ├── chartmuseum-b.svg │ │ │ ├── chartmuseum.svg │ │ │ ├── cloudminds-logo.svg │ │ │ ├── cloudminds.svg │ │ │ ├── core ml.svg │ │ │ ├── coredns.svg │ │ │ ├── cube-icon.svg │ │ │ ├── dataplatform.svg │ │ │ ├── diffusers.svg │ │ │ ├── dingding.svg │ │ │ ├── ejbca.svg │ │ │ ├── elastic.svg │ │ │ ├── espnet.svg │ │ │ ├── fastai.svg │ │ │ ├── feishu.svg │ │ │ ├── filebeat.svg │ │ │ ├── flair.svg │ │ │ ├── fluentbit.svg │ │ │ ├── fluentd.svg │ │ │ ├── generic.svg │ │ │ ├── geode.svg │ │ │ ├── gitea.svg │ │ │ ├── glusterfs.svg │ │ │ ├── gpu.svg │ │ │ ├── grafana.svg │ │ │ ├── haproxy.svg │ │ │ ├── harbor.svg │ │ │ ├── hashicorp-logo.svg │ │ │ ├── hashicorp.svg │ │ │ ├── hugging-face.svg │ │ │ ├── i18n │ │ │ │ ├── en.svg │ │ │ │ ├── ja.svg │ │ │ │ ├── zh-Hans.svg │ │ │ │ └── zh-Hant.svg │ │ │ ├── im.svg │ │ │ ├── intel.svg │ │ │ ├── istio.svg │ │ │ ├── jaeger.svg │ │ │ ├── jasperreports.svg │ │ │ ├── jax.svg │ │ │ ├── juicefs.svg │ │ │ ├── k3s-light.svg │ │ │ ├── k3s.svg │ │ │ ├── keras.svg │ │ │ ├── keycloak.svg │ │ │ ├── knative.svg │ │ │ ├── kubeapps.svg │ │ │ ├── kubecost.svg │ │ │ ├── kubernetes │ │ │ │ ├── api.svg │ │ │ │ ├── app.svg │ │ │ │ ├── c-c-m.svg │ │ │ │ ├── c-m.svg │ │ │ │ ├── c-role.svg │ │ │ │ ├── cm.svg │ │ │ │ ├── control-plane.svg │ │ │ │ ├── controllerrevision.svg │ │ │ │ ├── cr.svg │ │ │ │ ├── crb.svg │ │ │ │ ├── crd.svg │ │ │ │ ├── cronjob.svg │ │ │ │ ├── deploy.svg │ │ │ │ ├── ds.svg │ │ │ │ ├── ep.svg │ │ │ │ ├── es.svg │ │ │ │ ├── etcd.svg │ │ │ │ ├── group.svg │ │ │ │ ├── hpa.svg │ │ │ │ ├── ing.svg │ │ │ │ ├── job.svg │ │ │ │ ├── k-proxy.svg │ │ │ │ ├── kubelet.svg │ │ │ │ ├── kubernetes.svg │ │ │ │ ├── limits.svg │ │ │ │ ├── modelset.svg │ │ │ │ ├── netpol.svg │ │ │ │ ├── node.svg │ │ │ │ ├── ns.svg │ │ │ │ ├── pdb.svg │ │ │ │ ├── pod.svg │ │ │ │ ├── psp.svg │ │ │ │ ├── pv.svg │ │ │ │ ├── pvc.svg │ │ │ │ ├── quota.svg │ │ │ │ ├── rb.svg │ │ │ │ ├── role.svg │ │ │ │ ├── rs.svg │ │ │ │ ├── sa.svg │ │ │ │ ├── sc.svg │ │ │ │ ├── sched.svg │ │ │ │ ├── secret.svg │ │ │ │ ├── sts.svg │ │ │ │ ├── svc.svg │ │ │ │ ├── user.svg │ │ │ │ └── vol.svg │ │ │ ├── kubevela.svg │ │ │ ├── loki.svg │ │ │ ├── longhorn.svg │ │ │ ├── magento.svg │ │ │ ├── metallb.svg │ │ │ ├── metricbeat.svg │ │ │ ├── minio.svg │ │ │ ├── mlflow.svg │ │ │ ├── modelset.svg │ │ │ ├── modelx.svg │ │ │ ├── moodle.svg │ │ │ ├── mxnet.svg │ │ │ ├── nacos-t.svg │ │ │ ├── nacos.svg │ │ │ ├── nginx.svg │ │ │ ├── nvidia.svg │ │ │ ├── nvidia_geforce.svg │ │ │ ├── nvidia_tesla.svg │ │ │ ├── odoo.svg │ │ │ ├── onnx.svg │ │ │ ├── openebs.svg │ │ │ ├── openkruise.svg │ │ │ ├── openldap.svg │ │ │ ├── openmmlab.svg │ │ │ ├── openmmlab_logo.svg │ │ │ ├── opentelemetry.svg │ │ │ ├── operator.svg │ │ │ ├── orangehrm.svg │ │ │ ├── osclass.svg │ │ │ ├── output.svg │ │ │ ├── ovn.svg │ │ │ ├── owncloud.svg │ │ │ ├── paddlepaddle.svg │ │ │ ├── pai-task.svg │ │ │ ├── phabricator.svg │ │ │ ├── pytorch.svg │ │ │ ├── ray.svg │ │ │ ├── redmine.svg │ │ │ ├── region.svg │ │ │ ├── scylla.svg │ │ │ ├── seldon-icon.svg │ │ │ ├── seldon.svg │ │ │ ├── sklearn.svg │ │ │ ├── skywalking.svg │ │ │ ├── spacy.svg │ │ │ ├── stanza.svg │ │ │ ├── storage.svg │ │ │ ├── sugarcrm.svg │ │ │ ├── suitecrm.svg │ │ │ ├── tempo.svg │ │ │ ├── tenant.svg │ │ │ ├── tensorflow.svg │ │ │ ├── testlink.svg │ │ │ ├── thanos.svg │ │ │ ├── tke.svg │ │ │ ├── transform.svg │ │ │ ├── vmware.svg │ │ │ ├── wavefront.svg │ │ │ ├── xgboost.svg │ │ │ └── zookeeper.svg │ │ ├── img │ │ │ ├── deploy │ │ │ │ ├── bluegreen.png │ │ │ │ ├── canary.png │ │ │ │ ├── recreate.png │ │ │ │ └── rollingupdate.png │ │ │ ├── home │ │ │ │ └── businessmen.png │ │ │ ├── observe │ │ │ │ ├── logs.svg │ │ │ │ ├── metrics.svg │ │ │ │ └── traces.svg │ │ │ └── pai │ │ │ │ ├── huggingface-name.gif │ │ │ │ ├── huggingface-token.gif │ │ │ │ └── welcome.svg │ │ ├── kubegems-logo.jpeg │ │ ├── kubegems.svg │ │ ├── logo-blue.svg │ │ ├── logo-white.svg │ │ ├── open-csg-color.png │ │ ├── open-csg-white.png │ │ ├── opencsg.svg │ │ ├── opengems-white.svg │ │ ├── opengems.svg │ │ └── scss │ │ │ ├── _animated.scss │ │ │ ├── _core.scss │ │ │ ├── _extras.scss │ │ │ ├── _functions.scss │ │ │ ├── _icons.scss │ │ │ ├── _path.scss │ │ │ ├── _variables.scss │ │ │ └── materialdesignicons.scss │ ├── router.ts │ ├── scripts │ │ └── add_license.sh │ ├── src │ │ ├── App.vue │ │ ├── assets │ │ │ ├── fonts │ │ │ │ └── kubegems-sample.ttf │ │ │ └── styles │ │ │ │ ├── ace_editor.scss │ │ │ │ ├── animation.scss │ │ │ │ ├── apexcharts.scss │ │ │ │ ├── common.scss │ │ │ │ ├── filepond.scss │ │ │ │ ├── index.scss │ │ │ │ ├── initialization.scss │ │ │ │ ├── intro.scss │ │ │ │ ├── markdown.scss │ │ │ │ ├── transition.scss │ │ │ │ ├── vuetify_overwrite.scss │ │ │ │ └── zoom.scss │ │ ├── components │ │ │ └── BaseParam │ │ │ │ ├── BooleanParam.vue │ │ │ │ ├── MinMaxParam.vue │ │ │ │ ├── MultiSelectParam.vue │ │ │ │ ├── SingleSelectParam.vue │ │ │ │ ├── Subsection.vue │ │ │ │ ├── TextAreaParam.vue │ │ │ │ ├── TextFieldParam.vue │ │ │ │ └── index.vue │ │ ├── config.json │ │ ├── config1.json │ │ ├── directives │ │ │ └── hjs.ts │ │ ├── layouts │ │ │ ├── Container.vue │ │ │ ├── Layout.vue │ │ │ ├── LayoutForProduct.vue │ │ │ ├── LayoutWithoutNavi.vue │ │ │ ├── License.vue │ │ │ ├── header │ │ │ │ ├── Header.vue │ │ │ │ ├── Message.vue │ │ │ │ ├── User.vue │ │ │ │ ├── components │ │ │ │ │ ├── About.vue │ │ │ │ │ ├── ApproveResource.vue │ │ │ │ │ └── TenantSelect.vue │ │ │ │ └── i18n │ │ │ │ │ ├── en.json │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── ja.json │ │ │ │ │ ├── zh-Hans.json │ │ │ │ │ └── zh-Hant.json │ │ │ └── tool │ │ │ │ ├── Tool.vue │ │ │ │ └── i18n │ │ │ │ ├── en.json │ │ │ │ ├── index.ts │ │ │ │ ├── ja.json │ │ │ │ ├── zh-Hans.json │ │ │ │ └── zh-Hant.json │ │ ├── loadConfig.ts │ │ ├── main.ts │ │ ├── plugins │ │ │ ├── base.ts │ │ │ └── vuetify.ts │ │ ├── request.ts │ │ ├── router │ │ │ ├── admin_workspace.ts │ │ │ ├── app_store.ts │ │ │ ├── dashboard.ts │ │ │ ├── global.ts │ │ │ ├── index.ts │ │ │ ├── model_store.ts │ │ │ ├── platform.ts │ │ │ ├── project_workspace.ts │ │ │ ├── tool.ts │ │ │ ├── user_center.ts │ │ │ └── workspace.ts │ │ ├── scss │ │ │ ├── variables.scss │ │ │ └── vuetify │ │ │ │ ├── _card.scss │ │ │ │ ├── _dark.scss │ │ │ │ ├── _layout.scss │ │ │ │ ├── _loader.scss │ │ │ │ ├── _rtl.scss │ │ │ │ ├── _sidebar.scss │ │ │ │ ├── _v-bar.scss │ │ │ │ └── overrides.scss │ │ ├── shims-vue.d.ts │ │ ├── sidebar.ts │ │ └── views │ │ │ ├── appstore │ │ │ ├── components │ │ │ │ ├── AppDetail.vue │ │ │ │ ├── AppInfo.vue │ │ │ │ ├── AppStoreCard.vue │ │ │ │ ├── ConfigFile.vue │ │ │ │ ├── Deploy.vue │ │ │ │ ├── DeployWizard │ │ │ │ │ ├── AppStoreComplete.vue │ │ │ │ │ ├── AppStoreDeployLoading.vue │ │ │ │ │ ├── JsonSchema.vue │ │ │ │ │ ├── Tips.vue │ │ │ │ │ └── index.vue │ │ │ │ ├── Markdown.vue │ │ │ │ ├── RepositoryInfo.vue │ │ │ │ └── StatusTip.vue │ │ │ ├── detail.vue │ │ │ ├── i18n │ │ │ │ ├── en.json │ │ │ │ ├── index.ts │ │ │ │ ├── ja.json │ │ │ │ ├── zh-Hans.json │ │ │ │ └── zh-Hant.json │ │ │ ├── index.vue │ │ │ └── list.vue │ │ │ ├── authentication │ │ │ ├── 403.vue │ │ │ ├── 404.vue │ │ │ ├── Product │ │ │ │ ├── index.vue │ │ │ │ ├── locale.vue │ │ │ │ ├── tenant.vue │ │ │ │ └── theme.vue │ │ │ ├── callback.vue │ │ │ ├── i18n │ │ │ │ ├── en.json │ │ │ │ ├── index.ts │ │ │ │ ├── ja.json │ │ │ │ ├── zh-Hans.json │ │ │ │ └── zh-Hant.json │ │ │ └── index.vue │ │ │ ├── modelstore │ │ │ ├── components │ │ │ │ ├── Breadcrumb.vue │ │ │ │ ├── Deploy.vue │ │ │ │ ├── DeployWizard │ │ │ │ │ ├── DeployAdvancedConf │ │ │ │ │ │ ├── Args.vue │ │ │ │ │ │ ├── Command.vue │ │ │ │ │ │ ├── Env.vue │ │ │ │ │ │ ├── Mount.vue │ │ │ │ │ │ ├── Port.vue │ │ │ │ │ │ ├── ResourceConf.vue │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── DeployBaseConf.vue │ │ │ │ │ ├── DeployStatus.vue │ │ │ │ │ └── index.vue │ │ │ │ ├── ModelCard │ │ │ │ │ └── index.vue │ │ │ │ ├── ModelFilter │ │ │ │ │ ├── FilterItems.vue │ │ │ │ │ └── index.vue │ │ │ │ ├── ModelInfo │ │ │ │ │ ├── VersionSelect.vue │ │ │ │ │ └── index.vue │ │ │ │ ├── RegistrySelect.vue │ │ │ │ └── detail_tabs │ │ │ │ │ ├── Certificate │ │ │ │ │ ├── UpdateCertificate.vue │ │ │ │ │ └── index.vue │ │ │ │ │ ├── Comment │ │ │ │ │ ├── CommentBaseForm.vue │ │ │ │ │ ├── Reply.vue │ │ │ │ │ └── index.vue │ │ │ │ │ ├── Description │ │ │ │ │ ├── Markdown.vue │ │ │ │ │ └── index.vue │ │ │ │ │ ├── Files.vue │ │ │ │ │ └── Runtime │ │ │ │ │ ├── components │ │ │ │ │ ├── ModelExperience.vue │ │ │ │ │ └── tasks │ │ │ │ │ │ ├── ConversationText.vue │ │ │ │ │ │ ├── FileInputs.vue │ │ │ │ │ │ ├── ImageSegmentation.vue │ │ │ │ │ │ ├── QuestionAnswer.vue │ │ │ │ │ │ ├── SingleImage.vue │ │ │ │ │ │ ├── TableQuestionAnswer.vue │ │ │ │ │ │ ├── TextInputs.vue │ │ │ │ │ │ ├── VisualQuestionAnswer.vue │ │ │ │ │ │ ├── ZeroShotClassification.vue │ │ │ │ │ │ └── ZeroShotImageClassification.vue │ │ │ │ │ ├── index.vue │ │ │ │ │ └── mixins │ │ │ │ │ └── params.ts │ │ │ ├── detail.vue │ │ │ ├── i18n │ │ │ │ ├── en.json │ │ │ │ ├── index.ts │ │ │ │ ├── ja.json │ │ │ │ ├── zh-Hans.json │ │ │ │ └── zh-Hant.json │ │ │ └── index.vue │ │ │ ├── resource │ │ │ ├── app │ │ │ │ ├── components │ │ │ │ │ ├── AppStatusTip.vue │ │ │ │ │ ├── ModelMonitor.vue │ │ │ │ │ ├── ModelResourceInfo │ │ │ │ │ │ ├── DashboardCard.vue │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── ResourceInfo.vue │ │ │ │ │ ├── Rollingback.vue │ │ │ │ │ ├── ScaleReplicas.vue │ │ │ │ │ ├── TaskStatusTip.vue │ │ │ │ │ ├── UpdateAppFromStore.vue │ │ │ │ │ ├── UpdateModelRuntime.vue │ │ │ │ │ └── UpgradeModel.vue │ │ │ │ ├── detail.vue │ │ │ │ ├── i18n │ │ │ │ │ ├── en.json │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── ja.json │ │ │ │ │ ├── zh-Hans.json │ │ │ │ │ └── zh-Hant.json │ │ │ │ └── index.vue │ │ │ ├── app_configer │ │ │ │ ├── components │ │ │ │ │ ├── ConfigEditor.vue │ │ │ │ │ ├── ConfigListener.vue │ │ │ │ │ ├── ConfigPreview.vue │ │ │ │ │ ├── ConfigSDK.vue │ │ │ │ │ ├── DeleteItem.vue │ │ │ │ │ └── HistoryView.vue │ │ │ │ ├── i18n │ │ │ │ │ ├── en.json │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── ja.json │ │ │ │ │ ├── zh-Hans.json │ │ │ │ │ └── zh-Hant.json │ │ │ │ └── index.vue │ │ │ ├── appmanifest │ │ │ │ ├── components │ │ │ │ │ ├── AddApp.vue │ │ │ │ │ ├── AppBaseForm.vue │ │ │ │ │ ├── AppDeployList │ │ │ │ │ │ ├── AppDeployImageTrace.vue │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── AppImageSecurityReportList │ │ │ │ │ │ ├── AppImageSecurityReportDetail.vue │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── AppResourceFileList │ │ │ │ │ │ ├── AddResourceFile.vue │ │ │ │ │ │ ├── AppResourceBaseForm │ │ │ │ │ │ │ ├── AppBaseInfo.vue │ │ │ │ │ │ │ └── index.vue │ │ │ │ │ │ ├── AppResourceFileHistory │ │ │ │ │ │ │ ├── AppResourceFileDiff.vue │ │ │ │ │ │ │ └── index.vue │ │ │ │ │ │ ├── UpdateResourceFile.vue │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── DeployApp.vue │ │ │ │ │ ├── LinkApp │ │ │ │ │ │ ├── LinkAppBaseForm.vue │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── ResourceInfo.vue │ │ │ │ │ └── UpdateApp.vue │ │ │ │ ├── detail.vue │ │ │ │ ├── i18n │ │ │ │ │ ├── en.json │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── ja.json │ │ │ │ │ ├── zh-Hans.json │ │ │ │ │ └── zh-Hant.json │ │ │ │ └── index.vue │ │ │ ├── blank │ │ │ │ ├── i18n │ │ │ │ │ ├── en.json │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── ja.json │ │ │ │ │ ├── zh-Hans.json │ │ │ │ │ └── zh-Hant.json │ │ │ │ ├── white_cluster_page.vue │ │ │ │ ├── white_page.vue │ │ │ │ └── white_tenant_page.vue │ │ │ ├── certmanager │ │ │ │ ├── components │ │ │ │ │ ├── AddCertificate.vue │ │ │ │ │ ├── AddIssuer.vue │ │ │ │ │ ├── CertificateBaseForm │ │ │ │ │ │ ├── DnsNameForm.vue │ │ │ │ │ │ ├── DnsNameItem.vue │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── IssuerBaseForm.vue │ │ │ │ │ ├── ResourceInfo.vue │ │ │ │ │ ├── UpdateCertificate.vue │ │ │ │ │ └── UpdateIssuer.vue │ │ │ │ ├── detail.vue │ │ │ │ ├── i18n │ │ │ │ │ ├── en.json │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── ja.json │ │ │ │ │ ├── zh-Hans.json │ │ │ │ │ └── zh-Hant.json │ │ │ │ └── index.vue │ │ │ ├── cluster │ │ │ │ ├── components │ │ │ │ │ ├── AddCluster.vue │ │ │ │ │ ├── BasicMonitor │ │ │ │ │ │ ├── Tips.vue │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── CloudCluster.vue │ │ │ │ │ ├── CloudClusterDetail.vue │ │ │ │ │ ├── ClusterBaseForm │ │ │ │ │ │ ├── InitClusterConfig.vue │ │ │ │ │ │ ├── TestKubeConfig.vue │ │ │ │ │ │ ├── ValidateKubeConfig.vue │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── EdgeCluster.vue │ │ │ │ │ ├── EdgeClusterDetail.vue │ │ │ │ │ ├── EdgeClusterForm │ │ │ │ │ │ ├── RegisterEdgeCluster.vue │ │ │ │ │ │ ├── RegisterMessage.vue │ │ │ │ │ │ ├── SelectCloudCluster.vue │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── EdgeManufactureTip.vue │ │ │ │ │ ├── EdgeStatusTip.vue │ │ │ │ │ ├── LabelEdgeCluster │ │ │ │ │ │ ├── TenantProjEnvSelectCascade.vue │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── MetricMonitor.vue │ │ │ │ │ ├── OverScaleResource.vue │ │ │ │ │ ├── ResourceChart.vue │ │ │ │ │ ├── ResourceInfo.vue │ │ │ │ │ └── UpdateCluster.vue │ │ │ │ ├── detail.vue │ │ │ │ ├── i18n │ │ │ │ │ ├── en.json │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── ja.json │ │ │ │ │ ├── zh-Hans.json │ │ │ │ │ └── zh-Hant.json │ │ │ │ └── index.vue │ │ │ ├── components │ │ │ │ ├── annotation │ │ │ │ │ ├── AnnotationForm.vue │ │ │ │ │ └── AnnotationItem.vue │ │ │ │ ├── common │ │ │ │ │ ├── ContainerLog.vue │ │ │ │ │ ├── DataForm.vue │ │ │ │ │ ├── DetailContainer.vue │ │ │ │ │ ├── DetailEnv.vue │ │ │ │ │ ├── DetailVolume.vue │ │ │ │ │ ├── EventTip.vue │ │ │ │ │ ├── GpuTip.vue │ │ │ │ │ ├── NamespaceFilter.vue │ │ │ │ │ ├── NvidiaGpuMonitor.vue │ │ │ │ │ ├── PodList.vue │ │ │ │ │ ├── ProbeTip.vue │ │ │ │ │ ├── Terminal │ │ │ │ │ │ ├── FileDownloader.vue │ │ │ │ │ │ ├── FileUploader.vue │ │ │ │ │ │ ├── FileViewer.vue │ │ │ │ │ │ └── index.vue │ │ │ │ │ └── TkeGpuMonitor │ │ │ │ │ │ ├── DashboardCard.vue │ │ │ │ │ │ └── index.vue │ │ │ │ ├── i18n │ │ │ │ │ ├── en.json │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── ja.json │ │ │ │ │ ├── zh-Hans.json │ │ │ │ │ └── zh-Hant.json │ │ │ │ └── label │ │ │ │ │ ├── LabelForm.vue │ │ │ │ │ └── LabelItem.vue │ │ │ ├── configmap │ │ │ │ ├── components │ │ │ │ │ ├── AddConfigMap.vue │ │ │ │ │ ├── ConfigMapBaseForm │ │ │ │ │ │ ├── ConfigMapDataItem.vue │ │ │ │ │ │ └── index.vue │ │ │ │ │ └── UpdateConfigMap.vue │ │ │ │ ├── detail.vue │ │ │ │ ├── i18n │ │ │ │ │ ├── en.json │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── ja.json │ │ │ │ │ ├── zh-Hans.json │ │ │ │ │ └── zh-Hant.json │ │ │ │ └── index.vue │ │ │ ├── crd │ │ │ │ ├── components │ │ │ │ │ ├── AddCR.vue │ │ │ │ │ ├── CRList.vue │ │ │ │ │ ├── ResourceInfo.vue │ │ │ │ │ └── UpdateCR.vue │ │ │ │ ├── detail.vue │ │ │ │ ├── i18n │ │ │ │ │ ├── en.json │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── ja.json │ │ │ │ │ ├── zh-Hans.json │ │ │ │ │ └── zh-Hant.json │ │ │ │ └── index.vue │ │ │ ├── cronjob │ │ │ │ ├── components │ │ │ │ │ ├── AddCronJob.vue │ │ │ │ │ ├── CronjobBaseForm │ │ │ │ │ │ ├── ContainerImage.vue │ │ │ │ │ │ ├── CronJobBaseInfo.vue │ │ │ │ │ │ ├── StorageMount.vue │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── JobList.vue │ │ │ │ │ ├── ResourceInfo.vue │ │ │ │ │ └── UpdateCronJob.vue │ │ │ │ ├── detail.vue │ │ │ │ ├── i18n │ │ │ │ │ ├── en.json │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── ja.json │ │ │ │ │ ├── zh-Hans.json │ │ │ │ │ └── zh-Hant.json │ │ │ │ └── index.vue │ │ │ ├── dashboard │ │ │ │ ├── components │ │ │ │ │ ├── AuditList.vue │ │ │ │ │ ├── DashboardCard.vue │ │ │ │ │ ├── EventList.vue │ │ │ │ │ ├── ManageUser.vue │ │ │ │ │ ├── Pagination.vue │ │ │ │ │ ├── ProjectList │ │ │ │ │ │ └── index.vue │ │ │ │ │ └── ResourceList │ │ │ │ │ │ ├── CloudCluster.vue │ │ │ │ │ │ ├── EdgeCluster.vue │ │ │ │ │ │ ├── ScaleResource.vue │ │ │ │ │ │ └── index.vue │ │ │ │ ├── i18n │ │ │ │ │ ├── en.json │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── ja.json │ │ │ │ │ ├── zh-Hans.json │ │ │ │ │ └── zh-Hant.json │ │ │ │ └── index.vue │ │ │ ├── deploy │ │ │ │ ├── components │ │ │ │ │ ├── DeployControlCenter │ │ │ │ │ │ ├── DeployCard.vue │ │ │ │ │ │ ├── DeployPodTip.vue │ │ │ │ │ │ ├── DeployStepPanel.vue │ │ │ │ │ │ ├── DeployStepStatus.vue │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── DeployStatus │ │ │ │ │ │ ├── DeployTopology │ │ │ │ │ │ │ ├── DeployLive │ │ │ │ │ │ │ │ ├── DeployDiffYaml.vue │ │ │ │ │ │ │ │ ├── DeployEvent.vue │ │ │ │ │ │ │ │ ├── DeployLiveYaml.vue │ │ │ │ │ │ │ │ ├── DeployLog.vue │ │ │ │ │ │ │ │ ├── DeployResult.vue │ │ │ │ │ │ │ │ └── index.vue │ │ │ │ │ │ │ └── index.vue │ │ │ │ │ │ └── index.vue │ │ │ │ │ └── deploy_policy │ │ │ │ │ │ ├── BlueGreen.vue │ │ │ │ │ │ ├── Canary.vue │ │ │ │ │ │ ├── Recreate.vue │ │ │ │ │ │ ├── RollingUpdate.vue │ │ │ │ │ │ ├── analysis_template │ │ │ │ │ │ ├── AnalysisTemplateForm │ │ │ │ │ │ │ ├── ArgsForm.vue │ │ │ │ │ │ │ ├── ArgsItem.vue │ │ │ │ │ │ │ └── index.vue │ │ │ │ │ │ └── AnalysisTemplateItem.vue │ │ │ │ │ │ ├── base │ │ │ │ │ │ └── BaseDeployInfoForm.vue │ │ │ │ │ │ └── traffic │ │ │ │ │ │ ├── DefaultTraffic.vue │ │ │ │ │ │ ├── HeaderTraffic │ │ │ │ │ │ ├── StringMatchForm.vue │ │ │ │ │ │ └── index.vue │ │ │ │ │ │ └── UriTraffic │ │ │ │ │ │ ├── UriMatchForm.vue │ │ │ │ │ │ └── index.vue │ │ │ │ ├── i18n │ │ │ │ │ ├── en.json │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── ja.json │ │ │ │ │ ├── zh-Hans.json │ │ │ │ │ └── zh-Hant.json │ │ │ │ └── index.vue │ │ │ ├── edge │ │ │ │ ├── components │ │ │ │ │ ├── EdgeCluster.vue │ │ │ │ │ ├── Namespace.vue │ │ │ │ │ └── Node.vue │ │ │ │ ├── detail.vue │ │ │ │ ├── i18n │ │ │ │ │ ├── en.json │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── ja.json │ │ │ │ │ ├── zh-Hans.json │ │ │ │ │ └── zh-Hant.json │ │ │ │ └── index.vue │ │ │ ├── environment │ │ │ │ ├── components │ │ │ │ │ ├── AddEnvironment.vue │ │ │ │ │ ├── EnvironmentBaseForm │ │ │ │ │ │ ├── AddNamespace.vue │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── ManageUser.vue │ │ │ │ │ ├── ResourceMonitor.vue │ │ │ │ │ ├── ResourceQuota.vue │ │ │ │ │ ├── ResourceUseList.vue │ │ │ │ │ ├── ScaleResource.vue │ │ │ │ │ ├── TopNResourceUsage.vue │ │ │ │ │ ├── UpdateEnvironment.vue │ │ │ │ │ └── base │ │ │ │ │ │ ├── LimitRange.vue │ │ │ │ │ │ ├── LimitRangeCard.vue │ │ │ │ │ │ ├── ResourceChart.vue │ │ │ │ │ │ └── ResourceQuota.vue │ │ │ │ ├── detail.vue │ │ │ │ ├── i18n │ │ │ │ │ ├── en.json │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── ja.json │ │ │ │ │ ├── zh-Hans.json │ │ │ │ │ └── zh-Hant.json │ │ │ │ └── index.vue │ │ │ ├── gateway │ │ │ │ ├── components │ │ │ │ │ ├── AddGateway.vue │ │ │ │ │ ├── GatewayBaseForm │ │ │ │ │ │ ├── GatewayDataItem.vue │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── GatewayConfigmap.vue │ │ │ │ │ ├── GatewayMonitor.vue │ │ │ │ │ ├── IngressList.vue │ │ │ │ │ ├── ResourceInfo.vue │ │ │ │ │ └── UpdateGateway.vue │ │ │ │ ├── detail.vue │ │ │ │ ├── i18n │ │ │ │ │ ├── en.json │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── ja.json │ │ │ │ │ ├── zh-Hans.json │ │ │ │ │ └── zh-Hant.json │ │ │ │ └── index.vue │ │ │ ├── ingress │ │ │ │ ├── components │ │ │ │ │ ├── AddIngress.vue │ │ │ │ │ ├── IngressBaseForm │ │ │ │ │ │ ├── IngressRuleForm.vue │ │ │ │ │ │ ├── IngressRuleItem.vue │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── ResourceInfo.vue │ │ │ │ │ └── UpdateIngress.vue │ │ │ │ ├── detail.vue │ │ │ │ ├── i18n │ │ │ │ │ ├── en.json │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── ja.json │ │ │ │ │ ├── zh-Hans.json │ │ │ │ │ └── zh-Hant.json │ │ │ │ └── index.vue │ │ │ ├── job │ │ │ │ ├── components │ │ │ │ │ ├── AddJob.vue │ │ │ │ │ ├── JobBaseForm │ │ │ │ │ │ ├── JobBaseInfo.vue │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── ResourceInfo.vue │ │ │ │ │ └── UpdateJob.vue │ │ │ │ ├── detail.vue │ │ │ │ ├── i18n │ │ │ │ │ ├── en.json │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── ja.json │ │ │ │ │ ├── zh-Hans.json │ │ │ │ │ └── zh-Hant.json │ │ │ │ └── index.vue │ │ │ ├── log │ │ │ │ └── index.vue │ │ │ ├── node │ │ │ │ ├── components │ │ │ │ │ ├── GpuScheduleForm.vue │ │ │ │ │ ├── NodeMonitor.vue │ │ │ │ │ ├── ResourceInfo.vue │ │ │ │ │ └── Taint │ │ │ │ │ │ ├── AddTaint.vue │ │ │ │ │ │ └── index.vue │ │ │ │ ├── detail.vue │ │ │ │ ├── i18n │ │ │ │ │ ├── en.json │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── ja.json │ │ │ │ │ ├── zh-Hans.json │ │ │ │ │ └── zh-Hant.json │ │ │ │ └── index.vue │ │ │ ├── persistentvolumeclaim │ │ │ │ ├── components │ │ │ │ │ ├── AddPersistentVolumeClaim.vue │ │ │ │ │ ├── PersistentVolumeClaimBaseForm.vue │ │ │ │ │ ├── PersistentVolumeClaimMonitor.vue │ │ │ │ │ ├── ResourceInfo.vue │ │ │ │ │ ├── ScalePersistentVolumeClaim.vue │ │ │ │ │ └── UpdatePersistentVolumeClaim.vue │ │ │ │ ├── detail.vue │ │ │ │ ├── i18n │ │ │ │ │ ├── en.json │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── ja.json │ │ │ │ │ ├── zh-Hans.json │ │ │ │ │ └── zh-Hant.json │ │ │ │ └── index.vue │ │ │ ├── plugin │ │ │ │ ├── components │ │ │ │ │ ├── CheckPluginVersion.vue │ │ │ │ │ ├── InstallPluginSchema │ │ │ │ │ │ ├── PluginInfo.vue │ │ │ │ │ │ ├── RequirementTip.vue │ │ │ │ │ │ ├── SchemaRender │ │ │ │ │ │ │ ├── SchemaForm.vue │ │ │ │ │ │ │ ├── ValuesForm.vue │ │ │ │ │ │ │ └── index.vue │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── UpgradeMessage.vue │ │ │ │ │ ├── UpgradeTip.vue │ │ │ │ │ └── VersionSelect.vue │ │ │ │ ├── i18n │ │ │ │ │ ├── en.json │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── ja.json │ │ │ │ │ ├── zh-Hans.json │ │ │ │ │ └── zh-Hant.json │ │ │ │ └── index.vue │ │ │ ├── pod │ │ │ │ ├── components │ │ │ │ │ ├── ContainerItems.vue │ │ │ │ │ ├── ContainerList.vue │ │ │ │ │ ├── PodMonitor.vue │ │ │ │ │ ├── ResourceInfo.vue │ │ │ │ │ └── RestartTip.vue │ │ │ │ ├── detail.vue │ │ │ │ ├── i18n │ │ │ │ │ ├── en.json │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── ja.json │ │ │ │ │ ├── zh-Hans.json │ │ │ │ │ └── zh-Hant.json │ │ │ │ └── index.vue │ │ │ ├── project │ │ │ │ ├── components │ │ │ │ │ ├── AddProject.vue │ │ │ │ │ ├── DashboardCard.vue │ │ │ │ │ ├── EnvironmentList.vue │ │ │ │ │ ├── ManageUser.vue │ │ │ │ │ ├── ProjectBaseForm.vue │ │ │ │ │ ├── ResourceList.vue │ │ │ │ │ └── UpdateProject.vue │ │ │ │ ├── detail.vue │ │ │ │ ├── i18n │ │ │ │ │ ├── en.json │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── ja.json │ │ │ │ │ ├── zh-Hans.json │ │ │ │ │ └── zh-Hant.json │ │ │ │ └── index.vue │ │ │ ├── registry │ │ │ │ ├── components │ │ │ │ │ ├── AddRegistry.vue │ │ │ │ │ ├── RegistryBaseForm.vue │ │ │ │ │ └── UpdateRegistry.vue │ │ │ │ ├── i18n │ │ │ │ │ ├── en.json │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── ja.json │ │ │ │ │ ├── zh-Hans.json │ │ │ │ │ └── zh-Hant.json │ │ │ │ └── index.vue │ │ │ ├── secret │ │ │ │ ├── components │ │ │ │ │ ├── AddSecret.vue │ │ │ │ │ ├── SecretBaseForm │ │ │ │ │ │ ├── SecretDataForm.vue │ │ │ │ │ │ ├── SecretDataItem.vue │ │ │ │ │ │ ├── SecretDockerconfigForm.vue │ │ │ │ │ │ ├── SecretTlsForm.vue │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── Tips.vue │ │ │ │ │ └── UpdateSecret.vue │ │ │ │ ├── detail.vue │ │ │ │ ├── i18n │ │ │ │ │ ├── en.json │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── ja.json │ │ │ │ │ ├── zh-Hans.json │ │ │ │ │ └── zh-Hant.json │ │ │ │ └── index.vue │ │ │ ├── service │ │ │ │ ├── components │ │ │ │ │ ├── AddService.vue │ │ │ │ │ ├── ResourceInfo.vue │ │ │ │ │ ├── ServiceBaseForm │ │ │ │ │ │ ├── ServicePortForm.vue │ │ │ │ │ │ ├── ServicePortItem.vue │ │ │ │ │ │ └── index.vue │ │ │ │ │ └── UpdateService.vue │ │ │ │ ├── detail.vue │ │ │ │ ├── i18n │ │ │ │ │ ├── en.json │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── ja.json │ │ │ │ │ ├── zh-Hans.json │ │ │ │ │ └── zh-Hant.json │ │ │ │ └── index.vue │ │ │ ├── storageclass │ │ │ │ ├── components │ │ │ │ │ └── StorageClassForm.vue │ │ │ │ ├── i18n │ │ │ │ │ ├── en.json │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── ja.json │ │ │ │ │ ├── zh-Hans.json │ │ │ │ │ └── zh-Hant.json │ │ │ │ └── index.vue │ │ │ ├── terminal │ │ │ │ └── index.vue │ │ │ ├── volumesnapshot │ │ │ │ ├── components │ │ │ │ │ └── RestoreVolumeSnapshot.vue │ │ │ │ ├── i18n │ │ │ │ │ ├── en.json │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── ja.json │ │ │ │ │ ├── zh-Hans.json │ │ │ │ │ └── zh-Hant.json │ │ │ │ └── index.vue │ │ │ └── workload │ │ │ │ ├── components │ │ │ │ ├── AddWorkload.vue │ │ │ │ ├── HPAStrategy.vue │ │ │ │ ├── PodItems.vue │ │ │ │ ├── ResourceAdvise.vue │ │ │ │ ├── ResourceInfo.vue │ │ │ │ ├── ResourceLimit.vue │ │ │ │ ├── Rollingback.vue │ │ │ │ ├── ScaleReplicas.vue │ │ │ │ ├── UpdateWorkload.vue │ │ │ │ ├── WorkloadBaseForm │ │ │ │ │ ├── ContainerImage │ │ │ │ │ │ ├── ContainerImageItem.vue │ │ │ │ │ │ ├── ContainerImageSelect.vue │ │ │ │ │ │ ├── container_section │ │ │ │ │ │ │ ├── ContainerEnv │ │ │ │ │ │ │ │ ├── Configmap.vue │ │ │ │ │ │ │ │ ├── DownwardContainer.vue │ │ │ │ │ │ │ │ ├── DownwardPod.vue │ │ │ │ │ │ │ │ ├── KeyValue.vue │ │ │ │ │ │ │ │ ├── Secret.vue │ │ │ │ │ │ │ │ └── index.vue │ │ │ │ │ │ │ ├── ContainerHealthCheck │ │ │ │ │ │ │ │ ├── LivenessProbe.vue │ │ │ │ │ │ │ │ ├── ReadinessProbe.vue │ │ │ │ │ │ │ │ ├── StartupProbe.vue │ │ │ │ │ │ │ │ └── index.vue │ │ │ │ │ │ │ ├── ContainerPort │ │ │ │ │ │ │ │ ├── Port.vue │ │ │ │ │ │ │ │ └── index.vue │ │ │ │ │ │ │ ├── ContainerResource │ │ │ │ │ │ │ │ ├── ResourceLimit.vue │ │ │ │ │ │ │ │ └── index.vue │ │ │ │ │ │ │ ├── ContainerRunCommand.vue │ │ │ │ │ │ │ └── ContainerSecurityContext.vue │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── DeployPolicy.vue │ │ │ │ │ ├── ScheduleSelector │ │ │ │ │ │ ├── DNSConfigForm │ │ │ │ │ │ │ ├── DNSOptionForm.vue │ │ │ │ │ │ │ ├── DNSOptionItem.vue │ │ │ │ │ │ │ └── index.vue │ │ │ │ │ │ ├── DNSConfigItem.vue │ │ │ │ │ │ ├── SelectorForm.vue │ │ │ │ │ │ ├── SelectorItem.vue │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── StorageMount │ │ │ │ │ │ ├── StorageMountItem │ │ │ │ │ │ │ ├── Configmap.vue │ │ │ │ │ │ │ ├── EmptyDir.vue │ │ │ │ │ │ │ ├── HostPath.vue │ │ │ │ │ │ │ ├── PersistentVolumeClaim.vue │ │ │ │ │ │ │ ├── Secret.vue │ │ │ │ │ │ │ └── index.vue │ │ │ │ │ │ ├── VolumeClaimTemplateItem.vue │ │ │ │ │ │ ├── index.vue │ │ │ │ │ │ └── volume_section │ │ │ │ │ │ │ ├── ConfigMapMount.vue │ │ │ │ │ │ │ ├── EmptyDirMount.vue │ │ │ │ │ │ │ ├── HostPathMount.vue │ │ │ │ │ │ │ ├── PersistentVolumeClaimMount.vue │ │ │ │ │ │ │ ├── SecretMount.vue │ │ │ │ │ │ │ ├── VolumeClaimTemplateMount.vue │ │ │ │ │ │ │ ├── VolumeMount.vue │ │ │ │ │ │ │ └── VolumeMountForInitContainer.vue │ │ │ │ │ ├── WorkloadBaseInfo.vue │ │ │ │ │ └── index.vue │ │ │ │ └── WorkloadMonitor.vue │ │ │ │ ├── detail.vue │ │ │ │ ├── i18n │ │ │ │ ├── en.json │ │ │ │ ├── index.ts │ │ │ │ ├── ja.json │ │ │ │ ├── zh-Hans.json │ │ │ │ └── zh-Hant.json │ │ │ │ └── index.vue │ │ │ ├── setting │ │ │ ├── broadcast │ │ │ │ ├── components │ │ │ │ │ └── BroadcastForm.vue │ │ │ │ ├── i18n │ │ │ │ │ ├── en.json │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── ja.json │ │ │ │ │ ├── zh-Hans.json │ │ │ │ │ └── zh-Hant.json │ │ │ │ └── index.vue │ │ │ ├── model_registry │ │ │ │ ├── components │ │ │ │ │ ├── BaseResourceInfo.vue │ │ │ │ │ ├── ModelList │ │ │ │ │ │ ├── Recommend.vue │ │ │ │ │ │ ├── RecommendContent.vue │ │ │ │ │ │ ├── TagModel.vue │ │ │ │ │ │ └── index.vue │ │ │ │ │ └── ModelRegistryForm │ │ │ │ │ │ ├── ManageUser.vue │ │ │ │ │ │ ├── ModelBaseInfo │ │ │ │ │ │ ├── Auth │ │ │ │ │ │ │ ├── AuthItem.vue │ │ │ │ │ │ │ └── index.vue │ │ │ │ │ │ └── index.vue │ │ │ │ │ │ └── index.vue │ │ │ │ ├── detail.vue │ │ │ │ ├── i18n │ │ │ │ │ ├── en.json │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── ja.json │ │ │ │ │ ├── zh-Hans.json │ │ │ │ │ └── zh-Hant.json │ │ │ │ └── index.vue │ │ │ ├── monitor │ │ │ │ ├── components │ │ │ │ │ ├── MonitorTemplateForm.vue │ │ │ │ │ └── ResourceInfo.vue │ │ │ │ ├── detail.vue │ │ │ │ ├── i18n │ │ │ │ │ ├── en.json │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── ja.json │ │ │ │ │ ├── zh-Hans.json │ │ │ │ │ └── zh-Hant.json │ │ │ │ └── index.vue │ │ │ ├── oauth │ │ │ │ ├── components │ │ │ │ │ ├── ConfigAuthSource.vue │ │ │ │ │ └── auth_source │ │ │ │ │ │ ├── OauthForm.vue │ │ │ │ │ │ └── OpenLdapForm.vue │ │ │ │ ├── i18n │ │ │ │ │ ├── en.json │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── ja.json │ │ │ │ │ ├── zh-Hans.json │ │ │ │ │ └── zh-Hant.json │ │ │ │ └── index.vue │ │ │ └── prometheus │ │ │ │ ├── components │ │ │ │ ├── ScopeResourceLayout.vue │ │ │ │ ├── ScopeResourceTree.vue │ │ │ │ ├── TemplateBaseForm.vue │ │ │ │ └── TemplateForm.vue │ │ │ │ ├── i18n │ │ │ │ ├── en.json │ │ │ │ ├── index.ts │ │ │ │ ├── ja.json │ │ │ │ ├── zh-Hans.json │ │ │ │ └── zh-Hant.json │ │ │ │ └── index.vue │ │ │ ├── tenant │ │ │ ├── role │ │ │ │ ├── i18n │ │ │ │ │ ├── en.json │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── ja.json │ │ │ │ │ ├── zh-Hans.json │ │ │ │ │ └── zh-Hant.json │ │ │ │ └── index.vue │ │ │ ├── tenant │ │ │ │ ├── components │ │ │ │ │ ├── ResourceList │ │ │ │ │ │ ├── AddResource.vue │ │ │ │ │ │ ├── ResourceBaseForm │ │ │ │ │ │ │ ├── ResourceChart.vue │ │ │ │ │ │ │ └── index.vue │ │ │ │ │ │ ├── ScaleResource.vue │ │ │ │ │ │ ├── TenantMonitor.vue │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── TenantForm.vue │ │ │ │ │ └── UserList │ │ │ │ │ │ ├── AddUser.vue │ │ │ │ │ │ └── index.vue │ │ │ │ ├── detail.vue │ │ │ │ ├── i18n │ │ │ │ │ ├── en.json │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── ja.json │ │ │ │ │ ├── zh-Hans.json │ │ │ │ │ └── zh-Hant.json │ │ │ │ └── index.vue │ │ │ └── user │ │ │ │ ├── components │ │ │ │ ├── AddUser.vue │ │ │ │ ├── ResetPassword.vue │ │ │ │ └── UpdateRole.vue │ │ │ │ ├── i18n │ │ │ │ ├── en.json │ │ │ │ ├── index.ts │ │ │ │ ├── ja.json │ │ │ │ ├── zh-Hans.json │ │ │ │ └── zh-Hant.json │ │ │ │ └── index.vue │ │ │ └── tool │ │ │ ├── audit │ │ │ ├── i18n │ │ │ │ ├── en.json │ │ │ │ ├── index.ts │ │ │ │ ├── ja.json │ │ │ │ ├── zh-Hans.json │ │ │ │ └── zh-Hant.json │ │ │ └── index.vue │ │ │ ├── event │ │ │ ├── i18n │ │ │ │ ├── en.json │ │ │ │ ├── index.ts │ │ │ │ ├── ja.json │ │ │ │ ├── zh-Hans.json │ │ │ │ └── zh-Hant.json │ │ │ └── index.vue │ │ │ ├── schema │ │ │ └── index.vue │ │ │ └── user │ │ │ ├── components │ │ │ ├── AccessToken │ │ │ │ ├── GenerateToken.vue │ │ │ │ └── index.vue │ │ │ ├── AuditList.vue │ │ │ ├── MessageBox.vue │ │ │ ├── OwnerSetting.vue │ │ │ └── ThemeColor.vue │ │ │ ├── i18n │ │ │ ├── en.json │ │ │ ├── index.ts │ │ │ ├── ja.json │ │ │ ├── zh-Hans.json │ │ │ └── zh-Hant.json │ │ │ └── index.vue │ ├── tsconfig.json │ ├── vite.config.ts │ └── volar.config.ts ├── observability │ ├── README.md │ ├── alert │ │ ├── blacklist │ │ │ └── index.vue │ │ ├── dashboard │ │ │ ├── components │ │ │ │ ├── AlertCategoryBar.vue │ │ │ │ ├── AlertHistoryLine.vue │ │ │ │ ├── AlertTopBar.vue │ │ │ │ ├── CompareValue.vue │ │ │ │ └── ValueCard.vue │ │ │ └── index.vue │ │ ├── history │ │ │ ├── components │ │ │ │ └── HistorySearch.vue │ │ │ └── index.vue │ │ └── i18n │ │ │ ├── en.json │ │ │ ├── index.ts │ │ │ ├── ja.json │ │ │ ├── zh-Hans.json │ │ │ └── zh-Hant.json │ ├── channel │ │ ├── components │ │ │ ├── AddChannel.vue │ │ │ ├── ChannelBaseForm │ │ │ │ ├── AliyunMsg.vue │ │ │ │ ├── AliyunVoice.vue │ │ │ │ ├── Dingding.vue │ │ │ │ ├── Email.vue │ │ │ │ ├── Feishu.vue │ │ │ │ ├── Webhook.vue │ │ │ │ └── index.vue │ │ │ ├── ChannelCard.vue │ │ │ ├── ChannelUpdateTip.vue │ │ │ └── UpdateChannel.vue │ │ ├── i18n │ │ │ ├── en.json │ │ │ ├── index.ts │ │ │ ├── ja.json │ │ │ ├── zh-Hans.json │ │ │ └── zh-Hant.json │ │ └── index.vue │ ├── components │ │ ├── EmptyOverlay.vue │ │ ├── ProjectEnvSelectCascade.vue │ │ ├── ProjectEnvironmentLayout.vue │ │ ├── ProjectEnvironmentTree.vue │ │ └── TenantSelect.vue │ ├── integrated │ │ ├── components │ │ │ └── IntergatedCenter │ │ │ │ ├── Logging.vue │ │ │ │ ├── Metrics │ │ │ │ ├── MetricsBaseForm.vue │ │ │ │ ├── MetricsDocs.vue │ │ │ │ ├── MetricsList.vue │ │ │ │ ├── docs │ │ │ │ │ ├── cpp.md │ │ │ │ │ ├── csharp.md │ │ │ │ │ ├── erlang.md │ │ │ │ │ ├── golang.md │ │ │ │ │ ├── java.md │ │ │ │ │ ├── javascript.md │ │ │ │ │ ├── nodejs.md │ │ │ │ │ ├── php.md │ │ │ │ │ ├── python.md │ │ │ │ │ ├── ruby.md │ │ │ │ │ ├── rust.md │ │ │ │ │ └── swift.md │ │ │ │ └── index.vue │ │ │ │ ├── MiddlewareMetrics.vue │ │ │ │ ├── Probe │ │ │ │ ├── Http.vue │ │ │ │ ├── Icmp.vue │ │ │ │ ├── ProbeAddress.vue │ │ │ │ ├── Tcp.vue │ │ │ │ └── index.vue │ │ │ │ ├── ProjectEnvSelect.vue │ │ │ │ ├── Trace │ │ │ │ ├── docs │ │ │ │ │ ├── cpp.md │ │ │ │ │ ├── csharp.md │ │ │ │ │ ├── erlang.md │ │ │ │ │ ├── golang.md │ │ │ │ │ ├── java.md │ │ │ │ │ ├── javascript.md │ │ │ │ │ ├── nodejs.md │ │ │ │ │ ├── php.md │ │ │ │ │ ├── python.md │ │ │ │ │ ├── ruby.md │ │ │ │ │ ├── rust.md │ │ │ │ │ └── swift.md │ │ │ │ └── index.vue │ │ │ │ └── index.vue │ │ ├── i18n │ │ │ ├── en.json │ │ │ ├── index.ts │ │ │ ├── ja.json │ │ │ ├── zh-Hans.json │ │ │ └── zh-Hant.json │ │ └── index.vue │ ├── log │ │ ├── config │ │ │ ├── alert_rule │ │ │ │ ├── detail.vue │ │ │ │ └── index.vue │ │ │ ├── flow │ │ │ │ ├── components │ │ │ │ │ ├── AddFlow.vue │ │ │ │ │ ├── FlowBaseForm │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── ResourceInfo.vue │ │ │ │ │ └── UpdateFlow.vue │ │ │ │ ├── detail.vue │ │ │ │ └── index.vue │ │ │ ├── index.vue │ │ │ └── output │ │ │ │ ├── components │ │ │ │ ├── AddOutput.vue │ │ │ │ ├── OutputBaseForm │ │ │ │ │ ├── Elasticsearch.vue │ │ │ │ │ ├── Kafka.vue │ │ │ │ │ ├── Loki.vue │ │ │ │ │ └── index.vue │ │ │ │ ├── ResourceInfo.vue │ │ │ │ └── UpdateOutput.vue │ │ │ │ ├── detail.vue │ │ │ │ └── index.vue │ │ ├── i18n │ │ │ ├── en.json │ │ │ ├── index.ts │ │ │ ├── ja.json │ │ │ ├── zh-Hans.json │ │ │ └── zh-Hant.json │ │ └── viewer │ │ │ ├── components │ │ │ ├── LogBar.vue │ │ │ ├── LogContext.vue │ │ │ ├── LogLevelSelector.vue │ │ │ ├── LogLine.vue │ │ │ ├── LogQuery │ │ │ │ ├── AdvancedTextare.vue │ │ │ │ ├── LabelSelector │ │ │ │ │ ├── EllipsisText.vue │ │ │ │ │ └── index.vue │ │ │ │ ├── ProjectEnvSelect.vue │ │ │ │ └── index.vue │ │ │ ├── LogQueryHistory.vue │ │ │ ├── LogSaveSnapshot.vue │ │ │ ├── LogSnapshot.vue │ │ │ └── LogTable │ │ │ │ ├── LogMonitor │ │ │ │ ├── ContainerMonitor.vue │ │ │ │ ├── DashboardCard.vue │ │ │ │ ├── LogLabel.vue │ │ │ │ ├── NodeMonitor.vue │ │ │ │ ├── PodMonitor.vue │ │ │ │ ├── Trace.vue │ │ │ │ └── index.vue │ │ │ │ └── index.vue │ │ │ └── index.vue │ ├── main.ts │ ├── monitor │ │ ├── app │ │ │ ├── components │ │ │ │ ├── Overview.vue │ │ │ │ ├── ServiceList.vue │ │ │ │ ├── ServiceSelect.vue │ │ │ │ └── Trace │ │ │ │ │ ├── Operation.vue │ │ │ │ │ ├── Trace │ │ │ │ │ ├── SpanWarnTip.vue │ │ │ │ │ └── index.vue │ │ │ │ │ └── index.vue │ │ │ └── index.vue │ │ ├── config │ │ │ ├── index.vue │ │ │ ├── prometheusrule │ │ │ │ ├── components │ │ │ │ │ ├── AddPrometheusRule.vue │ │ │ │ │ ├── AlertBarChart.vue │ │ │ │ │ ├── AlertList.vue │ │ │ │ │ ├── CopyPrometheusRule.vue │ │ │ │ │ ├── PrometheusRuleBaseForm │ │ │ │ │ │ ├── Receiver │ │ │ │ │ │ │ ├── ReceiverForm.vue │ │ │ │ │ │ │ ├── ReceiverItem.vue │ │ │ │ │ │ │ └── index.vue │ │ │ │ │ │ ├── Rule │ │ │ │ │ │ │ ├── AlertLevelForm.vue │ │ │ │ │ │ │ ├── AlertLevelItem.vue │ │ │ │ │ │ │ ├── LabelMatchersForm.vue │ │ │ │ │ │ │ ├── LabelMatchersItem.vue │ │ │ │ │ │ │ └── index.vue │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── RuleStatusTip.vue │ │ │ │ │ └── UpdatePrometheusRule.vue │ │ │ │ ├── detail.vue │ │ │ │ └── index.vue │ │ │ └── servicemonitor │ │ │ │ ├── components │ │ │ │ ├── AddServiceMonitor.vue │ │ │ │ ├── ResourceInfo.vue │ │ │ │ ├── ServiceMonitorBaseForm │ │ │ │ │ ├── EndpointForm.vue │ │ │ │ │ ├── EndpointItem.vue │ │ │ │ │ └── index.vue │ │ │ │ └── UpdateServiceMonitor.vue │ │ │ │ ├── detail.vue │ │ │ │ └── index.vue │ │ ├── dashboard │ │ │ ├── components │ │ │ │ ├── AddDashboard.vue │ │ │ │ ├── AddGraph.vue │ │ │ │ ├── DashboardBaseForm.vue │ │ │ │ ├── GraphBaseForm │ │ │ │ │ ├── RuleForm.vue │ │ │ │ │ ├── RuleItem.vue │ │ │ │ │ └── index.vue │ │ │ │ ├── GraphMax.vue │ │ │ │ ├── UpdateDashboard.vue │ │ │ │ ├── UpdateGraph.vue │ │ │ │ └── VariableSelect.vue │ │ │ └── index.vue │ │ ├── i18n │ │ │ ├── en.json │ │ │ ├── index.ts │ │ │ ├── ja.json │ │ │ ├── zh-Hans.json │ │ │ └── zh-Hant.json │ │ ├── metrics │ │ │ ├── components │ │ │ │ ├── ButtonInput.vue │ │ │ │ ├── MetricsItem.vue │ │ │ │ ├── MetricsSuggestion.vue │ │ │ │ └── ResourceSelectCascade.vue │ │ │ └── index.vue │ │ └── probe │ │ │ ├── components │ │ │ ├── ProbeForm.vue │ │ │ └── ProbeMonitor.vue │ │ │ └── index.vue │ ├── overview │ │ ├── components │ │ │ ├── IntroSteps │ │ │ │ ├── LeftSteps.vue │ │ │ │ ├── Logs.vue │ │ │ │ ├── Metrics.vue │ │ │ │ ├── Traces.vue │ │ │ │ └── index.vue │ │ │ └── OverviewList │ │ │ │ ├── Duration.vue │ │ │ │ ├── ErrorLogRateChart.vue │ │ │ │ ├── K8sEvents │ │ │ │ ├── Chart │ │ │ │ │ ├── EventPieChart.vue │ │ │ │ │ ├── MessageBarChart.vue │ │ │ │ │ └── index.vue │ │ │ │ ├── EventList.vue │ │ │ │ └── index.vue │ │ │ │ ├── LogRateChart.vue │ │ │ │ ├── ProjectSelect.vue │ │ │ │ ├── StatusTag.vue │ │ │ │ └── index.vue │ │ ├── i18n │ │ │ ├── en.json │ │ │ ├── index.ts │ │ │ ├── ja.json │ │ │ ├── zh-Hans.json │ │ │ └── zh-Hant.json │ │ └── index.vue │ ├── package.json │ ├── router.ts │ └── trace │ │ └── index.vue └── servicemesh │ ├── .dockerignore │ ├── .env │ ├── .eslintignore │ ├── .eslintrc.js │ ├── .gitignore │ ├── .stylelintignore │ ├── .stylelintrc.js │ ├── Dockerfile │ ├── LICENSE │ ├── README.md │ ├── SECURITY.md │ ├── export.ts │ ├── index.html │ ├── nginx.conf.template │ ├── package.json │ ├── public │ ├── css │ │ ├── fonts.googleapis.com.css │ │ ├── materialdesignicons.css.map │ │ └── materialdesignicons.min.css │ ├── favicon.ico │ ├── fonts │ │ ├── materialdesignicons-webfont.woff2 │ │ ├── pxiByp8kv8JHgFVrLCz7Z1xlFd2JQEk.woff2 │ │ ├── pxiByp8kv8JHgFVrLDz8Z1xlFd2JQEk.woff2 │ │ ├── pxiByp8kv8JHgFVrLGT9Z1xlFd2JQEk.woff2 │ │ └── pxiEyp8kv8JHgFVrJJfecnFHGPc.woff2 │ ├── icon │ │ ├── i18n │ │ │ ├── en.svg │ │ │ ├── ja.svg │ │ │ ├── zh-Hans.svg │ │ │ └── zh-Hant.svg │ │ └── openldap.svg │ ├── kubegems.svg │ ├── logo-blue.svg │ ├── logo-white.svg │ └── scss │ │ ├── _animated.scss │ │ ├── _core.scss │ │ ├── _extras.scss │ │ ├── _functions.scss │ │ ├── _icons.scss │ │ ├── _path.scss │ │ ├── _variables.scss │ │ └── materialdesignicons.scss │ ├── src │ ├── App.vue │ ├── assets │ │ ├── fonts │ │ │ └── kubegems-sample.ttf │ │ └── styles │ │ │ ├── ace_editor.scss │ │ │ ├── animation.scss │ │ │ ├── apexcharts.scss │ │ │ ├── common.scss │ │ │ ├── filepond.scss │ │ │ ├── index.scss │ │ │ ├── initialization.scss │ │ │ ├── intro.scss │ │ │ ├── markdown.scss │ │ │ ├── transition.scss │ │ │ ├── vuetify_overwrite.scss │ │ │ └── zoom.scss │ ├── config.json │ ├── layouts │ │ ├── Container.vue │ │ ├── Layout.vue │ │ ├── LayoutWithoutNavi.vue │ │ ├── License.vue │ │ └── header │ │ │ ├── Header.vue │ │ │ ├── User.vue │ │ │ ├── components │ │ │ └── About.vue │ │ │ └── i18n │ │ │ ├── en.json │ │ │ ├── index.ts │ │ │ ├── ja.json │ │ │ ├── zh-Hans.json │ │ │ └── zh-Hant.json │ ├── loadConfig.ts │ ├── main.ts │ ├── plugins │ │ ├── base.ts │ │ └── vuetify.ts │ ├── request.ts │ ├── router │ │ ├── entry_microservice.ts │ │ ├── global.ts │ │ ├── index.ts │ │ └── microservice.ts │ ├── scss │ │ ├── variables.scss │ │ └── vuetify │ │ │ ├── _card.scss │ │ │ ├── _dark.scss │ │ │ ├── _layout.scss │ │ │ ├── _loader.scss │ │ │ ├── _rtl.scss │ │ │ ├── _sidebar.scss │ │ │ ├── _v-bar.scss │ │ │ └── overrides.scss │ ├── shims-vue.d.ts │ ├── sidebar.ts │ └── views │ │ ├── auth │ │ └── index.vue │ │ └── microservice │ │ ├── app │ │ └── index.vue │ │ ├── components │ │ ├── EnvironmentFilter.vue │ │ ├── InboundTrafficIframe.vue │ │ ├── NetworkTopologyIframe.vue │ │ ├── OutboundTrafficIframe.vue │ │ ├── PluginPass.vue │ │ ├── ResourceInfo │ │ │ ├── MonitorCard │ │ │ │ ├── WorkloadInfo.vue │ │ │ │ └── index.vue │ │ │ ├── ServiceInfo.vue │ │ │ ├── WorkloadList.vue │ │ │ └── index.vue │ │ ├── TraceIframe │ │ │ ├── CountLimit.vue │ │ │ └── index.vue │ │ └── i18n │ │ │ ├── en.json │ │ │ ├── index.ts │ │ │ ├── ja.json │ │ │ ├── zh-Hans.json │ │ │ └── zh-Hant.json │ │ ├── dashboard │ │ └── index.vue │ │ ├── dnsdomain │ │ ├── components │ │ │ ├── AddDNSDomain.vue │ │ │ ├── DNSDomainBaseForm.vue │ │ │ └── UpdateDNSDomain.vue │ │ ├── i18n │ │ │ ├── en.json │ │ │ ├── index.ts │ │ │ ├── ja.json │ │ │ ├── zh-Hans.json │ │ │ └── zh-Hant.json │ │ └── index.vue │ │ ├── istio │ │ ├── authorization_policy │ │ │ ├── components │ │ │ │ ├── AddAuthorizationPolicy.vue │ │ │ │ └── UpdateAuthorizationPolicy.vue │ │ │ ├── i18n │ │ │ │ ├── en.json │ │ │ │ ├── index.ts │ │ │ │ ├── ja.json │ │ │ │ ├── zh-Hans.json │ │ │ │ └── zh-Hant.json │ │ │ └── index.vue │ │ ├── gateway │ │ │ ├── components │ │ │ │ ├── AddGateway.vue │ │ │ │ └── UpdateGateway.vue │ │ │ ├── i18n │ │ │ │ ├── en.json │ │ │ │ ├── index.ts │ │ │ │ ├── ja.json │ │ │ │ ├── zh-Hans.json │ │ │ │ └── zh-Hant.json │ │ │ └── index.vue │ │ ├── peer_authentication │ │ │ ├── components │ │ │ │ ├── AddPeerAuthentication.vue │ │ │ │ └── UpdatePeerAuthentication.vue │ │ │ ├── i18n │ │ │ │ ├── en.json │ │ │ │ ├── index.ts │ │ │ │ ├── ja.json │ │ │ │ ├── zh-Hans.json │ │ │ │ └── zh-Hant.json │ │ │ └── index.vue │ │ ├── service_entry │ │ │ ├── components │ │ │ │ ├── AddServiceEntry.vue │ │ │ │ └── UpdateServiceEntry.vue │ │ │ ├── i18n │ │ │ │ ├── en.json │ │ │ │ ├── index.ts │ │ │ │ ├── ja.json │ │ │ │ ├── zh-Hans.json │ │ │ │ └── zh-Hant.json │ │ │ └── index.vue │ │ └── sidecar │ │ │ ├── components │ │ │ ├── AddSidecar.vue │ │ │ └── UpdateSidecar.vue │ │ │ ├── i18n │ │ │ ├── en.json │ │ │ ├── index.ts │ │ │ ├── ja.json │ │ │ ├── zh-Hans.json │ │ │ └── zh-Hant.json │ │ │ └── index.vue │ │ ├── istio_gateway │ │ ├── components │ │ │ ├── AddIstioGateway.vue │ │ │ ├── GatewayList.vue │ │ │ ├── GatewayMonitor.vue │ │ │ ├── GatewayPodList.vue │ │ │ ├── IstioGatewayBaseForm.vue │ │ │ ├── UpdateIstioGateway.vue │ │ │ └── VirtualServiceList.vue │ │ ├── detail.vue │ │ ├── i18n │ │ │ ├── en.json │ │ │ ├── index.ts │ │ │ ├── ja.json │ │ │ ├── zh-Hans.json │ │ │ └── zh-Hant.json │ │ └── index.vue │ │ ├── service │ │ ├── components │ │ │ ├── FaultInjection │ │ │ │ ├── FaultInjectionBaseForm.vue │ │ │ │ └── index.vue │ │ │ ├── RequestRouting │ │ │ │ ├── RequestRoutingBaseForm.vue │ │ │ │ ├── StringMatchForm.vue │ │ │ │ ├── UriMatchForm.vue │ │ │ │ └── index.vue │ │ │ ├── RequestTimeouts │ │ │ │ ├── RequestTimeoutsBaseForm.vue │ │ │ │ └── index.vue │ │ │ ├── TcpTrafficShifting │ │ │ │ ├── TcpTrafficShiftingBaseForm.vue │ │ │ │ └── index.vue │ │ │ ├── TrafficShifting │ │ │ │ ├── TrafficShiftingBaseForm.vue │ │ │ │ └── index.vue │ │ │ ├── UpdateResource.vue │ │ │ ├── VSControlInfo │ │ │ │ ├── MatchList.vue │ │ │ │ ├── RouteList.vue │ │ │ │ └── index.vue │ │ │ ├── destination_rule │ │ │ │ ├── AddIstioDestinationRule.vue │ │ │ │ └── UpdateIstioDestinationRule.vue │ │ │ ├── gateway │ │ │ │ ├── AddIstioGateway.vue │ │ │ │ ├── IstioGatewayBaseForm │ │ │ │ │ ├── ServerForm.vue │ │ │ │ │ ├── ServerItem.vue │ │ │ │ │ └── index.vue │ │ │ │ └── UpdateIstioGateway.vue │ │ │ └── virtual_service │ │ │ │ ├── AddVirtualService.vue │ │ │ │ └── UpdateVirtualService.vue │ │ ├── detail.vue │ │ ├── i18n │ │ │ ├── en.json │ │ │ ├── index.ts │ │ │ ├── ja.json │ │ │ ├── zh-Hans.json │ │ │ └── zh-Hant.json │ │ └── index.vue │ │ ├── virtualspace │ │ ├── components │ │ │ ├── AddVirtualSpace.vue │ │ │ ├── DashboardCard.vue │ │ │ ├── EnvironmentList │ │ │ │ ├── AddEnvironment.vue │ │ │ │ └── index.vue │ │ │ ├── ManageUser.vue │ │ │ ├── UpdateVirtualSpace.vue │ │ │ └── VirtualSpaceBaseForm │ │ │ │ ├── LinkEnvironment │ │ │ │ ├── EnvironmentItem.vue │ │ │ │ ├── LinkEnvironmentForm.vue │ │ │ │ └── index.vue │ │ │ │ ├── ManageUserForm.vue │ │ │ │ ├── VirtualSpaceBaseInfo.vue │ │ │ │ └── index.vue │ │ ├── detail.vue │ │ ├── i18n │ │ │ ├── en.json │ │ │ ├── index.ts │ │ │ ├── ja.json │ │ │ ├── zh-Hans.json │ │ │ └── zh-Hant.json │ │ └── index.vue │ │ └── workload │ │ ├── components │ │ └── WorkloadLog.vue │ │ ├── detail.vue │ │ ├── i18n │ │ ├── en.json │ │ ├── index.ts │ │ ├── ja.json │ │ ├── zh-Hans.json │ │ └── zh-Hant.json │ │ └── index.vue │ ├── tsconfig.json │ ├── vite.config.ts │ └── volar.config.ts ├── kubegems-logo.jpeg ├── package.json ├── packages ├── api │ ├── .eslintrc.js │ ├── direct │ │ ├── appstore │ │ │ ├── app.ts │ │ │ └── index.ts │ │ ├── authentication │ │ │ ├── auth.ts │ │ │ ├── index.ts │ │ │ └── select.ts │ │ ├── index.ts │ │ ├── integrated │ │ │ ├── index.ts │ │ │ ├── logging.ts │ │ │ └── monitor.ts │ │ ├── log │ │ │ ├── alertrule.ts │ │ │ ├── flow.ts │ │ │ ├── history.ts │ │ │ ├── index.ts │ │ │ ├── output.ts │ │ │ ├── snapshot.ts │ │ │ └── viewer.ts │ │ ├── metrics │ │ │ ├── channel.ts │ │ │ ├── index.ts │ │ │ ├── prometheusrule.ts │ │ │ ├── queryer.ts │ │ │ ├── servicemonitor.ts │ │ │ └── targets.ts │ │ ├── microservice │ │ │ ├── destinationrule.ts │ │ │ ├── dnsdomain.ts │ │ │ ├── index.ts │ │ │ ├── istio_authorizationpolicy.ts │ │ │ ├── istio_gateway.ts │ │ │ ├── istio_peerauthentication.ts │ │ │ ├── istio_serviceentry.ts │ │ │ ├── istio_sidecar.ts │ │ │ ├── kiali.ts │ │ │ ├── select.ts │ │ │ ├── service.ts │ │ │ ├── virtualservice.ts │ │ │ ├── virtualspace.ts │ │ │ └── workload.ts │ │ ├── modelstore │ │ │ ├── admin.ts │ │ │ ├── deploy.ts │ │ │ ├── index.ts │ │ │ ├── model.ts │ │ │ └── user.ts │ │ ├── resource │ │ │ ├── apiresource.ts │ │ │ ├── app.ts │ │ │ ├── appconfig.ts │ │ │ ├── appmanifest.ts │ │ │ ├── certificate.ts │ │ │ ├── cluster.ts │ │ │ ├── configmap.ts │ │ │ ├── crd.ts │ │ │ ├── cronjob.ts │ │ │ ├── daemonset.ts │ │ │ ├── deploy.ts │ │ │ ├── deployment.ts │ │ │ ├── environment.ts │ │ │ ├── event.ts │ │ │ ├── gateway.ts │ │ │ ├── hpa.ts │ │ │ ├── index.ts │ │ │ ├── ingress.ts │ │ │ ├── issuer.ts │ │ │ ├── job.ts │ │ │ ├── network.ts │ │ │ ├── node.ts │ │ │ ├── persistentvolumeclaim.ts │ │ │ ├── plugin.ts │ │ │ ├── pod.ts │ │ │ ├── project.ts │ │ │ ├── prometheus.ts │ │ │ ├── registry.ts │ │ │ ├── resource.ts │ │ │ ├── secret.ts │ │ │ ├── select.ts │ │ │ ├── service.ts │ │ │ ├── statefulset.ts │ │ │ ├── storageclass.ts │ │ │ ├── volumesnapshot.ts │ │ │ └── workload.ts │ │ ├── rule │ │ │ ├── index.ts │ │ │ └── rule.ts │ │ ├── system │ │ │ ├── audit.ts │ │ │ ├── broadcast.ts │ │ │ ├── config.ts │ │ │ ├── event.ts │ │ │ ├── index.ts │ │ │ ├── message.ts │ │ │ └── platform.ts │ │ ├── tenant │ │ │ ├── index.ts │ │ │ ├── resource.ts │ │ │ ├── select.ts │ │ │ ├── tenant.ts │ │ │ └── user.ts │ │ └── visualization │ │ │ ├── alert.ts │ │ │ ├── dashboard.ts │ │ │ ├── index.ts │ │ │ └── monitor.ts │ ├── hooks │ │ ├── ai_model.ts │ │ ├── audit.ts │ │ ├── auth.ts │ │ ├── broadcast.ts │ │ ├── cluster.ts │ │ ├── environment.ts │ │ ├── event.ts │ │ ├── index.ts │ │ ├── message.ts │ │ ├── metrics.ts │ │ ├── monitor_template.ts │ │ ├── namespace.ts │ │ ├── node.ts │ │ ├── pod.ts │ │ ├── project.ts │ │ ├── prometheus.ts │ │ ├── proxy.ts │ │ ├── role.ts │ │ ├── router.ts │ │ ├── telemetry.ts │ │ ├── tenant.ts │ │ ├── user.ts │ │ ├── virtualspace.ts │ │ └── workload.ts │ ├── index.ts │ ├── package.json │ ├── request.ts │ ├── response.ts │ ├── tsconfig.json │ ├── typed │ │ ├── ai_model.ts │ │ ├── argocd.ts │ │ ├── audit.ts │ │ ├── auth.ts │ │ ├── base.ts │ │ ├── broadcast.ts │ │ ├── certificate.ts │ │ ├── cluster.ts │ │ ├── cluster_flow.ts │ │ ├── cluster_output.ts │ │ ├── configmap.ts │ │ ├── cronjob.ts │ │ ├── daemonset.ts │ │ ├── deployment.ts │ │ ├── destinationrule.ts │ │ ├── edge_cluster.ts │ │ ├── edge_hub.ts │ │ ├── environment.ts │ │ ├── event.ts │ │ ├── file.ts │ │ ├── flow.ts │ │ ├── helm.ts │ │ ├── index.ts │ │ ├── ingress.ts │ │ ├── issuer.ts │ │ ├── istio_authorizationpolicy.ts │ │ ├── istio_gateway.ts │ │ ├── istio_peerauthentication.ts │ │ ├── istio_serviceentry.ts │ │ ├── istio_sidecar.ts │ │ ├── job.ts │ │ ├── kubernetes.ts │ │ ├── log.ts │ │ ├── message.ts │ │ ├── modeldeployment.ts │ │ ├── modelstore.ts │ │ ├── monitor.ts │ │ ├── monitor_template.ts │ │ ├── namespace.ts │ │ ├── node.ts │ │ ├── oauth.ts │ │ ├── opentelemetry.ts │ │ ├── output.ts │ │ ├── persistentvolumeclaim.ts │ │ ├── plugin.ts │ │ ├── pod.ts │ │ ├── project.ts │ │ ├── prometheus.ts │ │ ├── prometheus_probe.ts │ │ ├── prometheus_rule.ts │ │ ├── prometheus_template.ts │ │ ├── role.ts │ │ ├── secret.ts │ │ ├── service.ts │ │ ├── servicemonitor.ts │ │ ├── statefulset.ts │ │ ├── storageclass.ts │ │ ├── tenant.ts │ │ ├── user.ts │ │ ├── version.ts │ │ ├── virtualservice.ts │ │ └── virtualspace.ts │ └── utils.ts ├── components │ ├── .eslintignore │ ├── .eslintrc.js │ ├── .stylelintrc.js │ ├── baseComponents │ │ ├── BaseACEEditor.vue │ │ ├── BaseAggChartOperator.vue │ │ ├── BaseAlertTip.vue │ │ ├── BaseAreaChart.vue │ │ ├── BaseAvatar.vue │ │ ├── BaseBarChart.vue │ │ ├── BaseBreadcrumb.vue │ │ ├── BaseClusterHeader.vue │ │ ├── BaseCollapseChips.vue │ │ ├── BaseConfirm.vue │ │ ├── BaseCopyItem.vue │ │ ├── BaseDatePicker.vue │ │ ├── BaseDatetimePicker.vue │ │ ├── BaseDialog.vue │ │ ├── BaseDropProgress.vue │ │ ├── BaseDropSelect.vue │ │ ├── BaseEnvironmentHeader.vue │ │ ├── BaseFileUploader.vue │ │ ├── BaseFilter.vue │ │ ├── BaseFilter1.vue │ │ ├── BaseFullScreenDialog.vue │ │ ├── BaseImagePreview.vue │ │ ├── BaseInfoCard.vue │ │ ├── BaseInfoTip.vue │ │ ├── BaseItem.vue │ │ ├── BaseItemGroup.vue │ │ ├── BaseItemSubGroup.vue │ │ ├── BaseListItemForDetail.vue │ │ ├── BaseLogo.vue │ │ ├── BaseMDImg.vue │ │ ├── BaseMarquee.vue │ │ ├── BaseMicroServiceHeader.vue │ │ ├── BasePagination.vue │ │ ├── BasePanel.vue │ │ ├── BasePieChart.vue │ │ ├── BasePluginPass.vue │ │ ├── BaseProgress.vue │ │ ├── BaseProjectHeader.vue │ │ ├── BaseRadialBarChart.vue │ │ ├── BaseSnackBar.vue │ │ ├── BaseSplitContainer.vue │ │ ├── BaseStatus.vue │ │ ├── BaseSubTitle.vue │ │ ├── BaseTimelineChart.vue │ │ ├── BaseTipChips.vue │ │ ├── BaseTipWindow.vue │ │ ├── BaseViewportHeader.vue │ │ ├── BaseYamlForm.vue │ │ └── i18n │ │ │ ├── en.json │ │ │ ├── index.ts │ │ │ ├── ja.json │ │ │ ├── zh-Hans.json │ │ │ └── zh-Hant.json │ ├── index.ts │ ├── layouts │ │ ├── Container.vue │ │ ├── Layout.vue │ │ ├── LayoutWithoutNavi.vue │ │ └── Sidebar.vue │ ├── logicComponents │ │ ├── BasicResourceInfo.vue │ │ ├── ContainerLog.vue │ │ ├── EventList.vue │ │ ├── EventTip.vue │ │ ├── Metadata │ │ │ ├── AddAnnotation.vue │ │ │ ├── AddLabel.vue │ │ │ └── index.vue │ │ ├── ProbeTip.vue │ │ ├── RealDatetimeTip.vue │ │ ├── ResourceYaml.vue │ │ ├── Terminal │ │ │ ├── FileDownloader.vue │ │ │ ├── FileUploader.vue │ │ │ ├── FileViewer.vue │ │ │ └── index.vue │ │ └── i18n │ │ │ ├── en.json │ │ │ ├── index.ts │ │ │ ├── ja.json │ │ │ ├── zh-Hans.json │ │ │ └── zh-Hant.json │ ├── package.json │ ├── shims-vue.d.ts │ └── tsconfig.json ├── extension │ ├── .eslintrc.js │ ├── i18n │ │ ├── en.json │ │ ├── index.ts │ │ ├── ja.json │ │ ├── locales.ts │ │ ├── zh-Hans.json │ │ └── zh-Hant.json │ ├── icon │ │ ├── helpers.ts │ │ └── index.ts │ ├── index.ts │ ├── package.json │ ├── permission.ts │ ├── proxy.ts │ ├── resource.ts │ ├── router │ │ └── index.ts │ ├── ruler.ts │ ├── store │ │ ├── index.ts │ │ └── vuex │ │ │ ├── api.ts │ │ │ ├── index.ts │ │ │ └── modules │ │ │ ├── global.ts │ │ │ ├── resource.ts │ │ │ └── ui.ts │ └── tool │ │ ├── ace_editor.ts │ │ ├── guide.ts │ │ ├── index.ts │ │ ├── moment.ts │ │ ├── sentry.ts │ │ ├── tracing.ts │ │ └── yaml.ts ├── libs │ ├── .eslintrc.js │ ├── constants │ │ ├── chart.ts │ │ ├── global.ts │ │ ├── gvk.ts │ │ ├── label.ts │ │ ├── namespace.ts │ │ ├── platform.ts │ │ ├── prometheus.ts │ │ ├── resource.ts │ │ └── sku.ts │ ├── index.ts │ ├── package.json │ ├── schema │ │ ├── authorizationpolicy.ts │ │ ├── certificate.ts │ │ ├── configmap.ts │ │ ├── cronjob.ts │ │ ├── destinationrule.ts │ │ ├── flow.ts │ │ ├── gateway.ts │ │ ├── index.ts │ │ ├── ingress.ts │ │ ├── issuer.ts │ │ ├── job.ts │ │ ├── output.ts │ │ ├── peerauthentication.ts │ │ ├── persistentvolumeclaim.ts │ │ ├── secret.ts │ │ ├── service.ts │ │ ├── serviceentry.ts │ │ ├── servicemonitor.ts │ │ ├── sidecar.ts │ │ ├── tenantgateway.ts │ │ ├── virtualservice.ts │ │ └── workload.ts │ └── utils │ │ ├── cookie.ts │ │ ├── helpers.ts │ │ ├── index.ts │ │ ├── k8s_selector.ts │ │ ├── prometheus.ts │ │ ├── schema.ts │ │ ├── table.ts │ │ └── yaml.ts ├── mixins │ ├── base_filter.ts │ ├── package.json │ ├── permission.ts │ ├── resource.ts │ ├── select.ts │ └── table.ts └── platform │ ├── .eslintrc.js │ ├── .stylelintrc.js │ ├── config.json │ ├── index.ts │ ├── package.json │ ├── router.ts │ ├── shims-vue.d.ts │ ├── sidebar.ts │ ├── tsconfig.json │ └── views │ ├── environment │ ├── components │ │ ├── EnvironmentBaseForm │ │ │ ├── AddNamespace.vue │ │ │ └── index.vue │ │ └── ManageUser.vue │ ├── i18n │ │ ├── en.json │ │ ├── index.ts │ │ ├── ja.json │ │ ├── zh-Hans.json │ │ └── zh-Hant.json │ └── index.vue │ ├── project │ ├── components │ │ ├── ManageUser.vue │ │ └── ProjectBaseForm.vue │ ├── i18n │ │ ├── en.json │ │ ├── index.ts │ │ ├── ja.json │ │ ├── zh-Hans.json │ │ └── zh-Hant.json │ └── index.vue │ ├── setting │ ├── broadcast │ │ ├── components │ │ │ └── BroadcastForm.vue │ │ ├── i18n │ │ │ ├── en.json │ │ │ ├── index.ts │ │ │ ├── ja.json │ │ │ ├── zh-Hans.json │ │ │ └── zh-Hant.json │ │ └── index.vue │ └── oauth │ │ ├── components │ │ ├── ConfigAuthSource.vue │ │ └── auth_source │ │ │ ├── OauthForm.vue │ │ │ └── OpenLdapForm.vue │ │ ├── i18n │ │ ├── en.json │ │ ├── index.ts │ │ ├── ja.json │ │ ├── zh-Hans.json │ │ └── zh-Hant.json │ │ └── index.vue │ └── tenant │ ├── role │ ├── i18n │ │ ├── en.json │ │ ├── index.ts │ │ ├── ja.json │ │ ├── zh-Hans.json │ │ └── zh-Hant.json │ └── index.vue │ ├── tenant │ ├── components │ │ ├── ResourceList │ │ │ ├── AddResource.vue │ │ │ ├── ResourceBaseForm │ │ │ │ ├── ResourceChart.vue │ │ │ │ └── index.vue │ │ │ ├── ScaleResource.vue │ │ │ └── index.vue │ │ ├── TenantForm.vue │ │ └── UserList │ │ │ ├── AddUser.vue │ │ │ └── index.vue │ ├── detail.vue │ ├── i18n │ │ ├── en.json │ │ ├── index.ts │ │ ├── ja.json │ │ ├── zh-Hans.json │ │ └── zh-Hant.json │ └── index.vue │ └── user │ ├── components │ ├── AddUser.vue │ ├── ResetPassword.vue │ └── UpdateRole.vue │ ├── i18n │ ├── en.json │ ├── index.ts │ ├── ja.json │ ├── zh-Hans.json │ └── zh-Hant.json │ └── index.vue ├── pnpm-lock.yaml ├── pnpm-workspace.yaml ├── tsconfig.json └── volar.config.ts /.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | indent_style = space 8 | indent_size = 2 9 | end_of_line = lf 10 | insert_final_newline = true 11 | trim_trailing_whitespace = true 12 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | .*/* 2 | dist/* 3 | build/*.js 4 | node_modules/* 5 | components.d.ts 6 | tsconfig.json 7 | apps/* 8 | BasePluginPass.vue -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | **Is this a BUG REPORT or FEATURE REQUEST?**: 4 | 5 | > Uncomment only one, leave it on its own line: 6 | > 7 | > /kind bug 8 | > /kind feature 9 | 10 | **What happened**: 11 | 12 | **What you expected to happen**: 13 | 14 | **How to reproduce it (as minimally and precisely as possible)**: 15 | 16 | **Anything else we need to know?**: 17 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.log 2 | *.log.* 3 | 4 | # editor 5 | .vscode/ 6 | .idea/ 7 | .DS_Store 8 | 9 | node_modules 10 | .env.local 11 | .git/ 12 | package-lock.json 13 | .sentryclirc 14 | dist/ 15 | 16 | *.py 17 | *.pyc 18 | .vite 19 | .sentryclirc 20 | build.sh -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "apps/pai"] 2 | path = apps/pai 3 | url = git@github.com:kubegems/pai-console.git 4 | -------------------------------------------------------------------------------- /.husky/.gitignore: -------------------------------------------------------------------------------- 1 | _ 2 | -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . "$(dirname "$0")/_/husky.sh" 3 | 4 | npx lint-staged 5 | -------------------------------------------------------------------------------- /.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | printWidth: 120, 3 | tabWidth: 2, 4 | useTabs: false, 5 | semi: true, 6 | vueIndentScriptAndStyle: true, 7 | singleQuote: true, 8 | quoteProps: 'as-needed', 9 | bracketSpacing: true, 10 | trailingComma: 'all', 11 | jsxBracketSameLine: false, 12 | jsxSingleQuote: false, 13 | arrowParens: 'always', 14 | insertPragma: false, 15 | requirePragma: false, 16 | proseWrap: 'never', 17 | htmlWhitespaceSensitivity: 'strict', 18 | endOfLine: 'auto', 19 | }; 20 | -------------------------------------------------------------------------------- /.stylelintignore: -------------------------------------------------------------------------------- 1 | **/public/scss/* 2 | **/public/css/* 3 | node_modules/* 4 | apps/* -------------------------------------------------------------------------------- /.stylelintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: 'stylelint-config-standard', 3 | rules: { 4 | 'color-no-invalid-hex': true, 5 | 'rule-empty-line-before': null, 6 | 'selector-pseudo-element-no-unknown': null, // 允许::v-deep样式穿透 7 | 'color-hex-length': 'long', 8 | 'color-hex-case': 'lower', 9 | 'unit-allowed-list': ['em', 'rem', '%', 's', 'px', 'vh', 'vw', 'deg', 'turn'], 10 | 'declaration-colon-newline-after': null, 11 | 'font-family-no-missing-generic-family-keyword': null, 12 | 'at-rule-no-unknown': [true, { ignoreAtRules: ['while'] }], 13 | 'declaration-block-trailing-semicolon': null, 14 | }, 15 | }; 16 | -------------------------------------------------------------------------------- /.versionrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | types: [ 3 | { type: 'init', hidden: true }, 4 | { type: 'docs', hidden: true }, 5 | { type: 'test', hidden: true }, 6 | { type: 'revert', hidden: true }, 7 | { type: 'build', hidden: true }, 8 | { type: 'chore', hidden: true }, 9 | ], 10 | }; 11 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | 3 | ## Supported Versions 4 | 5 | Use this section to tell people about which versions of your project are 6 | currently being supported with security updates. 7 | 8 | | Version | Supported | 9 | | ------- | --------- | 10 | 11 | ## Reporting a Vulnerability 12 | 13 | Use this section to tell people how to report a vulnerability. 14 | 15 | Tell them where to go, how often they can expect to get an update on a 16 | reported vulnerability, what to expect if the vulnerability is accepted or 17 | declined, etc. 18 | -------------------------------------------------------------------------------- /apps/kubegems/.dockerignore: -------------------------------------------------------------------------------- 1 | *.log 2 | *.log.* 3 | 4 | # editor 5 | .vscode/ 6 | .idea/ 7 | .DS_Store 8 | **/*.DS_Store 9 | 10 | node_modules 11 | .env.local 12 | .git/ 13 | package-lock.json 14 | .github/ 15 | .sentryclirc 16 | .vite -------------------------------------------------------------------------------- /apps/kubegems/.env: -------------------------------------------------------------------------------- 1 | NODE_ENV=production 2 | VUE_APP_API_TIMEOUT=15 3 | VUE_APP_ENVIRONMENT=production 4 | VUE_APP_ICON_ONLINE=true -------------------------------------------------------------------------------- /apps/kubegems/.eslintignore: -------------------------------------------------------------------------------- 1 | .*/* 2 | dist/* 3 | build/*.js 4 | node_modules/* 5 | components.d.ts 6 | tsconfig.json 7 | apps/pai -------------------------------------------------------------------------------- /apps/kubegems/.stylelintignore: -------------------------------------------------------------------------------- 1 | public/scss/* 2 | public/css/* 3 | node_modules/* 4 | src/scss/* -------------------------------------------------------------------------------- /apps/kubegems/.stylelintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: 'stylelint-config-standard', 3 | rules: { 4 | 'color-no-invalid-hex': true, 5 | 'rule-empty-line-before': null, 6 | 'selector-pseudo-element-no-unknown': null, // 允许::v-deep样式穿透 7 | 'color-hex-length': 'long', 8 | 'color-hex-case': 'lower', 9 | 'unit-allowed-list': ['em', 'rem', '%', 's', 'px', 'vh', 'vw', 'deg', 'turn'], 10 | 'declaration-colon-newline-after': null, 11 | 'font-family-no-missing-generic-family-keyword': null, 12 | 'at-rule-no-unknown': [true, { ignoreAtRules: ['while'] }], 13 | 'declaration-block-trailing-semicolon': null, 14 | }, 15 | }; 16 | -------------------------------------------------------------------------------- /apps/kubegems/50x.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 |

Internal Server Error

6 |

7 | The 50X (Internal Server Error) status code indicates that the server encountered an unexpected condition that 8 | prevented it from fulfilling the request. 9 |

10 |
11 | 12 | 13 | -------------------------------------------------------------------------------- /apps/kubegems/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM nginx:alpine as ui 2 | LABEL MAINTAINER="kubegems" 3 | WORKDIR /usr/src/app 4 | 5 | ENV MESSAGE_SERVER=kubegems-msgbus API_SERVER=kubegems-api 6 | 7 | COPY dist dist 8 | COPY nginx.conf.template /etc/nginx/templates/nginx.conf.template 9 | 10 | CMD ["nginx", "-g", "daemon off;"] 11 | -------------------------------------------------------------------------------- /apps/kubegems/arm64.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM arm64v8/nginx:alpine as ui 2 | LABEL MAINTAINER="kubegems" 3 | WORKDIR /usr/src/app 4 | 5 | ENV MESSAGE_SERVER=kubegems-msgbus API_SERVER=kubegems-api 6 | 7 | COPY dist dist 8 | COPY nginx.conf.template /etc/nginx/templates/nginx.conf.template 9 | 10 | CMD ["nginx", "-g", "daemon off;"] 11 | -------------------------------------------------------------------------------- /apps/kubegems/crowdin.yml: -------------------------------------------------------------------------------- 1 | files: 2 | - source: '**/i18n/*.json' 3 | translation: '**/i18n/%two_letters_code%.json' 4 | -------------------------------------------------------------------------------- /apps/kubegems/public/ava.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubegems/dashboard/f02bf419a18f34c1d42c255b3e0a9f3e5d56918a/apps/kubegems/public/ava.jpg -------------------------------------------------------------------------------- /apps/kubegems/public/dashboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubegems/dashboard/f02bf419a18f34c1d42c255b3e0a9f3e5d56918a/apps/kubegems/public/dashboard.png -------------------------------------------------------------------------------- /apps/kubegems/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubegems/dashboard/f02bf419a18f34c1d42c255b3e0a9f3e5d56918a/apps/kubegems/public/favicon.ico -------------------------------------------------------------------------------- /apps/kubegems/public/favicon2.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubegems/dashboard/f02bf419a18f34c1d42c255b3e0a9f3e5d56918a/apps/kubegems/public/favicon2.ico -------------------------------------------------------------------------------- /apps/kubegems/public/fonts/kubegems-sample.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubegems/dashboard/f02bf419a18f34c1d42c255b3e0a9f3e5d56918a/apps/kubegems/public/fonts/kubegems-sample.ttf -------------------------------------------------------------------------------- /apps/kubegems/public/fonts/materialdesignicons-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubegems/dashboard/f02bf419a18f34c1d42c255b3e0a9f3e5d56918a/apps/kubegems/public/fonts/materialdesignicons-webfont.woff2 -------------------------------------------------------------------------------- /apps/kubegems/public/fonts/pxiByp8kv8JHgFVrLCz7Z1xlFd2JQEk.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubegems/dashboard/f02bf419a18f34c1d42c255b3e0a9f3e5d56918a/apps/kubegems/public/fonts/pxiByp8kv8JHgFVrLCz7Z1xlFd2JQEk.woff2 -------------------------------------------------------------------------------- /apps/kubegems/public/fonts/pxiByp8kv8JHgFVrLDz8Z1xlFd2JQEk.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubegems/dashboard/f02bf419a18f34c1d42c255b3e0a9f3e5d56918a/apps/kubegems/public/fonts/pxiByp8kv8JHgFVrLDz8Z1xlFd2JQEk.woff2 -------------------------------------------------------------------------------- /apps/kubegems/public/fonts/pxiByp8kv8JHgFVrLGT9Z1xlFd2JQEk.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubegems/dashboard/f02bf419a18f34c1d42c255b3e0a9f3e5d56918a/apps/kubegems/public/fonts/pxiByp8kv8JHgFVrLGT9Z1xlFd2JQEk.woff2 -------------------------------------------------------------------------------- /apps/kubegems/public/fonts/pxiEyp8kv8JHgFVrJJfecnFHGPc.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubegems/dashboard/f02bf419a18f34c1d42c255b3e0a9f3e5d56918a/apps/kubegems/public/fonts/pxiEyp8kv8JHgFVrJJfecnFHGPc.woff2 -------------------------------------------------------------------------------- /apps/kubegems/public/icon/arrow.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /apps/kubegems/public/icon/asteroid.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /apps/kubegems/public/icon/cube-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /apps/kubegems/public/icon/i18n/ja.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /apps/kubegems/public/icon/i18n/zh-Hans.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /apps/kubegems/public/icon/i18n/zh-Hant.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /apps/kubegems/public/icon/istio.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /apps/kubegems/public/icon/keras.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /apps/kubegems/public/icon/kubeapps.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubegems/dashboard/f02bf419a18f34c1d42c255b3e0a9f3e5d56918a/apps/kubegems/public/icon/kubeapps.svg -------------------------------------------------------------------------------- /apps/kubegems/public/icon/pai-task.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /apps/kubegems/public/icon/region.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /apps/kubegems/public/icon/spacy.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /apps/kubegems/public/img/deploy/bluegreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubegems/dashboard/f02bf419a18f34c1d42c255b3e0a9f3e5d56918a/apps/kubegems/public/img/deploy/bluegreen.png -------------------------------------------------------------------------------- /apps/kubegems/public/img/deploy/canary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubegems/dashboard/f02bf419a18f34c1d42c255b3e0a9f3e5d56918a/apps/kubegems/public/img/deploy/canary.png -------------------------------------------------------------------------------- /apps/kubegems/public/img/deploy/recreate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubegems/dashboard/f02bf419a18f34c1d42c255b3e0a9f3e5d56918a/apps/kubegems/public/img/deploy/recreate.png -------------------------------------------------------------------------------- /apps/kubegems/public/img/deploy/rollingupdate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubegems/dashboard/f02bf419a18f34c1d42c255b3e0a9f3e5d56918a/apps/kubegems/public/img/deploy/rollingupdate.png -------------------------------------------------------------------------------- /apps/kubegems/public/img/home/businessmen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubegems/dashboard/f02bf419a18f34c1d42c255b3e0a9f3e5d56918a/apps/kubegems/public/img/home/businessmen.png -------------------------------------------------------------------------------- /apps/kubegems/public/img/pai/huggingface-name.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubegems/dashboard/f02bf419a18f34c1d42c255b3e0a9f3e5d56918a/apps/kubegems/public/img/pai/huggingface-name.gif -------------------------------------------------------------------------------- /apps/kubegems/public/img/pai/huggingface-token.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubegems/dashboard/f02bf419a18f34c1d42c255b3e0a9f3e5d56918a/apps/kubegems/public/img/pai/huggingface-token.gif -------------------------------------------------------------------------------- /apps/kubegems/public/kubegems-logo.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubegems/dashboard/f02bf419a18f34c1d42c255b3e0a9f3e5d56918a/apps/kubegems/public/kubegems-logo.jpeg -------------------------------------------------------------------------------- /apps/kubegems/public/open-csg-color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubegems/dashboard/f02bf419a18f34c1d42c255b3e0a9f3e5d56918a/apps/kubegems/public/open-csg-color.png -------------------------------------------------------------------------------- /apps/kubegems/public/open-csg-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubegems/dashboard/f02bf419a18f34c1d42c255b3e0a9f3e5d56918a/apps/kubegems/public/open-csg-white.png -------------------------------------------------------------------------------- /apps/kubegems/public/scss/_animated.scss: -------------------------------------------------------------------------------- 1 | // From Font Awesome 2 | .#{$mdi-css-prefix}-spin:before { 3 | -webkit-animation: #{$mdi-css-prefix}-spin 2s infinite linear; 4 | animation: #{$mdi-css-prefix}-spin 2s infinite linear; 5 | } 6 | 7 | @-webkit-keyframes #{$mdi-css-prefix}-spin { 8 | 0% { 9 | -webkit-transform: rotate(0deg); 10 | transform: rotate(0deg); 11 | } 12 | 100% { 13 | -webkit-transform: rotate(359deg); 14 | transform: rotate(359deg); 15 | } 16 | } 17 | 18 | @keyframes #{$mdi-css-prefix}-spin { 19 | 0% { 20 | -webkit-transform: rotate(0deg); 21 | transform: rotate(0deg); 22 | } 23 | 100% { 24 | -webkit-transform: rotate(359deg); 25 | transform: rotate(359deg); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /apps/kubegems/public/scss/_core.scss: -------------------------------------------------------------------------------- 1 | .#{$mdi-css-prefix}:before, 2 | .#{$mdi-css-prefix}-set { 3 | display: inline-block; 4 | font: normal normal normal #{$mdi-font-size-base}/1 '#{$mdi-font-name}'; // shortening font declaration 5 | font-size: inherit; // can't have font-size inherit on line above, so need to override 6 | text-rendering: auto; // optimizelegibility throws things off #1094 7 | line-height: inherit; 8 | -webkit-font-smoothing: antialiased; 9 | -moz-osx-font-smoothing: grayscale; 10 | } 11 | -------------------------------------------------------------------------------- /apps/kubegems/public/scss/_functions.scss: -------------------------------------------------------------------------------- 1 | @function char($character-code) { 2 | @if function-exists("selector-append") { 3 | @return unquote("\"\\#{$character-code}\""); 4 | } 5 | 6 | @if "\\#{'x'}" == "\\x" { 7 | @return str-slice("\x", 1, 1) + $character-code; 8 | } 9 | 10 | @else { 11 | @return #{"\"\\"}#{$character-code + "\""}; 12 | } 13 | } 14 | 15 | @function mdi($name) { 16 | @if map-has-key($mdi-icons, $name) == false { 17 | @warn "Icon #{$name} not found."; 18 | 19 | @return ""; 20 | } 21 | 22 | @return char(map-get($mdi-icons, $name)); 23 | } 24 | -------------------------------------------------------------------------------- /apps/kubegems/public/scss/_icons.scss: -------------------------------------------------------------------------------- 1 | @each $key, $value in $mdi-icons { 2 | .#{$mdi-css-prefix}-#{$key}::before { 3 | content: char($value); 4 | } 5 | } 6 | 7 | .#{$mdi-css-prefix}-blank::before { 8 | content: "\F68C"; 9 | visibility: hidden; 10 | } 11 | -------------------------------------------------------------------------------- /apps/kubegems/public/scss/_path.scss: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: '#{$mdi-font-name}'; 3 | src: url('#{$mdi-font-path}/#{$mdi-filename}-webfont.eot?v=#{$mdi-version}'); 4 | src: url('#{$mdi-font-path}/#{$mdi-filename}-webfont.eot?#iefix&v=#{$mdi-version}') format('embedded-opentype'), 5 | url('#{$mdi-font-path}/#{$mdi-filename}-webfont.woff2?v=#{$mdi-version}') format('woff2'), 6 | url('#{$mdi-font-path}/#{$mdi-filename}-webfont.woff?v=#{$mdi-version}') format('woff'), 7 | url('#{$mdi-font-path}/#{$mdi-filename}-webfont.ttf?v=#{$mdi-version}') format('truetype'); 8 | font-weight: normal; 9 | font-style: normal; 10 | } 11 | -------------------------------------------------------------------------------- /apps/kubegems/public/scss/materialdesignicons.scss: -------------------------------------------------------------------------------- 1 | /* MaterialDesignIcons.com */ 2 | @import "variables"; 3 | @import "functions"; 4 | @import "path"; 5 | @import "core"; 6 | @import "icons"; 7 | @import "extras"; 8 | @import "animated"; 9 | -------------------------------------------------------------------------------- /apps/kubegems/src/assets/fonts/kubegems-sample.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubegems/dashboard/f02bf419a18f34c1d42c255b3e0a9f3e5d56918a/apps/kubegems/src/assets/fonts/kubegems-sample.ttf -------------------------------------------------------------------------------- /apps/kubegems/src/assets/styles/animation.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * 全局动画 3 | */ 4 | -------------------------------------------------------------------------------- /apps/kubegems/src/assets/styles/apexcharts.scss: -------------------------------------------------------------------------------- 1 | .apexcharts-tooltip-text { 2 | max-width: 350px !important; 3 | } 4 | -------------------------------------------------------------------------------- /apps/kubegems/src/assets/styles/filepond.scss: -------------------------------------------------------------------------------- 1 | .filepond--drop-label label { 2 | font-size: 14px; 3 | font-weight: 400; 4 | cursor: pointer; 5 | } 6 | 7 | [data-filepond-item-state='processing-complete'] .filepond--item-panel { 8 | background-color: var(--success-color); 9 | } 10 | 11 | [data-filepond-item-state*='error'] .filepond--item-panel, 12 | [data-filepond-item-state*='invalid'] .filepond--item-panel { 13 | background-color: var(--error-color); 14 | } 15 | -------------------------------------------------------------------------------- /apps/kubegems/src/assets/styles/index.scss: -------------------------------------------------------------------------------- 1 | @import './initialization.scss'; 2 | @import './animation.scss'; 3 | @import './transition.scss'; 4 | @import './vuetify_overwrite.scss'; 5 | @import './ace_editor.scss'; 6 | @import './zoom.scss'; 7 | @import './common.scss'; 8 | @import './markdown.scss'; 9 | @import './apexcharts.scss'; 10 | @import './filepond.scss'; 11 | @import './intro.scss'; 12 | -------------------------------------------------------------------------------- /apps/kubegems/src/assets/styles/initialization.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * 初始化 3 | */ 4 | -------------------------------------------------------------------------------- /apps/kubegems/src/assets/styles/intro.scss: -------------------------------------------------------------------------------- 1 | .introjs-skipbutton { 2 | font-size: 14px !important; 3 | height: 36px !important; 4 | line-height: 36px !important; 5 | font-weight: 400 !important; 6 | width: 70px !important; 7 | } 8 | 9 | .introjs-nextbutton { 10 | color: var(--primary-color) !important; 11 | caret-color: var(--primary-color) !important; 12 | } 13 | 14 | .introjs-prevbutton { 15 | color: var(--primary-color) !important; 16 | caret-color: var(--primary-color) !important; 17 | } 18 | -------------------------------------------------------------------------------- /apps/kubegems/src/assets/styles/transition.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * 过渡效果 3 | */ 4 | 5 | .drawer-enter-active, 6 | .drawer-leave-active { 7 | transition: all 0.3s ease; 8 | } 9 | .drawer-enter, 10 | .drawer-leave, 11 | .drawer-leave-active { 12 | transform: translateX(100%); 13 | opacity: 0; 14 | } 15 | -------------------------------------------------------------------------------- /apps/kubegems/src/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "layout": { 3 | "PLATFORM": "KubeGems", 4 | "MANUAL": "https://www.kubegems.io/docs/concepts/what-is-kubegems", 5 | "LOGO_PRIMARY": "/logo-blue.svg", 6 | "LOGO_WHITE": "/logo-white.svg", 7 | "SLOGAN_CN": "更便捷的云原生管理平台", 8 | "SLOGAN_EN": "Let cloudnative management more easily" 9 | }, 10 | "theme": { 11 | "THEME_COLOR": { 12 | "primary": "#1e88e5", 13 | "info": "#1e88e5", 14 | "success": "#00BCD4", 15 | "accent": "#fc4b6c", 16 | "default": "#563dea" 17 | }, 18 | "THEME_COLOR_EXTEND": { 19 | "warning": "#fb8c00", 20 | "error": "#ff5252", 21 | "grey": "#607d8b", 22 | "greyLight": "#9e9e9e", 23 | "critical": "#673ab7" 24 | }, 25 | "FONT_FAMILY": "zcool qingke huangyou, microsoft yahei, pingfang sc !default" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /apps/kubegems/src/layouts/header/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/kubegems/src/layouts/tool/i18n/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "tip": { 3 | "management": "Platform Manager", 4 | "management_desc": "View all resources as administrators.", 5 | "tool_box": "Tools", 6 | "cluster_manage": "Cluster Management", 7 | "pai_manage": "PAI Management" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /apps/kubegems/src/layouts/tool/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/kubegems/src/layouts/tool/i18n/ja.json: -------------------------------------------------------------------------------- 1 | { 2 | "tip": { 3 | "management": "プラットフォーム管理", 4 | "management_desc": "管理者としてすべての実行に必要なリソースを参照します。", 5 | "tool_box": "ツールボックス", 6 | "cluster_manage": "クラスタ管理", 7 | "pai_manage": "プラットフォーム設定" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /apps/kubegems/src/layouts/tool/i18n/zh-Hans.json: -------------------------------------------------------------------------------- 1 | { 2 | "tip": { 3 | "management": "平台管理", 4 | "management_desc": "以管理员身份查看操作所有资源。", 5 | "tool_box": "工具箱", 6 | "cluster_manage": "集群管理", 7 | "pai_manage": "平台设置" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /apps/kubegems/src/layouts/tool/i18n/zh-Hant.json: -------------------------------------------------------------------------------- 1 | { 2 | "tip": { 3 | "management": "平臺管理", 4 | "management_desc": "以管理員身份查看操作所有資源。", 5 | "tool_box": "工具箱", 6 | "cluster_manage": "集群管理", 7 | "pai_manage": "平台設置" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /apps/kubegems/src/router/user_center.ts: -------------------------------------------------------------------------------- 1 | import { RouteConfig } from 'vue-router'; 2 | 3 | export const userCenter: RouteConfig[] = [ 4 | { 5 | path: '/user', 6 | name: 'user', 7 | component: () => import('@/layouts/LayoutWithoutNavi.vue'), 8 | redirect: { name: 'user-center' }, 9 | children: [ 10 | { 11 | path: 'center', 12 | name: 'user-center', 13 | component: () => import('@/views/tool/user/index.vue'), 14 | meta: { 15 | requireAuth: true, 16 | smallTitle: 'header.usercenter', 17 | title: 'header.usercenter', 18 | icon: 'mdi-account', 19 | tip: 'user_center', 20 | }, 21 | }, 22 | ], 23 | }, 24 | ]; 25 | -------------------------------------------------------------------------------- /apps/kubegems/src/scss/vuetify/_card.scss: -------------------------------------------------------------------------------- 1 | .v-card { 2 | box-shadow: 1px 1px 5px rgba(0, 0, 0, 0.05); 3 | -webkit-box-shadow: 1px 1px 5px rgba(0, 0, 0, 0.05); 4 | -moz-box-shadow: 1px 1px 5px rgba(0, 0, 0, 0.05); 5 | } 6 | -------------------------------------------------------------------------------- /apps/kubegems/src/scss/vuetify/_dark.scss: -------------------------------------------------------------------------------- 1 | .v-application { 2 | &.theme--dark { 3 | .border-left { 4 | border-left: 1px solid rgba(255, 255, 255, 0.12); 5 | } 6 | 7 | .border-right { 8 | border-right: 1px solid rgba(255, 255, 255, 0.12); 9 | } 10 | 11 | .border { 12 | border: 1px solid rgba(255, 255, 255, 0.12); 13 | } 14 | 15 | .todo-cards .v-card { 16 | background: #255c63; 17 | } 18 | 19 | .progress-cards .v-card { 20 | background: #1e374e; 21 | } 22 | 23 | // input color 24 | .v-text-field > .v-input__control > .v-input__slot::before, 25 | .v-text-field:not(.v-input--has-state):hover > .v-input__control > .v-input__slot::before { 26 | border-color: rgba(255, 255, 255, 0.12); 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /apps/kubegems/src/scss/vuetify/overrides.scss: -------------------------------------------------------------------------------- 1 | @import 'card'; 2 | @import 'layout'; 3 | @import 'sidebar'; 4 | @import 'v-bar'; 5 | @import 'loader'; 6 | // Theme - Dark 7 | 8 | @import 'dark'; 9 | 10 | // Theme - rtl 11 | 12 | @import 'rtl'; 13 | -------------------------------------------------------------------------------- /apps/kubegems/src/shims-vue.d.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2022 The kubegems.io Authors 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | declare module '*.vue' { 17 | import Vue from 'vue'; 18 | export default Vue; 19 | } 20 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/appstore/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/authentication/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/modelstore/components/detail_tabs/Certificate/UpdateCertificate.vue: -------------------------------------------------------------------------------- 1 | 16 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/modelstore/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/app/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/app_configer/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/app_configer/i18n/zh-Hans.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "app": "应用", 4 | "update_at": "更新时间", 5 | "operator": "操作人", 6 | "version": "版本号" 7 | }, 8 | "filter": { 9 | "config_name": "配置项" 10 | }, 11 | "operate": { 12 | "listen": "监听查询", 13 | "history": "历史", 14 | "sdk_demo": "SDK示例", 15 | "rollback": "回滚" 16 | }, 17 | "tip": { 18 | "config": "配置项", 19 | "more": "更多配置", 20 | "listen_list": "监听列表", 21 | "sdk_demo": "SDK接入示例", 22 | "history": "配置项历史", 23 | "rollback_tip": "回滚配置 {0} 到版本 {1}", 24 | "delete_tip": "确认删除 租户「{0}」/项目「{1}」/环境「{2}」 下的配置项 {3} ?", 25 | "access_info": "访问信息", 26 | "get_access_info": "获取访问信息" 27 | }, 28 | "status": { 29 | "rollback_success": "回滚完成", 30 | "rollback_failed": "回滚失败" 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/app_configer/i18n/zh-Hant.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "app": "應用", 4 | "update_at": "更新時間", 5 | "operator": "操作人", 6 | "version": "版本號" 7 | }, 8 | "filter": { 9 | "config_name": "配置項" 10 | }, 11 | "operate": { 12 | "listen": "監聽查詢", 13 | "history": "歷史", 14 | "sdk_demo": "SDK示例", 15 | "rollback": "回滾" 16 | }, 17 | "tip": { 18 | "config": "配置項", 19 | "more": "更多配置", 20 | "listen_list": "監聽清單", 21 | "sdk_demo": "SDK接入範例", 22 | "history": "配置項歷史", 23 | "rollback_tip": "回滾設定 {0} 到版本 {1}", 24 | "delete_tip": "確認刪除 租戶「{0}」/專案「{1}」/環境「{2}」 下的設定項 {3} ?", 25 | "access_info": "訪問信息", 26 | "get_access_info": "獲取訪問信息" 27 | }, 28 | "status": { 29 | "rollback_success": "回滾完成", 30 | "rollback_failed": "回滾失敗" 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/appmanifest/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/blank/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/blank/i18n/ja.json: -------------------------------------------------------------------------------- 1 | { 2 | "tip": { 3 | "no_cluster": "あなたのテナントはまだクラスターの資源をまだ割り当てされていません!", 4 | "no_cluster_tip": "クラスターリソースを割り当てるシステム管理者に連絡してください", 5 | "no_tenant": "あなたにはまだテナントが入っていません!", 6 | "no_tenant_tip": "テナントの設定からテナントにオファーを作成させたり、新しいテナントを作成したりできます。", 7 | "leave_tenant": "現在のテナントを終了しました。再設定して下さい。", 8 | "leave_tenant_tip": "テナントである管理から新しいテナントへの招待を送ることができます。" 9 | }, 10 | "intro": { 11 | "welcome": "Kubegems クラウド ネイティブ管理プラットフォームへようこそ。初めてガイドに従ってください", 12 | "enter": "まず、管理クラスタを追加し、ここからクラスタ管理に入ります" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/blank/i18n/zh-Hans.json: -------------------------------------------------------------------------------- 1 | { 2 | "tip": { 3 | "no_cluster": "您的租户暂未分配任何集群资源!", 4 | "no_cluster_tip": "您可以联系系统管理员为您所在的租户分配集群资源", 5 | "no_tenant": "您暂时不属于任何租户!", 6 | "no_tenant_tip": "您可以联系某个租户的管理员邀请您加入租户中或者创建新的租户", 7 | "leave_tenant": "您已退出当前租户,请重新选择租户!", 8 | "leave_tenant_tip": "您可以联系租户的管理员邀请您重新加入租户中" 9 | }, 10 | "intro": { 11 | "welcome": "欢迎使用Kubegems云原生管理平台,首次使用请跟随引导", 12 | "enter": "首先请添加管理集群,从此处进入集群管理" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/blank/i18n/zh-Hant.json: -------------------------------------------------------------------------------- 1 | { 2 | "tip": { 3 | "no_cluster": "您的租戶暫未分配任何集群資源!", 4 | "no_cluster_tip": "您可以聯繫系統管理員為您所在的租戶分配集群資源", 5 | "no_tenant": "您暫時不屬於任何租戶!", 6 | "no_tenant_tip": "您可以聯繫某個租戶的管理員邀請您加入租戶中或者創建新的租戶", 7 | "leave_tenant": "您已退出當前租戶,請重新選擇租戶!", 8 | "leave_tenant_tip": "您可以聯繫租戶的管理員邀請您重新加入租戶中" 9 | }, 10 | "intro": { 11 | "welcome": "歡迎使用Kubegems雲原生管理平台,首次使用請跟隨引導", 12 | "enter": "首先請添加管理集群,從此處進入集群管理" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/certmanager/i18n/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "Name", 4 | "issuer": "Issuer", 5 | "expire_at": "Expiration Time", 6 | "renew_at": "Auto-renew time", 7 | "issuer_type": "Issue Agency Type", 8 | "secret_name": "Key Name", 9 | "dns_name": "DNS Name", 10 | "extend": "Extended", 11 | "status": "Status" 12 | }, 13 | "filter": { 14 | "cert_name": "Name" 15 | }, 16 | "tip": { 17 | "key_use": "Public Key Usage" 18 | }, 19 | "form": { 20 | "name": "Name", 21 | "issuer_type": "Organization Type", 22 | "ingress": "Relation address name", 23 | "expire_at": "Certificate Expiration", 24 | "auto_renew": "Auto Renewal", 25 | "cert_use": "Certificate usage", 26 | "domain": "Grant Domain" 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/certmanager/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/certmanager/i18n/ja.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "注文番号による検索", 4 | "issuer": "発行者", 5 | "expire_at": "有効期限", 6 | "renew_at": "自動ログイン時間", 7 | "issuer_type": "発行者タイプ", 8 | "secret_name": "キー名", 9 | "dns_name": "DNS 名", 10 | "extend": "拡張", 11 | "status": "状態" 12 | }, 13 | "filter": { 14 | "cert_name": "注文番号による検索" 15 | }, 16 | "tip": { 17 | "key_use": "公開鍵のメイジ" 18 | }, 19 | "form": { 20 | "name": "注文番号による検索", 21 | "issuer_type": "機関タイプ", 22 | "ingress": "リレーションシップヤード名", 23 | "expire_at": "証明書の有効期間", 24 | "auto_renew": "自動ログイン", 25 | "cert_use": "証明書の利用", 26 | "domain": "認証ドメイン" 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/certmanager/i18n/zh-Hans.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "名称", 4 | "issuer": "颁发者", 5 | "expire_at": "到期时间", 6 | "renew_at": "自动续签时间", 7 | "issuer_type": "颁发机构类型", 8 | "secret_name": "密钥名", 9 | "dns_name": "DNS名", 10 | "extend": "扩展", 11 | "status": "状态" 12 | }, 13 | "filter": { 14 | "cert_name": "名称" 15 | }, 16 | "tip": { 17 | "key_use": "公钥用法" 18 | }, 19 | "form": { 20 | "name": "名称", 21 | "issuer_type": "机构类型", 22 | "ingress": "关联ingress名称", 23 | "expire_at": "证书有效期", 24 | "auto_renew": "自动续签", 25 | "cert_use": "证书用途", 26 | "domain": "授信域名" 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/certmanager/i18n/zh-Hant.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "名稱", 4 | "issuer": "頒發者", 5 | "expire_at": "到期時間", 6 | "renew_at": "自動續簽時間", 7 | "issuer_type": "頒發機構類型", 8 | "secret_name": "金鑰名", 9 | "dns_name": "DNS名", 10 | "extend": "擴展", 11 | "status": "狀態" 12 | }, 13 | "filter": { 14 | "cert_name": "名稱" 15 | }, 16 | "tip": { 17 | "key_use": "公鑰用法" 18 | }, 19 | "form": { 20 | "name": "名稱", 21 | "issuer_type": "機構類型", 22 | "ingress": "關聯ingress名稱", 23 | "expire_at": "證書有效期", 24 | "auto_renew": "自動續簽", 25 | "cert_use": "證書用途", 26 | "domain": "授信功能變數名稱" 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/cluster/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/components/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/configmap/i18n/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "Profile name", 4 | "item": "Configuration Item", 5 | "create_at": "Created on" 6 | }, 7 | "filter": { 8 | "configmap_name": "Configuration Name" 9 | }, 10 | "form": { 11 | "name": "Profile name" 12 | }, 13 | "tip": { 14 | "copyed": "Copied to Clipboard" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/configmap/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/configmap/i18n/ja.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "プロファイル名", 4 | "item": "設定項目", 5 | "create_at": "作成日時" 6 | }, 7 | "filter": { 8 | "configmap_name": "プロファイル名" 9 | }, 10 | "form": { 11 | "name": "プロファイル名" 12 | }, 13 | "tip": { 14 | "copyed": "クリップボードにコピーしました" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/configmap/i18n/zh-Hans.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "配置名", 4 | "item": "配置项", 5 | "create_at": "创建时间" 6 | }, 7 | "filter": { 8 | "configmap_name": "配置名称" 9 | }, 10 | "form": { 11 | "name": "配置名" 12 | }, 13 | "tip": { 14 | "copyed": "已复制到粘贴板" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/configmap/i18n/zh-Hant.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "配置名", 4 | "item": "配置項", 5 | "create_at": "創建時間" 6 | }, 7 | "filter": { 8 | "configmap_name": "配置名稱" 9 | }, 10 | "form": { 11 | "name": "配置名" 12 | }, 13 | "tip": { 14 | "copyed": "已複製到粘貼板" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/crd/i18n/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "Name", 4 | "status": "Status", 5 | "last_update_time": "Last updated" 6 | }, 7 | "filter": { 8 | "crd_name": "cd name" 9 | }, 10 | "tab": { 11 | "cr_list": "CRs List" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/crd/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/crd/i18n/ja.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "注文番号による検索", 4 | "status": "状態", 5 | "last_update_time": "最終更新日" 6 | }, 7 | "filter": { 8 | "crd_name": "crd名" 9 | }, 10 | "tab": { 11 | "cr_list": "CRリスト" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/crd/i18n/zh-Hans.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "名称", 4 | "status": "状态", 5 | "last_update_time": "上次更新时间" 6 | }, 7 | "filter": { 8 | "crd_name": "crd名称" 9 | }, 10 | "tab": { 11 | "cr_list": "CR列表" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/crd/i18n/zh-Hant.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "名稱", 4 | "status": "狀態", 5 | "last_update_time": "上次更新時間" 6 | }, 7 | "filter": { 8 | "crd_name": "crd名稱" 9 | }, 10 | "tab": { 11 | "cr_list": "CR清單" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/cronjob/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/dashboard/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/deploy/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/edge/i18n/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "tab": { 3 | "detail": "Detail", 4 | "node": "Node", 5 | "namespace": "Namespace" 6 | }, 7 | "table": { 8 | "status": "Status", 9 | "role": "Roles", 10 | "taint": "Snooze", 11 | "load": "5 Minutes Load", 12 | "join_at": "Join time", 13 | "create_at": "Create time", 14 | 15 | "name": "Name", 16 | "label": "Label", 17 | "version": "Version", 18 | "register_cluster": "Register cluster", 19 | "tunnel": "Tunnel", 20 | "node_count": "Node count" 21 | }, 22 | "operate": { 23 | "allow_schedule": "Allow scheduling", 24 | "stop_schedule": "Stop scheduling" 25 | }, 26 | "filter": { 27 | "edge_name": "Name", 28 | "device_id": "Device Id" 29 | }, 30 | "tip": { 31 | "manufacture": "Device Information" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/edge/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/edge/i18n/ja.json: -------------------------------------------------------------------------------- 1 | { 2 | "tab": { 3 | "detail": "Detail", 4 | "node": "Node", 5 | "namespace": "Namespace" 6 | }, 7 | "table": { 8 | "status": "状態", 9 | "role": "ロール", 10 | "taint": "ドット", 11 | "load": "5分間の負荷", 12 | "join_at": "参加日", 13 | "create_at": "作成時間", 14 | 15 | "name": "名前", 16 | "label": "ラベル", 17 | "version": "バージョン", 18 | "register_cluster": "クラスターを登録する", 19 | "tunnel": "トンネル", 20 | "node_count": "ホスト数" 21 | }, 22 | "operate": { 23 | "allow_schedule": "許可されたフィルタ:", 24 | "stop_schedule": "スケジューリングを終了します。" 25 | }, 26 | "filter": { 27 | "edge_name": "名前", 28 | "device_id": "デバイスID" 29 | }, 30 | "tip": { 31 | "manufacture": "デバイス情報" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/edge/i18n/zh-Hans.json: -------------------------------------------------------------------------------- 1 | { 2 | "tab": { 3 | "detail": "详情", 4 | "node": "节点", 5 | "namespace": "命名空间" 6 | }, 7 | "table": { 8 | "status": "状态", 9 | "role": "角色", 10 | "taint": "污点", 11 | "load": "5分钟负载", 12 | "join_at": "加入时间", 13 | "create_at": "创建时间", 14 | 15 | "name": "名称", 16 | "label": "标签", 17 | "version": "版本", 18 | "register_cluster": "注册集群", 19 | "tunnel": "隧道", 20 | "node_count": "主机数" 21 | }, 22 | "operate": { 23 | "allow_schedule": "允许调度", 24 | "stop_schedule": "停止调度" 25 | }, 26 | "filter": { 27 | "edge_name": "名称", 28 | "device_id": "设备id" 29 | }, 30 | "tip": { 31 | "manufacture": "设备信息" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/edge/i18n/zh-Hant.json: -------------------------------------------------------------------------------- 1 | { 2 | "tab": { 3 | "detail": "詳情", 4 | "node": "節點", 5 | "namespace": "命名空間" 6 | }, 7 | "table": { 8 | "status": "狀態", 9 | "role": "角色", 10 | "taint": "污點", 11 | "load": "5分鐘負載", 12 | "join_at": "加入時間", 13 | "create_at": "創建時間", 14 | 15 | "name": "名稱", 16 | "label": "標籤", 17 | "version": "版本", 18 | "register_cluster": "註冊集群", 19 | "tunnel": "隧道", 20 | "node_count": "主機數" 21 | }, 22 | "operate": { 23 | "allow_schedule": "允許調度", 24 | "stop_schedule": "停止調度" 25 | }, 26 | "filter": { 27 | "edge_name": "名稱", 28 | "device_id": "設備id" 29 | }, 30 | "tip": { 31 | "manufacture": "設備信息" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/environment/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/gateway/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/ingress/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/ingress/i18n/ja.json: -------------------------------------------------------------------------------- 1 | { 2 | "filter": { 3 | "ingress_name": "ルート名" 4 | }, 5 | "table": { 6 | "name": "注文番号による検索", 7 | "address": "アドレスへ" 8 | }, 9 | "tip": { 10 | "gateway_not_found": "はゲートウェイが見つかりません", 11 | "ingress_rule": "ルートルール", 12 | "gateway": "ゲートウェイ", 13 | "protocol": "プロトコル", 14 | "annotation": "コメント", 15 | "random_domain": "ドメインをランダム化", 16 | "path": "パス", 17 | "port_number": "ポート番号", 18 | "port_name": "ポート名", 19 | "port": "ポート", 20 | "no_random_domain": "生成された乱用ドメインがありません。", 21 | "leave_1_rule": "最低一つroute (ルート) ルールを保持します", 22 | "auto_domain": "ドメインを自動生成する", 23 | "domain": "ドメイン名", 24 | "request": "アクセス" 25 | }, 26 | "operate": { 27 | "add_path": "Path を追加", 28 | "add_secret": "キーを追加", 29 | "remove_secret": "キーを削除" 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/ingress/i18n/zh-Hans.json: -------------------------------------------------------------------------------- 1 | { 2 | "filter": { 3 | "ingress_name": "路由名称" 4 | }, 5 | "table": { 6 | "name": "名称", 7 | "address": "访问地址" 8 | }, 9 | "tip": { 10 | "gateway_not_found": "找不到对应网关", 11 | "ingress_rule": "路由规则", 12 | "gateway": "声明网关", 13 | "protocol": "协议", 14 | "annotation": "注解", 15 | "random_domain": "随机域名", 16 | "path": "路径", 17 | "port_number": "端口号", 18 | "port_name": "端口名", 19 | "port": "端口", 20 | "no_random_domain": "暂无可生成的随机域名", 21 | "leave_1_rule": "至少保留一项路由规则", 22 | "auto_domain": "自动生成域名", 23 | "domain": "域名", 24 | "request": "访问" 25 | }, 26 | "operate": { 27 | "add_path": "添加Path", 28 | "add_secret": "添加密钥", 29 | "remove_secret": "移除密钥" 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/ingress/i18n/zh-Hant.json: -------------------------------------------------------------------------------- 1 | { 2 | "filter": { 3 | "ingress_name": "路由名稱" 4 | }, 5 | "table": { 6 | "name": "名稱", 7 | "address": "訪問位址" 8 | }, 9 | "tip": { 10 | "gateway_not_found": "找不到對應閘道", 11 | "ingress_rule": "路由規則", 12 | "gateway": "聲明閘道", 13 | "protocol": "協定", 14 | "annotation": "註解", 15 | "random_domain": "隨機功能變數名稱", 16 | "path": "路徑", 17 | "port_number": "端口號", 18 | "port_name": "端口名", 19 | "port": "端口", 20 | "no_random_domain": "暫無可生成的隨機功能變數名稱", 21 | "leave_1_rule": "至少保留一項路由規則", 22 | "auto_domain": "自動生成功能變數名稱", 23 | "domain": "域名", 24 | "request": "訪問" 25 | }, 26 | "operate": { 27 | "add_path": "添加Path", 28 | "add_secret": "添加密鑰", 29 | "remove_secret": "移除密鑰" 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/job/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/job/i18n/ja.json: -------------------------------------------------------------------------------- 1 | { 2 | "filter": { 3 | "job_name": "タスク名" 4 | }, 5 | "table": { 6 | "name": "注文番号による検索", 7 | "status": "状態", 8 | "start_at": "開始時刻", 9 | "end_at": "終了時刻" 10 | }, 11 | "tip": { 12 | "add_image": "コンテナイメージを追加してください。", 13 | "restart_count": "リトライ数", 14 | "parallelism": "並列数", 15 | "complete_at": "完了時間", 16 | "succeed": "成功数", 17 | "condition": "有効ステータス", 18 | "env": "環境変数", 19 | "volume": "ボリューム", 20 | "last_change_at": "最終変更日時", 21 | "job_setting": "ミッションの設定", 22 | "max_restart_count": "最大再試行回数", 23 | "complations": "達成回数", 24 | "deadline_seconds": "タイムアウトするまでの秒数", 25 | "restart_policy": "リトライ", 26 | "policy_never": "Never (障害発生時に新しいポッド)", 27 | "policy_onfailure": "OnFailure(インシデント時にコンテナを再起動)" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/job/i18n/zh-Hans.json: -------------------------------------------------------------------------------- 1 | { 2 | "filter": { 3 | "job_name": "任务名称" 4 | }, 5 | "table": { 6 | "name": "名称", 7 | "status": "状态", 8 | "start_at": "开始时间", 9 | "end_at": "结束时间" 10 | }, 11 | "tip": { 12 | "add_image": "请添加容器镜像", 13 | "restart_count": "重试次数", 14 | "parallelism": "并行数", 15 | "complete_at": "完成时间", 16 | "succeed": "成功数量", 17 | "condition": "状况", 18 | "env": "环境变量", 19 | "volume": "卷", 20 | "last_change_at": "上次改变时间", 21 | "job_setting": "任务设置", 22 | "max_restart_count": "最大重试次数", 23 | "complations": "完成数", 24 | "deadline_seconds": "退出超时时限(秒)", 25 | "restart_policy": "重启策略", 26 | "policy_never": "Never (故障时创建新的容器组)", 27 | "policy_onfailure": "OnFailure (故障时内部重启容器)" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/job/i18n/zh-Hant.json: -------------------------------------------------------------------------------- 1 | { 2 | "filter": { 3 | "job_name": "任務名稱" 4 | }, 5 | "table": { 6 | "name": "名稱", 7 | "status": "狀態", 8 | "start_at": "開始時間", 9 | "end_at": "結束時間" 10 | }, 11 | "tip": { 12 | "add_image": "請添加容器鏡像", 13 | "restart_count": "重試次數", 14 | "parallelism": "並行數", 15 | "complete_at": "完成時間", 16 | "succeed": "成功數量", 17 | "condition": "狀況", 18 | "env": "環境變數", 19 | "volume": "卷", 20 | "last_change_at": "上次改變時間", 21 | "job_setting": "任務設置", 22 | "max_restart_count": "最大重試次數", 23 | "complations": "完成數", 24 | "deadline_seconds": "離開逾時時限(秒)", 25 | "restart_policy": "重啟策略", 26 | "policy_never": "Never (故障時建立新的容器群組)", 27 | "policy_onfailure": "OnFailure (故障時內部重啟容器)" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/node/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/persistentvolumeclaim/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/plugin/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/pod/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/project/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/registry/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/registry/i18n/ja.json: -------------------------------------------------------------------------------- 1 | { 2 | "tip": { 3 | "select_project": "最初にプロジェクトを選択してください", 4 | "enable_scan": "イメージスキャナと解析を有効にする", 5 | "yes": "はい", 6 | "no": "いいえ", 7 | "set_default": "ミラーリポジトリ {0} をデフォルトとして設置しました", 8 | "cancel_default": "リポジトリの {0} のデフォルト設定を解除" 9 | }, 10 | "filter": { 11 | "registry_name": "イメージ名" 12 | }, 13 | "table": { 14 | "name": "リポジトリ名", 15 | "address": "レンタル", 16 | "default": "デフォルトの倉庫", 17 | "username": "ユーザー名", 18 | "creator": "作成者", 19 | "last_update_at": "最終更新日", 20 | "passwd": "パスワード" 21 | }, 22 | "operate": { 23 | "set_default": "デフォルトの倉庫を設定", 24 | "cancel_default": "デフォルトのリポジトリのキャンセル" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/registry/i18n/zh-Hans.json: -------------------------------------------------------------------------------- 1 | { 2 | "tip": { 3 | "select_project": "请先选择项目", 4 | "enable_scan": "启用镜像扫描和分析报告", 5 | "yes": "是", 6 | "no": "否", 7 | "set_default": "将镜像仓库 {0} 置为默认仓库", 8 | "cancel_default": "取消镜像仓库 {0} 的默认设置" 9 | }, 10 | "filter": { 11 | "registry_name": "镜像仓库名称" 12 | }, 13 | "table": { 14 | "name": "仓库名称", 15 | "address": "仓库地址", 16 | "default": "默认仓库", 17 | "username": "用户名", 18 | "creator": "创建人", 19 | "last_update_at": "最近更新时间", 20 | "passwd": "密码" 21 | }, 22 | "operate": { 23 | "set_default": "设置默认仓库", 24 | "cancel_default": "取消默认仓库" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/registry/i18n/zh-Hant.json: -------------------------------------------------------------------------------- 1 | { 2 | "tip": { 3 | "select_project": "請先選擇專案", 4 | "enable_scan": "啟用鏡像掃描和分析報告", 5 | "yes": "是", 6 | "no": "否", 7 | "set_default": "將鏡像倉庫 {0} 置為預設倉庫", 8 | "cancel_default": "取消鏡像倉庫 {0} 的預設設置" 9 | }, 10 | "filter": { 11 | "registry_name": "鏡像倉庫名稱" 12 | }, 13 | "table": { 14 | "name": "倉庫名稱", 15 | "address": "倉庫位址", 16 | "default": "默認倉庫", 17 | "username": "使用者名", 18 | "creator": "創建人", 19 | "last_update_at": "最近更新時間", 20 | "passwd": "密碼" 21 | }, 22 | "operate": { 23 | "set_default": "設置預設倉庫", 24 | "cancel_default": "取消預設倉庫" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/secret/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/service/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/storageclass/i18n/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "tip": { 3 | "default": "Default storage", 4 | "provisioner": "Vendor" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/storageclass/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/storageclass/i18n/ja.json: -------------------------------------------------------------------------------- 1 | { 2 | "tip": { 3 | "default": "Default storage", 4 | "provisioner": "ベンダーイメージ一覧" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/storageclass/i18n/zh-Hans.json: -------------------------------------------------------------------------------- 1 | { 2 | "tip": { 3 | "default": "默认存储", 4 | "provisioner": "供应商" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/storageclass/i18n/zh-Hant.json: -------------------------------------------------------------------------------- 1 | { 2 | "tip": { 3 | "default": "默認存儲", 4 | "provisioner": "供應商" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/volumesnapshot/i18n/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "Snapshot Name", 4 | "class": "Snapshot Class", 5 | "origin_pvc": "Source Storage Volume" 6 | }, 7 | "filter": { 8 | "snapshot_name": "Snapshot Name" 9 | }, 10 | "operate": { 11 | "restore": "Snapshot recovery" 12 | }, 13 | "form": { 14 | "name": "Snapshot", 15 | "pvc_name": "Storage volume name" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/volumesnapshot/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/volumesnapshot/i18n/ja.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "スナップショット名", 4 | "class": "スナップショットクラス", 5 | "origin_pvc": "ソース記憶ボリューム" 6 | }, 7 | "filter": { 8 | "snapshot_name": "スナップショット名" 9 | }, 10 | "operate": { 11 | "restore": "スナップショット回復" 12 | }, 13 | "form": { 14 | "name": "スナップショット", 15 | "pvc_name": "ストレージボリューム名" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/volumesnapshot/i18n/zh-Hans.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "快照名称", 4 | "class": "快照类", 5 | "origin_pvc": "源存储卷" 6 | }, 7 | "filter": { 8 | "snapshot_name": "快照名称" 9 | }, 10 | "operate": { 11 | "restore": "快照恢复" 12 | }, 13 | "form": { 14 | "name": "快照", 15 | "pvc_name": "存储卷名称" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/volumesnapshot/i18n/zh-Hant.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "快照名稱", 4 | "class": "快照類", 5 | "origin_pvc": "源存儲卷" 6 | }, 7 | "filter": { 8 | "snapshot_name": "快照名稱" 9 | }, 10 | "operate": { 11 | "restore": "快照恢復" 12 | }, 13 | "form": { 14 | "name": "快照", 15 | "pvc_name": "存儲卷名稱" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/resource/workload/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/setting/broadcast/i18n/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "type": "Type", 4 | "message": "Mesaage", 5 | "start_at": "Start Time", 6 | "end_at": "End Time", 7 | "expried": "Expried" 8 | }, 9 | "resource": { 10 | "broadcast": "Broadcast" 11 | }, 12 | "tip": { 13 | "select_datetime": "Please select detetime" 14 | }, 15 | "status": { 16 | "expried": "Expried", 17 | "active": "Active" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/setting/broadcast/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/setting/broadcast/i18n/ja.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "type": "タイプ", 4 | "message": "メッセージ", 5 | "start_at": "開始時刻", 6 | "end_at": "終了時刻", 7 | "expried": "期限切れ" 8 | }, 9 | "resource": { 10 | "broadcast": "ブロードキャスト" 11 | }, 12 | "tip": { 13 | "select_datetime": "時間を設定する" 14 | }, 15 | "status": { 16 | "expried": "期限切れ", 17 | "active": "有効" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/setting/broadcast/i18n/zh-Hans.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "type": "类型", 4 | "message": "消息", 5 | "start_at": "开始时间", 6 | "end_at": "结束时间", 7 | "expried": "过期" 8 | }, 9 | "resource": { 10 | "broadcast": "广播" 11 | }, 12 | "tip": { 13 | "select_datetime": "请选择时间" 14 | }, 15 | "status": { 16 | "expried": "已过期", 17 | "active": "激活" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/setting/broadcast/i18n/zh-Hant.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "type": "類型", 4 | "message": "消息", 5 | "start_at": "開始時間", 6 | "end_at": "結束時間", 7 | "expried": "過期" 8 | }, 9 | "resource": { 10 | "broadcast": "廣播" 11 | }, 12 | "tip": { 13 | "select_datetime": "請選擇時間" 14 | }, 15 | "status": { 16 | "expried": "已過期", 17 | "active": "啟動" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/setting/model_registry/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/setting/monitor/i18n/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "filter": { 3 | "template_name": "Template Name" 4 | }, 5 | "table": { 6 | "name": "Name", 7 | "refresh": "Refresh interval", 8 | "description": "Description", 9 | "graph_count": "Chart Count", 10 | "expr": "Expression", 11 | "unit": "Units", 12 | "generator": "Group | Resources | Rules" 13 | }, 14 | "tab": { 15 | "template_info": "Template Info" 16 | }, 17 | "tip": { 18 | "graph": "Graph", 19 | "start": "Start Time", 20 | "end": "End Time", 21 | "step": "Interval", 22 | "rule": "Rules" 23 | }, 24 | "operate": { 25 | "load_c": "Import {0}" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/setting/monitor/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/setting/monitor/i18n/ja.json: -------------------------------------------------------------------------------- 1 | { 2 | "filter": { 3 | "template_name": "テンプレート名" 4 | }, 5 | "table": { 6 | "name": "注文番号による検索", 7 | "refresh": "更新間隔", 8 | "description": "説明", 9 | "graph_count": "グラフの数", 10 | "expr": "評価式", 11 | "unit": "単位", 12 | "generator": "グループ | リソース | ルール" 13 | }, 14 | "tab": { 15 | "template_info": "テンプレート情報" 16 | }, 17 | "tip": { 18 | "graph": "グラフ", 19 | "start": "開始時刻", 20 | "end": "終了時刻", 21 | "step": "間隔", 22 | "rule": "ルール" 23 | }, 24 | "operate": { 25 | "load_c": "インポート{0}" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/setting/monitor/i18n/zh-Hans.json: -------------------------------------------------------------------------------- 1 | { 2 | "filter": { 3 | "template_name": "模版名称" 4 | }, 5 | "table": { 6 | "name": "名称", 7 | "refresh": "刷新间隔", 8 | "description": "描述", 9 | "graph_count": "图表数量", 10 | "expr": "表达式", 11 | "unit": "单位", 12 | "generator": "组 | 资源 | 规则" 13 | }, 14 | "tab": { 15 | "template_info": "模版信息" 16 | }, 17 | "tip": { 18 | "graph": "图表", 19 | "start": "起始时间", 20 | "end": "结束时间", 21 | "step": "间隔", 22 | "rule": "规则" 23 | }, 24 | "operate": { 25 | "load_c": "导入{0}" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/setting/monitor/i18n/zh-Hant.json: -------------------------------------------------------------------------------- 1 | { 2 | "filter": { 3 | "template_name": "模版名稱" 4 | }, 5 | "table": { 6 | "name": "名稱", 7 | "refresh": "刷新間隔", 8 | "description": "描述", 9 | "graph_count": "圖表數量", 10 | "expr": "表達式", 11 | "unit": "單位", 12 | "generator": "組 | 資源 | 規則" 13 | }, 14 | "tab": { 15 | "template_info": "模版資訊" 16 | }, 17 | "tip": { 18 | "graph": "圖表", 19 | "start": "起始時間", 20 | "end": "結束時間", 21 | "step": "間隔", 22 | "rule": "規則" 23 | }, 24 | "operate": { 25 | "load_c": "匯入{0}" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/setting/oauth/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/setting/oauth/i18n/ja.json: -------------------------------------------------------------------------------- 1 | { 2 | "operate": { 3 | "enable": "有効", 4 | "enable_c": "{0} を有効にする", 5 | "disable": "無効", 6 | "disable_c": "{0} を無効化", 7 | "config": "設定" 8 | }, 9 | "status": { 10 | "enabled": "有効" 11 | }, 12 | "tip": { 13 | "kubegems": "Kubegems の内部にデータ認証", 14 | "oauth": "OrganizationがOauth プロトコルでログインすることができます。", 15 | "openldap": "組織に Ldap プロトコルでログインできるようになります。", 16 | "gitlab": "GitLab アカウントを使用してログインできるようにします。", 17 | "github": "あなたの組織をGitHubアカウントを使用してサインインすることができます。", 18 | "tls": "tlsを開く", 19 | "config_title": "サードパーティ製の証明書の設定" 20 | }, 21 | "form": { 22 | "name": "注文番号による検索", 23 | "format_rule": "フォーマットエラー", 24 | "ladp_address": "Ldapのアドレス" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/setting/oauth/i18n/zh-Hans.json: -------------------------------------------------------------------------------- 1 | { 2 | "operate": { 3 | "enable": "启用", 4 | "enable_c": "启用{0}", 5 | "disable": "禁用", 6 | "disable_c": "禁用{0}", 7 | "config": "配置" 8 | }, 9 | "status": { 10 | "enabled": "已启用" 11 | }, 12 | "tip": { 13 | "kubegems": "Kubegems 内置的数据库认证", 14 | "oauth": "使您的组织能够使用 Oauth 协议登录", 15 | "openldap": "使您的组织能够使用 Ldap 协议登录", 16 | "gitlab": "使您的组织能够使用 GitLab 账号登录", 17 | "github": "使您的组织能够使用 GitHub 账号登录", 18 | "tls": "开启tls", 19 | "config_title": "配置第三方认证" 20 | }, 21 | "form": { 22 | "name": "名称", 23 | "format_rule": "格式错误", 24 | "ladp_address": "Ldap地址" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/setting/oauth/i18n/zh-Hant.json: -------------------------------------------------------------------------------- 1 | { 2 | "operate": { 3 | "enable": "啟用", 4 | "enable_c": "開啟{0}", 5 | "disable": "禁用", 6 | "disable_c": "關閉{0}", 7 | "config": "配置" 8 | }, 9 | "status": { 10 | "enabled": "已啟用" 11 | }, 12 | "tip": { 13 | "kubegems": "Kubegems 內置的資料庫認證", 14 | "oauth": "使您的組織能夠使用 Oauth 協議登錄", 15 | "openldap": "使您的組織能夠使用 Ldap 協議登錄", 16 | "gitlab": "使您的組織能夠使用 GitLab 帳號登錄", 17 | "github": "使您的組織能夠使用 GitHub 帳號登錄", 18 | "tls": "開啟tls", 19 | "config_title": "配置第三方認證" 20 | }, 21 | "form": { 22 | "name": "名稱", 23 | "format_rule": "格式錯誤", 24 | "ladp_address": "Ldap位址" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/setting/prometheus/i18n/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "Name", 4 | "unit": "Units", 5 | "rule": "Rules", 6 | "label": "Tags" 7 | }, 8 | "form": { 9 | "name": "Name", 10 | "show_name": "Display Name", 11 | "label": "Labels (enter)", 12 | "unit": "Units", 13 | "description": "Description" 14 | }, 15 | "tip": { 16 | "group_and_resource": "Group/Resources", 17 | "group": "Group", 18 | "select_resource": "Please select a resource", 19 | "default": "Default", 20 | "byte": "Bytes", 21 | "byte_rate": "Byte Rate", 22 | "time": "Time", 23 | "precent": "Percentage", 24 | "custom": "Custom" 25 | }, 26 | "filter": { 27 | "search": "Search" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/setting/prometheus/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/setting/prometheus/i18n/ja.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "注文番号による検索", 4 | "unit": "単位", 5 | "rule": "ルール", 6 | "label": "タグ" 7 | }, 8 | "form": { 9 | "name": "注文番号による検索", 10 | "show_name": "表示名", 11 | "label": "タグ(Enter)", 12 | "unit": "単位", 13 | "description": "説明" 14 | }, 15 | "tip": { 16 | "group_and_resource": "グループ/リソース", 17 | "group": "グループ", 18 | "select_resource": "リソースを選択してください", 19 | "default": "デフォルト", 20 | "byte": "バイト", 21 | "byte_rate": "バイトレート", 22 | "time": "時間", 23 | "precent": "パーセント", 24 | "custom": "カスタム" 25 | }, 26 | "filter": { 27 | "search": "検索" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/setting/prometheus/i18n/zh-Hans.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "名称", 4 | "unit": "单位", 5 | "rule": "规则", 6 | "label": "标签" 7 | }, 8 | "form": { 9 | "name": "名称", 10 | "show_name": "显示名称", 11 | "label": "标签(回车)", 12 | "unit": "单位", 13 | "description": "描述" 14 | }, 15 | "tip": { 16 | "group_and_resource": "组/资源", 17 | "group": "组", 18 | "select_resource": "请选择一个资源", 19 | 20 | "default": "默认", 21 | "byte": "字节", 22 | "byte_rate": "字节速率", 23 | "time": "时间", 24 | "precent": "百分比", 25 | "custom": "自定义" 26 | }, 27 | "filter": { 28 | "search": "搜索" 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/setting/prometheus/i18n/zh-Hant.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "名稱", 4 | "unit": "單位", 5 | "rule": "規則", 6 | "label": "標籤" 7 | }, 8 | "form": { 9 | "name": "名稱", 10 | "show_name": "顯示名稱", 11 | "label": "標籤(回車)", 12 | "unit": "單位", 13 | "description": "描述" 14 | }, 15 | "tip": { 16 | "group_and_resource": "組/資源", 17 | "group": "組", 18 | "select_resource": "請選擇一個資源", 19 | "default": "預設", 20 | "byte": "位元組", 21 | "byte_rate": "位元組速率", 22 | "time": "時間", 23 | "precent": "百分比", 24 | "custom": "自訂" 25 | }, 26 | "filter": { 27 | "search": "搜索" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/tenant/role/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/tenant/role/i18n/ja.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "role": "ロール", 4 | "type": "カテゴリ", 5 | "description": "説明" 6 | }, 7 | "tip": { 8 | "system": { 9 | "admin": "ユーザーの使用は、すべてのリソース、テナント、公開", 10 | "normal": "システムレベルの権限を持っていません" 11 | }, 12 | "tenant": { 13 | "admin": "テナントの全てのリソースを管理できます。", 14 | "normal": "参加しているプロジェクトだけが見えます。" 15 | }, 16 | "project": { 17 | "admin": "プロジェクト内の全リソース操作", 18 | "dev": "開発したプロパティの環境だけを操作できます。", 19 | "test": "プロパティの環境をテストする環境だけにします。", 20 | "ops": "全ての環境を保管できます" 21 | }, 22 | "environment": { 23 | "operator": "環境下へのリソース操作", 24 | "reader": "マップ上のリソースのみ閲覧可能" 25 | }, 26 | "mesh": { 27 | "admin": "マイクロサービス仮想空間をアクション可能なリソース", 28 | "normal": "マイクロサービス仮想空間からリソースを表示" 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/tenant/role/i18n/zh-Hans.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "role": "角色", 4 | "type": "类别", 5 | "description": "描述" 6 | }, 7 | "tip": { 8 | "system": { 9 | "admin": "可以操作系统所有的资源,用户,租户", 10 | "normal": "没有任何系统级别的权限" 11 | }, 12 | "tenant": { 13 | "admin": "可以操作租户下所有资源", 14 | "normal": "只能看到自己参与的项目" 15 | }, 16 | "project": { 17 | "admin": "可以操作项目下的所有资源", 18 | "dev": "仅可以操作研发属性的环境", 19 | "test": "仅可以操作测试属性的环境", 20 | "ops": "可以操作所有环境" 21 | }, 22 | "environment": { 23 | "operator": "可以操作环境下的资源", 24 | "reader": "只可以查看环境下的资源" 25 | }, 26 | "mesh": { 27 | "admin": "可以操作微服务虚拟空间下的资源", 28 | "normal": "查看微服务虚拟空间下的资源" 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/tenant/role/i18n/zh-Hant.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "role": "角色", 4 | "type": "類別", 5 | "description": "描述" 6 | }, 7 | "tip": { 8 | "system": { 9 | "admin": "可以操作系統所有的資源,使用者,租戶", 10 | "normal": "沒有任何系統級別的許可權" 11 | }, 12 | "tenant": { 13 | "admin": "可以操作租戶下所有資源", 14 | "normal": "只能看到自己參與的專案" 15 | }, 16 | "project": { 17 | "admin": "可以操作專案下的所有資源", 18 | "dev": "僅可以操作研發屬性的環境", 19 | "test": "僅可以操作測試屬性的環境", 20 | "ops": "可以操作所有環境" 21 | }, 22 | "environment": { 23 | "operator": "可以操作環境下的資源", 24 | "reader": "只可以查看環境下的資源" 25 | }, 26 | "mesh": { 27 | "admin": "可以操作微服務虛擬空間下的資源", 28 | "normal": "查看微服務虛擬空間下的資源" 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/tenant/tenant/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/tenant/user/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/tenant/user/i18n/ja.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "注文番号による検索", 4 | "status": "状態", 5 | "email": "メール", 6 | "mobile": "携帯電話", 7 | "role": "ロール", 8 | "last_login_at": "最近のサインイン順", 9 | "registe_at": "登録日" 10 | }, 11 | "filter": { 12 | "username_or_email": "ユーザー名またはEメール" 13 | }, 14 | "operate": { 15 | "role": "ロール", 16 | "reset_pwd": "パスワードをリセット" 17 | }, 18 | "status": { 19 | "enabled": "有効", 20 | "disabled": "無効" 21 | }, 22 | "tip": { 23 | "role_title": "ユーザーシステムロール", 24 | "passwd_title": "使用者パスワードの再設定", 25 | "random_passwd": "ランダムパスワードを生成する" 26 | }, 27 | "resource": { 28 | "password": "パスワード" 29 | }, 30 | "form": { 31 | "new_passwd": "新しいパスワード", 32 | "username": "ユーザー名", 33 | "passwd": "パスワード", 34 | "email": "メール" 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/tenant/user/i18n/zh-Hans.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "名称", 4 | "status": "状态", 5 | "email": "邮箱", 6 | "mobile": "手机号", 7 | "role": "角色", 8 | "last_login_at": "最近登录", 9 | "registe_at": "注册时间" 10 | }, 11 | "filter": { 12 | "username_or_email": "用户名或邮箱" 13 | }, 14 | "operate": { 15 | "role": "角色", 16 | "reset_pwd": "重设密码" 17 | }, 18 | "status": { 19 | "enabled": "启用", 20 | "disabled": "禁用" 21 | }, 22 | "tip": { 23 | "role_title": "用户系统角色", 24 | "passwd_title": "重设用户密码", 25 | "random_passwd": "生成随机密码" 26 | }, 27 | "resource": { 28 | "password": "密码" 29 | }, 30 | "form": { 31 | "new_passwd": "新密码", 32 | "username": "用户名", 33 | "passwd": "密码", 34 | "email": "邮箱" 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/tenant/user/i18n/zh-Hant.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "名稱", 4 | "status": "狀態", 5 | "email": "郵箱", 6 | "mobile": "手機號", 7 | "role": "角色", 8 | "last_login_at": "最近登錄", 9 | "registe_at": "註冊時間" 10 | }, 11 | "filter": { 12 | "username_or_email": "使用者名或郵箱" 13 | }, 14 | "operate": { 15 | "role": "角色", 16 | "reset_pwd": "重設密碼" 17 | }, 18 | "status": { 19 | "enabled": "啟用", 20 | "disabled": "禁用" 21 | }, 22 | "tip": { 23 | "role_title": "用戶系統角色", 24 | "passwd_title": "重設用戶密碼", 25 | "random_passwd": "生成隨機密碼" 26 | }, 27 | "resource": { 28 | "password": "密碼" 29 | }, 30 | "form": { 31 | "new_passwd": "新密碼", 32 | "username": "使用者名", 33 | "passwd": "密碼", 34 | "email": "郵箱" 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/tool/audit/i18n/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "trigger_time": "Trigger Time", 4 | "tenant": "Tenant", 5 | "account": "Account", 6 | "operate": "Action", 7 | "object": "Operate Object", 8 | "label": "Label", 9 | "status": "Status" 10 | }, 11 | "filter": { 12 | "account": "Account", 13 | "search": "Search", 14 | "status": "Status", 15 | "action": "Action" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/tool/audit/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/tool/audit/i18n/ja.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "trigger_time": "動作開始時間", 4 | "tenant": "テナント", 5 | "account": "ユーザー", 6 | "operate": "アクション", 7 | "object": "オブジェクト", 8 | "label": "タグ", 9 | "status": "状態" 10 | }, 11 | "filter": { 12 | "account": "ユーザー", 13 | "search": "検索", 14 | "status": "状態", 15 | "action": "アクション" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/tool/audit/i18n/zh-Hans.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "trigger_time": "触发时间", 4 | "tenant": "租户", 5 | "account": "用户", 6 | "operate": "操作", 7 | "object": "对象", 8 | "label": "标签", 9 | "status": "状态" 10 | }, 11 | "filter": { 12 | "account": "用户", 13 | "search": "检索", 14 | "status": "状态", 15 | "action": "操作" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/tool/audit/i18n/zh-Hant.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "trigger_time": "觸發時間", 4 | "tenant": "租戶", 5 | "account": "使用者", 6 | "operate": "操作", 7 | "object": "物件", 8 | "label": "標籤", 9 | "status": "狀態" 10 | }, 11 | "filter": { 12 | "account": "使用者", 13 | "search": "檢索", 14 | "status": "狀態", 15 | "action": "操作" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/tool/event/i18n/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "component": "Component", 4 | "host": "Host", 5 | "service": "Service", 6 | "namespace": "Namespace", 7 | "type": "Type", 8 | "message": "Message", 9 | "count": "Count", 10 | "first_at": "First Time", 11 | "last_at": "Last Time" 12 | }, 13 | "filter": { 14 | "cluster": "Cluster", 15 | "message": "Message" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/tool/event/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/tool/event/i18n/ja.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "component": "元のコンポーネント", 4 | "host": "ソースホスト", 5 | "service": "サービス", 6 | "namespace": "名前空間", 7 | "type": "タイプ", 8 | "message": "メッセージ", 9 | "count": "回数", 10 | "first_at": "最初の発生時間", 11 | "last_at": "最近の回" 12 | }, 13 | "filter": { 14 | "cluster": "クラスター", 15 | "message": "メッセージ" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/tool/event/i18n/zh-Hans.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "component": "来源组件", 4 | "host": "来源主机", 5 | "service": "服务", 6 | "namespace": "命名空间", 7 | "type": "类型", 8 | "message": "消息", 9 | "count": "次数", 10 | "first_at": "首次发生时间", 11 | "last_at": "最近发生时间" 12 | }, 13 | "filter": { 14 | "cluster": "集群", 15 | "message": "消息" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/tool/event/i18n/zh-Hant.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "component": "來源元件", 4 | "host": "來源主機", 5 | "service": "服務", 6 | "namespace": "命名空間", 7 | "type": "類型", 8 | "message": "消息", 9 | "count": "次數", 10 | "first_at": "首次發生時間", 11 | "last_at": "最近發生時間" 12 | }, 13 | "filter": { 14 | "cluster": "集群", 15 | "message": "消息" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /apps/kubegems/src/views/tool/user/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/kubegems/volar.config.ts: -------------------------------------------------------------------------------- 1 | import vetur from '@volar-plugins/vetur'; 2 | 3 | module.exports = { 4 | plugins: [vetur()], 5 | }; 6 | -------------------------------------------------------------------------------- /apps/observability/README.md: -------------------------------------------------------------------------------- 1 | # observability 2 | 3 | observability for kubegems 4 | -------------------------------------------------------------------------------- /apps/observability/alert/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/observability/channel/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/observability/integrated/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/observability/log/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/observability/main.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubegems/dashboard/f02bf419a18f34c1d42c255b3e0a9f3e5d56918a/apps/observability/main.ts -------------------------------------------------------------------------------- /apps/observability/monitor/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/observability/overview/components/IntroSteps/Logs.vue: -------------------------------------------------------------------------------- 1 | 16 | 17 | 22 | -------------------------------------------------------------------------------- /apps/observability/overview/components/IntroSteps/Metrics.vue: -------------------------------------------------------------------------------- 1 | 16 | 17 | 22 | -------------------------------------------------------------------------------- /apps/observability/overview/components/IntroSteps/Traces.vue: -------------------------------------------------------------------------------- 1 | 16 | 17 | 22 | -------------------------------------------------------------------------------- /apps/observability/overview/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/servicemesh/.dockerignore: -------------------------------------------------------------------------------- 1 | *.log 2 | *.log.* 3 | 4 | # editor 5 | .vscode/ 6 | .idea/ 7 | .DS_Store 8 | 9 | node_modules 10 | .env.local 11 | .git/ 12 | package-lock.json 13 | .github/ 14 | .sentryclirc 15 | .vite -------------------------------------------------------------------------------- /apps/servicemesh/.env: -------------------------------------------------------------------------------- 1 | NODE_ENV=production 2 | VUE_APP_API_TIMEOUT=15 3 | VUE_APP_ENVIRONMENT=production -------------------------------------------------------------------------------- /apps/servicemesh/.eslintignore: -------------------------------------------------------------------------------- 1 | .*/* 2 | dist/* 3 | build/*.js 4 | node_modules/* 5 | components.d.ts 6 | tsconfig.json -------------------------------------------------------------------------------- /apps/servicemesh/.gitignore: -------------------------------------------------------------------------------- 1 | *.log 2 | *.log.* 3 | 4 | # editor 5 | .idea/ 6 | .DS_Store 7 | 8 | node_modules 9 | .env.local 10 | .git/ 11 | package-lock.json 12 | .sentryclirc 13 | dist/ 14 | 15 | *.py 16 | *.pyc 17 | .vite -------------------------------------------------------------------------------- /apps/servicemesh/.stylelintignore: -------------------------------------------------------------------------------- 1 | public/scss/* 2 | public/css/* 3 | node_modules/* -------------------------------------------------------------------------------- /apps/servicemesh/.stylelintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: 'stylelint-config-standard', 3 | rules: { 4 | 'color-no-invalid-hex': true, 5 | 'rule-empty-line-before': null, 6 | 'selector-pseudo-element-no-unknown': null, // 允许::v-deep样式穿透 7 | 'color-hex-length': 'long', 8 | 'color-hex-case': 'lower', 9 | 'unit-allowed-list': ['em', 'rem', '%', 's', 'px', 'vh', 'vw', 'deg', 'turn'], 10 | 'declaration-colon-newline-after': null, 11 | 'font-family-no-missing-generic-family-keyword': null, 12 | 'at-rule-no-unknown': [true, { ignoreAtRules: ['while'] }], 13 | 'declaration-block-trailing-semicolon': null, 14 | }, 15 | }; 16 | -------------------------------------------------------------------------------- /apps/servicemesh/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM nginx:alpine as ui 2 | LABEL MAINTAINER="kubegems" 3 | WORKDIR /usr/src/app 4 | 5 | ENV API_SERVER=kubegems-api 6 | 7 | COPY dist dist 8 | COPY nginx.conf.template /etc/nginx/templates/nginx.conf.template 9 | 10 | CMD ["nginx", "-g", "daemon off;"] 11 | -------------------------------------------------------------------------------- /apps/servicemesh/README.md: -------------------------------------------------------------------------------- 1 | # service mesh 2 | 3 | service mesh for kubegems 4 | -------------------------------------------------------------------------------- /apps/servicemesh/SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | 3 | ## Supported Versions 4 | 5 | Use this section to tell people about which versions of your project are 6 | currently being supported with security updates. 7 | 8 | | Version | Supported | 9 | | ------- | --------- | 10 | 11 | ## Reporting a Vulnerability 12 | 13 | Use this section to tell people how to report a vulnerability. 14 | 15 | Tell them where to go, how often they can expect to get an update on a 16 | reported vulnerability, what to expect if the vulnerability is accepted or 17 | declined, etc. 18 | -------------------------------------------------------------------------------- /apps/servicemesh/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubegems/dashboard/f02bf419a18f34c1d42c255b3e0a9f3e5d56918a/apps/servicemesh/public/favicon.ico -------------------------------------------------------------------------------- /apps/servicemesh/public/fonts/materialdesignicons-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubegems/dashboard/f02bf419a18f34c1d42c255b3e0a9f3e5d56918a/apps/servicemesh/public/fonts/materialdesignicons-webfont.woff2 -------------------------------------------------------------------------------- /apps/servicemesh/public/fonts/pxiByp8kv8JHgFVrLCz7Z1xlFd2JQEk.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubegems/dashboard/f02bf419a18f34c1d42c255b3e0a9f3e5d56918a/apps/servicemesh/public/fonts/pxiByp8kv8JHgFVrLCz7Z1xlFd2JQEk.woff2 -------------------------------------------------------------------------------- /apps/servicemesh/public/fonts/pxiByp8kv8JHgFVrLDz8Z1xlFd2JQEk.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubegems/dashboard/f02bf419a18f34c1d42c255b3e0a9f3e5d56918a/apps/servicemesh/public/fonts/pxiByp8kv8JHgFVrLDz8Z1xlFd2JQEk.woff2 -------------------------------------------------------------------------------- /apps/servicemesh/public/fonts/pxiByp8kv8JHgFVrLGT9Z1xlFd2JQEk.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubegems/dashboard/f02bf419a18f34c1d42c255b3e0a9f3e5d56918a/apps/servicemesh/public/fonts/pxiByp8kv8JHgFVrLGT9Z1xlFd2JQEk.woff2 -------------------------------------------------------------------------------- /apps/servicemesh/public/fonts/pxiEyp8kv8JHgFVrJJfecnFHGPc.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubegems/dashboard/f02bf419a18f34c1d42c255b3e0a9f3e5d56918a/apps/servicemesh/public/fonts/pxiEyp8kv8JHgFVrJJfecnFHGPc.woff2 -------------------------------------------------------------------------------- /apps/servicemesh/public/icon/i18n/ja.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /apps/servicemesh/public/icon/i18n/zh-Hans.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /apps/servicemesh/public/icon/i18n/zh-Hant.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /apps/servicemesh/public/scss/_animated.scss: -------------------------------------------------------------------------------- 1 | // From Font Awesome 2 | .#{$mdi-css-prefix}-spin:before { 3 | -webkit-animation: #{$mdi-css-prefix}-spin 2s infinite linear; 4 | animation: #{$mdi-css-prefix}-spin 2s infinite linear; 5 | } 6 | 7 | @-webkit-keyframes #{$mdi-css-prefix}-spin { 8 | 0% { 9 | -webkit-transform: rotate(0deg); 10 | transform: rotate(0deg); 11 | } 12 | 100% { 13 | -webkit-transform: rotate(359deg); 14 | transform: rotate(359deg); 15 | } 16 | } 17 | 18 | @keyframes #{$mdi-css-prefix}-spin { 19 | 0% { 20 | -webkit-transform: rotate(0deg); 21 | transform: rotate(0deg); 22 | } 23 | 100% { 24 | -webkit-transform: rotate(359deg); 25 | transform: rotate(359deg); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /apps/servicemesh/public/scss/_core.scss: -------------------------------------------------------------------------------- 1 | .#{$mdi-css-prefix}:before, 2 | .#{$mdi-css-prefix}-set { 3 | display: inline-block; 4 | font: normal normal normal #{$mdi-font-size-base}/1 '#{$mdi-font-name}'; // shortening font declaration 5 | font-size: inherit; // can't have font-size inherit on line above, so need to override 6 | text-rendering: auto; // optimizelegibility throws things off #1094 7 | line-height: inherit; 8 | -webkit-font-smoothing: antialiased; 9 | -moz-osx-font-smoothing: grayscale; 10 | } 11 | -------------------------------------------------------------------------------- /apps/servicemesh/public/scss/_functions.scss: -------------------------------------------------------------------------------- 1 | @function char($character-code) { 2 | @if function-exists("selector-append") { 3 | @return unquote("\"\\#{$character-code}\""); 4 | } 5 | 6 | @if "\\#{'x'}" == "\\x" { 7 | @return str-slice("\x", 1, 1) + $character-code; 8 | } 9 | 10 | @else { 11 | @return #{"\"\\"}#{$character-code + "\""}; 12 | } 13 | } 14 | 15 | @function mdi($name) { 16 | @if map-has-key($mdi-icons, $name) == false { 17 | @warn "Icon #{$name} not found."; 18 | 19 | @return ""; 20 | } 21 | 22 | @return char(map-get($mdi-icons, $name)); 23 | } 24 | -------------------------------------------------------------------------------- /apps/servicemesh/public/scss/_icons.scss: -------------------------------------------------------------------------------- 1 | @each $key, $value in $mdi-icons { 2 | .#{$mdi-css-prefix}-#{$key}::before { 3 | content: char($value); 4 | } 5 | } 6 | 7 | .#{$mdi-css-prefix}-blank::before { 8 | content: "\F68C"; 9 | visibility: hidden; 10 | } 11 | -------------------------------------------------------------------------------- /apps/servicemesh/public/scss/_path.scss: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: '#{$mdi-font-name}'; 3 | src: url('#{$mdi-font-path}/#{$mdi-filename}-webfont.eot?v=#{$mdi-version}'); 4 | src: url('#{$mdi-font-path}/#{$mdi-filename}-webfont.eot?#iefix&v=#{$mdi-version}') format('embedded-opentype'), 5 | url('#{$mdi-font-path}/#{$mdi-filename}-webfont.woff2?v=#{$mdi-version}') format('woff2'), 6 | url('#{$mdi-font-path}/#{$mdi-filename}-webfont.woff?v=#{$mdi-version}') format('woff'), 7 | url('#{$mdi-font-path}/#{$mdi-filename}-webfont.ttf?v=#{$mdi-version}') format('truetype'); 8 | font-weight: normal; 9 | font-style: normal; 10 | } 11 | -------------------------------------------------------------------------------- /apps/servicemesh/public/scss/materialdesignicons.scss: -------------------------------------------------------------------------------- 1 | /* MaterialDesignIcons.com */ 2 | @import "variables"; 3 | @import "functions"; 4 | @import "path"; 5 | @import "core"; 6 | @import "icons"; 7 | @import "extras"; 8 | @import "animated"; 9 | -------------------------------------------------------------------------------- /apps/servicemesh/src/assets/fonts/kubegems-sample.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubegems/dashboard/f02bf419a18f34c1d42c255b3e0a9f3e5d56918a/apps/servicemesh/src/assets/fonts/kubegems-sample.ttf -------------------------------------------------------------------------------- /apps/servicemesh/src/assets/styles/animation.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * 全局动画 3 | */ 4 | -------------------------------------------------------------------------------- /apps/servicemesh/src/assets/styles/apexcharts.scss: -------------------------------------------------------------------------------- 1 | .apexcharts-tooltip-text { 2 | max-width: 350px !important; 3 | } 4 | -------------------------------------------------------------------------------- /apps/servicemesh/src/assets/styles/filepond.scss: -------------------------------------------------------------------------------- 1 | .filepond--drop-label label { 2 | font-size: 14px; 3 | font-weight: 400; 4 | cursor: pointer; 5 | } 6 | 7 | [data-filepond-item-state='processing-complete'] .filepond--item-panel { 8 | background-color: #00acc1; 9 | } 10 | 11 | [data-filepond-item-state*='error'] .filepond--item-panel, 12 | [data-filepond-item-state*='invalid'] .filepond--item-panel { 13 | background-color: #ef5350; 14 | } 15 | -------------------------------------------------------------------------------- /apps/servicemesh/src/assets/styles/index.scss: -------------------------------------------------------------------------------- 1 | @import './initialization.scss'; 2 | @import './animation.scss'; 3 | @import './transition.scss'; 4 | @import './vuetify_overwrite.scss'; 5 | @import './ace_editor.scss'; 6 | @import './zoom.scss'; 7 | @import './common.scss'; 8 | @import './markdown.scss'; 9 | @import './apexcharts.scss'; 10 | @import './filepond.scss'; 11 | @import './intro.scss'; 12 | -------------------------------------------------------------------------------- /apps/servicemesh/src/assets/styles/initialization.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * 初始化 3 | */ 4 | -------------------------------------------------------------------------------- /apps/servicemesh/src/assets/styles/intro.scss: -------------------------------------------------------------------------------- 1 | .introjs-skipbutton { 2 | font-size: 14px !important; 3 | height: 36px !important; 4 | line-height: 36px !important; 5 | font-weight: 400 !important; 6 | width: 70px !important; 7 | } 8 | 9 | .introjs-nextbutton { 10 | color: var(--primary-color) !important; 11 | caret-color: var(--primary-color) !important; 12 | } 13 | 14 | .introjs-prevbutton { 15 | color: var(--primary-color) !important; 16 | caret-color: var(--primary-color) !important; 17 | } 18 | -------------------------------------------------------------------------------- /apps/servicemesh/src/assets/styles/transition.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * 过渡效果 3 | */ 4 | 5 | .drawer-enter-active, 6 | .drawer-leave-active { 7 | transition: all 0.3s ease; 8 | } 9 | .drawer-enter, 10 | .drawer-leave, 11 | .drawer-leave-active { 12 | transform: translateX(100%); 13 | opacity: 0; 14 | } 15 | -------------------------------------------------------------------------------- /apps/servicemesh/src/assets/styles/zoom.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * 缩放 3 | */ 4 | 5 | .clear-zoom-1 { 6 | zoom: 1 !important; 7 | } 8 | 9 | .clear-zoom-0-9 { 10 | zoom: 1.11111111 !important; 11 | } 12 | 13 | .clear-zoom-0-85 { 14 | zoom: 1.17647058 !important; 15 | } 16 | 17 | .clear-zoom-0-95 { 18 | zoom: 1.05263157 !important; 19 | } 20 | 21 | .zoom-1 { 22 | zoom: 1 !important; 23 | } 24 | 25 | .zoom-0-9 { 26 | zoom: 0.9 !important; 27 | } 28 | 29 | .zoom-0-85 { 30 | zoom: 0.85 !important; 31 | } 32 | 33 | .zoom-0-95 { 34 | zoom: 0.95 !important; 35 | } 36 | -------------------------------------------------------------------------------- /apps/servicemesh/src/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "layout": { 3 | "PLATFORM": "KubeGems", 4 | "MANUAL": "https://www.kubegems.io/docs/concepts/what-is-kubegems", 5 | "LOGO_PRIMARY": "/logo-blue.svg", 6 | "LOGO_WHITE": "/logo-white.svg", 7 | "SLOGAN_CN": "更便捷的云原生管理平台", 8 | "SLOGAN_EN": "Let cloudnative management more easily" 9 | }, 10 | "theme": { 11 | "THEME_COLOR": { 12 | "primary": "#1e88e5", 13 | "info": "#1e88e5", 14 | "success": "#00BCD4", 15 | "accent": "#fc4b6c", 16 | "default": "#563dea" 17 | }, 18 | "THEME_COLOR_EXTEND": { 19 | "warning": "#fb8c00", 20 | "error": "#ff5252", 21 | "grey": "#607d8b", 22 | "greyLight": "#9e9e9e", 23 | "critical": "#673ab7" 24 | }, 25 | "FONT_FAMILY": "zcool qingke huangyou, microsoft yahei, pingfang sc !default" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /apps/servicemesh/src/layouts/header/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/servicemesh/src/scss/vuetify/_card.scss: -------------------------------------------------------------------------------- 1 | .v-card { 2 | box-shadow: 1px 1px 5px rgba(0, 0, 0, 0.05); 3 | -webkit-box-shadow: 1px 1px 5px rgba(0, 0, 0, 0.05); 4 | -moz-box-shadow: 1px 1px 5px rgba(0, 0, 0, 0.05); 5 | } 6 | -------------------------------------------------------------------------------- /apps/servicemesh/src/scss/vuetify/_dark.scss: -------------------------------------------------------------------------------- 1 | .v-application { 2 | &.theme--dark { 3 | .border-left { 4 | border-left: 1px solid rgba(255, 255, 255, 0.12); 5 | } 6 | 7 | .border-right { 8 | border-right: 1px solid rgba(255, 255, 255, 0.12); 9 | } 10 | 11 | .border { 12 | border: 1px solid rgba(255, 255, 255, 0.12); 13 | } 14 | 15 | .todo-cards .v-card { 16 | background: #255c63; 17 | } 18 | 19 | .progress-cards .v-card { 20 | background: #1e374e; 21 | } 22 | 23 | // input color 24 | .v-text-field > .v-input__control > .v-input__slot::before, 25 | .v-text-field:not(.v-input--has-state):hover > .v-input__control > .v-input__slot::before { 26 | border-color: rgba(255, 255, 255, 0.12); 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /apps/servicemesh/src/scss/vuetify/overrides.scss: -------------------------------------------------------------------------------- 1 | @import 'card'; 2 | @import 'layout'; 3 | @import 'sidebar'; 4 | @import 'v-bar'; 5 | @import 'loader'; 6 | // Theme - Dark 7 | 8 | @import 'dark'; 9 | 10 | // Theme - rtl 11 | 12 | @import 'rtl'; 13 | -------------------------------------------------------------------------------- /apps/servicemesh/src/shims-vue.d.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2022 The kubegems.io Authors 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | declare module '*.vue' { 17 | import Vue from 'vue'; 18 | export default Vue; 19 | } 20 | -------------------------------------------------------------------------------- /apps/servicemesh/src/views/microservice/components/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/servicemesh/src/views/microservice/dnsdomain/i18n/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "DNS", 4 | "creator": "Created By" 5 | }, 6 | "filter": { 7 | "dns_name": "DNS" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /apps/servicemesh/src/views/microservice/dnsdomain/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/servicemesh/src/views/microservice/dnsdomain/i18n/ja.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "DNS", 4 | "creator": "作成者" 5 | }, 6 | "filter": { 7 | "dns_name": "DNS" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /apps/servicemesh/src/views/microservice/dnsdomain/i18n/zh-Hans.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "DNS", 4 | "creator": "创建人" 5 | }, 6 | "filter": { 7 | "dns_name": "DNS" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /apps/servicemesh/src/views/microservice/dnsdomain/i18n/zh-Hant.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "DNS", 4 | "creator": "創建人" 5 | }, 6 | "filter": { 7 | "dns_name": "DNS" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /apps/servicemesh/src/views/microservice/istio/authorization_policy/i18n/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "Policy Name", 4 | "rule_count": "Rule Count" 5 | }, 6 | "filter": { 7 | "policy_name": "Policy Name" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /apps/servicemesh/src/views/microservice/istio/authorization_policy/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/servicemesh/src/views/microservice/istio/authorization_policy/i18n/ja.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "ポリシー名", 4 | "rule_count": "ルール数" 5 | }, 6 | "filter": { 7 | "policy_name": "ポリシー名" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /apps/servicemesh/src/views/microservice/istio/authorization_policy/i18n/zh-Hans.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "策略名称", 4 | "rule_count": "规则数量" 5 | }, 6 | "filter": { 7 | "policy_name": "策略名称" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /apps/servicemesh/src/views/microservice/istio/authorization_policy/i18n/zh-Hant.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "策略名稱", 4 | "rule_count": "規則數量" 5 | }, 6 | "filter": { 7 | "policy_name": "策略名稱" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /apps/servicemesh/src/views/microservice/istio/gateway/i18n/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "Gateway Name", 4 | "selector": "Match Tags" 5 | }, 6 | "filter": { 7 | "gateway_name": "Gateway Name" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /apps/servicemesh/src/views/microservice/istio/gateway/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/servicemesh/src/views/microservice/istio/gateway/i18n/ja.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "ゲートウェイ名", 4 | "selector": "一致するタグ" 5 | }, 6 | "filter": { 7 | "gateway_name": "ゲートウェイ名" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /apps/servicemesh/src/views/microservice/istio/gateway/i18n/zh-Hans.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "网关名称", 4 | "selector": "匹配标签" 5 | }, 6 | "filter": { 7 | "gateway_name": "网关名称" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /apps/servicemesh/src/views/microservice/istio/gateway/i18n/zh-Hant.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "閘道名稱", 4 | "selector": "匹配標籤" 5 | }, 6 | "filter": { 7 | "gateway_name": "閘道名稱" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /apps/servicemesh/src/views/microservice/istio/peer_authentication/i18n/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "Endpoint authentication name", 4 | "label": "Match Tags", 5 | "tls": "TLS Settings" 6 | }, 7 | "filter": { 8 | "peer_name": "Endpoint authentication name" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /apps/servicemesh/src/views/microservice/istio/peer_authentication/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/servicemesh/src/views/microservice/istio/peer_authentication/i18n/ja.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "エンドポイント認証名", 4 | "label": "一致するタグ", 5 | "tls": "TLS の設定" 6 | }, 7 | "filter": { 8 | "peer_name": "エンドポイント認証名" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /apps/servicemesh/src/views/microservice/istio/peer_authentication/i18n/zh-Hans.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "端点认证名称", 4 | "label": "匹配标签", 5 | "tls": "TLS设置" 6 | }, 7 | "filter": { 8 | "peer_name": "端点认证名称" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /apps/servicemesh/src/views/microservice/istio/peer_authentication/i18n/zh-Hant.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "端點認證名稱", 4 | "label": "匹配標籤", 5 | "tls": "TLS設置" 6 | }, 7 | "filter": { 8 | "peer_name": "端點認證名稱" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /apps/servicemesh/src/views/microservice/istio/service_entry/i18n/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "Service Entry Name", 4 | "port": "Port" 5 | }, 6 | "filter": { 7 | "entry_name": "Service Entry Name" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /apps/servicemesh/src/views/microservice/istio/service_entry/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/servicemesh/src/views/microservice/istio/service_entry/i18n/ja.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "サービスポータル名", 4 | "port": "ポート" 5 | }, 6 | "filter": { 7 | "entry_name": "サービスポータル名" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /apps/servicemesh/src/views/microservice/istio/service_entry/i18n/zh-Hans.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "服务入口名称", 4 | "port": "端口" 5 | }, 6 | "filter": { 7 | "entry_name": "服务入口名称" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /apps/servicemesh/src/views/microservice/istio/service_entry/i18n/zh-Hant.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "服務入口名稱", 4 | "port": "端口" 5 | }, 6 | "filter": { 7 | "entry_name": "服務入口名稱" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /apps/servicemesh/src/views/microservice/istio/sidecar/i18n/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "Side name", 4 | "label": "Match Tags" 5 | }, 6 | "filter": { 7 | "sidecar_name": "Side name" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /apps/servicemesh/src/views/microservice/istio/sidecar/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/servicemesh/src/views/microservice/istio/sidecar/i18n/ja.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "車両名", 4 | "label": "一致するタグ" 5 | }, 6 | "filter": { 7 | "sidecar_name": "車両名" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /apps/servicemesh/src/views/microservice/istio/sidecar/i18n/zh-Hans.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "边车名称", 4 | "label": "匹配标签" 5 | }, 6 | "filter": { 7 | "sidecar_name": "边车名称" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /apps/servicemesh/src/views/microservice/istio/sidecar/i18n/zh-Hant.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "邊車名稱", 4 | "label": "匹配標籤" 5 | }, 6 | "filter": { 7 | "sidecar_name": "邊車名稱" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /apps/servicemesh/src/views/microservice/istio_gateway/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/servicemesh/src/views/microservice/istio_gateway/i18n/ja.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "status": "状態", 4 | "pods": "ポッド", 5 | "restart_count": "再起動", 6 | "name": "注文番号による検索", 7 | "port": "ポート", 8 | "selector": "セレクタ", 9 | "host": "ホスト:" 10 | }, 11 | "filter": { 12 | "gateway_name": "ゲートウェイインスタンス名" 13 | }, 14 | "operate": { 15 | "detail": "詳細" 16 | }, 17 | "tab": { 18 | "gateway_resource": "ゲートウェイリソース", 19 | "virtualservice": "仮想サービス", 20 | "pods": "ゲートウェイ・ポッド", 21 | "monitor": "ゲートウェイモニター" 22 | }, 23 | "tip": { 24 | "egress_qps": "トラフィックのエクスポート中", 25 | "egress_time": "トラフィックのエクスポートの応答時間", 26 | "ingress_80_qps": "80ポートのエントリー数 qps", 27 | "ingress_80_time": "80ポートエントリーポータル応答時間", 28 | "ingress_443_qps": "443ポートのエントリー数 qps", 29 | "ingress_443_time": "443ポートエントリーポータル応答時間" 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /apps/servicemesh/src/views/microservice/istio_gateway/i18n/zh-Hans.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "status": "状态", 4 | "pods": "容器组", 5 | "restart_count": "重启次数", 6 | "name": "名称", 7 | "port": "端口", 8 | "selector": "选择器", 9 | "host": "Host" 10 | }, 11 | "filter": { 12 | "gateway_name": "网关实例名称" 13 | }, 14 | "operate": { 15 | "detail": "详情" 16 | }, 17 | "tab": { 18 | "gateway_resource": "网关资源", 19 | "virtualservice": "虚拟服务", 20 | "pods": "网关容器组", 21 | "monitor": "网关监控" 22 | }, 23 | "tip": { 24 | "egress_qps": "出口流量qps", 25 | "egress_time": "出口流量响应时间", 26 | "ingress_80_qps": "80端口入口流量qps", 27 | "ingress_80_time": "80端口入口流量响应时间", 28 | "ingress_443_qps": "443端口入口流量qps", 29 | "ingress_443_time": "443端口入口流量响应时间" 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /apps/servicemesh/src/views/microservice/istio_gateway/i18n/zh-Hant.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "status": "狀態", 4 | "pods": "容器組", 5 | "restart_count": "重啟次數", 6 | "name": "名稱", 7 | "port": "端口", 8 | "selector": "選擇器", 9 | "host": "Host" 10 | }, 11 | "filter": { 12 | "gateway_name": "閘道實例名稱" 13 | }, 14 | "operate": { 15 | "detail": "詳情" 16 | }, 17 | "tab": { 18 | "gateway_resource": "閘道資源", 19 | "virtualservice": "虛擬服務", 20 | "pods": "閘道容器組", 21 | "monitor": "閘道監控" 22 | }, 23 | "tip": { 24 | "egress_qps": "出口流量qps", 25 | "egress_time": "出口流量回應時間", 26 | "ingress_80_qps": "80端口入口流量qps", 27 | "ingress_80_time": "80端口入口流量回應時間", 28 | "ingress_443_qps": "443端口入口流量qps", 29 | "ingress_443_time": "443端口入口流量回應時間" 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /apps/servicemesh/src/views/microservice/service/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/servicemesh/src/views/microservice/virtualspace/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/servicemesh/src/views/microservice/virtualspace/i18n/ja.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "仮想スペース名", 4 | "status": "状態", 5 | "creator": "作成者", 6 | "environment_type": "環境タイプ", 7 | "remark": "メモ" 8 | }, 9 | "filter": { 10 | "mesh_name": "仮想スペース名" 11 | }, 12 | "status": { 13 | "activated": "有効", 14 | "inactivated": "非アクティブ" 15 | }, 16 | "operate": { 17 | "activate": "有効", 18 | "inactivate": "閉じる", 19 | "activate_c": "{0}をアクティベートする", 20 | "inactivate_c": "{0} を閉じました", 21 | "link_c": "{0} に接続", 22 | "delete_linked_env": "仮想スペース関連環境の削除" 23 | }, 24 | "tip": { 25 | "set_status": "仮想空間ステータスを設定", 26 | "link_environment": "環境を設定してください", 27 | "mesh_member": "仮想スペースピアが環境メンバーから引き継ぎ" 28 | }, 29 | "form": { 30 | "name": "仮想スペース名", 31 | "name_rule": "20 文字制限を超え" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /apps/servicemesh/src/views/microservice/virtualspace/i18n/zh-Hans.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "虚拟空间名称", 4 | "status": "状态", 5 | "creator": "创建人", 6 | 7 | "environment_type": "环境类型", 8 | "remark": "备注" 9 | }, 10 | "filter": { 11 | "mesh_name": "虚拟空间名称" 12 | }, 13 | "status": { 14 | "activated": "已激活", 15 | "inactivated": "未激活" 16 | }, 17 | "operate": { 18 | "activate": "激活", 19 | "inactivate": "关闭", 20 | "activate_c": "激活{0}", 21 | "inactivate_c": "关闭{0}", 22 | "link_c": "关联{0}", 23 | "delete_linked_env": "删除虚拟空间关联环境" 24 | }, 25 | "tip": { 26 | "set_status": "设置虚拟空间状态", 27 | "link_environment": "请关联环境", 28 | "mesh_member": "虚拟空间用户继承于环境成员" 29 | }, 30 | "form": { 31 | "name": "虚拟空间名称", 32 | "name_rule": "超出20字符限制" 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /apps/servicemesh/src/views/microservice/virtualspace/i18n/zh-Hant.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "虛擬空間名稱", 4 | "status": "狀態", 5 | "creator": "創建人", 6 | "environment_type": "環境類型", 7 | "remark": "備註" 8 | }, 9 | "filter": { 10 | "mesh_name": "虛擬空間名稱" 11 | }, 12 | "status": { 13 | "activated": "已啟動", 14 | "inactivated": "未啟動" 15 | }, 16 | "operate": { 17 | "activate": "啟動", 18 | "inactivate": "關閉", 19 | "activate_c": "啟動{0}", 20 | "inactivate_c": "關閉{0}", 21 | "link_c": "關聯{0}", 22 | "delete_linked_env": "刪除虛擬空間關聯環境" 23 | }, 24 | "tip": { 25 | "set_status": "設置虛擬空間狀態", 26 | "link_environment": "請關聯環境", 27 | "mesh_member": "虛擬空間用戶繼承於環境成員" 28 | }, 29 | "form": { 30 | "name": "虛擬空間名稱", 31 | "name_rule": "超出20字元限制" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /apps/servicemesh/src/views/microservice/workload/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /apps/servicemesh/src/views/microservice/workload/i18n/ja.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "負荷名", 4 | "version": "バージョン", 5 | "status": "状態", 6 | "label": "タグ", 7 | "restart_count": "再起動" 8 | }, 9 | "filter": { 10 | "workload_name": "負荷名" 11 | }, 12 | "tip": { 13 | "auto_inject": "自動的にコメントする", 14 | "realtime": "リアルタイム", 15 | "no_pod": "ポッドは存在しません" 16 | }, 17 | "operate": { 18 | "inject": "SideCar 注入", 19 | "uninject": "SideCar (インジェクション)", 20 | "inject_c": "SideCar にアプリケーション {0} を挿入する", 21 | "uninject_c": "サイドカーへのインジェクションが {0} のアプリの取外し" 22 | }, 23 | "tab": { 24 | "network_topology": "トポロジー", 25 | "log": "ログ", 26 | "ingress": "入口トラフィック", 27 | "egress": "トラフィックのエクスポート", 28 | "trace": "トラッキングリンクの設定" 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /apps/servicemesh/src/views/microservice/workload/i18n/zh-Hans.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "负载名称", 4 | "version": "版本", 5 | "status": "状态", 6 | "label": "标签", 7 | "restart_count": "重启次数" 8 | }, 9 | "filter": { 10 | "workload_name": "负载名称" 11 | }, 12 | "tip": { 13 | "auto_inject": "自动注入", 14 | "realtime": "实时", 15 | "no_pod": "不存在容器组" 16 | }, 17 | "operate": { 18 | "inject": "注入SideCar", 19 | "uninject": "取消注入SideCar", 20 | "inject_c": "为应用 {0} 注入SideCar", 21 | "uninject_c": "为应用 {0} 取消注入SideCar" 22 | }, 23 | "tab": { 24 | "network_topology": "流量拓扑", 25 | "log": "日志", 26 | "ingress": "入口流量", 27 | "egress": "出口流量", 28 | "trace": "链路追踪" 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /apps/servicemesh/src/views/microservice/workload/i18n/zh-Hant.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "負載名稱", 4 | "version": "版本", 5 | "status": "狀態", 6 | "label": "標籤", 7 | "restart_count": "重啟次數" 8 | }, 9 | "filter": { 10 | "workload_name": "負載名稱" 11 | }, 12 | "tip": { 13 | "auto_inject": "自動注入", 14 | "realtime": "即時", 15 | "no_pod": "不存在容器組" 16 | }, 17 | "operate": { 18 | "inject": "注入SideCar", 19 | "uninject": "取消注入SideCar", 20 | "inject_c": "為應用 {0} 注入SideCar", 21 | "uninject_c": "為應用 {0} 取消注入SideCar" 22 | }, 23 | "tab": { 24 | "network_topology": "流量拓撲", 25 | "log": "日誌", 26 | "ingress": "入口流量", 27 | "egress": "出口流量", 28 | "trace": "鏈路追蹤" 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /apps/servicemesh/volar.config.ts: -------------------------------------------------------------------------------- 1 | import vetur from '@volar-plugins/vetur'; 2 | 3 | module.exports = { 4 | plugins: [vetur()], 5 | }; 6 | -------------------------------------------------------------------------------- /kubegems-logo.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubegems/dashboard/f02bf419a18f34c1d42c255b3e0a9f3e5d56918a/kubegems-logo.jpeg -------------------------------------------------------------------------------- /packages/api/direct/appstore/index.ts: -------------------------------------------------------------------------------- 1 | export * from './app'; 2 | -------------------------------------------------------------------------------- /packages/api/direct/authentication/index.ts: -------------------------------------------------------------------------------- 1 | export * from './auth'; 2 | export * from './select'; 3 | -------------------------------------------------------------------------------- /packages/api/direct/authentication/select.ts: -------------------------------------------------------------------------------- 1 | import axios from 'axios'; 2 | 3 | export const userSelectData = (query: { [key: string]: any } = {}): Promise<{ [key: string]: any }> => 4 | axios(`sels/users`, { params: query }); 5 | -------------------------------------------------------------------------------- /packages/api/direct/index.ts: -------------------------------------------------------------------------------- 1 | export * from './log/index'; 2 | export * from './authentication/index'; 3 | export * from './tenant/index'; 4 | export * from './appstore/index'; 5 | export * from './resource/index'; 6 | export * from './system/index'; 7 | export * from './microservice/index'; 8 | export * from './metrics/index'; 9 | export * from './visualization/index'; 10 | export * from './integrated/index'; 11 | export * from './modelstore/index'; 12 | export * from './rule/index'; 13 | -------------------------------------------------------------------------------- /packages/api/direct/integrated/index.ts: -------------------------------------------------------------------------------- 1 | export * from './logging'; 2 | export * from './monitor'; 3 | -------------------------------------------------------------------------------- /packages/api/direct/log/history.ts: -------------------------------------------------------------------------------- 1 | import axios from 'axios'; 2 | 3 | // 日志历史列表 4 | export const getLogQueryHistoryList = ( 5 | clusterid: number, 6 | query: { [key: string]: any } = {}, 7 | ): Promise<{ [key: string]: any }> => axios(`cluster/${clusterid}/logqueryhistoryv2`, { params: query }); 8 | // 添加日志历史 9 | export const postAddLogQueryHistory = (body: { [key: string]: any } = {}): Promise<{ [key: string]: any }> => 10 | axios.post(`logqueryhistory`, body); 11 | // 删除日志历史 12 | export const deleteLogQueryHistory = (historyIdQuery: string): Promise<{ [key: string]: any }> => 13 | axios.delete(`logqueryhistory?${historyIdQuery}`); 14 | -------------------------------------------------------------------------------- /packages/api/direct/log/index.ts: -------------------------------------------------------------------------------- 1 | export * from './viewer'; 2 | export * from './history'; 3 | export * from './snapshot'; 4 | export * from './flow'; 5 | export * from './output'; 6 | export * from './alertrule'; 7 | -------------------------------------------------------------------------------- /packages/api/direct/log/snapshot.ts: -------------------------------------------------------------------------------- 1 | import axios from 'axios'; 2 | 3 | // 日志快照列表 4 | export const getLogQuerySnapshotList = ( 5 | clusterid: number, 6 | query: { [key: string]: any } = {}, 7 | ): Promise<{ [key: string]: any }> => axios(`cluster/${clusterid}/logquerysnapshot`, { params: query }); 8 | // 添加日志快照 9 | export const postAddLogQuerySnapshot = (body: { [key: string]: any } = {}): Promise<{ [key: string]: any }> => 10 | axios.post(`logquerysnapshot`, body); 11 | // 删除日志快照 12 | export const deleteLogQuerySnapshot = (snapshotid: number): Promise<{ [key: string]: any }> => 13 | axios.delete(`logquerysnapshot/${snapshotid}`); 14 | -------------------------------------------------------------------------------- /packages/api/direct/metrics/index.ts: -------------------------------------------------------------------------------- 1 | export * from './queryer'; 2 | export * from './targets'; 3 | export * from './servicemonitor'; 4 | export * from './prometheusrule'; 5 | export * from './channel'; 6 | -------------------------------------------------------------------------------- /packages/api/direct/microservice/index.ts: -------------------------------------------------------------------------------- 1 | export * from './select'; 2 | export * from './dnsdomain'; 3 | export * from './istio_gateway'; 4 | export * from './service'; 5 | export * from './virtualspace'; 6 | export * from './kiali'; 7 | export * from './workload'; 8 | export * from './destinationrule'; 9 | export * from './virtualservice'; 10 | export * from './istio_authorizationpolicy'; 11 | export * from './istio_peerauthentication'; 12 | export * from './istio_serviceentry'; 13 | export * from './istio_sidecar'; 14 | -------------------------------------------------------------------------------- /packages/api/direct/microservice/kiali.ts: -------------------------------------------------------------------------------- 1 | import axios from 'axios'; 2 | 3 | // kiali图表 4 | export const getKialiTrafficGraph = ( 5 | virtualspaceid: number, 6 | environmentid: number, 7 | namespace: string, 8 | type: string, 9 | name: string, 10 | query: { [key: string]: any } = {}, 11 | ): Promise<{ [key: string]: any }> => 12 | axios( 13 | `virtualspace/${virtualspaceid}/environment/${environmentid}/kiali/api/namespaces/${namespace}/${type}/${name}/graph`, 14 | { params: query }, 15 | ); 16 | -------------------------------------------------------------------------------- /packages/api/direct/microservice/select.ts: -------------------------------------------------------------------------------- 1 | import axios from 'axios'; 2 | 3 | export const virtualSpaceSelectData = (query: { [key: string]: any } = {}): Promise<{ [key: string]: any }> => 4 | axios(`virtualspace`, { 5 | params: Object.assign(query, { size: 1000, noprocessing: true }), 6 | }); 7 | export const virtualSpaceEnvironmentSelectData = ( 8 | virtualspaceid: number, 9 | query: { [key: string]: any } = {}, 10 | ): Promise<{ [key: string]: any }> => 11 | axios(`virtualspace/${virtualspaceid}/environment`, { 12 | params: Object.assign(query, { 13 | size: 1000, 14 | preload: 'Cluster', 15 | noprocessing: true, 16 | }), 17 | }); 18 | -------------------------------------------------------------------------------- /packages/api/direct/modelstore/index.ts: -------------------------------------------------------------------------------- 1 | export * from './model'; 2 | export * from './user'; 3 | export * from './deploy'; 4 | export * from './admin'; 5 | -------------------------------------------------------------------------------- /packages/api/direct/modelstore/user.ts: -------------------------------------------------------------------------------- 1 | import axios from 'axios'; 2 | 3 | // 模型商店管理员列表 4 | export const getModelStoreAdminList = ( 5 | source: string, 6 | query: { [key: string]: any } = {}, 7 | ): Promise<{ [key: string]: any }> => axios(`sources/${source}/admins`, { params: query }); 8 | 9 | // 删除模型商店管理员 10 | export const deleteModelStoreAdminList = (source: string, username: string): Promise<{ [key: string]: any }> => 11 | axios.delete(`sources/${source}/admins/${username}`); 12 | 13 | // 添加模型商店管理员 14 | export const postModelStoreAdminList = ( 15 | source: string, 16 | username: string, 17 | body: { [key: string]: any } = {}, 18 | ): Promise<{ [key: string]: any }> => axios.post(`sources/${source}/admins/${username}`, body); 19 | -------------------------------------------------------------------------------- /packages/api/direct/resource/apiresource.ts: -------------------------------------------------------------------------------- 1 | import axios from 'axios'; 2 | 3 | // 资源列表 4 | export const getRESTMapping = (clusterName: string, params = {}): Promise<{ [key: string]: any }> => 5 | axios(`proxy/cluster/${clusterName}/api-resources`, { params: params }); 6 | -------------------------------------------------------------------------------- /packages/api/direct/resource/event.ts: -------------------------------------------------------------------------------- 1 | import axios from 'axios'; 2 | 3 | // 事件列表 4 | export const getEventList = ( 5 | clusterName: string, 6 | namespace: string, 7 | query: { [key: string]: any } = {}, 8 | ): Promise<{ [key: string]: any }> => 9 | axios(`proxy/cluster/${clusterName}/custom/core/v1/namespaces/${namespace}/events`, { 10 | params: query, 11 | }); 12 | -------------------------------------------------------------------------------- /packages/api/direct/rule/index.ts: -------------------------------------------------------------------------------- 1 | export * from './rule'; 2 | -------------------------------------------------------------------------------- /packages/api/direct/system/audit.ts: -------------------------------------------------------------------------------- 1 | import axios from 'axios'; 2 | 3 | // 审计列表 4 | export const getAuditList = (query: { [key: string]: any } = {}): Promise<{ [key: string]: any }> => 5 | axios(`auditlog`, { 6 | params: Object.assign(query, { 7 | preload: 'Tenant', 8 | }), 9 | }); 10 | -------------------------------------------------------------------------------- /packages/api/direct/system/event.ts: -------------------------------------------------------------------------------- 1 | import axios from 'axios'; 2 | 3 | // 事件列表 4 | export const getEventListFromLoki = ( 5 | clusterName: string, 6 | query: { [key: string]: any } = {}, 7 | ): Promise<{ [key: string]: any }> => 8 | axios(`event/${clusterName}`, { 9 | params: query, 10 | }); 11 | -------------------------------------------------------------------------------- /packages/api/direct/system/index.ts: -------------------------------------------------------------------------------- 1 | export * from './audit'; 2 | export * from './event'; 3 | export * from './message'; 4 | export * from './platform'; 5 | export * from './config'; 6 | export * from './broadcast'; 7 | -------------------------------------------------------------------------------- /packages/api/direct/system/platform.ts: -------------------------------------------------------------------------------- 1 | import axios from 'axios'; 2 | 3 | // 平台版本信息 4 | export const getPlatformVersion = (query: { [key: string]: any } = {}): Promise<{ [key: string]: any }> => 5 | axios(`version`, { 6 | params: query, 7 | }); 8 | -------------------------------------------------------------------------------- /packages/api/direct/tenant/index.ts: -------------------------------------------------------------------------------- 1 | export * from './select'; 2 | export * from './tenant'; 3 | export * from './user'; 4 | export * from './resource'; 5 | -------------------------------------------------------------------------------- /packages/api/direct/visualization/alert.ts: -------------------------------------------------------------------------------- 1 | import axios from 'axios'; 2 | 3 | // 告警统计 4 | export const getAlertToday = (tenantId: number, query: { [key: string]: any } = {}): Promise<{ [key: string]: any }> => 5 | axios.get(`observability/tenant/${tenantId}/alerts/today`, { params: query }); 6 | // 告警趋势图 7 | export const getAlertGraph = (tenantId: number, query: { [key: string]: any } = {}): Promise<{ [key: string]: any }> => 8 | axios.get(`observability/tenant/${tenantId}/alerts/graph`, { params: query }); 9 | // 告警分组 10 | export const getAlertGroup = (tenantId: number, query: { [key: string]: any } = {}): Promise<{ [key: string]: any }> => 11 | axios.get(`observability/tenant/${tenantId}/alerts/group`, { params: query }); 12 | -------------------------------------------------------------------------------- /packages/api/direct/visualization/dashboard.ts: -------------------------------------------------------------------------------- 1 | import axios from 'axios'; 2 | 3 | // 环境指标统计 4 | export const getEnvironmentObservability = ( 5 | environmentId: number, 6 | query: { [key: string]: any } = {}, 7 | ): Promise<{ [key: string]: any }> => axios.get(`/environment/${environmentId}/observability`, { params: query }); 8 | -------------------------------------------------------------------------------- /packages/api/direct/visualization/index.ts: -------------------------------------------------------------------------------- 1 | export * from './dashboard'; 2 | export * from './alert'; 3 | export * from './monitor'; 4 | -------------------------------------------------------------------------------- /packages/api/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@kubegems/api", 3 | "version": "1.24.1-19ba7352", 4 | "description": "base api for kubegems", 5 | "main": "index.ts", 6 | "scripts": { 7 | "lint": "eslint ./ --ext .ts,.tsx,.vue,.js,.jsx --fix" 8 | }, 9 | "author": "kubegems", 10 | "license": "Apache-2.0", 11 | "dependencies": { 12 | "@kubegems/libs": "workspace:*", 13 | "@kubernetes/client-node": "^0.18.0", 14 | "axios": "^1.6.2", 15 | "qs": "^6.11.0" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /packages/api/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compileOnSave": true, 3 | "compilerOptions": { 4 | "module": "ES2022", 5 | "target": "ES2022", 6 | "sourceMap": true, 7 | "watch": false, 8 | "allowJs": true, 9 | "checkJs": false, 10 | "jsx": "preserve", 11 | "removeComments": true, 12 | "moduleResolution": "node", 13 | "baseUrl": "./", 14 | "outDir": "./", 15 | "resolveJsonModule": true, 16 | "allowSyntheticDefaultImports": true 17 | }, 18 | "include": ["*"], 19 | "exclude": [] 20 | } 21 | -------------------------------------------------------------------------------- /packages/api/typed/destinationrule.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2022 The kubegems.io Authors 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | -------------------------------------------------------------------------------- /packages/api/typed/istio_authorizationpolicy.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2022 The kubegems.io Authors 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | -------------------------------------------------------------------------------- /packages/api/typed/istio_gateway.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2022 The kubegems.io Authors 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | -------------------------------------------------------------------------------- /packages/api/typed/istio_peerauthentication.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2022 The kubegems.io Authors 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | -------------------------------------------------------------------------------- /packages/api/typed/istio_serviceentry.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2022 The kubegems.io Authors 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | -------------------------------------------------------------------------------- /packages/api/typed/istio_sidecar.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2022 The kubegems.io Authors 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | -------------------------------------------------------------------------------- /packages/api/typed/modelstore.ts: -------------------------------------------------------------------------------- 1 | type Parameter = { 2 | content_type: string; 3 | }; 4 | 5 | type Output = { 6 | name: string; 7 | parameters: Parameter; 8 | shape: number[]; 9 | data: string[]; 10 | }; 11 | 12 | export type InferenceResponse = { 13 | model: string; 14 | version: string; 15 | parameters: Parameter; 16 | outputs: Output[]; 17 | }; 18 | 19 | export type Conversation = { 20 | uuid: string; 21 | new_user_input: string; 22 | past_user_inputs: string[]; 23 | generated_responses: string[]; 24 | }; 25 | -------------------------------------------------------------------------------- /packages/api/typed/virtualservice.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2022 The kubegems.io Authors 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | -------------------------------------------------------------------------------- /packages/components/.eslintignore: -------------------------------------------------------------------------------- 1 | dist/* 2 | build/*.js 3 | node_modules/* 4 | BasePluginPass.vue 5 | -------------------------------------------------------------------------------- /packages/components/.stylelintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: 'stylelint-config-standard', 3 | rules: { 4 | 'color-no-invalid-hex': true, 5 | 'rule-empty-line-before': null, 6 | 'selector-pseudo-element-no-unknown': null, // 允许::v-deep样式穿透 7 | 'color-hex-length': 'long', 8 | 'color-hex-case': 'lower', 9 | 'unit-allowed-list': ['em', 'rem', '%', 's', 'px', 'vh', 'vw', 'deg', 'turn'], 10 | 'declaration-colon-newline-after': null, 11 | 'font-family-no-missing-generic-family-keyword': null, 12 | 'at-rule-no-unknown': [true, { ignoreAtRules: ['while'] }], 13 | }, 14 | }; 15 | -------------------------------------------------------------------------------- /packages/components/baseComponents/i18n/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "tip": { 3 | "cut_avatar": "Cut Avatar" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /packages/components/baseComponents/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /packages/components/baseComponents/i18n/ja.json: -------------------------------------------------------------------------------- 1 | { 2 | "tip": { 3 | "cut_avatar": "アバターのトリミング" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /packages/components/baseComponents/i18n/zh-Hans.json: -------------------------------------------------------------------------------- 1 | { 2 | "tip": { 3 | "cut_avatar": "头像裁剪" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /packages/components/baseComponents/i18n/zh-Hant.json: -------------------------------------------------------------------------------- 1 | { 2 | "tip": { 3 | "cut_avatar": "頭像裁剪" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /packages/components/index.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2022 The kubegems.io Authors 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | import '@kubegems/api/response'; 18 | 19 | const requireComponent: any = import.meta.globEager('./baseComponents/*.vue'); 20 | export default requireComponent; 21 | -------------------------------------------------------------------------------- /packages/components/logicComponents/i18n/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "tip": { 3 | "real_time": "The specific time", 4 | "datetime": "Time", 5 | "label": "Label", 6 | "annotation": "Annotation" 7 | }, 8 | "table": { 9 | "first_trigger_at": "First Time", 10 | "last_trigger_at": "Last Time", 11 | "message": "Message" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /packages/components/logicComponents/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /packages/components/logicComponents/i18n/ja.json: -------------------------------------------------------------------------------- 1 | { 2 | "tip": { 3 | "real_time": "特定の時間", 4 | "datetime": "時間", 5 | "label": "タグ", 6 | "annotation": "コメント" 7 | }, 8 | "table": { 9 | "first_trigger_at": "最初の発生時間", 10 | "last_trigger_at": "最近の回", 11 | "message": "メッセージ" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /packages/components/logicComponents/i18n/zh-Hant.json: -------------------------------------------------------------------------------- 1 | { 2 | "tip": { 3 | "real_time": "具體時間", 4 | "datetime": "時間", 5 | "label": "標籤", 6 | "annotation": "註解" 7 | }, 8 | "table": { 9 | "first_trigger_at": "首次發生時間", 10 | "last_trigger_at": "最近發生時間", 11 | "message": "消息" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /packages/components/shims-vue.d.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2022 The kubegems.io Authors 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | declare module '*.vue' { 17 | import Vue from 'vue'; 18 | export default Vue; 19 | } 20 | -------------------------------------------------------------------------------- /packages/components/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compileOnSave": true, 3 | "compilerOptions": { 4 | "module": "ES2022", 5 | "target": "ES2022", 6 | "sourceMap": true, 7 | "watch": false, 8 | "allowJs": true, 9 | "checkJs": false, 10 | "jsx": "preserve", 11 | "removeComments": true, 12 | "moduleResolution": "node", 13 | "baseUrl": "./", 14 | "outDir": "./", 15 | "paths": { 16 | "@": ["./"], 17 | "@/*": ["/*"], 18 | "src": ["./"] 19 | }, 20 | "resolveJsonModule": true, 21 | "typeRoots": ["./types"], 22 | "allowSyntheticDefaultImports": true 23 | }, 24 | "vueCompilerOptions": { 25 | "target": 2.7, 26 | "extensions": [".vue"] 27 | }, 28 | "include": ["**/*"], 29 | "exclude": ["node_modules", "logs", "dist", "vite.config.ts", "volar.config.ts", "components.d.ts"] 30 | } 31 | -------------------------------------------------------------------------------- /packages/extension/index.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2022 The kubegems.io Authors 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | export {}; 17 | -------------------------------------------------------------------------------- /packages/extension/store/index.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2022 The kubegems.io Authors 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | import * as store from './vuex/index'; 18 | 19 | export const useStore = store.useStore; 20 | export default store; 21 | -------------------------------------------------------------------------------- /packages/extension/tool/index.ts: -------------------------------------------------------------------------------- 1 | // import './guide'; 2 | import './moment'; 3 | import './sentry'; 4 | import './tracing'; 5 | import './yaml'; 6 | import _ from 'lodash'; 7 | import Vue from 'vue'; 8 | import VueClipboard from 'vue-clipboard2'; 9 | import VueMeta from 'vue-meta'; 10 | 11 | Vue.prototype.$_ = _; 12 | 13 | Vue.use(VueMeta); 14 | Vue.use(VueClipboard); 15 | -------------------------------------------------------------------------------- /packages/libs/constants/sku.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubegems/dashboard/f02bf419a18f34c1d42c255b3e0a9f3e5d56918a/packages/libs/constants/sku.ts -------------------------------------------------------------------------------- /packages/libs/index.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2022 The kubegems.io Authors 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | export {}; 17 | -------------------------------------------------------------------------------- /packages/libs/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@kubegems/libs", 3 | "version": "1.24.1-19ba7352", 4 | "description": "libs api for kubegems", 5 | "main": "index.ts", 6 | "scripts": { 7 | "lint": "eslint ./ --ext .ts,.tsx,.vue,.js,.jsx --fix" 8 | }, 9 | "author": "kubegems", 10 | "license": "Apache-2.0", 11 | "dependencies": {} 12 | } 13 | -------------------------------------------------------------------------------- /packages/libs/utils/index.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2022 The kubegems.io Authors 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | export default {}; 17 | -------------------------------------------------------------------------------- /packages/mixins/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@kubegems/mixins", 3 | "version": "1.24.2", 4 | "description": "mixin for kubegems ()", 5 | "main": "index.ts", 6 | "scripts": { 7 | "lint": "eslint ./ --ext .ts,.tsx,.vue,.js,.jsx --fix" 8 | }, 9 | "author": "kubegems", 10 | "license": "Apache-2.0", 11 | "dependencies": { 12 | "@kubegems/api": "workspace:*", 13 | "@kubegems/libs": "workspace:*", 14 | "@kubegems/extension": "workspace:*" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /packages/platform/.stylelintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: 'stylelint-config-standard', 3 | rules: { 4 | 'color-no-invalid-hex': true, 5 | 'rule-empty-line-before': null, 6 | 'selector-pseudo-element-no-unknown': null, // 允许::v-deep样式穿透 7 | 'color-hex-length': 'long', 8 | 'color-hex-case': 'lower', 9 | 'unit-allowed-list': ['em', 'rem', '%', 's', 'px', 'vh', 'vw', 'deg', 'turn'], 10 | 'declaration-colon-newline-after': null, 11 | 'font-family-no-missing-generic-family-keyword': null, 12 | 'at-rule-no-unknown': [true, { ignoreAtRules: ['while'] }], 13 | }, 14 | }; 15 | -------------------------------------------------------------------------------- /packages/platform/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "layout": { 3 | "PLATFORM": "KubeGems", 4 | "MANUAL": "https://www.kubegems.io/docs/concepts/what-is-kubegems", 5 | "LOGO_PRIMARY": "/logo-blue.svg", 6 | "LOGO_WHITE": "/logo-white.svg", 7 | "SLOGAN_CN": "更便捷的云原生管理平台", 8 | "SLOGAN_EN": "Let cloudnative management more easily" 9 | }, 10 | "theme": { 11 | "THEME_COLOR": { 12 | "primary": "#1e88e5", 13 | "info": "#1e88e5", 14 | "success": "#00BCD4", 15 | "accent": "#fc4b6c", 16 | "default": "#563dea" 17 | }, 18 | "THEME_COLOR_EXTEND": { 19 | "warning": "#fb8c00", 20 | "error": "#ff5252", 21 | "grey": "#607d8b" 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /packages/platform/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@kubegems/platform", 3 | "version": "1.24.2", 4 | "description": "platform management page for kubegems", 5 | "main": "index.ts", 6 | "scripts": { 7 | "lint": "eslint ./ --ext .ts,.tsx,.vue,.js,.jsx --fix" 8 | }, 9 | "author": "kubegems", 10 | "license": "Apache-2.0", 11 | "dependencies": { 12 | "@kubegems/api": "workspace:*", 13 | "@kubegems/components": "workspace:*", 14 | "@kubegems/extension": "workspace:*", 15 | "@kubegems/libs": "workspace:*" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /packages/platform/shims-vue.d.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2022 The kubegems.io Authors 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | declare module '*.vue' { 17 | import Vue from 'vue'; 18 | export default Vue; 19 | } 20 | -------------------------------------------------------------------------------- /packages/platform/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compileOnSave": true, 3 | "compilerOptions": { 4 | "module": "ES2022", 5 | "target": "ES2022", 6 | "sourceMap": true, 7 | "watch": false, 8 | "allowJs": true, 9 | "checkJs": false, 10 | "jsx": "preserve", 11 | "removeComments": true, 12 | "moduleResolution": "node", 13 | "baseUrl": "./", 14 | "outDir": "./", 15 | "paths": { 16 | "@": ["./"], 17 | "@/*": ["/*"], 18 | "src": ["./"] 19 | }, 20 | "resolveJsonModule": true, 21 | "typeRoots": ["./types"], 22 | "allowSyntheticDefaultImports": true 23 | }, 24 | "vueCompilerOptions": { 25 | "target": 2.7, 26 | "extensions": [".vue"] 27 | }, 28 | "include": ["**/*"], 29 | "exclude": ["node_modules", "logs", "dist", "vite.config.ts", "volar.config.ts", "components.d.ts"] 30 | } 31 | -------------------------------------------------------------------------------- /packages/platform/views/environment/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /packages/platform/views/project/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /packages/platform/views/setting/broadcast/i18n/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "type": "Type", 4 | "message": "Mesaage", 5 | "start_at": "Start Time", 6 | "end_at": "End Time", 7 | "expried": "Expried" 8 | }, 9 | "resource": { 10 | "broadcast": "Broadcast" 11 | }, 12 | "tip": { 13 | "select_datetime": "Please select detetime" 14 | }, 15 | "status": { 16 | "expried": "Expried", 17 | "active": "Active" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /packages/platform/views/setting/broadcast/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /packages/platform/views/setting/broadcast/i18n/ja.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "type": "タイプ", 4 | "message": "メッセージ", 5 | "start_at": "開始時刻", 6 | "end_at": "終了時刻", 7 | "expried": "期限切れ" 8 | }, 9 | "resource": { 10 | "broadcast": "ブロードキャスト" 11 | }, 12 | "tip": { 13 | "select_datetime": "時間を設定する" 14 | }, 15 | "status": { 16 | "expried": "期限切れ", 17 | "active": "有効" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /packages/platform/views/setting/broadcast/i18n/zh-Hans.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "type": "类型", 4 | "message": "消息", 5 | "start_at": "开始时间", 6 | "end_at": "结束时间", 7 | "expried": "过期" 8 | }, 9 | "resource": { 10 | "broadcast": "广播" 11 | }, 12 | "tip": { 13 | "select_datetime": "请选择时间" 14 | }, 15 | "status": { 16 | "expried": "已过期", 17 | "active": "激活" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /packages/platform/views/setting/broadcast/i18n/zh-Hant.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "type": "類型", 4 | "message": "消息", 5 | "start_at": "開始時間", 6 | "end_at": "結束時間", 7 | "expried": "過期" 8 | }, 9 | "resource": { 10 | "broadcast": "廣播" 11 | }, 12 | "tip": { 13 | "select_datetime": "請選擇時間" 14 | }, 15 | "status": { 16 | "expried": "已過期", 17 | "active": "啟動" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /packages/platform/views/setting/oauth/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /packages/platform/views/setting/oauth/i18n/ja.json: -------------------------------------------------------------------------------- 1 | { 2 | "operate": { 3 | "enable": "有効", 4 | "enable_c": "{0} を有効にする", 5 | "disable": "無効", 6 | "disable_c": "{0} を無効化", 7 | "config": "設定" 8 | }, 9 | "status": { 10 | "enabled": "有効" 11 | }, 12 | "tip": { 13 | "kubegems": "Kubegems の内部にデータ認証", 14 | "oauth": "OrganizationがOauth プロトコルでログインすることができます。", 15 | "openldap": "組織に Ldap プロトコルでログインできるようになります。", 16 | "gitlab": "GitLab アカウントを使用してログインできるようにします。", 17 | "github": "あなたの組織をGitHubアカウントを使用してサインインすることができます。", 18 | "tls": "tlsを開く", 19 | "config_title": "サードパーティ製の証明書の設定" 20 | }, 21 | "form": { 22 | "name": "注文番号による検索", 23 | "format_rule": "フォーマットエラー", 24 | "ladp_address": "Ldapのアドレス" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /packages/platform/views/setting/oauth/i18n/zh-Hans.json: -------------------------------------------------------------------------------- 1 | { 2 | "operate": { 3 | "enable": "启用", 4 | "enable_c": "启用{0}", 5 | "disable": "禁用", 6 | "disable_c": "禁用{0}", 7 | "config": "配置" 8 | }, 9 | "status": { 10 | "enabled": "已启用" 11 | }, 12 | "tip": { 13 | "kubegems": "Kubegems 内置的数据库认证", 14 | "oauth": "使您的组织能够使用 Oauth 协议登录", 15 | "openldap": "使您的组织能够使用 Ldap 协议登录", 16 | "gitlab": "使您的组织能够使用 GitLab 账号登录", 17 | "github": "使您的组织能够使用 GitHub 账号登录", 18 | "tls": "开启tls", 19 | "config_title": "配置第三方认证" 20 | }, 21 | "form": { 22 | "name": "名称", 23 | "format_rule": "格式错误", 24 | "ladp_address": "Ldap地址" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /packages/platform/views/setting/oauth/i18n/zh-Hant.json: -------------------------------------------------------------------------------- 1 | { 2 | "operate": { 3 | "enable": "啟用", 4 | "enable_c": "開啟{0}", 5 | "disable": "禁用", 6 | "disable_c": "關閉{0}", 7 | "config": "配置" 8 | }, 9 | "status": { 10 | "enabled": "已啟用" 11 | }, 12 | "tip": { 13 | "kubegems": "Kubegems 內置的資料庫認證", 14 | "oauth": "使您的組織能夠使用 Oauth 協議登錄", 15 | "openldap": "使您的組織能夠使用 Ldap 協議登錄", 16 | "gitlab": "使您的組織能夠使用 GitLab 帳號登錄", 17 | "github": "使您的組織能夠使用 GitHub 帳號登錄", 18 | "tls": "開啟tls", 19 | "config_title": "配置第三方認證" 20 | }, 21 | "form": { 22 | "name": "名稱", 23 | "format_rule": "格式錯誤", 24 | "ladp_address": "Ldap位址" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /packages/platform/views/tenant/role/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /packages/platform/views/tenant/role/i18n/ja.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "role": "ロール", 4 | "type": "カテゴリ", 5 | "description": "説明" 6 | }, 7 | "tip": { 8 | "system": { 9 | "admin": "ユーザーの使用は、すべてのリソース、テナント、公開", 10 | "normal": "システムレベルの権限を持っていません" 11 | }, 12 | "tenant": { 13 | "admin": "テナントの全てのリソースを管理できます。", 14 | "normal": "参加しているプロジェクトだけが見えます。" 15 | }, 16 | "project": { 17 | "admin": "プロジェクト内の全リソース操作", 18 | "dev": "開発したプロパティの環境だけを操作できます。", 19 | "test": "プロパティの環境をテストする環境だけにします。", 20 | "ops": "全ての環境を保管できます" 21 | }, 22 | "environment": { 23 | "operator": "環境下へのリソース操作", 24 | "reader": "マップ上のリソースのみ閲覧可能" 25 | }, 26 | "mesh": { 27 | "admin": "マイクロサービス仮想空間をアクション可能なリソース", 28 | "normal": "マイクロサービス仮想空間からリソースを表示" 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /packages/platform/views/tenant/role/i18n/zh-Hans.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "role": "角色", 4 | "type": "类别", 5 | "description": "描述" 6 | }, 7 | "tip": { 8 | "system": { 9 | "admin": "可以操作系统所有的资源,用户,租户", 10 | "normal": "没有任何系统级别的权限" 11 | }, 12 | "tenant": { 13 | "admin": "可以操作租户下所有资源", 14 | "normal": "只能看到自己参与的项目" 15 | }, 16 | "project": { 17 | "admin": "可以操作项目下的所有资源", 18 | "dev": "仅可以操作研发属性的环境", 19 | "test": "仅可以操作测试属性的环境", 20 | "ops": "可以操作所有环境" 21 | }, 22 | "environment": { 23 | "operator": "可以操作环境下的资源", 24 | "reader": "只可以查看环境下的资源" 25 | }, 26 | "mesh": { 27 | "admin": "可以操作微服务虚拟空间下的资源", 28 | "normal": "查看微服务虚拟空间下的资源" 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /packages/platform/views/tenant/role/i18n/zh-Hant.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "role": "角色", 4 | "type": "類別", 5 | "description": "描述" 6 | }, 7 | "tip": { 8 | "system": { 9 | "admin": "可以操作系統所有的資源,使用者,租戶", 10 | "normal": "沒有任何系統級別的許可權" 11 | }, 12 | "tenant": { 13 | "admin": "可以操作租戶下所有資源", 14 | "normal": "只能看到自己參與的專案" 15 | }, 16 | "project": { 17 | "admin": "可以操作專案下的所有資源", 18 | "dev": "僅可以操作研發屬性的環境", 19 | "test": "僅可以操作測試屬性的環境", 20 | "ops": "可以操作所有環境" 21 | }, 22 | "environment": { 23 | "operator": "可以操作環境下的資源", 24 | "reader": "只可以查看環境下的資源" 25 | }, 26 | "mesh": { 27 | "admin": "可以操作微服務虛擬空間下的資源", 28 | "normal": "查看微服務虛擬空間下的資源" 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /packages/platform/views/tenant/tenant/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /packages/platform/views/tenant/user/i18n/index.ts: -------------------------------------------------------------------------------- 1 | import { useStore } from '@kubegems/extension/store'; 2 | import VueI18n from 'vue-i18n'; 3 | 4 | import * as en from './en.json'; 5 | import * as ja from './ja.json'; 6 | import * as zhHans from './zh-Hans.json'; 7 | import * as zhHant from './zh-Hant.json'; 8 | 9 | const store = useStore(); 10 | 11 | const i18n = new VueI18n({ 12 | locale: store.state.Locale, 13 | fallbackLocale: store.state.Locale, 14 | messages: { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }, 15 | }); 16 | 17 | export const useI18n = () => i18n; 18 | 19 | export default { 'zh-Hans': zhHans, en: en, ja: ja, 'zh-Hant': zhHant }; 20 | -------------------------------------------------------------------------------- /packages/platform/views/tenant/user/i18n/ja.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "注文番号による検索", 4 | "status": "状態", 5 | "email": "メール", 6 | "mobile": "携帯電話", 7 | "role": "ロール", 8 | "last_login_at": "最近のサインイン順", 9 | "registe_at": "登録日" 10 | }, 11 | "filter": { 12 | "username_or_email": "ユーザー名またはEメール" 13 | }, 14 | "operate": { 15 | "role": "ロール", 16 | "reset_pwd": "パスワードをリセット" 17 | }, 18 | "status": { 19 | "enabled": "有効", 20 | "disabled": "無効" 21 | }, 22 | "tip": { 23 | "role_title": "ユーザーシステムロール", 24 | "passwd_title": "使用者パスワードの再設定", 25 | "random_passwd": "ランダムパスワードを生成する" 26 | }, 27 | "resource": { 28 | "password": "パスワード" 29 | }, 30 | "form": { 31 | "new_passwd": "新しいパスワード", 32 | "username": "ユーザー名", 33 | "passwd": "パスワード", 34 | "email": "メール" 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /packages/platform/views/tenant/user/i18n/zh-Hans.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "名称", 4 | "status": "状态", 5 | "email": "邮箱", 6 | "mobile": "手机号", 7 | "role": "角色", 8 | "last_login_at": "最近登录", 9 | "registe_at": "注册时间" 10 | }, 11 | "filter": { 12 | "username_or_email": "用户名或邮箱" 13 | }, 14 | "operate": { 15 | "role": "角色", 16 | "reset_pwd": "重设密码" 17 | }, 18 | "status": { 19 | "enabled": "启用", 20 | "disabled": "禁用" 21 | }, 22 | "tip": { 23 | "role_title": "用户系统角色", 24 | "passwd_title": "重设用户密码", 25 | "random_passwd": "生成随机密码" 26 | }, 27 | "resource": { 28 | "password": "密码" 29 | }, 30 | "form": { 31 | "new_passwd": "新密码", 32 | "username": "用户名", 33 | "passwd": "密码", 34 | "email": "邮箱" 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /packages/platform/views/tenant/user/i18n/zh-Hant.json: -------------------------------------------------------------------------------- 1 | { 2 | "table": { 3 | "name": "名稱", 4 | "status": "狀態", 5 | "email": "郵箱", 6 | "mobile": "手機號", 7 | "role": "角色", 8 | "last_login_at": "最近登錄", 9 | "registe_at": "註冊時間" 10 | }, 11 | "filter": { 12 | "username_or_email": "使用者名或郵箱" 13 | }, 14 | "operate": { 15 | "role": "角色", 16 | "reset_pwd": "重設密碼" 17 | }, 18 | "status": { 19 | "enabled": "啟用", 20 | "disabled": "禁用" 21 | }, 22 | "tip": { 23 | "role_title": "用戶系統角色", 24 | "passwd_title": "重設用戶密碼", 25 | "random_passwd": "生成隨機密碼" 26 | }, 27 | "resource": { 28 | "password": "密碼" 29 | }, 30 | "form": { 31 | "new_passwd": "新密碼", 32 | "username": "使用者名", 33 | "passwd": "密碼", 34 | "email": "郵箱" 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /pnpm-workspace.yaml: -------------------------------------------------------------------------------- 1 | packages: 2 | - 'packages/**' 3 | - 'apps/**' 4 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compileOnSave": true, 3 | "compilerOptions": { 4 | "module": "ES2022", 5 | "target": "ES2022", 6 | "sourceMap": true, 7 | "watch": false, 8 | "allowJs": true, 9 | "checkJs": false, 10 | "types": ["vite/client"], 11 | "jsx": "preserve", 12 | "removeComments": true, 13 | "moduleResolution": "node", 14 | "baseUrl": "./", 15 | "outDir": "./", 16 | "resolveJsonModule": true, 17 | "typeRoots": ["./types"], 18 | "allowSyntheticDefaultImports": true 19 | }, 20 | "vueCompilerOptions": { 21 | "target": 2.7, 22 | "extensions": [".vue"] 23 | }, 24 | "include": ["packages/**/*", "packages/extension/store/vuex/modules/status/.ts"], 25 | "exclude": ["node_modules", "logs", "dist", "vite.config.ts", "volar.config.ts", "components.d.ts"] 26 | } 27 | -------------------------------------------------------------------------------- /volar.config.ts: -------------------------------------------------------------------------------- 1 | import vetur from '@volar-plugins/vetur'; 2 | 3 | module.exports = { 4 | plugins: [vetur()], 5 | }; 6 | --------------------------------------------------------------------------------