dashboard-shell-shell 3.0.5-test.2 → 3.0.5-test.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. package/assets/icons/iconfont.css +4 -1
  2. package/assets/images/pl/dark/logo.png +0 -0
  3. package/assets/styles/all.scss +3 -1
  4. package/assets/styles/base/_variables.scss +5 -5
  5. package/assets/styles/global/_button.scss +8 -8
  6. package/assets/styles/global/_select.scss +1 -1
  7. package/assets/styles/global/_tooltip.scss +9 -5
  8. package/assets/styles/themes/_light.scss +3 -1
  9. package/assets/styles/vendor/vue-select.scss +2 -1
  10. package/assets/translations/zh-hans.yaml +140 -11
  11. package/components/ActionDropdown.vue +1 -1
  12. package/components/ButtonDropdown.vue +3 -1
  13. package/components/CodeMirror.vue +6 -4
  14. package/components/ContainerResourceLimit.vue +2 -2
  15. package/components/CopyToClipboard.vue +15 -0
  16. package/components/Drawer/Chrome.vue +2 -2
  17. package/components/Drawer/ResourceDetailDrawer/ConfigTab.vue +30 -27
  18. package/components/Drawer/ResourceDetailDrawer/YamlTab.vue +1 -1
  19. package/components/Drawer/ResourceDetailDrawer/index.vue +5 -4
  20. package/components/ExplorerMembers.vue +28 -4
  21. package/components/GlobalRoleBindings.vue +48 -112
  22. package/components/PodSecurityAdmission.vue +1 -1
  23. package/components/Resource/Detail/Metadata/IdentifyingInformation/index.vue +1 -3
  24. package/components/Resource/Detail/Metadata/KeyValue.vue +8 -4
  25. package/components/Resource/Detail/Metadata/index.vue +3 -1
  26. package/components/Resource/Detail/TitleBar/Title.vue +4 -3
  27. package/components/Resource/Detail/TitleBar/Top.vue +2 -0
  28. package/components/Resource/Detail/TitleBar/composables.ts +16 -1
  29. package/components/Resource/Detail/TitleBar/index.vue +113 -25
  30. package/components/ResourceDetail/Masthead/index.vue +1 -1
  31. package/components/ResourceDetail/Masthead/latest.vue +1 -1
  32. package/components/ResourceDetail/Masthead/legacy.vue +236 -165
  33. package/components/ResourceDetail/legacy.vue +44 -28
  34. package/components/ResourceList/Masthead.vue +11 -15
  35. package/components/SideNav.vue +1 -1
  36. package/components/SortableTable/index.vue +9 -4
  37. package/components/Tabbed/index.vue +6 -1
  38. package/components/auth/Principal.vue +42 -13
  39. package/components/auth/RoleDetailEdit.vue +11 -7
  40. package/components/breadcrumb/index.vue +124 -0
  41. package/components/form/ArrayList.vue +164 -147
  42. package/components/form/ArrayListGrouped.vue +3 -1
  43. package/components/form/ChangePassword.vue +1 -1
  44. package/components/form/Command.vue +4 -5
  45. package/components/form/Footer.vue +1 -0
  46. package/components/form/HealthCheck.vue +0 -2
  47. package/components/form/HookOption.vue +87 -58
  48. package/components/form/InputWithSelect.vue +8 -7
  49. package/components/form/KeyValue.vue +20 -2
  50. package/components/form/LabeledSelect.vue +6 -3
  51. package/components/form/Labels.vue +2 -2
  52. package/components/form/MatchExpressions.vue +3 -4
  53. package/components/form/Members/ClusterMembershipEditor.vue +1 -1
  54. package/components/form/Members/ClusterPermissionsEditor.vue +5 -5
  55. package/components/form/Members/MembershipEditor.vue +2 -2
  56. package/components/form/NameNsDescription.vue +1 -1
  57. package/components/form/Networking.vue +6 -9
  58. package/components/form/NodeAffinity.vue +29 -28
  59. package/components/form/PodAffinity.vue +23 -23
  60. package/components/form/Probe.vue +15 -11
  61. package/components/form/ResourceQuota/Namespace.vue +4 -4
  62. package/components/form/ResourceQuota/NamespaceRow.vue +11 -9
  63. package/components/form/ResourceQuota/Project.vue +4 -4
  64. package/components/form/ResourceQuota/ProjectRow.vue +36 -30
  65. package/components/form/ResourceSelector.vue +1 -1
  66. package/components/form/Security.vue +1 -3
  67. package/components/form/Select.vue +6 -1
  68. package/components/form/ServiceNameSelect.vue +2 -5
  69. package/components/form/ServicePorts.vue +149 -75
  70. package/components/form/Taints.vue +2 -1
  71. package/components/form/Tolerations.vue +12 -9
  72. package/components/form/ValueFromResource.vue +110 -96
  73. package/components/form/WorkloadPorts.vue +143 -123
  74. package/components/nav/Header.vue +3 -4
  75. package/components/nav/NamespaceFilter.vue +15 -21
  76. package/components/nav/TopLevelMenu.vue +99 -125
  77. package/components/nav/Type.vue +3 -3
  78. package/config/product/explorer.js +4 -1
  79. package/config/router/navigation-guards/index.js +52 -3
  80. package/detail/node.vue +28 -23
  81. package/dialog/AddCustomBadgeDialog.vue +17 -9
  82. package/edit/autoscaling.horizontalpodautoscaler/external-metric.vue +1 -1
  83. package/edit/autoscaling.horizontalpodautoscaler/hpa-scaling-rule.vue +9 -6
  84. package/edit/autoscaling.horizontalpodautoscaler/index.vue +3 -1
  85. package/edit/autoscaling.horizontalpodautoscaler/metric-identifier.vue +2 -2
  86. package/edit/autoscaling.horizontalpodautoscaler/metric-object-reference.vue +7 -5
  87. package/edit/autoscaling.horizontalpodautoscaler/metric-target.vue +5 -3
  88. package/edit/autoscaling.horizontalpodautoscaler/metrics-row.vue +2 -2
  89. package/edit/autoscaling.horizontalpodautoscaler/object-metric.vue +2 -2
  90. package/edit/autoscaling.horizontalpodautoscaler/pod-metric.vue +1 -1
  91. package/edit/autoscaling.horizontalpodautoscaler/resource-metric.vue +2 -2
  92. package/edit/networking.k8s.io.ingress/Certificate.vue +7 -5
  93. package/edit/networking.k8s.io.ingress/DefaultBackend.vue +2 -2
  94. package/edit/networking.k8s.io.ingress/Rule.vue +5 -11
  95. package/edit/networking.k8s.io.ingress/RulePath.vue +105 -96
  96. package/edit/networking.k8s.io.networkpolicy/PolicyRule.vue +3 -3
  97. package/edit/networking.k8s.io.networkpolicy/PolicyRulePort.vue +4 -2
  98. package/edit/networking.k8s.io.networkpolicy/PolicyRuleTarget.vue +12 -11
  99. package/edit/networking.k8s.io.networkpolicy/index.vue +1 -1
  100. package/edit/persistentvolume/index.vue +3 -1
  101. package/edit/persistentvolumeclaim.vue +2 -0
  102. package/edit/secret/index.vue +2 -2
  103. package/edit/service.vue +4 -1
  104. package/edit/storage.k8s.io.storageclass/index.vue +10 -8
  105. package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/aws-ebs.vue +34 -27
  106. package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/gce-pd.vue +15 -13
  107. package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/vsphere-volume.vue +41 -39
  108. package/edit/workload/Job.vue +31 -34
  109. package/edit/workload/Upgrading.vue +5 -5
  110. package/edit/workload/index.vue +21 -17
  111. package/edit/workload/storage/Mount.vue +1 -0
  112. package/edit/workload/storage/awsElasticBlockStore.vue +9 -7
  113. package/edit/workload/storage/azureDisk.vue +14 -10
  114. package/edit/workload/storage/azureFile.vue +9 -7
  115. package/edit/workload/storage/csi/index.vue +6 -9
  116. package/edit/workload/storage/emptyDir.vue +7 -5
  117. package/edit/workload/storage/gcePersistentDisk.vue +9 -7
  118. package/edit/workload/storage/hostPath.vue +7 -5
  119. package/edit/workload/storage/nfs.vue +8 -6
  120. package/edit/workload/storage/persistentVolumeClaim/index.vue +12 -10
  121. package/edit/workload/storage/persistentVolumeClaim/persistentvolumeclaim.vue +20 -15
  122. package/edit/workload/storage/secret.vue +9 -6
  123. package/edit/workload/storage/vsphereVolume.vue +11 -7
  124. package/initialize/app-extended.js +7 -1
  125. package/package.json +1 -1
  126. package/pages/account/index.vue +95 -115
  127. package/pages/auth/setup.vue +35 -16
  128. package/pages/c/_cluster/auth/roles/index.vue +38 -5
  129. package/pages/c/_cluster/explorer/ConfigBadge.vue +1 -1
  130. package/pages/c/_cluster/explorer/tools/index.vue +6 -6
  131. package/pages/home.vue +3 -4
  132. package/pkg/tsconfig.json +9 -9
  133. package/pkg/vue.config.js +1 -1
  134. package/plugins/dashboard-store/resource-class.js +28 -27
  135. package/rancher-components/BadgeState/BadgeState.vue +33 -52
  136. package/rancher-components/Banner/Banner.vue +6 -3
  137. package/rancher-components/LabeledTooltip/LabeledTooltip.vue +31 -2
  138. package/rancher-components/RcDropdown/RcDropdownMenu.vue +8 -7
  139. package/scripts/publish-shell.sh +1 -1
  140. package/store/i18n.js +4 -0
  141. package/store/type-map.js +1 -1
  142. package/types/shell/index.d.ts +4 -30
  143. package/utils/error.js +3 -1
  144. package/utils/errorTranslate.json +247 -2
  145. package/vue.config.js +1 -1
@@ -213,4 +213,7 @@ src: url('iconfont.woff2?t=1753758703852') format('woff2'),
213
213
  }
214
214
  .icon-mingming:before {
215
215
  content: "\e62c";
216
- }
216
+ }
217
+ .icon-default:before {
218
+ content: "\e61c";
219
+ }
Binary file
@@ -56,7 +56,9 @@ ul{
56
56
  }
57
57
 
58
58
  :deep() .vs__actions:after {
59
- padding-top: 10px;
59
+ // padding-top: 10px;
60
+ display: flex;
61
+ align-items: center;
60
62
  }
61
63
  .TEXTAREA{
62
64
  border: solid var(--border-width) var(--input-border);
@@ -12,8 +12,8 @@ $unlabeled-input-height: 40px;
12
12
  $unlabaled-select-padding: 3px 0;
13
13
  $footer-height: 60px;
14
14
 
15
- $input-height: 32px;
16
- $unlabeled-input-height: 32px;
15
+ $input-height: 30px;
16
+ $unlabeled-input-height: 30px;
17
17
  $input-width: 400px;
18
18
 
19
19
 
@@ -39,13 +39,13 @@ $z-indexes: (
39
39
  // ---- Boundary for central content (in `<main>`)
40
40
 
41
41
  // This covers both relative and content modes of the loading indicator
42
- loading: 12,
42
+ loading: 16,
43
43
 
44
44
  // Users can click on shell in header and show shell even with most loading indicators showing,
45
45
  // so add it above them
46
- windowsManager: 13,
46
+ windowsManager: 17,
47
47
 
48
- mainHeader: 14,
48
+ mainHeader: 18,
49
49
 
50
50
  cruFooter: 19,
51
51
 
@@ -120,7 +120,7 @@ button,
120
120
  line-height: $btn-sm-height - 2px;
121
121
 
122
122
  &:focus, &.focused {
123
- border: 0;
123
+ // border: 0;
124
124
  }
125
125
  }
126
126
  }
@@ -169,13 +169,13 @@ button,
169
169
  }
170
170
 
171
171
  .role-multi-action {
172
- // background: var(--accent-btn);
173
- // border: solid thin var(--primary);
174
- color: var(--primary) !important;
175
- border-radius: 2px;
176
- min-width: 32px;
177
- height: 32px;
178
- width: 32px;
172
+ background-color: rgba(0,0,0,0);
173
+ border: solid thin var(--primary);
174
+ color: var(--primary) !important;
175
+ border-radius: 2px;
176
+ min-width: 32px;
177
+ height: 32px;
178
+ width: 32px;
179
179
  }
180
180
 
181
181
  .icon-group i {
@@ -56,7 +56,7 @@
56
56
 
57
57
  .vs__dropdown-toggle{
58
58
  border: solid var(--border-width) var(--input-border);
59
- height: 32px;
59
+ // height: 30px;
60
60
  }
61
61
  // .vs__dropdown-toggle,
62
62
  .vs__dropdown-toggle > * {
@@ -11,7 +11,7 @@
11
11
  background: var(--tooltip-bg);
12
12
  box-shadow: 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);
13
13
  color: var(--tooltip-text);
14
- border-radius: 4px;
14
+ border-radius: 2px;
15
15
  padding: 8px;
16
16
  }
17
17
 
@@ -123,14 +123,14 @@
123
123
  .v-popper__popper {
124
124
  $color: var(--popover-bg);
125
125
  border: 1px solid var(--border);
126
- border-radius: var(--border-radius-lg);
126
+ border-radius: 2px;
127
127
 
128
128
  .v-popper__inner {
129
- border-radius: 4px;
129
+ border-radius: 2px;
130
130
  background: $color;
131
131
  color: var(--popover-text);
132
132
  padding: 10px;
133
- border-radius: var(--border-radius-lg);
133
+ border-radius: 0px;
134
134
  border: none;
135
135
 
136
136
  a {
@@ -147,7 +147,7 @@
147
147
  }
148
148
 
149
149
  .v-popper__popper.v-popper--theme-dropdown {
150
- border-radius: 4px;
150
+ border-radius: 0px;
151
151
  z-index: z-index('tooltip');
152
152
  border: 1px solid #d9d9d9 !important;
153
153
 
@@ -157,6 +157,10 @@
157
157
  }
158
158
  }
159
159
  }
160
+ .v-popper__popper .v-popper__arrow-container {
161
+ display: none;
162
+ }
163
+
160
164
 
161
165
  .v-popper {
162
166
  display: inline;
@@ -8,6 +8,8 @@ $darker : #333;
8
8
  //light disabled
9
9
  $dark : #ffffff;
10
10
 
11
+ $scroll_dark: #8b8b8b;
12
+
11
13
  //light border and buttons
12
14
  $medium : #d7d7d7;
13
15
 
@@ -364,7 +366,7 @@ BODY, .theme-light {
364
366
 
365
367
  --body-bg : #{$lightest};
366
368
  --body-text : #{$darkest};
367
- --scrollbar-thumb : #{$dark};
369
+ --scrollbar-thumb : #{$scroll_dark};
368
370
  --scrollbar-thumb-dropdown : #{$lighter};
369
371
  --scrollbar-track : transparent;
370
372
 
@@ -159,9 +159,10 @@
159
159
  content: $icon-chevron-down;
160
160
  font-family: 'icons';
161
161
  height: 32px;
162
- padding-top: 8px;
163
162
  color: var(--secondary);
164
163
  margin-right: 9px;
164
+ display: flex;
165
+ align-items: center;
165
166
  }
166
167
  }
167
168
 
@@ -111,6 +111,8 @@ generic:
111
111
  =1 {匹配 {total, number} 个中的 1 个:"{sample}"}
112
112
  other {匹配 {total, number} 中的 {matched, number} 个,包括 "{sample}"}
113
113
  }
114
+ ariaLabel:
115
+ genericAddRow: 添加
114
116
 
115
117
  graph:
116
118
  loading: 正在加载 Chart 数据...
@@ -216,7 +218,7 @@ product:
216
218
  backup: Rancher 备份
217
219
  cis: CIS Benchmark
218
220
  ecm: Cluster Manager
219
- explorer: 集群浏览器
221
+ explorer: 控制台
220
222
  fleet: 持续交付
221
223
  longhorn: Longhorn
222
224
  manager: 集群管理
@@ -593,6 +595,9 @@ assignTo:
593
595
  workspace: 工作空间
594
596
 
595
597
  stateLabel:
598
+ Pending migration: 待迁移
599
+ VM error: 错误
600
+ Locked: 锁定
596
601
  Bound: 已绑定
597
602
  Running: 运行中
598
603
  Off: 关闭
@@ -671,7 +676,7 @@ buttonLabel:
671
676
  Errors:
672
677
  changePassword:
673
678
  Password must be at least 12 characters: 密码至少为12个字符
674
- invalid current password: 当前的密码输入错误
679
+ "invalid current password": 当前的密码输入错误
675
680
 
676
681
 
677
682
  asyncButton:
@@ -2573,7 +2578,7 @@ ingress:
2573
2578
  required: 目标服务是必填的
2574
2579
  warning: "警告:默认后端将全局用于整个集群"
2575
2580
  ingressClass:
2576
- label: IngressClass
2581
+ label: Ingress类
2577
2582
  rules:
2578
2583
  addPath: 添加路径
2579
2584
  addRule: 添加规则
@@ -2914,7 +2919,7 @@ logging:
2914
2919
  default: /run/log/journal
2915
2920
  elasticsearch:
2916
2921
  host: 主机
2917
- scheme: Scheme
2922
+ scheme: 协议
2918
2923
  port: 端口
2919
2924
  indexName: 索引名称
2920
2925
  user: 用户名
@@ -3170,7 +3175,7 @@ login:
3170
3175
  label: 记住用户名
3171
3176
 
3172
3177
  logout:
3173
- message: 正在退出登陆...
3178
+ message: 正在退出登录...
3174
3179
 
3175
3180
  managementNode:
3176
3181
  customName: 自定义名称
@@ -5642,6 +5647,7 @@ tableHeaders:
5642
5647
  volume: 卷
5643
5648
  volumeMode: 卷模式
5644
5649
  weight: 权重
5650
+ action: 操作
5645
5651
  target:
5646
5652
  router:
5647
5653
  label: 路由
@@ -5935,7 +5941,9 @@ workload:
5935
5941
  exec: 容器内运行的命令以 0 状态退出
5936
5942
  image: 容器镜像
5937
5943
  imagePullPolicy: 镜像拉取策略
5938
- imagePullSecrets: 拉取密文
5944
+ imagePullSecrets:
5945
+ label: 镜像拉取密钥
5946
+ tooltip: 必须为 kubernetes.io/dockercfg 或 kubernetes.io/dockerconfigjson 类型
5939
5947
  init: 初始化容器
5940
5948
  lifecycleHook:
5941
5949
  postStart:
@@ -5963,7 +5971,7 @@ workload:
5963
5971
  label: 端口
5964
5972
  placeholder: 例如:3000
5965
5973
  scheme:
5966
- label: Scheme
5974
+ label: 协议
5967
5975
  placeholder: 例如:HTTP
5968
5976
  httpHeaders:
5969
5977
  title: HTTP 头部
@@ -6014,7 +6022,7 @@ workload:
6014
6022
  hostPID: 使用主机 PID 资源组
6015
6023
  podFsGroup: Pod 文件系统组
6016
6024
  privileged:
6017
- label: Privileged
6025
+ label: 特权模式
6018
6026
  'false': 否
6019
6027
  'true': "是:容器可以完全访问主机"
6020
6028
  readOnlyRootFilesystem:
@@ -6161,7 +6169,7 @@ workload:
6161
6169
  replicas: 副本数量
6162
6170
  showTabs: '显示高级选项'
6163
6171
  scheduling:
6164
- activeDeadlineSeconds: 判定 Pod 是否活跃的截止时间
6172
+ activeDeadlineSeconds: 判定Pod是否活跃的截止时间
6165
6173
  activeDeadlineSecondsTip: 系统将 Pod 判定为失败,并终止其关联容器前的等待时长
6166
6174
  affinity:
6167
6175
  addNodeSelector: 添加节点选择器
@@ -6331,7 +6339,7 @@ workload:
6331
6339
  pod: Pod 是你可以在 Kubernetes 中创建和管理的最小可部署计算单元。Pod 是一个或多个容器,具有共享的存储和网络资源以及运行容器的规范。
6332
6340
  upgrading:
6333
6341
  activeDeadlineSeconds:
6334
- label: 判定 Pod 是否活跃的截止时间
6342
+ label: 判定Pod是否活跃的截止时间
6335
6343
  tip: 系统将 Pod 判定为失败,并终止其关联容器前的等待时长
6336
6344
  concurrencyPolicy:
6337
6345
  label: 并发
@@ -6482,7 +6490,7 @@ typeDescription:
6482
6490
  kubevirt.io.virtualmachine: 云虚拟机是一种安全可靠、弹性可伸缩的云计算服务器,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。
6483
6491
  harvesterhci.io.volume: 虚拟磁盘具有高性能和低时延的特点,支持随机读写,可以像使用物理硬盘一样,在虚拟机上进行格式化并建立文件系统来使用块存储。
6484
6492
  harvesterhci.io.volumesnapshot: 虚拟磁盘快照功能通过捕获虚拟磁盘在特定时间点的状态,生成增量副本,支持快速回滚磁盘状态,为测试验证、容灾恢复提供高效解决方案
6485
- harvesterhci.io.virtualmachinebackup: 虚拟机备份功能通过创建包含磁盘数据、配置信息的完整副本,支持跨环境恢复及长期数据保护,为系统故障或灾难提供可靠容灾方案。
6493
+ harvesterhci.io.virtualmachinebackup: 虚拟机备份恢复功能通过创建包含磁盘数据、配置信息的完整副本,支持跨环境恢复及长期数据保护,为系统故障或灾难提供可靠容灾方案。
6486
6494
  harvesterhci.io.schedulevmbackup: 虚拟机备份策略功能通过创建定时任务,对虚拟机进行完整备份或增量快照,为用户提供自动化的数据备份和容灾方案。
6487
6495
  harvesterhci.io.vmsnapshot: 虚拟机快照功能通过捕获特定时间点的系统状态,支持快速恢复虚拟机状态,为数据备份与系统调试提供灵活解决方案。
6488
6496
  harvesterhci.io.keypair: SSH密钥对是一种安全便捷的登录认证方式,您可以实现免密码远程登录,并在无需人工干预的情况下进行安全的自动化操作,实现服务器配置和应用程序部署的自动化。
@@ -6509,7 +6517,32 @@ typeDescription:
6509
6517
  management.cattle.io.setting: 统一配置平台基础选项与全局设置,支持CA证书、密码规则、域名、Token时效等核心配置。
6510
6518
  management.cattle.io.user: 用于管理用户账号,支持创建、维护用户信息,可设置用户权限、管理密码等,保障系统资源仅由授权用户访问,提升系统安全性。
6511
6519
  harvesterhci.io.management.cluster: 提供虚拟化集群的实时健康状态监控、版本号管理及资源负载管理,支持批量导入/删除集群、配置调优与权限分级功能,实现高效运维管控。
6520
+ projectsnamespaces: 项目/资源组是用于在集群内实现资源隔离和多租户管理的基本单元。通过项目可以对一组命名空间及相关资源进行统一的权限、配额和策略管理。
6521
+ members: 集群和项目成员管理页面用于配置用户和用户组对资源的访问权限。通过角色绑定(RBAC)来控制成员在集群或项目范围内的操作权限,实现安全的协同管理。
6522
+ event: 事件记录了 Kubernetes 资源(如 Pod、节点等)的状态变化、错误信息和生命周期事件。通过查看事件可以快速诊断应用部署和运行中的问题。
6523
+ apps.deployment: Deployment 提供了对 Pod 和 ReplicaSet 的声明式更新管理。您可以定义应用的期望状态(如副本数、镜像版本),Deployment 控制器将以受控的方式逐步完成部署和滚动更新。
6524
+ batch.job: Job 用于创建一个或多个 Pod 并确保指定数量的 Pod 成功终止。适用于运行一次性任务或批处理作业,任务完成后 Pod 不会自动重启。
6525
+ apps.statefulset: StatefulSet 用于管理有状态应用的工作负载 API 对象。它为每个 Pod 提供稳定的网络标识符和持久化存储,确保 Pod 的部署、扩展、更新和删除都有序进行。
6526
+ pod: Pod 是 Kubernetes 中最小的可部署计算单元,包含一个或多个共享存储和网络资源的容器。Pod 代表了集群中运行的单个应用实例,是工作负载执行的实际载体。
6527
+ autoscaling.horizontalpodautoscaler: HorizontalPodAutoscaler (HPA) 用于根据观察到的 CPU 利用率或其他自定义指标自动调整工作负载的 Pod 副本数量,实现应用的水平自动扩缩容。
6528
+ networking.k8s.io.ingress: Ingress 用于管理对集群内服务的外部访问,提供 HTTP 和 HTTPS 路由规则。通过 Ingress 可以配置负载均衡、SSL 终止和基于名称的虚拟主机等能力。
6529
+ service: Service 用于将一组 Pod 暴露为网络服务,提供稳定的 IP 地址和 DNS 名称,并实现负载均衡。Service 确保您的应用程序在网络中可被发现和可靠访问。
6530
+ storage.k8s.io.storageclass: 存储池页面用于集中管理和配置集群中的持久化存储资源。您可以在此查看存储提供商、创建存储类(StorageClass)并为有状态应用动态提供持久卷(Persistent Volume)。
6531
+ persistentvolume: PersistentVolume (PV) 是集群中的一块持久化存储资源,由管理员预先配置或通过存储类动态供应。PV 为需要持久化数据的应用提供独立于 Pod 生命周期的存储空间。
6532
+ persistentvolumeclaim: 虚拟磁盘是提供给虚拟机使用的持久化存储设备,为虚拟机操作系统和应用数据提供独立的、可扩展的存储空间。虚拟磁盘的生命周期可以与虚拟机解耦,实现数据的持久化保存。
6533
+ configmap: ConfigMap 用于将非机密的配置数据以键值对形式保存,并注入到 Pod 中作为环境变量、命令行参数或配置文件使用。实现应用配置与容器镜像的分离,便于配置管理。
6534
+ secret: Secret 用于存储和管理敏感信息,如密码、OAuth 令牌和 SSH 密钥等。Secret 以加密方式保存数据,并可以安全地挂载到 Pod 中供容器使用,避免敏感信息硬编码。
6535
+ projectsecret: Secret 用于存储和管理敏感信息,如密码、OAuth 令牌和 SSH 密钥等。Secret 以加密方式保存数据,并可以安全地挂载到 Pod 中供容器使用,避免敏感信息硬编码。
6536
+ networking.k8s.io.networkpolicy: 网络策略用于控制 Pod 组之间的网络通信规则,实现 Kubernetes 集群内的网络隔离。通过定义入站和出站规则,可以精确控制 Pod 之间的网络访问权限。
6537
+ limitrange: 限制范围用于在命名空间内限制资源的使用量,包括 Pod 的计算资源(CPU、内存)请求和限制、存储卷大小以及可创建的资源对象数量,防止资源过度消耗。
6538
+ resourcequota: 资源配额用于限制命名空间可以使用的总体资源总量,包括计算资源、存储资源以及可创建的对象数量。它确保命名空间内的资源使用不会超过分配的配额限制。
6539
+ policy.poddisruptionbudget: Pod 中断预算用于限制自愿中断期间同时终止的 Pod 副本数量,确保应用的高可用性。它可以防止在节点维护或集群缩容时导致的应用服务中断。
6512
6540
  typeLabel:
6541
+ management.cattle.io.project: |-
6542
+ {count, plural,
6543
+ one { 项目 }
6544
+ other { 项目 }
6545
+ }
6513
6546
  management.cattle.io.token: |-
6514
6547
  {count, plural,
6515
6548
  one { API 密钥 }
@@ -6861,6 +6894,26 @@ typeLabel:
6861
6894
  one { 工作负载 }
6862
6895
  other { 工作负载 }
6863
6896
  }
6897
+ cluster : |-
6898
+ {count, plural,
6899
+ one { 集群 }
6900
+ other { 集群 }
6901
+ }
6902
+ servicediscovery : |-
6903
+ {count, plural,
6904
+ one { 服务发现 }
6905
+ other { 服务发现 }
6906
+ }
6907
+ storage : |-
6908
+ {count, plural,
6909
+ one { 存储 }
6910
+ other { 存储 }
6911
+ }
6912
+ policy : |-
6913
+ {count, plural,
6914
+ one { 策略 }
6915
+ other { 策略 }
6916
+ }
6864
6917
  harvesterhci.io.management.cluster: |-
6865
6918
  {count, plural,
6866
6919
  one { Cloud 集群 }
@@ -7856,3 +7909,79 @@ gitPicker:
7856
7909
  networkAttachmentDefinition:
7857
7910
  tabs:
7858
7911
  config: 配置
7912
+
7913
+
7914
+ component:
7915
+ drawer:
7916
+ chrome:
7917
+ ariaLabel:
7918
+ close: 关闭抽屉
7919
+ close: 关闭
7920
+ resourceDetailDrawer:
7921
+ title: "{resourceName} ({resourceType}) - 配置"
7922
+ editConfig: 编辑配置
7923
+ editYaml: 编辑YAML
7924
+ ariaLabel:
7925
+ editConfig: 编辑配置
7926
+ editYaml: 编辑YAML
7927
+ yamlTab:
7928
+ title: YAML
7929
+ configTab:
7930
+ title: 配置
7931
+ resource:
7932
+ detail:
7933
+ card:
7934
+ resourceUsage:
7935
+ used: Used
7936
+ amount: '{used} of {available}'
7937
+ cpu: CPU
7938
+ memory: Memory
7939
+ pods: Pods
7940
+ resourcesCard:
7941
+ title: 资源
7942
+ rows:
7943
+ services: 服务
7944
+ ingresses: Ingresses
7945
+ referredToBy: 参考
7946
+ refersTo: 引用
7947
+ podsCard:
7948
+ title: Pods
7949
+ ariaResourceName: pods
7950
+ insightsCard:
7951
+ title: Insights
7952
+ rows:
7953
+ conditions: Conditions
7954
+ events: Events
7955
+ scaler:
7956
+ ariaLabel:
7957
+ increase: Increase {resourceName}
7958
+ decrease: Decrease {resourceName}
7959
+ titleBar:
7960
+ showConfiguration: 显示配置
7961
+ ariaLabel:
7962
+ actionMenu: 更多操作
7963
+ showConfiguration: 显示{resource}的整个配置
7964
+ metadata:
7965
+ labelsAndAnnotations: 标签和注释
7966
+ identifyingInformation:
7967
+ createdBy: 创建
7968
+ namespace: 命名空间
7969
+ project: 项目
7970
+ age: 使用时长
7971
+ image: 图片
7972
+ ready: 准备
7973
+ up-to-date: Up-to-date
7974
+ available: 可用
7975
+ serviceAccount: 服务帐户
7976
+ type: 类型
7977
+ certificate: 证书
7978
+ issuer: Issuer
7979
+ expires: 到期
7980
+ workspace: 工作区
7981
+ annotations:
7982
+ title: 注释
7983
+ labels:
7984
+ title: 标签
7985
+ keyValue:
7986
+ noRows: 此资源上没有配置{propertyName}.
7987
+ showConfiguration: 显示配置
@@ -212,7 +212,7 @@ export default {
212
212
  border: 1px solid var(--dropdown-border);
213
213
  padding: 0px;
214
214
  text-align: left;
215
- border-radius: 4px;
215
+ border-radius: 2px;
216
216
 
217
217
  LI {
218
218
  padding: 10px;
@@ -266,7 +266,9 @@ export default {
266
266
  :deep() .vs__dropdown-toggle .vs__actions {
267
267
  &:after {
268
268
  color: var(--accent-btn-hover-text);
269
- padding-top: 10px;
269
+ // padding-top: 10px;
270
+ display: flex;
271
+ align-items: center;
270
272
  }
271
273
  }
272
274
  }
@@ -323,12 +323,12 @@ export default {
323
323
  }
324
324
 
325
325
  &.as-text-area .codemirror-container{
326
- min-height: 40px;
326
+ min-height: 32px !important;
327
327
  position: relative;
328
328
  display: block;
329
329
  box-sizing: border-box;
330
330
  width: 100%;
331
- padding: 10px;
331
+ padding: 8px 10px 0 10px !important;
332
332
  background-color: var(--input-bg);
333
333
  border-radius: var(--border-radius);
334
334
  border: solid var(--border-width) var(--input-border);
@@ -418,7 +418,7 @@ export default {
418
418
 
419
419
  .code-mirror {
420
420
  position: relative;
421
- margin-bottom: 20px;
421
+ margin-bottom: 0 !important;
422
422
 
423
423
  .escape-text {
424
424
  font-size: 12px;
@@ -498,5 +498,7 @@ export default {
498
498
  }
499
499
  }
500
500
  }
501
-
501
+ .CodeMirror-scroll {
502
+ min-height: 350px;
503
+ }
502
504
  </style>
@@ -177,7 +177,7 @@ export default {
177
177
  </div>
178
178
  </div>
179
179
 
180
- <div class="row mb-20">
180
+ <div class="row">
181
181
  <span class="col span-6">
182
182
  <UnitInput
183
183
  v-model:value="requestsCpu"
@@ -206,7 +206,7 @@ export default {
206
206
  </span>
207
207
  </div>
208
208
 
209
- <div class="row mb-20">
209
+ <div class="row">
210
210
  <span class="col span-6">
211
211
  <UnitInput
212
212
  v-model:value="limitsCpu"
@@ -42,3 +42,18 @@ export default {
42
42
  @click="clicked"
43
43
  />
44
44
  </template>
45
+
46
+ <style lang="scss"scoped>
47
+ button {
48
+ min-width: auto;
49
+ }
50
+
51
+ .bg-success{
52
+ background-color: var(--success-hover-text) !important;
53
+ color: #333 !important;
54
+ }
55
+ .bg-success:hover{
56
+ background-color: var(--success-hover-text) !important;
57
+ color: var(--primary) !important;
58
+ }
59
+ </style>
@@ -35,7 +35,7 @@ const ariaLabel = computed(() => i18n.t('component.drawer.chrome.ariaLabel.close
35
35
  </div>
36
36
  </slot>
37
37
  </div>
38
- <div class="body pp-4">
38
+ <div class="body">
39
39
  <slot name="body" />
40
40
  </div>
41
41
  <div class="footer pp-4">
@@ -93,7 +93,7 @@ const ariaLabel = computed(() => i18n.t('component.drawer.chrome.ariaLabel.close
93
93
  }
94
94
 
95
95
  .body {
96
- background-color: var(--drawer-body-bg);
96
+ background-color: var(--body-bg);
97
97
  flex: 1;
98
98
  overflow-y: scroll;
99
99
  }
@@ -16,38 +16,41 @@ const store = useStore();
16
16
  const i18n = useI18n(store);
17
17
  </script>
18
18
  <template>
19
- <Tab
20
- class="config-tab"
21
- name="config-tab"
22
- :label="i18n.t('component.drawer.resourceDetailDrawer.configTab.title')"
23
- >
24
- <div class="container">
25
- <component
26
- :is="props.component"
27
- :value="props.resource"
28
- :liveValue="props.resource"
29
- :resourceType="props.resourceType"
30
- :mode="_VIEW"
31
- :real-mode="_VIEW"
32
- :initial-value="props.resource"
33
- :use-tabbed-hash="false /* Have to disable hashing on child components or it modifies the url and closes the drawer */"
34
- as="config"
35
- />
36
- </div>
37
- </Tab>
19
+ <div class="container">
20
+ <component
21
+ :is="props.component"
22
+ :value="props.resource"
23
+ :liveValue="props.resource"
24
+ :resourceType="props.resourceType"
25
+ :mode="_VIEW"
26
+ :real-mode="_VIEW"
27
+ :initial-value="props.resource"
28
+ :use-tabbed-hash="false /* Have to disable hashing on child components or it modifies the url and closes the drawer */"
29
+ as="config"
30
+ />
31
+ </div>
38
32
  </template>
39
33
 
40
34
  <style lang="scss" scoped>
41
- .config-tab {
42
- .container {
43
- background-color: var(--body-bg);
44
- border-radius: var(--border-radius-md);
45
- padding: 16px;
46
- max-width: 100%;
47
- width: 100%;
48
- position: relative;
35
+ .container {
36
+ background-color: var(--body-bg);
37
+ border-radius: var(--border-radius-md);
38
+ padding: 20px;
39
+ max-width: 100%;
40
+ width: 100%;
41
+ position: relative;
42
+ // Handle the loading indicator
43
+ :deep() .overlay-content-mode {
44
+ left: 0;
45
+ top: 0;
49
46
  }
50
47
 
48
+ :deep() .cru-resource-footer {
49
+ display: none;
50
+ }
51
+ }
52
+ .config-tab {
53
+
51
54
  // Handle the loading indicator
52
55
  :deep() .overlay-content-mode {
53
56
  left: 0;
@@ -38,7 +38,7 @@ const yamlComponent: any = useTemplateRef('yaml');
38
38
  :deep() .codemirror-container {
39
39
  background-color: var(--body-bg);
40
40
  border-radius: var(--border-radius-md);
41
- padding: 16px;
41
+ padding: 20px;
42
42
 
43
43
  .CodeMirror, .CodeMirror-gutter {
44
44
  background-color: var(--body-bg);
@@ -3,7 +3,7 @@ import Drawer from '@shell/components/Drawer/Chrome.vue';
3
3
  import { useI18n } from '@shell/composables/useI18n';
4
4
  import { useStore } from 'vuex';
5
5
  import Tabbed from '@shell/components/Tabbed/index.vue';
6
- import YamlTab, { Props as YamlProps } from '@shell/components/Drawer/ResourceDetailDrawer/YamlTab.vue';
6
+ // import YamlTab, { Props as YamlProps } from '@shell/components/Drawer/ResourceDetailDrawer/YamlTab.vue';
7
7
  import { useDefaultConfigTabProps, useDefaultYamlTabProps } from '@shell/components/Drawer/ResourceDetailDrawer/composables';
8
8
  import ConfigTab from '@shell/components/Drawer/ResourceDetailDrawer/ConfigTab.vue';
9
9
  import { computed, ref } from 'vue';
@@ -27,6 +27,8 @@ const i18n = useI18n(store);
27
27
  const yamlTabProps = ref<YamlProps | null>(null);
28
28
  const configTabProps = useDefaultConfigTabProps(props.resource);
29
29
 
30
+ console.log(configTabProps, ' configTabProps---------------------------------2');
31
+
30
32
  useDefaultYamlTabProps(props.resource).then((props) => {
31
33
  yamlTabProps.value = props;
32
34
  });
@@ -85,10 +87,10 @@ const canEdit = computed(() => {
85
87
  v-if="configTabProps"
86
88
  v-bind="configTabProps"
87
89
  />
88
- <YamlTab
90
+ <!-- <YamlTab
89
91
  v-if="yamlTabProps"
90
92
  v-bind="yamlTabProps"
91
- />
93
+ /> -->
92
94
  </Tabbed>
93
95
  </template>
94
96
  <template #additional-actions>
@@ -116,7 +118,6 @@ const canEdit = computed(() => {
116
118
  border: none;
117
119
  border-top: 1px solid var(--border);
118
120
  padding: 0;
119
- padding-top: 24px;
120
121
  }
121
122
  }
122
123
  }