@rancher/shell 0.3.26 → 0.3.28
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/translations/en-us.yaml +8 -23
- package/assets/translations/zh-hans.yaml +2 -26
- package/chart/gatekeeper.vue +2 -11
- package/chart/istio.vue +1 -10
- package/chart/logging/index.vue +2 -11
- package/chart/monitoring/index.vue +1 -9
- package/chart/rancher-backup/index.vue +1 -9
- package/components/AlertTable.vue +8 -6
- package/components/Carousel.vue +2 -1
- package/components/EmberPage.vue +2 -2
- package/components/EtcdInfoBanner.vue +12 -2
- package/components/GlobalRoleBindings.vue +10 -0
- package/components/GrafanaDashboard.vue +8 -3
- package/components/Wizard.vue +17 -1
- package/components/auth/RoleDetailEdit.vue +17 -1
- package/components/form/ArrayList.vue +20 -11
- package/components/form/__tests__/ArrayList.test.ts +44 -0
- package/components/formatter/ClusterProvider.vue +1 -18
- package/components/nav/Header.vue +5 -4
- package/components/nav/TopLevelMenu.vue +38 -15
- package/components/nav/WindowManager/ContainerLogs.vue +22 -19
- package/components/nav/__tests__/TopLevelMenu.test.ts +120 -0
- package/components/nav/__tests__/Type.test.ts +139 -0
- package/config/private-label.js +1 -1
- package/config/product/manager.js +0 -13
- package/config/settings.ts +0 -2
- package/config/types.js +0 -4
- package/core/types.ts +11 -4
- package/edit/management.cattle.io.project.vue +1 -52
- package/edit/management.cattle.io.setting.vue +31 -2
- package/edit/provisioning.cattle.io.cluster/Basics.vue +19 -107
- package/edit/provisioning.cattle.io.cluster/CustomCommand.vue +1 -1
- package/edit/provisioning.cattle.io.cluster/__tests__/Basics.tests.ts +0 -3
- package/edit/provisioning.cattle.io.cluster/rke2.vue +3 -128
- package/edit/workload/mixins/workload.js +14 -4
- package/middleware/authenticated.js +4 -2
- package/models/__tests__/management.cattle.io.cluster.test.ts +19 -0
- package/models/__tests__/provisioning.cattle.io.cluster.test.ts +90 -0
- package/models/cluster.x-k8s.io.machine.js +1 -1
- package/models/fleet.cattle.io.cluster.js +11 -1
- package/models/management.cattle.io.cluster.js +4 -0
- package/models/management.cattle.io.project.js +0 -36
- package/models/management.cattle.io.setting.js +11 -7
- package/models/provisioning.cattle.io.cluster.js +16 -4
- package/package.json +1 -1
- package/pages/auth/setup.vue +38 -1
- package/pages/c/_cluster/apps/charts/__tests__/install.helper.test.ts +2 -17
- package/pages/c/_cluster/apps/charts/index.vue +0 -15
- package/pages/c/_cluster/apps/charts/install.helpers.js +2 -13
- package/pages/c/_cluster/apps/charts/install.vue +1 -1
- package/pages/c/_cluster/auth/roles/index.vue +11 -1
- package/pages/c/_cluster/explorer/index.vue +7 -49
- package/pages/c/_cluster/manager/pages/_page.vue +4 -5
- package/pages/c/_cluster/monitoring/index.vue +26 -39
- package/pages/support/index.vue +1 -8
- package/promptRemove/management.cattle.io.project.vue +6 -9
- package/rancher-components/BadgeState/BadgeState.vue +1 -5
- package/rancher-components/Banner/Banner.test.ts +1 -51
- package/rancher-components/Banner/Banner.vue +53 -134
- package/rancher-components/Card/Card.vue +7 -24
- package/rancher-components/Form/Checkbox/Checkbox.test.ts +29 -20
- package/rancher-components/Form/Checkbox/Checkbox.vue +20 -45
- package/rancher-components/Form/LabeledInput/LabeledInput.test.ts +8 -2
- package/rancher-components/Form/LabeledInput/LabeledInput.vue +10 -22
- package/rancher-components/Form/Radio/RadioButton.vue +13 -30
- package/rancher-components/Form/Radio/RadioGroup.vue +7 -26
- package/rancher-components/Form/TextArea/TextAreaAutoGrow.vue +6 -7
- package/rancher-components/Form/ToggleSwitch/ToggleSwitch.test.ts +38 -25
- package/rancher-components/Form/ToggleSwitch/ToggleSwitch.vue +11 -23
- package/rancher-components/LabeledTooltip/LabeledTooltip.vue +5 -19
- package/rancher-components/StringList/StringList.test.ts +49 -453
- package/rancher-components/StringList/StringList.vue +58 -92
- package/rancher-components/components/Form/Radio/RadioGroup.test.ts +30 -0
- package/rancher-components/components/Form/Radio/RadioGroup.vue +4 -0
- package/rancher-components/components/StringList/StringList.test.ts +270 -0
- package/rancher-components/components/StringList/StringList.vue +57 -18
- package/store/features.js +1 -0
- package/store/prefs.js +0 -3
- package/types/shell/index.d.ts +26 -17
- package/utils/__tests__/object.test.ts +67 -1
- package/utils/__tests__/version.test.ts +13 -23
- package/utils/cluster.js +1 -1
- package/utils/custom-validators.js +0 -2
- package/utils/error.js +16 -1
- package/utils/grafana.js +1 -2
- package/utils/monitoring.js +25 -1
- package/utils/object.js +4 -3
- package/utils/sort.js +1 -1
- package/utils/validators/formRules/__tests__/index.test.ts +49 -4
- package/utils/validators/formRules/index.ts +13 -10
- package/utils/validators/role-template.js +1 -1
- package/utils/validators/setting.js +6 -10
- package/utils/version.js +0 -13
- package/components/ChartPsp.vue +0 -76
- package/components/__tests__/ChartPsp.test.ts +0 -75
- package/components/formatter/__tests__/ClusterProvider.test.ts +0 -28
- package/rancher-components/Card/Card.test.ts +0 -37
- package/rancher-components/Form/Radio/RadioButton.test.ts +0 -31
- package/yarn-error.log +0 -200
|
@@ -851,9 +851,6 @@ catalog:
|
|
|
851
851
|
keywords: Keywords
|
|
852
852
|
errors:
|
|
853
853
|
clusterToolExists: This chart has a fixed namespace and name. A matching <a href="{url}">application</a> has been found and any changes will be made to it.
|
|
854
|
-
banner:
|
|
855
|
-
legacy: 'PSP Removal: Before upgrading a cluster to Kubernetes 1.25+, please ensure you review your Helm applications for Pod Security Policies and update them accordingly'
|
|
856
|
-
enablePSP: Enable Pod Security Policies
|
|
857
854
|
global: Global
|
|
858
855
|
charts:
|
|
859
856
|
all: All
|
|
@@ -1673,10 +1670,8 @@ cluster:
|
|
|
1673
1670
|
os: 'You are attempting to add a {newOS} worker node to a cluster with one or more {existingOS} worker nodes: some installed apps may need to be upgraded or removed.'
|
|
1674
1671
|
rke2-k3-reprovisioning: 'Making changes to cluster configuration may result in nodes reprovisioning. For more information see the <a target="blank" href="{docsBase}/cluster-provisioning/rke-clusters/behavior-differences-between-rke1-and-rke2/" target="_blank" rel="noopener nofollow">documentation</a>.'
|
|
1675
1672
|
desiredNodeGroupWarning: There are 0 nodes available to run the cluster agent. The cluster will not become active until at least one node is available.
|
|
1676
|
-
invalidPsps: You have one or more PodSecurityPolicy resource(s) in this cluster. Pod Security Policies are not available in Kubernetes v1.25 and will be automatically removed.
|
|
1677
1673
|
haveArgInfo: Configuration information is not available for the selected Kubernetes version. The options available on this screen will be limited; you may want to use the YAML editor.
|
|
1678
|
-
|
|
1679
|
-
removedPsp: Pod Security Policies have been removed in Kubernetes v1.25. Use Pod Security Admission instead.
|
|
1674
|
+
cloudProviderAddConfig: 'On Kubernetes 1.27 or greater, the Amazon Cloud Provider requires additional configuration. See <a href="https://ranchermanager.docs.rancher.com/how-to-guides/new-user-guides/kubernetes-clusters-in-rancher-setup/set-up-cloud-providers/amazon" target="_blank" rel="noopener noreferrer nofollow">the documentation</a> for more information.'
|
|
1680
1675
|
machinePoolError: |-
|
|
1681
1676
|
{count, plural,
|
|
1682
1677
|
=1 { {pool_name}: The provided value for {fields} was not found in the list of expected values. This can happen with clusters provisioned outside of Rancher or when options for the provider have changed. }
|
|
@@ -1842,9 +1837,6 @@ cluster:
|
|
|
1842
1837
|
cisOverride: Changing this setting may affect cluster security as it overrides default CIS settings
|
|
1843
1838
|
cisUnsupported: The selected Kubernetes Version no longer supports CIS Profile "{cisProfile}". Please select a supported profile. We recommend reviewing the <a href="https://docs.rke2.io/security/hardening_guide" target="_blank" rel="noopener noreferrer nofollow">documentation</a> to evaluate the impact of changing the CIS Profile.
|
|
1844
1839
|
modal:
|
|
1845
|
-
pspChange:
|
|
1846
|
-
title: Pod Security Policy deprecation
|
|
1847
|
-
body: <p>Kubernetes has removed support for Pod Security Policies (PSPs) starting with version 1.25. If your cluster has PodSecurityPolicy admission controller enabled via "kube-apiserver-arg.enable-admission-plugins" in Cluster YAML, it has to be <i>manually</i> removed before proceeding with the upgrade. Additionally, any PSPs that may be present in the cluster will no longer be available/enforced. Do you want to proceed?</p>
|
|
1848
1840
|
editYamlMachinePool:
|
|
1849
1841
|
title: Save Machine Configurations
|
|
1850
1842
|
body: Machine Configurations define how machines in Pools are deployed.<br><br> They will be saved upfront to ensure valid Cluster YAML can be saved.
|
|
@@ -2763,11 +2755,9 @@ landing:
|
|
|
2763
2755
|
cpuUsed: CPU Used
|
|
2764
2756
|
memoryUsed: Memory Used
|
|
2765
2757
|
seeWhatsNew: Learn more about the improvements and new capabilities in this version.
|
|
2766
|
-
whatsNewLink: "What's new in 2.
|
|
2758
|
+
whatsNewLink: "What's new in 2.8"
|
|
2767
2759
|
learnMore: Learn More
|
|
2768
2760
|
support: Support
|
|
2769
|
-
psps: PSPs
|
|
2770
|
-
deprecatedPsp: Pod Security Policies are deprecated as of Kubernetes v1.21, and have been removed in Kubernetes v1.25. You have one or more PodSecurityPolicy resource(s) in this cluster.
|
|
2771
2761
|
community:
|
|
2772
2762
|
title: Community Support
|
|
2773
2763
|
docs: Docs
|
|
@@ -2833,7 +2823,7 @@ logging:
|
|
|
2833
2823
|
dockerRootDirectory: Docker Root Directory
|
|
2834
2824
|
systemdLogPath: systemd Log Path
|
|
2835
2825
|
tooltip: 'Some kubernetes distributions log to <code>journald</code>. In order to collect these logs the <code>systemdLogPath</code> needs to be defined. While the <code>/run/log/journal</code> directory is used by default, some Linux distributions do not default to this path.'
|
|
2836
|
-
url: '<a href="https://rancher.com/
|
|
2826
|
+
url: '<a href="https://ranchermanager.docs.rancher.com/v2.8/integrations-in-rancher/logging/logging-helm-chart-options" target="_blank" rel="noopener nofollow noreferrer">Learn more</a>'
|
|
2837
2827
|
default: /run/log/journal
|
|
2838
2828
|
elasticsearch:
|
|
2839
2829
|
host: Host
|
|
@@ -4341,10 +4331,6 @@ project:
|
|
|
4341
4331
|
vmDefaultResourceLimit: VM Default Resource Limit
|
|
4342
4332
|
resourceQuotas: Resource Quotas
|
|
4343
4333
|
haveOneOwner: There must be at least one member with the Owner role.
|
|
4344
|
-
psp:
|
|
4345
|
-
default: Cluster Default
|
|
4346
|
-
label: Pod Security Policy
|
|
4347
|
-
current: "{value} (Current)"
|
|
4348
4334
|
|
|
4349
4335
|
|
|
4350
4336
|
projectMembers:
|
|
@@ -4613,6 +4599,7 @@ rbac:
|
|
|
4613
4599
|
restricted-admin:
|
|
4614
4600
|
label: Restricted Administrator
|
|
4615
4601
|
description: Restricted Admins have full control over all resources in all downstream clusters but no access to the local cluster.
|
|
4602
|
+
deprecation: 'Warning: The Restricted Administrator role has been deprecated as of Rancher 2.8.0 and will be removed in a future release - Check out the <a href="{releaseNotesUrl}" target="_blank" rel="noopener noreferrer nofollow">Release Notes</a>'
|
|
4616
4603
|
user:
|
|
4617
4604
|
label: Standard User
|
|
4618
4605
|
description: Standard Users can create new clusters and manage clusters and projects they have been granted access to.
|
|
@@ -4649,9 +4636,6 @@ rbac:
|
|
|
4649
4636
|
nodetemplates-manage:
|
|
4650
4637
|
label: Manage Node Templates
|
|
4651
4638
|
description: Allows the user to define, edit, and remove Node Templates.
|
|
4652
|
-
podsecuritypolicytemplates-manage:
|
|
4653
|
-
label: Manage Pod Security Policies (PSPs)
|
|
4654
|
-
description: Allows the user to define, edit, and remove PSPs.
|
|
4655
4639
|
roles-manage:
|
|
4656
4640
|
label: Manage Roles
|
|
4657
4641
|
description: Allows the user to define, edit, and remove Role definitions.
|
|
@@ -5753,7 +5737,10 @@ validation:
|
|
|
5753
5737
|
required: 'Port Rule [{position}] - Target Port is required'
|
|
5754
5738
|
setting:
|
|
5755
5739
|
serverUrl:
|
|
5756
|
-
https:
|
|
5740
|
+
https: Server URL must be https.
|
|
5741
|
+
localhost: If the Server URL is internal to the Rancher server (e.g. localhost) the downstream clusters may not be able to communicate with Rancher.
|
|
5742
|
+
trailingForwardSlash: Server URL should not have a trailing forward slash.
|
|
5743
|
+
url: Server URL must be an URL.
|
|
5757
5744
|
stringLength:
|
|
5758
5745
|
between: '"{key}" should be between {min} and {max} {max, plural, =1 {character} other {characters}}'
|
|
5759
5746
|
exactly: '"{key}" should be {count, plural, =1 {# character} other {# characters}}'
|
|
@@ -7079,7 +7066,6 @@ advancedSettings:
|
|
|
7079
7066
|
'auth-user-session-ttl-minutes': 'Custom TTL (in minutes) on a user auth session.'
|
|
7080
7067
|
'auth-token-max-ttl-minutes': 'Max TTL (in minutes) for all authentication tokens. When set to 0, the token never expires.'
|
|
7081
7068
|
'kubeconfig-generate-token': 'Automatically generate tokens for users when a kubeconfig is requested.'
|
|
7082
|
-
'kubeconfig-token-ttl-minutes': 'TTL used for tokens generated via the CLI. Deprecated: This setting will be removed, and kubeconfig-default-token-ttl-minutes will be used for all kubeconfig tokens.'
|
|
7083
7069
|
'kubeconfig-default-token-ttl-minutes': 'TTL (in minutes) applied on all kubeconfig tokens. When set to 0, the token never expires.'
|
|
7084
7070
|
'rke-metadata-config': 'Configure RKE metadata refresh parameters.'
|
|
7085
7071
|
'ui-banners': 'Classification banner is used to display a custom fixed banner in the header, footer, or both.'
|
|
@@ -7397,7 +7383,6 @@ legacy:
|
|
|
7397
7383
|
globalDnsProviders: Global DNS Providers
|
|
7398
7384
|
notifiers: Notifiers
|
|
7399
7385
|
monitoring: Monitoring
|
|
7400
|
-
psps: Pod Security Policy Templates
|
|
7401
7386
|
secrets: Secrets
|
|
7402
7387
|
|
|
7403
7388
|
project:
|
|
@@ -845,9 +845,6 @@ catalog:
|
|
|
845
845
|
keywords: 关键词
|
|
846
846
|
errors:
|
|
847
847
|
clusterToolExists: 此 Chart 含有固定的命名空间和名称。找到一个匹配的 <a href="{url}">应用</a>,任何修改都将应用于此应用。
|
|
848
|
-
banner:
|
|
849
|
-
legacy: 'PSP 删除:在将集群升级到 Kubernetes 1.25+ 之前,请确保你针对 PSP 检查了 Helm 应用程序并相应进行更新'
|
|
850
|
-
enablePSP: 启用 Pod 安全策略
|
|
851
848
|
global: 全局
|
|
852
849
|
charts:
|
|
853
850
|
all: 全部
|
|
@@ -1673,10 +1670,7 @@ cluster:
|
|
|
1673
1670
|
os: '你正在将 {newOS} worker 节点添加到具有一个或多个 {existingOS} worker 节点的集群。你可能需要升级或删除某些已安装的应用。'
|
|
1674
1671
|
rke2-k3-reprovisioning: '更改集群配置可能导致节点重新配置。详情请参见 <a target="blank" href="{docsBase}/cluster-provisioning/rke-clusters/behavior-differences-between-rke1-and-rke2/" target="_blank" rel="noopener nofollow">文档</a>。'
|
|
1675
1672
|
desiredNodeGroupWarning: 没有可用于运行 Cluster Agent 的节点。要让集群变为 Active 状态,至少需要有 1 个可用的节点。
|
|
1676
|
-
invalidPsps: 你在此集群中有一个或多个 PSP 资源。Pod 安全策略在 Kubernetes v1.25 中不可用并将自动删除。
|
|
1677
1673
|
haveArgInfo: 所选 Kubernetes 版本的配置信息不可用。此屏幕中可用的选项将受到限制,你可能需要使用 YAML 编辑器。
|
|
1678
|
-
deprecatedPsp: Pod 安全策略自 Kubernetes v1.21 起已弃用,并已在 Kubernetes v1.25 中删除。
|
|
1679
|
-
removedPsp: Pod 安全策略已在 Kubernetes v1.25 中删除,请改用 Pod Security Admission。
|
|
1680
1674
|
rkeTemplateUpgrade: 模板修订版 {name} 可用于升级
|
|
1681
1675
|
|
|
1682
1676
|
availabilityWarnings:
|
|
@@ -1835,10 +1829,6 @@ cluster:
|
|
|
1835
1829
|
psaChange: PSACT 现在自动设置为 Rancher 默认值
|
|
1836
1830
|
cisOverride: 更改此设置可能会影响集群安全,因为它会覆盖默认的 CIS 设置
|
|
1837
1831
|
cisUnsupported: 所选 Kubernetes 版本不再支持 CIS 配置文件 “{cisProfile}”,请选择支持的配置文件。建议你查看<a href="https://docs.rke2.io/security/hardening_guide" target="_blank" rel="noopener noreferrer nofollow">文档</a>评估更改 CIS 配置文件的影响。
|
|
1838
|
-
modal:
|
|
1839
|
-
pspChange:
|
|
1840
|
-
title: 弃用 Pod 安全策略
|
|
1841
|
-
body: <p>从 v1.25 版开始,Kubernetes 已经取消了对 Pod 安全策略 (PSP) 的支持。如果你的集群通过集群 YAML 中的 “kube-apiserver-arg.enable-admission-plugins” 启用了 PodSecurityPolicy 准入控制器,你必须在继续升级之前<i>手动</i>删除它。此外,集群中存在的任何 PSP 将不再可用或强制执行。是否继续操作?</p>
|
|
1842
1832
|
snapshots:
|
|
1843
1833
|
suffix: 每个节点的快照
|
|
1844
1834
|
systemService:
|
|
@@ -2735,11 +2725,9 @@ landing:
|
|
|
2735
2725
|
cpuUsed: 已用 CPU
|
|
2736
2726
|
memoryUsed: 已用内存
|
|
2737
2727
|
seeWhatsNew: 点击右侧链接,了解此版本的新功能和优化。
|
|
2738
|
-
whatsNewLink: "2.
|
|
2728
|
+
whatsNewLink: "2.8 的新功能"
|
|
2739
2729
|
learnMore: 了解更多
|
|
2740
2730
|
support: 支持
|
|
2741
|
-
psps: PSP
|
|
2742
|
-
deprecatedPsp: Pod 安全策略自 Kubernetes v1.21 起已弃用,并已在 Kubernetes v1.25 中删除。你在此集群中有一个或多个 PSP 资源。
|
|
2743
2731
|
community:
|
|
2744
2732
|
title: 社区支持
|
|
2745
2733
|
docs: Rancher 官方文档
|
|
@@ -2805,7 +2793,7 @@ logging:
|
|
|
2805
2793
|
dockerRootDirectory: Docker 根目录
|
|
2806
2794
|
systemdLogPath: systemd 日志路径
|
|
2807
2795
|
tooltip: '某些 Kubernetes 发行版在 <code>journald</code>中记录日志。你需要定义<code>systemdLogPath</code> 以收集日志。默认路径是<code>/run/log/journal</code>,但某些 Linux 发行版不默认使用该路径。'
|
|
2808
|
-
url: '<a href="https://rancher.com/
|
|
2796
|
+
url: '<a href="https://ranchermanager.docs.rancher.com/v2.8/integrations-in-rancher/logging/logging-helm-chart-options" target="_blank" rel="noopener nofollow noreferrer">了解更多</a>'
|
|
2809
2797
|
default: /run/log/journal
|
|
2810
2798
|
elasticsearch:
|
|
2811
2799
|
host: 主机
|
|
@@ -4314,10 +4302,6 @@ project:
|
|
|
4314
4302
|
vmDefaultResourceLimit: 虚拟机默认资源限制
|
|
4315
4303
|
resourceQuotas: 资源配额
|
|
4316
4304
|
haveOneOwner: 至少有一名成员需要具有所有者角色。
|
|
4317
|
-
psp:
|
|
4318
|
-
default: 集群默认
|
|
4319
|
-
label: Pod 安全策略
|
|
4320
|
-
current: "{value} (Current)"
|
|
4321
4305
|
|
|
4322
4306
|
|
|
4323
4307
|
projectMembers:
|
|
@@ -4622,9 +4606,6 @@ rbac:
|
|
|
4622
4606
|
nodetemplates-manage:
|
|
4623
4607
|
label: 管理节点模板
|
|
4624
4608
|
description: 允许用户定义、编辑和移除节点模板。
|
|
4625
|
-
podsecuritypolicytemplates-manage:
|
|
4626
|
-
label: 管理 Pod 安全策略(PSP)
|
|
4627
|
-
description: 允许用户定义、编辑和移除 Pod 安全策略。
|
|
4628
4609
|
roles-manage:
|
|
4629
4610
|
label: 管理角色
|
|
4630
4611
|
description: 允许用户定义、编辑和移除角色定义。
|
|
@@ -7051,7 +7032,6 @@ advancedSettings:
|
|
|
7051
7032
|
'auth-user-session-ttl-minutes': '用户认证会话的自定义 TTL(单位:分钟)。'
|
|
7052
7033
|
'auth-token-max-ttl-minutes': '所有身份认证 Token 的最大 TTL(单位:分钟)。如果设置为 0,则 Token 永不过期。'
|
|
7053
7034
|
'kubeconfig-generate-token': '请求 kubeconfig 时自动为用户生成 Token。'
|
|
7054
|
-
'kubeconfig-token-ttl-minutes': '在 CLI 中生成的 Token TTL。已弃用:此设置将被删除,kubeconfig-default-token-ttl-minutes 将用于所有 kubeconfig Token。'
|
|
7055
7035
|
'kubeconfig-default-token-ttl-minutes': '应用于所有 kubeconfig Token 的 TTL(单位:分钟)。如果设置为 0,则 Token 永不过期。'
|
|
7056
7036
|
'rke-metadata-config': '配置 RKE 元数据刷新参数。'
|
|
7057
7037
|
'ui-banners': '分类横幅用于在页眉、页脚或两者中显示自定义的固定横幅。'
|
|
@@ -7380,7 +7360,6 @@ legacy:
|
|
|
7380
7360
|
globalDnsProviders: 全局 DNS 提供商
|
|
7381
7361
|
notifiers: Notifiers
|
|
7382
7362
|
monitoring: 监控
|
|
7383
|
-
psps: Pod 安全策略模板
|
|
7384
7363
|
secrets: 密文
|
|
7385
7364
|
|
|
7386
7365
|
project:
|
|
@@ -7461,9 +7440,6 @@ charts:
|
|
|
7461
7440
|
service.ui.type:
|
|
7462
7441
|
label: Longhorn UI 服务
|
|
7463
7442
|
description: 定义 Longhorn UI 服务类型
|
|
7464
|
-
enablePSP:
|
|
7465
|
-
label: Pod 安全策略
|
|
7466
|
-
description: 为 Longhorn 工作负载设置 Pod 安全策略
|
|
7467
7443
|
csi.kubeletRootDir:
|
|
7468
7444
|
label: Kubelet 根目录
|
|
7469
7445
|
description: 指定 kubelet root-dir。如留空,则自动检测。
|
package/chart/gatekeeper.vue
CHANGED
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
<script>
|
|
2
2
|
import UnitInput from '@shell/components/form/UnitInput';
|
|
3
|
-
import ChartPsp from '@shell/components/ChartPsp';
|
|
4
3
|
import { Checkbox } from '@components/Form/Checkbox';
|
|
5
4
|
import { mapGetters } from 'vuex';
|
|
6
5
|
|
|
7
6
|
export default {
|
|
8
|
-
components: {
|
|
9
|
-
|
|
10
|
-
},
|
|
11
|
-
props: {
|
|
7
|
+
components: { UnitInput, Checkbox },
|
|
8
|
+
props: {
|
|
12
9
|
value: {
|
|
13
10
|
type: Object,
|
|
14
11
|
default: () => {
|
|
@@ -60,12 +57,6 @@ export default {
|
|
|
60
57
|
</div>
|
|
61
58
|
</div>
|
|
62
59
|
|
|
63
|
-
<!-- Conditionally display PSP checkbox -->
|
|
64
|
-
<ChartPsp
|
|
65
|
-
:value="value"
|
|
66
|
-
:cluster="currentCluster"
|
|
67
|
-
/>
|
|
68
|
-
|
|
69
60
|
<template v-if="crdValues">
|
|
70
61
|
<!-- gatekeeper versions <1.0.2 do not have this option -->
|
|
71
62
|
<Checkbox
|
package/chart/istio.vue
CHANGED
|
@@ -6,7 +6,6 @@ import YamlEditor from '@shell/components/YamlEditor';
|
|
|
6
6
|
import { mapGetters } from 'vuex';
|
|
7
7
|
import FileSelector from '@shell/components/form/FileSelector';
|
|
8
8
|
import { Banner } from '@components/Banner';
|
|
9
|
-
import ChartPsp from '@shell/components/ChartPsp';
|
|
10
9
|
|
|
11
10
|
const defaultOverlayFile = `#apiVersion: install.istio.io/v1alpha1
|
|
12
11
|
#kind: IstioOperator
|
|
@@ -54,8 +53,7 @@ export default {
|
|
|
54
53
|
Checkbox,
|
|
55
54
|
FileSelector,
|
|
56
55
|
YamlEditor,
|
|
57
|
-
Banner
|
|
58
|
-
ChartPsp
|
|
56
|
+
Banner
|
|
59
57
|
},
|
|
60
58
|
|
|
61
59
|
props: {
|
|
@@ -140,13 +138,6 @@ export default {
|
|
|
140
138
|
|
|
141
139
|
<template>
|
|
142
140
|
<div>
|
|
143
|
-
<!-- Conditionally display PSP checkbox -->
|
|
144
|
-
<ChartPsp
|
|
145
|
-
:value="value"
|
|
146
|
-
:title="t('catalog.chart.global')"
|
|
147
|
-
:cluster="currentCluster"
|
|
148
|
-
/>
|
|
149
|
-
|
|
150
141
|
<h3>
|
|
151
142
|
{{ t('istio.titles.components') }}
|
|
152
143
|
</h3>
|
package/chart/logging/index.vue
CHANGED
|
@@ -2,13 +2,10 @@
|
|
|
2
2
|
import { mapGetters } from 'vuex';
|
|
3
3
|
import { LabeledInput } from '@components/Form/LabeledInput';
|
|
4
4
|
import { Checkbox } from '@components/Form/Checkbox';
|
|
5
|
-
import ChartPsp from '@shell/components/ChartPsp';
|
|
6
5
|
|
|
7
6
|
export default {
|
|
8
|
-
components: {
|
|
9
|
-
|
|
10
|
-
},
|
|
11
|
-
props: {
|
|
7
|
+
components: { Checkbox, LabeledInput },
|
|
8
|
+
props: {
|
|
12
9
|
value: {
|
|
13
10
|
type: Object,
|
|
14
11
|
default: () => {
|
|
@@ -83,11 +80,5 @@ export default {
|
|
|
83
80
|
/>
|
|
84
81
|
</div>
|
|
85
82
|
</div>
|
|
86
|
-
|
|
87
|
-
<!-- Conditionally display PSP checkbox -->
|
|
88
|
-
<ChartPsp
|
|
89
|
-
:value="value"
|
|
90
|
-
:cluster="currentCluster"
|
|
91
|
-
/>
|
|
92
83
|
</div>
|
|
93
84
|
</template>
|
|
@@ -12,7 +12,6 @@ import { LabeledInput } from '@components/Form/LabeledInput';
|
|
|
12
12
|
import Loading from '@shell/components/Loading';
|
|
13
13
|
import Prometheus from '@shell/chart/monitoring/prometheus';
|
|
14
14
|
import Tab from '@shell/components/Tabbed/Tab';
|
|
15
|
-
import ChartPsp from '@shell/components/ChartPsp';
|
|
16
15
|
|
|
17
16
|
import { allHash } from '@shell/utils/promise';
|
|
18
17
|
import { STORAGE_CLASS, PVC, SECRET, WORKLOAD_TYPES } from '@shell/config/types';
|
|
@@ -26,8 +25,7 @@ export default {
|
|
|
26
25
|
LabeledInput,
|
|
27
26
|
Loading,
|
|
28
27
|
Prometheus,
|
|
29
|
-
Tab
|
|
30
|
-
ChartPsp
|
|
28
|
+
Tab
|
|
31
29
|
},
|
|
32
30
|
|
|
33
31
|
hasTabs: true,
|
|
@@ -265,12 +263,6 @@ export default {
|
|
|
265
263
|
/>
|
|
266
264
|
</div>
|
|
267
265
|
</div>
|
|
268
|
-
|
|
269
|
-
<!-- Conditionally display PSP checkbox -->
|
|
270
|
-
<ChartPsp
|
|
271
|
-
:value="value"
|
|
272
|
-
:cluster="currentCluster"
|
|
273
|
-
/>
|
|
274
266
|
</div>
|
|
275
267
|
</Tab>
|
|
276
268
|
<Tab
|
|
@@ -10,7 +10,6 @@ import { allHash } from '@shell/utils/promise';
|
|
|
10
10
|
import { STORAGE_CLASS, SECRET, PV } from '@shell/config/types';
|
|
11
11
|
import { mapGetters } from 'vuex';
|
|
12
12
|
import { STORAGE } from '@shell/config/labels-annotations';
|
|
13
|
-
import ChartPsp from '@shell/components/ChartPsp';
|
|
14
13
|
|
|
15
14
|
export default {
|
|
16
15
|
components: {
|
|
@@ -19,8 +18,7 @@ export default {
|
|
|
19
18
|
S3,
|
|
20
19
|
LabeledInput,
|
|
21
20
|
LabeledSelect,
|
|
22
|
-
Banner
|
|
23
|
-
ChartPsp
|
|
21
|
+
Banner
|
|
24
22
|
},
|
|
25
23
|
|
|
26
24
|
hasTabs: true,
|
|
@@ -169,12 +167,6 @@ export default {
|
|
|
169
167
|
label="Chart Options"
|
|
170
168
|
name="chartOptions"
|
|
171
169
|
>
|
|
172
|
-
<!-- Conditionally display PSP checkbox -->
|
|
173
|
-
<ChartPsp
|
|
174
|
-
:value="value"
|
|
175
|
-
:cluster="currentCluster"
|
|
176
|
-
/>
|
|
177
|
-
|
|
178
170
|
<Banner
|
|
179
171
|
color="info"
|
|
180
172
|
:label="t('backupRestoreOperator.deployment.storage.tip')"
|
|
@@ -82,14 +82,16 @@ export default {
|
|
|
82
82
|
},
|
|
83
83
|
|
|
84
84
|
async fetchDeps() {
|
|
85
|
-
|
|
86
|
-
|
|
85
|
+
if (this.$store.getters['cluster/canList'](ENDPOINTS)) {
|
|
86
|
+
try {
|
|
87
|
+
const am = await this.$store.dispatch('cluster/find', { type: ENDPOINTS, id: `${ this.monitoringNamespace }/${ this.alertServiceEndpoint }` });
|
|
87
88
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
89
|
+
if (!isEmpty(am) && !isEmpty(am.subsets)) {
|
|
90
|
+
this.alertManagerPoller.start();
|
|
91
|
+
}
|
|
92
|
+
} catch {
|
|
92
93
|
|
|
94
|
+
}
|
|
93
95
|
}
|
|
94
96
|
},
|
|
95
97
|
}
|
package/components/Carousel.vue
CHANGED
|
@@ -181,7 +181,7 @@ export default {
|
|
|
181
181
|
:label="slide.repoName"
|
|
182
182
|
color="slider-badge mb-20"
|
|
183
183
|
/>
|
|
184
|
-
<h1>{{ slide.chartNameDisplay }}
|
|
184
|
+
<h1>{{ slide.chartNameDisplay }}</h1>
|
|
185
185
|
<p>{{ slide.chartDescription }}</p>
|
|
186
186
|
</div>
|
|
187
187
|
</div>
|
|
@@ -282,6 +282,7 @@ export default {
|
|
|
282
282
|
.slide-content {
|
|
283
283
|
display: flex;
|
|
284
284
|
padding: 30px;
|
|
285
|
+
height: 100%;
|
|
285
286
|
|
|
286
287
|
.slide-img {
|
|
287
288
|
width: 150px;
|
package/components/EmberPage.vue
CHANGED
|
@@ -597,11 +597,11 @@ export default {
|
|
|
597
597
|
|
|
598
598
|
.ember-iframe {
|
|
599
599
|
border: 0;
|
|
600
|
-
left: var(--nav-width);
|
|
600
|
+
left: calc(var(--nav-width) + $app-bar-collapsed-width);
|
|
601
601
|
height: calc(100vh - var(--header-height));
|
|
602
602
|
position: absolute;
|
|
603
603
|
top: var(--header-height);
|
|
604
|
-
width: calc(100vw - var(--nav-width));
|
|
604
|
+
width: calc(100vw - var(--nav-width) - $app-bar-collapsed-width);
|
|
605
605
|
visibility: show;
|
|
606
606
|
}
|
|
607
607
|
|
|
@@ -9,8 +9,18 @@ export default {
|
|
|
9
9
|
components: { Banner, Loading },
|
|
10
10
|
async fetch() {
|
|
11
11
|
const inStore = this.$store.getters['currentProduct'].inStore;
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
let monitoringVersion = '';
|
|
13
|
+
|
|
14
|
+
if (this.$store.getters[`${ inStore }/canList}`](CATALOG.APP)) {
|
|
15
|
+
try {
|
|
16
|
+
const res = await this.$store.dispatch(`${ inStore }/find`, { type: CATALOG.APP, id: 'cattle-monitoring-system/rancher-monitoring' });
|
|
17
|
+
|
|
18
|
+
monitoringVersion = res?.currentVersion;
|
|
19
|
+
} catch (err) {
|
|
20
|
+
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
14
24
|
const leader = await hasLeader(monitoringVersion, this.$store.dispatch, this.currentCluster.id);
|
|
15
25
|
|
|
16
26
|
this.hasLeader = leader ? this.t('generic.yes') : this.t('generic.no');
|
|
@@ -94,6 +94,7 @@ export default {
|
|
|
94
94
|
};
|
|
95
95
|
},
|
|
96
96
|
computed: {
|
|
97
|
+
...mapGetters(['releaseNotesUrl']),
|
|
97
98
|
...mapGetters({ t: 'i18n/t' }),
|
|
98
99
|
|
|
99
100
|
isCreate() {
|
|
@@ -347,6 +348,11 @@ export default {
|
|
|
347
348
|
</div>
|
|
348
349
|
</template>
|
|
349
350
|
</Checkbox>
|
|
351
|
+
<p
|
|
352
|
+
v-if="role.id === 'restricted-admin'"
|
|
353
|
+
v-clean-html="t('rbac.globalRoles.role.restricted-admin.deprecation', { releaseNotesUrl }, true)"
|
|
354
|
+
class="deprecation-notice"
|
|
355
|
+
/>
|
|
350
356
|
</div>
|
|
351
357
|
</div>
|
|
352
358
|
</template>
|
|
@@ -364,6 +370,10 @@ export default {
|
|
|
364
370
|
</style>
|
|
365
371
|
<style lang='scss' scoped>
|
|
366
372
|
$detailSize: 11px;
|
|
373
|
+
|
|
374
|
+
.deprecation-notice {
|
|
375
|
+
margin: 8px 0 8px 20px;
|
|
376
|
+
}
|
|
367
377
|
.role-group {
|
|
368
378
|
.type-title {
|
|
369
379
|
display: flex;
|
|
@@ -40,13 +40,18 @@ export default {
|
|
|
40
40
|
},
|
|
41
41
|
async fetch() {
|
|
42
42
|
const inStore = this.$store.getters['currentProduct'].inStore;
|
|
43
|
-
const res = await this.$store.dispatch(`${ inStore }/find`, { type: CATALOG.APP, id: 'cattle-monitoring-system/rancher-monitoring' });
|
|
44
43
|
|
|
45
|
-
this.
|
|
44
|
+
if (this.$store.getters[`${ inStore }/canList`](CATALOG.APP)) {
|
|
45
|
+
try {
|
|
46
|
+
const res = await this.$store.dispatch(`${ inStore }/find`, { type: CATALOG.APP, id: 'cattle-monitoring-system/rancher-monitoring' });
|
|
47
|
+
|
|
48
|
+
this.monitoringVersion = res?.currentVersion;
|
|
49
|
+
} catch (err) {}
|
|
50
|
+
}
|
|
46
51
|
},
|
|
47
52
|
data() {
|
|
48
53
|
return {
|
|
49
|
-
loading: false, error: false, interval: null, errorTimer: null, monitoringVersion:
|
|
54
|
+
loading: false, error: false, interval: null, errorTimer: null, monitoringVersion: ''
|
|
50
55
|
};
|
|
51
56
|
},
|
|
52
57
|
computed: {
|
package/components/Wizard.vue
CHANGED
|
@@ -182,6 +182,12 @@ export default {
|
|
|
182
182
|
this.activeStep = this.visibleSteps[this.initStepIndex];
|
|
183
183
|
this.goToStep(this.activeStepIndex + 1);
|
|
184
184
|
}
|
|
185
|
+
},
|
|
186
|
+
errors() {
|
|
187
|
+
// Ensurce we scroll the errors into view
|
|
188
|
+
this.$nextTick(() => {
|
|
189
|
+
this.$refs.wizard.scrollTop = this.$refs.wizard.scrollHeight;
|
|
190
|
+
});
|
|
185
191
|
}
|
|
186
192
|
},
|
|
187
193
|
|
|
@@ -253,7 +259,10 @@ export default {
|
|
|
253
259
|
</script>
|
|
254
260
|
|
|
255
261
|
<template>
|
|
256
|
-
<div
|
|
262
|
+
<div
|
|
263
|
+
ref="wizard"
|
|
264
|
+
class="outer-container"
|
|
265
|
+
>
|
|
257
266
|
<Loading
|
|
258
267
|
v-if="!stepsLoaded"
|
|
259
268
|
mode="relative"
|
|
@@ -397,6 +406,7 @@ export default {
|
|
|
397
406
|
color="error"
|
|
398
407
|
:label="err"
|
|
399
408
|
:closable="true"
|
|
409
|
+
class="footer-error"
|
|
400
410
|
@close="errors.splice(idx, 1)"
|
|
401
411
|
/>
|
|
402
412
|
</div>
|
|
@@ -647,6 +657,12 @@ $spacer: 10px;
|
|
|
647
657
|
}
|
|
648
658
|
}
|
|
649
659
|
|
|
660
|
+
// We have to account for the absolute position of the .controls-row
|
|
661
|
+
.footer-error {
|
|
662
|
+
margin-top: -40px;
|
|
663
|
+
margin-bottom: 70px;
|
|
664
|
+
}
|
|
665
|
+
|
|
650
666
|
.controls-row {
|
|
651
667
|
|
|
652
668
|
// Overrides outlet padding
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
<script>
|
|
2
|
+
import { mapGetters } from 'vuex';
|
|
2
3
|
import { MANAGEMENT, RBAC } from '@shell/config/types';
|
|
3
4
|
import CruResource from '@shell/components/CruResource';
|
|
4
5
|
import CreateEditView from '@shell/mixins/create-edit-view';
|
|
@@ -14,6 +15,7 @@ import { ucFirst } from '@shell/utils/string';
|
|
|
14
15
|
import SortableTable from '@shell/components/SortableTable';
|
|
15
16
|
import { _CLONE, _DETAIL } from '@shell/config/query-params';
|
|
16
17
|
import { SCOPED_RESOURCES } from '@shell/config/roles';
|
|
18
|
+
import { Banner } from '@components/Banner';
|
|
17
19
|
|
|
18
20
|
import { SUBTYPE_MAPPING, VERBS } from '@shell/models/management.cattle.io.roletemplate';
|
|
19
21
|
import Loading from '@shell/components/Loading';
|
|
@@ -60,7 +62,8 @@ export default {
|
|
|
60
62
|
Tabbed,
|
|
61
63
|
SortableTable,
|
|
62
64
|
Loading,
|
|
63
|
-
Error
|
|
65
|
+
Error,
|
|
66
|
+
Banner
|
|
64
67
|
},
|
|
65
68
|
|
|
66
69
|
mixins: [CreateEditView, FormValidation],
|
|
@@ -162,6 +165,12 @@ export default {
|
|
|
162
165
|
},
|
|
163
166
|
|
|
164
167
|
computed: {
|
|
168
|
+
...mapGetters(['releaseNotesUrl']),
|
|
169
|
+
|
|
170
|
+
showRestrictedAdminDeprecationBanner() {
|
|
171
|
+
return this.value.subtype === GLOBAL && this.value.id === 'restricted-admin';
|
|
172
|
+
},
|
|
173
|
+
|
|
165
174
|
label() {
|
|
166
175
|
return this.t(`rbac.roletemplate.subtypes.${ this.value.subtype }.label`);
|
|
167
176
|
},
|
|
@@ -541,6 +550,13 @@ export default {
|
|
|
541
550
|
@finish="save"
|
|
542
551
|
@cancel="cancel"
|
|
543
552
|
>
|
|
553
|
+
<Banner
|
|
554
|
+
v-if="showRestrictedAdminDeprecationBanner"
|
|
555
|
+
color="warning"
|
|
556
|
+
class="mb-20"
|
|
557
|
+
>
|
|
558
|
+
<span v-clean-html="t('rbac.globalRoles.role.restricted-admin.deprecation', { releaseNotesUrl }, true)" />
|
|
559
|
+
</Banner>
|
|
544
560
|
<template v-if="isDetail">
|
|
545
561
|
<SortableTable
|
|
546
562
|
key-field="index"
|
|
@@ -164,6 +164,10 @@ export default {
|
|
|
164
164
|
removeAt(this.rows, index);
|
|
165
165
|
this.queueUpdate();
|
|
166
166
|
},
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* Cleanup rows and emit input
|
|
170
|
+
*/
|
|
167
171
|
update() {
|
|
168
172
|
if ( this.isView ) {
|
|
169
173
|
return;
|
|
@@ -180,22 +184,24 @@ export default {
|
|
|
180
184
|
}
|
|
181
185
|
this.$emit('input', out);
|
|
182
186
|
},
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* Handle paste event, e.g. split multiple lines in rows
|
|
190
|
+
*/
|
|
183
191
|
onPaste(index, event) {
|
|
184
|
-
if (this.valueMultiline) {
|
|
185
|
-
return;
|
|
186
|
-
}
|
|
187
192
|
event.preventDefault();
|
|
188
193
|
const text = event.clipboardData.getData('text/plain');
|
|
189
|
-
const split = text.split('\n').map((value) => ({ value }));
|
|
190
|
-
|
|
191
|
-
if (split.length === 1) {
|
|
192
|
-
// It's not multi-line, so don't treat it as such
|
|
193
|
-
return;
|
|
194
|
-
}
|
|
195
194
|
|
|
196
|
-
|
|
195
|
+
if (this.valueMultiline) {
|
|
196
|
+
// Allow to paste multiple lines
|
|
197
|
+
this.rows[index].value = text;
|
|
198
|
+
} else {
|
|
199
|
+
// Prevent to paste the value and emit text in multiple rows
|
|
200
|
+
const split = text.split('\n').map((value) => ({ value }));
|
|
197
201
|
|
|
198
|
-
|
|
202
|
+
event.preventDefault();
|
|
203
|
+
this.rows.splice(index, 1, ...split);
|
|
204
|
+
}
|
|
199
205
|
|
|
200
206
|
this.update();
|
|
201
207
|
}
|
|
@@ -256,6 +262,7 @@ export default {
|
|
|
256
262
|
v-if="valueMultiline"
|
|
257
263
|
ref="value"
|
|
258
264
|
v-model="row.value"
|
|
265
|
+
:data-testid="`textarea-${idx}`"
|
|
259
266
|
:placeholder="valuePlaceholder"
|
|
260
267
|
:mode="mode"
|
|
261
268
|
:disabled="disabled"
|
|
@@ -266,6 +273,7 @@ export default {
|
|
|
266
273
|
v-else-if="rules.length > 0"
|
|
267
274
|
ref="value"
|
|
268
275
|
v-model="row.value"
|
|
276
|
+
:data-testid="`labeled-input-${idx}`"
|
|
269
277
|
:placeholder="valuePlaceholder"
|
|
270
278
|
:disabled="isView || disabled"
|
|
271
279
|
:rules="rules"
|
|
@@ -277,6 +285,7 @@ export default {
|
|
|
277
285
|
v-else
|
|
278
286
|
ref="value"
|
|
279
287
|
v-model="row.value"
|
|
288
|
+
:data-testid="`input-${idx}`"
|
|
280
289
|
:placeholder="valuePlaceholder"
|
|
281
290
|
:disabled="isView || disabled"
|
|
282
291
|
@paste="onPaste(idx, $event)"
|