dashboard-shell-shell 3.0.5-test.19 → 3.0.5-test.20
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.
- package/assets/styles/global/_button.scss +1 -1
- package/assets/translations/zh-hans.yaml +49 -5
- package/components/CodeMirror.vue +6 -4
- package/components/ContainerResourceLimit.vue +2 -2
- package/components/ResourceDetail/legacy.vue +15 -15
- package/components/ResourceList/Masthead.vue +9 -13
- package/components/SortableTable/index.vue +4 -1
- package/components/Tabbed/index.vue +3 -2
- package/components/breadcrumb/index.vue +1 -0
- package/components/form/ArrayList.vue +1 -2
- package/components/form/ArrayListGrouped.vue +3 -1
- package/components/form/HookOption.vue +4 -0
- package/components/form/KeyValue.vue +4 -0
- package/components/form/Labels.vue +1 -1
- package/components/form/Networking.vue +6 -8
- package/components/form/PodAffinity.vue +4 -2
- package/components/form/Security.vue +1 -3
- package/components/form/ServiceNameSelect.vue +1 -2
- package/config/product/explorer.js +4 -1
- package/detail/node.vue +28 -23
- package/dialog/AddCustomBadgeDialog.vue +17 -9
- package/edit/autoscaling.horizontalpodautoscaler/hpa-scaling-rule.vue +9 -6
- package/edit/persistentvolume/index.vue +3 -1
- package/edit/persistentvolumeclaim.vue +2 -0
- package/edit/workload/Job.vue +4 -5
- package/edit/workload/Upgrading.vue +2 -2
- package/edit/workload/index.vue +16 -12
- package/edit/workload/storage/persistentVolumeClaim/persistentvolumeclaim.vue +2 -0
- package/package.json +1 -1
- package/pages/c/_cluster/explorer/ConfigBadge.vue +1 -1
- package/pages/c/_cluster/explorer/tools/index.vue +6 -6
- package/rancher-components/Banner/Banner.vue +1 -1
- package/scripts/publish-shell.sh +1 -1
|
@@ -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 数据...
|
|
@@ -2575,7 +2577,7 @@ ingress:
|
|
|
2575
2577
|
required: 目标服务是必填的
|
|
2576
2578
|
warning: "警告:默认后端将全局用于整个集群"
|
|
2577
2579
|
ingressClass:
|
|
2578
|
-
label:
|
|
2580
|
+
label: Ingress类
|
|
2579
2581
|
rules:
|
|
2580
2582
|
addPath: 添加路径
|
|
2581
2583
|
addRule: 添加规则
|
|
@@ -2916,7 +2918,7 @@ logging:
|
|
|
2916
2918
|
default: /run/log/journal
|
|
2917
2919
|
elasticsearch:
|
|
2918
2920
|
host: 主机
|
|
2919
|
-
scheme:
|
|
2921
|
+
scheme: 协议
|
|
2920
2922
|
port: 端口
|
|
2921
2923
|
indexName: 索引名称
|
|
2922
2924
|
user: 用户名
|
|
@@ -5938,7 +5940,9 @@ workload:
|
|
|
5938
5940
|
exec: 容器内运行的命令以 0 状态退出
|
|
5939
5941
|
image: 容器镜像
|
|
5940
5942
|
imagePullPolicy: 镜像拉取策略
|
|
5941
|
-
imagePullSecrets:
|
|
5943
|
+
imagePullSecrets:
|
|
5944
|
+
label: 镜像拉取密钥
|
|
5945
|
+
tooltip: 必须为 kubernetes.io/dockercfg 或 kubernetes.io/dockerconfigjson 类型
|
|
5942
5946
|
init: 初始化容器
|
|
5943
5947
|
lifecycleHook:
|
|
5944
5948
|
postStart:
|
|
@@ -5966,7 +5970,7 @@ workload:
|
|
|
5966
5970
|
label: 端口
|
|
5967
5971
|
placeholder: 例如:3000
|
|
5968
5972
|
scheme:
|
|
5969
|
-
label:
|
|
5973
|
+
label: 协议
|
|
5970
5974
|
placeholder: 例如:HTTP
|
|
5971
5975
|
httpHeaders:
|
|
5972
5976
|
title: HTTP 头部
|
|
@@ -6017,7 +6021,7 @@ workload:
|
|
|
6017
6021
|
hostPID: 使用主机 PID 资源组
|
|
6018
6022
|
podFsGroup: Pod 文件系统组
|
|
6019
6023
|
privileged:
|
|
6020
|
-
label:
|
|
6024
|
+
label: 特权模式
|
|
6021
6025
|
'false': 否
|
|
6022
6026
|
'true': "是:容器可以完全访问主机"
|
|
6023
6027
|
readOnlyRootFilesystem:
|
|
@@ -6512,6 +6516,26 @@ typeDescription:
|
|
|
6512
6516
|
management.cattle.io.setting: 统一配置平台基础选项与全局设置,支持CA证书、密码规则、域名、Token时效等核心配置。
|
|
6513
6517
|
management.cattle.io.user: 用于管理用户账号,支持创建、维护用户信息,可设置用户权限、管理密码等,保障系统资源仅由授权用户访问,提升系统安全性。
|
|
6514
6518
|
harvesterhci.io.management.cluster: 提供虚拟化集群的实时健康状态监控、版本号管理及资源负载管理,支持批量导入/删除集群、配置调优与权限分级功能,实现高效运维管控。
|
|
6519
|
+
projectsnamespaces: 项目/资源组是用于在集群内实现资源隔离和多租户管理的基本单元。通过项目可以对一组命名空间及相关资源进行统一的权限、配额和策略管理。
|
|
6520
|
+
members: 集群和项目成员管理页面用于配置用户和用户组对资源的访问权限。通过角色绑定(RBAC)来控制成员在集群或项目范围内的操作权限,实现安全的协同管理。
|
|
6521
|
+
event: 事件记录了 Kubernetes 资源(如 Pod、节点等)的状态变化、错误信息和生命周期事件。通过查看事件可以快速诊断应用部署和运行中的问题。
|
|
6522
|
+
apps.deployment: Deployment 提供了对 Pod 和 ReplicaSet 的声明式更新管理。您可以定义应用的期望状态(如副本数、镜像版本),Deployment 控制器将以受控的方式逐步完成部署和滚动更新。
|
|
6523
|
+
batch.job: Job 用于创建一个或多个 Pod 并确保指定数量的 Pod 成功终止。适用于运行一次性任务或批处理作业,任务完成后 Pod 不会自动重启。
|
|
6524
|
+
apps.statefulset: StatefulSet 用于管理有状态应用的工作负载 API 对象。它为每个 Pod 提供稳定的网络标识符和持久化存储,确保 Pod 的部署、扩展、更新和删除都有序进行。
|
|
6525
|
+
pod: Pod 是 Kubernetes 中最小的可部署计算单元,包含一个或多个共享存储和网络资源的容器。Pod 代表了集群中运行的单个应用实例,是工作负载执行的实际载体。
|
|
6526
|
+
autoscaling.horizontalpodautoscaler: HorizontalPodAutoscaler (HPA) 用于根据观察到的 CPU 利用率或其他自定义指标自动调整工作负载的 Pod 副本数量,实现应用的水平自动扩缩容。
|
|
6527
|
+
networking.k8s.io.ingress: Ingress 用于管理对集群内服务的外部访问,提供 HTTP 和 HTTPS 路由规则。通过 Ingress 可以配置负载均衡、SSL 终止和基于名称的虚拟主机等能力。
|
|
6528
|
+
service: Service 用于将一组 Pod 暴露为网络服务,提供稳定的 IP 地址和 DNS 名称,并实现负载均衡。Service 确保您的应用程序在网络中可被发现和可靠访问。
|
|
6529
|
+
storage.k8s.io.storageclass: 存储池页面用于集中管理和配置集群中的持久化存储资源。您可以在此查看存储提供商、创建存储类(StorageClass)并为有状态应用动态提供持久卷(Persistent Volume)。
|
|
6530
|
+
persistentvolume: PersistentVolume (PV) 是集群中的一块持久化存储资源,由管理员预先配置或通过存储类动态供应。PV 为需要持久化数据的应用提供独立于 Pod 生命周期的存储空间。
|
|
6531
|
+
persistentvolumeclaim: 虚拟磁盘是提供给虚拟机使用的持久化存储设备,为虚拟机操作系统和应用数据提供独立的、可扩展的存储空间。虚拟磁盘的生命周期可以与虚拟机解耦,实现数据的持久化保存。
|
|
6532
|
+
configmap: ConfigMap 用于将非机密的配置数据以键值对形式保存,并注入到 Pod 中作为环境变量、命令行参数或配置文件使用。实现应用配置与容器镜像的分离,便于配置管理。
|
|
6533
|
+
secret: Secret 用于存储和管理敏感信息,如密码、OAuth 令牌和 SSH 密钥等。Secret 以加密方式保存数据,并可以安全地挂载到 Pod 中供容器使用,避免敏感信息硬编码。
|
|
6534
|
+
projectsecret: Secret 用于存储和管理敏感信息,如密码、OAuth 令牌和 SSH 密钥等。Secret 以加密方式保存数据,并可以安全地挂载到 Pod 中供容器使用,避免敏感信息硬编码。
|
|
6535
|
+
networking.k8s.io.networkpolicy: 网络策略用于控制 Pod 组之间的网络通信规则,实现 Kubernetes 集群内的网络隔离。通过定义入站和出站规则,可以精确控制 Pod 之间的网络访问权限。
|
|
6536
|
+
limitrange: 限制范围用于在命名空间内限制资源的使用量,包括 Pod 的计算资源(CPU、内存)请求和限制、存储卷大小以及可创建的资源对象数量,防止资源过度消耗。
|
|
6537
|
+
resourcequota: 资源配额用于限制命名空间可以使用的总体资源总量,包括计算资源、存储资源以及可创建的对象数量。它确保命名空间内的资源使用不会超过分配的配额限制。
|
|
6538
|
+
policy.poddisruptionbudget: Pod 中断预算用于限制自愿中断期间同时终止的 Pod 副本数量,确保应用的高可用性。它可以防止在节点维护或集群缩容时导致的应用服务中断。
|
|
6515
6539
|
typeLabel:
|
|
6516
6540
|
management.cattle.io.project: |-
|
|
6517
6541
|
{count, plural,
|
|
@@ -6869,6 +6893,26 @@ typeLabel:
|
|
|
6869
6893
|
one { 工作负载 }
|
|
6870
6894
|
other { 工作负载 }
|
|
6871
6895
|
}
|
|
6896
|
+
cluster : |-
|
|
6897
|
+
{count, plural,
|
|
6898
|
+
one { 集群 }
|
|
6899
|
+
other { 集群 }
|
|
6900
|
+
}
|
|
6901
|
+
servicediscovery : |-
|
|
6902
|
+
{count, plural,
|
|
6903
|
+
one { 服务发现 }
|
|
6904
|
+
other { 服务发现 }
|
|
6905
|
+
}
|
|
6906
|
+
storage : |-
|
|
6907
|
+
{count, plural,
|
|
6908
|
+
one { 存储 }
|
|
6909
|
+
other { 存储 }
|
|
6910
|
+
}
|
|
6911
|
+
policy : |-
|
|
6912
|
+
{count, plural,
|
|
6913
|
+
one { 策略 }
|
|
6914
|
+
other { 策略 }
|
|
6915
|
+
}
|
|
6872
6916
|
harvesterhci.io.management.cluster: |-
|
|
6873
6917
|
{count, plural,
|
|
6874
6918
|
one { Cloud 集群 }
|
|
@@ -323,12 +323,12 @@ export default {
|
|
|
323
323
|
}
|
|
324
324
|
|
|
325
325
|
&.as-text-area .codemirror-container{
|
|
326
|
-
min-height:
|
|
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:
|
|
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
|
|
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
|
|
209
|
+
<div class="row">
|
|
210
210
|
<span class="col span-6">
|
|
211
211
|
<UnitInput
|
|
212
212
|
v-model:value="limitsCpu"
|
|
@@ -523,21 +523,21 @@ export default {
|
|
|
523
523
|
/>
|
|
524
524
|
|
|
525
525
|
<component
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
526
|
+
:is="showComponent"
|
|
527
|
+
v-else
|
|
528
|
+
ref="comp"
|
|
529
|
+
v-model:value="value"
|
|
530
|
+
v-bind="$data"
|
|
531
|
+
:done-params="doneParams"
|
|
532
|
+
:done-route="doneRoute"
|
|
533
|
+
:mode="mode"
|
|
534
|
+
:initial-value="initialModel"
|
|
535
|
+
:live-value="liveModel"
|
|
536
|
+
:real-mode="realMode"
|
|
537
|
+
:class="{'flex-content': flexContent}"
|
|
538
|
+
@update:value="$emit('input', $event)"
|
|
539
|
+
@update:mode="setMode"
|
|
540
|
+
@set-subtype="setSubtype"
|
|
541
541
|
/>
|
|
542
542
|
|
|
543
543
|
<button
|
|
@@ -156,37 +156,34 @@ export default {
|
|
|
156
156
|
demoDisplay() {
|
|
157
157
|
|
|
158
158
|
const product = this.$store.getters['productId'];
|
|
159
|
-
const productId = this.$store.getters['type-map/groupForBasicType'](this.$store.getters['productId'], this._createLocation
|
|
160
|
-
|
|
159
|
+
const productId = this.$store.getters['type-map/groupForBasicType'](this.$store.getters['productId'], this._createLocation?.params?.resource);
|
|
160
|
+
console.log(this._createLocation, 'this._createLocation?.params?.resource')
|
|
161
|
+
console.log(this._createLocation?.params?.resource, 'this._createLocation?.params?.resource')
|
|
162
|
+
let parts = productId?.split('::');
|
|
161
163
|
const newString = 'root';
|
|
162
164
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
165
|
+
if (!parts) {
|
|
166
|
+
if (this.$route.path.includes('/c/local/explorer/secret')) {
|
|
167
|
+
parts = ['storage']
|
|
168
|
+
}
|
|
169
|
+
}
|
|
169
170
|
|
|
170
171
|
const breadcrumbList = {
|
|
171
172
|
'harvesterhci.io.management.cluster': {
|
|
172
173
|
origin: 'Harvester 集群',
|
|
173
174
|
bread: ['虚拟化管理'],
|
|
174
|
-
description: '提供虚拟化集群的实时健康状态监控、版本号管理及资源负载管理,支持批量导入/删除集群、配置调优与权限分级功能,实现高效运维管控。'
|
|
175
175
|
},
|
|
176
176
|
'management.cattle.io.user': {
|
|
177
177
|
origin: '用户',
|
|
178
178
|
bread: ['用户 & 认证'],
|
|
179
|
-
description: '用于管理用户账号,支持创建、维护用户信息,可设置用户权限、管理密码等,保障系统资源仅由授权用户访问,提升系统安全性。'
|
|
180
179
|
},
|
|
181
180
|
'management.cattle.io.setting':{
|
|
182
181
|
origin: '基础设置',
|
|
183
182
|
bread: ['全局设置'],
|
|
184
|
-
description: '统一配置平台基础选项与全局设置,支持CA证书、密码规则、域名、Token时效等核心配置。'
|
|
185
183
|
},
|
|
186
184
|
'management.cattle.io.feature':{
|
|
187
185
|
origin: '功能开关',
|
|
188
186
|
bread: ['全局设置'],
|
|
189
|
-
description: '还没有添加描述。。。。'
|
|
190
187
|
},
|
|
191
188
|
}
|
|
192
189
|
const resourcePath = this.$route.params.resource || ''
|
|
@@ -194,7 +191,6 @@ export default {
|
|
|
194
191
|
const breadcrumb = []
|
|
195
192
|
if (breadcrumbList[resourcePath] && Object.keys(breadcrumbList[resourcePath]).length > 0) {
|
|
196
193
|
breadcrumb.push(...breadcrumbList[resourcePath].bread)
|
|
197
|
-
this.description = breadcrumbList[resourcePath].description
|
|
198
194
|
return breadcrumb
|
|
199
195
|
} else {
|
|
200
196
|
if (!parts?.includes(newString)) {
|
|
@@ -2201,6 +2201,9 @@ export default {
|
|
|
2201
2201
|
td {
|
|
2202
2202
|
padding: 8px 5px;
|
|
2203
2203
|
border: 0;
|
|
2204
|
+
white-space: normal;
|
|
2205
|
+
word-break: break-all;
|
|
2206
|
+
overflow-wrap: break-word;
|
|
2204
2207
|
|
|
2205
2208
|
&:first-child {
|
|
2206
2209
|
padding-left: 10px;
|
|
@@ -2664,7 +2667,7 @@ export default {
|
|
|
2664
2667
|
.sort-table-div{
|
|
2665
2668
|
width:100%;
|
|
2666
2669
|
white-space:nowrap;
|
|
2667
|
-
|
|
2670
|
+
overflow-x: auto;
|
|
2668
2671
|
}
|
|
2669
2672
|
|
|
2670
2673
|
/* 滚动阴影左边 */
|
|
@@ -390,6 +390,7 @@ export default {
|
|
|
390
390
|
|
|
391
391
|
+ .tab-container {
|
|
392
392
|
border: solid thin var(--border);
|
|
393
|
+
border-top: 0px;
|
|
393
394
|
}
|
|
394
395
|
|
|
395
396
|
.tab.active {
|
|
@@ -504,8 +505,8 @@ margin: 0px -20px;
|
|
|
504
505
|
display: flex;
|
|
505
506
|
border-bottom:1px solid #d7d7d7;
|
|
506
507
|
padding: 0 0 0 20px;
|
|
507
|
-
overflow: auto;
|
|
508
|
-
overflow-y: hidden;
|
|
508
|
+
// overflow: auto;
|
|
509
|
+
// overflow-y: hidden;
|
|
509
510
|
/* flex: 1 0; */
|
|
510
511
|
/* flex-direction: column; */
|
|
511
512
|
|
|
@@ -120,7 +120,8 @@ export default {
|
|
|
120
120
|
|
|
121
121
|
<style lang="scss">
|
|
122
122
|
.array-list-grouped {
|
|
123
|
-
|
|
123
|
+
.box {
|
|
124
|
+
border: 1px solid var(--tabbed-border);
|
|
124
125
|
position: relative;
|
|
125
126
|
display: block;
|
|
126
127
|
|
|
@@ -140,6 +141,7 @@ export default {
|
|
|
140
141
|
}
|
|
141
142
|
|
|
142
143
|
& > .info-box {
|
|
144
|
+
border: 0px solid #fff;
|
|
143
145
|
margin-bottom: 0;
|
|
144
146
|
padding-right: 25px;
|
|
145
147
|
}
|
|
@@ -162,7 +162,7 @@ export default {
|
|
|
162
162
|
<div :class="defaultSectionClass">
|
|
163
163
|
<div class="labels">
|
|
164
164
|
<div class="labels__header mb-20">
|
|
165
|
-
<div v-if="showLabelTitle">
|
|
165
|
+
<div v-if="showLabelTitle" style="font-size: 14px;">
|
|
166
166
|
<t k="labels.labels.title" />
|
|
167
167
|
</div>
|
|
168
168
|
<ToggleSwitch
|
|
@@ -160,7 +160,7 @@ export default {
|
|
|
160
160
|
<div>
|
|
161
161
|
<div>
|
|
162
162
|
<h3>{{ t('workload.container.titles.networkSettings') }}</h3>
|
|
163
|
-
<div class="row
|
|
163
|
+
<div class="row">
|
|
164
164
|
<div class="col span-6">
|
|
165
165
|
<LabeledSelect
|
|
166
166
|
v-model:value="networkMode"
|
|
@@ -205,12 +205,11 @@ export default {
|
|
|
205
205
|
</div>
|
|
206
206
|
</div>
|
|
207
207
|
</div>
|
|
208
|
-
<div class="spacer" />
|
|
209
208
|
|
|
210
|
-
<div>
|
|
209
|
+
<div class="mt-20">
|
|
211
210
|
<h3>{{ t('workload.networking.dns') }}</h3>
|
|
212
211
|
<div class="row">
|
|
213
|
-
<div class="
|
|
212
|
+
<div class="span-6">
|
|
214
213
|
<ArrayList
|
|
215
214
|
key="dnsNameservers"
|
|
216
215
|
v-model:value="nameservers"
|
|
@@ -222,7 +221,7 @@ export default {
|
|
|
222
221
|
@update:value="update"
|
|
223
222
|
/>
|
|
224
223
|
</div>
|
|
225
|
-
<div class="
|
|
224
|
+
<div class="span-6">
|
|
226
225
|
<ArrayList
|
|
227
226
|
key="dnsSearches"
|
|
228
227
|
v-model:value="searches"
|
|
@@ -237,7 +236,7 @@ export default {
|
|
|
237
236
|
</div>
|
|
238
237
|
</div>
|
|
239
238
|
|
|
240
|
-
<div
|
|
239
|
+
<div>
|
|
241
240
|
<div class="row">
|
|
242
241
|
<KeyValue
|
|
243
242
|
v-model:value="options"
|
|
@@ -253,9 +252,8 @@ export default {
|
|
|
253
252
|
/>
|
|
254
253
|
</div>
|
|
255
254
|
</div>
|
|
256
|
-
<div class="spacer" />
|
|
257
255
|
|
|
258
|
-
<div class="row mt-
|
|
256
|
+
<div class="row mt-40">
|
|
259
257
|
<div class="col span-12">
|
|
260
258
|
<KeyValue
|
|
261
259
|
key="hostAliases"
|
|
@@ -436,7 +436,7 @@ export default {
|
|
|
436
436
|
@update:value="e=>updateLabelSelector(e, props)"
|
|
437
437
|
/>
|
|
438
438
|
<div class="row mt-20">
|
|
439
|
-
<div class="col
|
|
439
|
+
<div class="col">
|
|
440
440
|
<LabeledSelect
|
|
441
441
|
v-if="hasNodes"
|
|
442
442
|
v-model:value="props.row.value.topologyKey"
|
|
@@ -464,9 +464,11 @@ export default {
|
|
|
464
464
|
@update:value="update"
|
|
465
465
|
/>
|
|
466
466
|
</div>
|
|
467
|
+
</div>
|
|
468
|
+
<div class="row">
|
|
467
469
|
<div
|
|
468
470
|
v-if="'weight' in props.row.value"
|
|
469
|
-
class="col
|
|
471
|
+
class="col"
|
|
470
472
|
>
|
|
471
473
|
<LabeledInput
|
|
472
474
|
v-model:value.number="props.row.value.weight"
|
|
@@ -157,7 +157,6 @@ export default {
|
|
|
157
157
|
</div>
|
|
158
158
|
</div>
|
|
159
159
|
</div>
|
|
160
|
-
<div class="spacer" />
|
|
161
160
|
|
|
162
161
|
<div>
|
|
163
162
|
<div class="row">
|
|
@@ -191,11 +190,10 @@ export default {
|
|
|
191
190
|
</div>
|
|
192
191
|
</div>
|
|
193
192
|
</div>
|
|
194
|
-
<div class="spacer" />
|
|
195
193
|
|
|
196
194
|
<div
|
|
197
195
|
data-testid="input-security-runAsUser"
|
|
198
|
-
class="row
|
|
196
|
+
class="row"
|
|
199
197
|
>
|
|
200
198
|
<div class="col span-6">
|
|
201
199
|
<LabeledInput
|
|
@@ -75,7 +75,9 @@ export function init(store) {
|
|
|
75
75
|
NODE,
|
|
76
76
|
VIRTUAL_TYPES.CLUSTER_MEMBERS,
|
|
77
77
|
EVENT,
|
|
78
|
-
'c-cluster-explorer-tools'
|
|
78
|
+
'c-cluster-explorer-tools',
|
|
79
|
+
'management.cattle.io.project',
|
|
80
|
+
'management.cattle.io.clusterroletemplatebinding'
|
|
79
81
|
], 'cluster');
|
|
80
82
|
basicType([
|
|
81
83
|
LIMIT_RANGE,
|
|
@@ -95,6 +97,7 @@ export function init(store) {
|
|
|
95
97
|
STORAGE_CLASS,
|
|
96
98
|
SECRET,
|
|
97
99
|
VIRTUAL_TYPES.PROJECT_SECRETS,
|
|
100
|
+
VIRTUAL_TYPES.NAMESPACES,
|
|
98
101
|
CONFIG_MAP
|
|
99
102
|
], 'storage');
|
|
100
103
|
basicType([
|
package/detail/node.vue
CHANGED
|
@@ -196,28 +196,7 @@ export default {
|
|
|
196
196
|
v-else
|
|
197
197
|
class="node"
|
|
198
198
|
>
|
|
199
|
-
<div
|
|
200
|
-
<div class="alerts">
|
|
201
|
-
<Alert
|
|
202
|
-
class="mr-10"
|
|
203
|
-
:status="pidPressureStatus"
|
|
204
|
-
:message="t('node.detail.glance.pidPressure')"
|
|
205
|
-
/>
|
|
206
|
-
<Alert
|
|
207
|
-
class="mr-10"
|
|
208
|
-
:status="diskPressureStatus"
|
|
209
|
-
:message="t('node.detail.glance.diskPressure')"
|
|
210
|
-
/>
|
|
211
|
-
<Alert
|
|
212
|
-
class="mr-10"
|
|
213
|
-
:status="memoryPressureStatus"
|
|
214
|
-
:message="t('node.detail.glance.memoryPressure')"
|
|
215
|
-
/>
|
|
216
|
-
<Alert
|
|
217
|
-
:status="kubeletStatus"
|
|
218
|
-
:message="t('node.detail.glance.kubelet')"
|
|
219
|
-
/>
|
|
220
|
-
</div>
|
|
199
|
+
<div style="font-size: 14px;margin-bottom: 32px;">监控数据</div>
|
|
221
200
|
<div class="mt-20 resources">
|
|
222
201
|
<ConsumptionGauge
|
|
223
202
|
:resource-name="t('node.detail.glance.consumptionGauge.cpu')"
|
|
@@ -237,7 +216,24 @@ export default {
|
|
|
237
216
|
:used="value.podConsumed"
|
|
238
217
|
/>
|
|
239
218
|
</div>
|
|
240
|
-
<div class="
|
|
219
|
+
<div class="alerts mt-10">
|
|
220
|
+
<Alert
|
|
221
|
+
:status="pidPressureStatus"
|
|
222
|
+
:message="t('node.detail.glance.pidPressure')"
|
|
223
|
+
/>
|
|
224
|
+
<Alert
|
|
225
|
+
:status="diskPressureStatus"
|
|
226
|
+
:message="t('node.detail.glance.diskPressure')"
|
|
227
|
+
/>
|
|
228
|
+
<Alert
|
|
229
|
+
:status="memoryPressureStatus"
|
|
230
|
+
:message="t('node.detail.glance.memoryPressure')"
|
|
231
|
+
/>
|
|
232
|
+
<Alert
|
|
233
|
+
:status="kubeletStatus"
|
|
234
|
+
:message="t('node.detail.glance.kubelet')"
|
|
235
|
+
/>
|
|
236
|
+
</div>
|
|
241
237
|
<ResourceTabs
|
|
242
238
|
:value="value"
|
|
243
239
|
:mode="mode"
|
|
@@ -331,4 +327,13 @@ export default {
|
|
|
331
327
|
width: 30%;
|
|
332
328
|
}
|
|
333
329
|
}
|
|
330
|
+
.alerts{
|
|
331
|
+
display: flex;
|
|
332
|
+
flex-wrap: wrap;
|
|
333
|
+
justify-content: space-between;
|
|
334
|
+
>div{
|
|
335
|
+
width: 30%;
|
|
336
|
+
margin-bottom: 10px;
|
|
337
|
+
}
|
|
338
|
+
}
|
|
334
339
|
</style>
|
|
@@ -236,7 +236,7 @@ export default {
|
|
|
236
236
|
<div class="badge-preview-header">
|
|
237
237
|
<p> {{ t('clusterBadge.modal.previewHeader') }}</p>
|
|
238
238
|
<div
|
|
239
|
-
class="
|
|
239
|
+
class="span-12"
|
|
240
240
|
>
|
|
241
241
|
<ClusterProviderIcon
|
|
242
242
|
:cluster="{...previewCluster, badge: displayClusterPrevIcon}"
|
|
@@ -340,7 +340,7 @@ export default {
|
|
|
340
340
|
display: flex;
|
|
341
341
|
width: 100%;
|
|
342
342
|
gap: 40px;
|
|
343
|
-
padding: 10px 5px;
|
|
343
|
+
// padding: 10px 5px;
|
|
344
344
|
margin-bottom: 30px;
|
|
345
345
|
margin-top: 5px;
|
|
346
346
|
background: var(--body-bg);
|
|
@@ -424,26 +424,34 @@ export default {
|
|
|
424
424
|
}
|
|
425
425
|
|
|
426
426
|
.badge-customisation {
|
|
427
|
-
display: flex;
|
|
428
|
-
gap: 10px;
|
|
427
|
+
// display: flex;
|
|
428
|
+
// gap: 10px;
|
|
429
429
|
|
|
430
|
-
div {
|
|
430
|
+
>div {
|
|
431
431
|
display: flex;
|
|
432
|
+
// align-items: flex-end;
|
|
433
|
+
margin-bottom: 30px;
|
|
432
434
|
flex-direction: column;
|
|
433
|
-
flex: 1;
|
|
434
|
-
gap: 10px;
|
|
435
|
+
// flex: 1;
|
|
436
|
+
// gap: 10px;
|
|
435
437
|
|
|
436
438
|
.color-input {
|
|
437
439
|
display: flex;
|
|
438
440
|
padding: 6px 10px;
|
|
439
441
|
min-height: 61px;
|
|
440
442
|
}
|
|
443
|
+
|
|
444
|
+
.checkbox-outer-container{
|
|
445
|
+
min-width: 160px;
|
|
446
|
+
margin-bottom: 10px;
|
|
447
|
+
// align-items: flex-start;
|
|
448
|
+
}
|
|
441
449
|
}
|
|
442
450
|
|
|
443
451
|
&-color {
|
|
444
452
|
display: flex;
|
|
445
|
-
flex-direction: column;
|
|
446
|
-
gap: 10px;
|
|
453
|
+
// flex-direction: column;
|
|
454
|
+
// gap: 10px;
|
|
447
455
|
}
|
|
448
456
|
}
|
|
449
457
|
|
|
@@ -49,8 +49,8 @@ export default {
|
|
|
49
49
|
|
|
50
50
|
<template>
|
|
51
51
|
<div>
|
|
52
|
-
<div class="row
|
|
53
|
-
<div class="
|
|
52
|
+
<div class="row">
|
|
53
|
+
<div class="span-12">
|
|
54
54
|
<ArrayListGrouped
|
|
55
55
|
v-model:value="value.spec.behavior[type].policies"
|
|
56
56
|
:add-label="t('hpa.scalingRule.addPolicy')"
|
|
@@ -59,7 +59,7 @@ export default {
|
|
|
59
59
|
>
|
|
60
60
|
<template #default="props">
|
|
61
61
|
<div class="row">
|
|
62
|
-
<div class="col
|
|
62
|
+
<div class="col">
|
|
63
63
|
<LabeledSelect
|
|
64
64
|
v-model:value="props.row.value.type"
|
|
65
65
|
:mode="mode"
|
|
@@ -72,7 +72,9 @@ export default {
|
|
|
72
72
|
:label="t('hpa.scalingRule.policy.type')"
|
|
73
73
|
/>
|
|
74
74
|
</div>
|
|
75
|
-
|
|
75
|
+
</div>
|
|
76
|
+
<div class="row">
|
|
77
|
+
<div class="col">
|
|
76
78
|
<LabeledInput
|
|
77
79
|
v-model:value.number="props.row.value.value"
|
|
78
80
|
:mode="mode"
|
|
@@ -83,7 +85,9 @@ export default {
|
|
|
83
85
|
:label="t('hpa.scalingRule.policy.value')"
|
|
84
86
|
/>
|
|
85
87
|
</div>
|
|
86
|
-
|
|
88
|
+
</div>
|
|
89
|
+
<div class="row">
|
|
90
|
+
<div class="col">
|
|
87
91
|
<LabeledInput
|
|
88
92
|
v-model:value.number="props.row.value.periodSeconds"
|
|
89
93
|
:mode="mode"
|
|
@@ -125,6 +129,5 @@ export default {
|
|
|
125
129
|
/>
|
|
126
130
|
</div>
|
|
127
131
|
</div>
|
|
128
|
-
<div class="row mb-40" />
|
|
129
132
|
</div>
|
|
130
133
|
</template>
|
|
@@ -298,7 +298,7 @@ export default {
|
|
|
298
298
|
:label="t('persistentVolume.customize.label')"
|
|
299
299
|
:weight="0"
|
|
300
300
|
>
|
|
301
|
-
<div class="row
|
|
301
|
+
<div class="row">
|
|
302
302
|
<div class="col span-6">
|
|
303
303
|
<h3>{{ t('persistentVolume.customize.accessModes.label') }}</h3>
|
|
304
304
|
<div>
|
|
@@ -323,6 +323,8 @@ export default {
|
|
|
323
323
|
/>
|
|
324
324
|
</div>
|
|
325
325
|
</div>
|
|
326
|
+
</div>
|
|
327
|
+
<div class="row">
|
|
326
328
|
<div class="col span-6">
|
|
327
329
|
<ArrayList
|
|
328
330
|
v-model:value="value.spec.mountOptions"
|
package/edit/workload/Job.vue
CHANGED
|
@@ -150,7 +150,7 @@ export default {
|
|
|
150
150
|
|
|
151
151
|
<template>
|
|
152
152
|
<form>
|
|
153
|
-
<div class="row
|
|
153
|
+
<div class="row">
|
|
154
154
|
<div
|
|
155
155
|
data-testid="input-job-completions"
|
|
156
156
|
class="col span-6"
|
|
@@ -178,7 +178,7 @@ export default {
|
|
|
178
178
|
/>
|
|
179
179
|
</div>
|
|
180
180
|
</div>
|
|
181
|
-
<div class="row
|
|
181
|
+
<div class="row">
|
|
182
182
|
<div
|
|
183
183
|
data-testid="input-job-backoffLimit"
|
|
184
184
|
class="col span-6"
|
|
@@ -208,7 +208,7 @@ export default {
|
|
|
208
208
|
</div>
|
|
209
209
|
|
|
210
210
|
<template v-if="isCronJob">
|
|
211
|
-
<div class="row
|
|
211
|
+
<div class="row ">
|
|
212
212
|
<div
|
|
213
213
|
data-testid="input-job-successful"
|
|
214
214
|
class="col span-6"
|
|
@@ -234,7 +234,7 @@ export default {
|
|
|
234
234
|
/>
|
|
235
235
|
</div>
|
|
236
236
|
</div>
|
|
237
|
-
<div class="row
|
|
237
|
+
<div class="row">
|
|
238
238
|
<div
|
|
239
239
|
data-testid="input-job-startingDeadlineSeconds"
|
|
240
240
|
class="col span-6"
|
|
@@ -276,7 +276,6 @@ export default {
|
|
|
276
276
|
</div>
|
|
277
277
|
<div
|
|
278
278
|
data-testid="input-job-concurrencyPolicy"
|
|
279
|
-
|
|
280
279
|
class="col span-8"
|
|
281
280
|
>
|
|
282
281
|
<RadioGroup
|
|
@@ -241,7 +241,7 @@ export default {
|
|
|
241
241
|
</div>
|
|
242
242
|
<div
|
|
243
243
|
v-if="isStatefulSet && !noDeploymentSpec"
|
|
244
|
-
class="row
|
|
244
|
+
class="row"
|
|
245
245
|
>
|
|
246
246
|
<div
|
|
247
247
|
class="col span-6"
|
|
@@ -252,7 +252,7 @@ export default {
|
|
|
252
252
|
name="podManagement"
|
|
253
253
|
:mode="mode"
|
|
254
254
|
:label="t('workload.upgrading.podManagementPolicy.label')"
|
|
255
|
-
:options="['OrderedReady', 'Parallel']"
|
|
255
|
+
:options="['OrderedReady (顺序就绪模式)', 'Parallel (并行模式)']"
|
|
256
256
|
@update:value="update"
|
|
257
257
|
/>
|
|
258
258
|
</div>
|
package/edit/workload/index.vue
CHANGED
|
@@ -194,7 +194,7 @@ export default {
|
|
|
194
194
|
<div>
|
|
195
195
|
<div
|
|
196
196
|
:style="{'align-items':'center'}"
|
|
197
|
-
class="row
|
|
197
|
+
class="row"
|
|
198
198
|
>
|
|
199
199
|
<div class="col span-6">
|
|
200
200
|
<LabeledInput
|
|
@@ -214,7 +214,7 @@ export default {
|
|
|
214
214
|
/>
|
|
215
215
|
</div>
|
|
216
216
|
</div>
|
|
217
|
-
<h3>{{ t('workload.container.titles.image') }}</h3>
|
|
217
|
+
<h3 class="mt-20">{{ t('workload.container.titles.image') }}</h3>
|
|
218
218
|
<div class="row">
|
|
219
219
|
<div class="col span-6">
|
|
220
220
|
<LabeledInput
|
|
@@ -252,7 +252,7 @@ export default {
|
|
|
252
252
|
</div>
|
|
253
253
|
</div>
|
|
254
254
|
<div>
|
|
255
|
-
<h3>
|
|
255
|
+
<h3 class="mt-20">
|
|
256
256
|
{{ t('workload.container.ports.expose') }}
|
|
257
257
|
<i
|
|
258
258
|
v-clean-tooltip="{content: t('workload.container.ports.toolTip'), triggers: ['hover', 'touch', 'focus'] }"
|
|
@@ -274,8 +274,7 @@ export default {
|
|
|
274
274
|
/>
|
|
275
275
|
</div>
|
|
276
276
|
</div>
|
|
277
|
-
<div class="
|
|
278
|
-
<div>
|
|
277
|
+
<div class="mt-40">
|
|
279
278
|
<h3>{{ t('workload.container.titles.command') }}</h3>
|
|
280
279
|
<Command
|
|
281
280
|
v-model:value="allContainers[i]"
|
|
@@ -295,8 +294,7 @@ export default {
|
|
|
295
294
|
:loading="isLoadingSecondaryResources"
|
|
296
295
|
@update:value="updateServiceAccount"
|
|
297
296
|
/>
|
|
298
|
-
<div class="
|
|
299
|
-
<div>
|
|
297
|
+
<div class="mt-40">
|
|
300
298
|
<h3>{{ t('workload.container.titles.lifecycle') }}</h3>
|
|
301
299
|
<LifecycleHooks
|
|
302
300
|
v-model:value="allContainers[i].lifecycle"
|
|
@@ -449,8 +447,7 @@ export default {
|
|
|
449
447
|
</div>
|
|
450
448
|
</div>
|
|
451
449
|
|
|
452
|
-
<div>
|
|
453
|
-
<div class="spacer" />
|
|
450
|
+
<div class="mt-40">
|
|
454
451
|
<h3 class="mb-10">
|
|
455
452
|
<t k="workload.scheduling.titles.priority" />
|
|
456
453
|
</h3>
|
|
@@ -563,7 +560,7 @@ export default {
|
|
|
563
560
|
>
|
|
564
561
|
<div>
|
|
565
562
|
<h3>{{ t('workload.container.titles.podLabels') }}</h3>
|
|
566
|
-
<div class="row
|
|
563
|
+
<div class="row">
|
|
567
564
|
<KeyValue
|
|
568
565
|
key="labels"
|
|
569
566
|
v-model:value="podLabels"
|
|
@@ -573,8 +570,7 @@ export default {
|
|
|
573
570
|
:protip="false"
|
|
574
571
|
/>
|
|
575
572
|
</div>
|
|
576
|
-
<
|
|
577
|
-
<h3>{{ t('workload.container.titles.podAnnotations') }}</h3>
|
|
573
|
+
<h3 class="mt-40">{{ t('workload.container.titles.podAnnotations') }}</h3>
|
|
578
574
|
<div class="row">
|
|
579
575
|
<KeyValue
|
|
580
576
|
key="annotations"
|
|
@@ -666,8 +662,16 @@ export default {
|
|
|
666
662
|
border-bottom: 1px solid var(--border);
|
|
667
663
|
margin-bottom: 20px;
|
|
668
664
|
}
|
|
665
|
+
|
|
666
|
+
> .tab-container{
|
|
667
|
+
border: none !important;
|
|
668
|
+
}
|
|
669
669
|
}
|
|
670
670
|
.padded {
|
|
671
671
|
padding-bottom: 10px;
|
|
672
672
|
}
|
|
673
|
+
|
|
674
|
+
H3{
|
|
675
|
+
font-size: 14px;
|
|
676
|
+
}
|
|
673
677
|
</style>
|
package/package.json
CHANGED
|
@@ -230,7 +230,7 @@ export default {
|
|
|
230
230
|
|
|
231
231
|
.name {
|
|
232
232
|
white-space: nowrap;
|
|
233
|
-
overflow: hidden;
|
|
233
|
+
// overflow: hidden;
|
|
234
234
|
text-overflow: ellipsis;
|
|
235
235
|
margin: 0;
|
|
236
236
|
}
|
|
@@ -249,7 +249,7 @@ export default {
|
|
|
249
249
|
.version {
|
|
250
250
|
color: var(--muted);
|
|
251
251
|
white-space: nowrap;
|
|
252
|
-
overflow: hidden;
|
|
252
|
+
// overflow: hidden;
|
|
253
253
|
text-overflow: ellipsis;
|
|
254
254
|
font-size: 0.9em;
|
|
255
255
|
margin-top: 4px;
|
|
@@ -262,10 +262,10 @@ export default {
|
|
|
262
262
|
.description-content {
|
|
263
263
|
display: -webkit-box;
|
|
264
264
|
-webkit-box-orient: vertical;
|
|
265
|
-
-webkit-line-clamp: 3;
|
|
266
|
-
line-clamp: 3;
|
|
267
|
-
overflow: hidden;
|
|
268
|
-
text-overflow: ellipsis;
|
|
265
|
+
// -webkit-line-clamp: 3;
|
|
266
|
+
// line-clamp: 3;
|
|
267
|
+
// overflow: hidden;
|
|
268
|
+
// text-overflow: ellipsis;
|
|
269
269
|
color: var(--text-muted);
|
|
270
270
|
}
|
|
271
271
|
|