@opensoha/contracts 0.1.24 → 0.1.25
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/auth/catalog_generated.go +2 -2
- package/auth/gateway_permissions_test.go +48 -0
- package/auth/permission-catalog.json +300 -1
- package/compat/consumer-revisions.json +1 -1
- package/compat/json-schema-ecosystem-0.1.0.json +1 -1
- package/compat/openapi-loose-boundaries-0.1.0.json +1 -1
- package/fixtures/openapi/KubernetesAgentActionCheck/invalid/unproven-state.json +6 -0
- package/fixtures/openapi/KubernetesAgentActionCheck/valid/configured-denied.json +9 -0
- package/fixtures/openapi/KubernetesAgentActionProfile/invalid/wildcard.json +1 -0
- package/fixtures/openapi/KubernetesAgentActionProfile/valid/workbench.json +1 -0
- package/fixtures/openapi/KubernetesClusterRegistrationRequest/invalid/action-profile.json +3 -0
- package/fixtures/openapi/KubernetesClusterRegistrationRequest/valid/action-profile.json +5 -0
- package/fixtures/openapi/KubernetesNodeListEnvelope/invalid/condition-status-boolean.json +17 -0
- package/fixtures/openapi/KubernetesNodeListEnvelope/invalid/taint-effect-missing.json +16 -0
- package/fixtures/openapi/KubernetesNodeListEnvelope/valid/legacy-fields-absent.json +11 -0
- package/fixtures/openapi/KubernetesNodeListEnvelope/valid/no-taints.json +13 -0
- package/fixtures/openapi/KubernetesNodeListEnvelope/valid/ready-cordoned-tainted.json +28 -0
- package/fixtures/openapi/KubernetesNodeListEnvelope/valid/unknown-fields-null.json +13 -0
- package/fixtures/openapi/KubernetesTopologyCoverage/invalid/empty-as-success.json +5 -0
- package/fixtures/openapi/KubernetesTopologyCoverage/valid/not-installed.json +6 -0
- package/fixtures/openapi/KubernetesTopologyGraphEdge/invalid/negative-weight.json +8 -0
- package/fixtures/openapi/KubernetesTopologyGraphEdge/valid/zero-weight.json +20 -0
- package/fixtures/openapi/KubernetesTopologyGraphNode/invalid/fake-flow-kind.json +42 -0
- package/fixtures/openapi/KubernetesTopologyGraphNode/valid/rule.json +42 -0
- package/fixtures/openapi/KubernetesTopologySnapshot/invalid/raw-source-field.json +33 -0
- package/fixtures/openapi/KubernetesTopologySnapshot/valid/projected-source.json +32 -0
- package/fixtures/openapi/KubernetesTopologySnapshotRequest/invalid/arbitrary-gvr.json +8 -0
- package/fixtures/openapi/KubernetesTopologySnapshotRequest/valid/bounded-sources.json +11 -0
- package/fixtures/openapi/KubernetesTopologySourceQuery/invalid/cluster-namespace.json +4 -0
- package/fixtures/openapi/KubernetesTopologySourceQuery/valid/all-namespaces.json +4 -0
- package/fixtures/openapi/ResourceMonitoringPanel/invalid/unknown-quality.json +7 -0
- package/fixtures/openapi/ResourceMonitoringPanel/valid/not-collected.json +7 -0
- package/fixtures/openapi/ResourceMonitoringPoint/invalid/string-zero.json +4 -0
- package/fixtures/openapi/ResourceMonitoringPoint/valid/missing.json +4 -0
- package/fixtures/openapi/ResourceMonitoringPoint/valid/zero.json +4 -0
- package/fixtures/openapi/ResourceMonitoringView/invalid/raw-query.json +12 -0
- package/fixtures/openapi/ResourceMonitoringView/valid/unconfigured.json +12 -0
- package/gen/go/sohaapi/client.go +1 -1
- package/gen/go/sohaapi/kubernetes_monitoring_test.go +67 -0
- package/gen/go/sohaapi/types.go +1265 -228
- package/gen/ts/sohaapi/index.ts +1116 -1
- package/openapi/soha-api.json +2497 -302
- package/openapi/soha-api.yaml +732 -3
- package/openapi/spec_generated.go +3 -3
- package/openapi/spec_test.go +34 -0
- package/package.json +1 -1
- package/resource/agent_access.go +12 -0
- package/resource/agent_profiles.go +62 -0
- package/resource/agent_profiles_test.go +36 -0
- package/resource/kubernetes_kinds.go +73 -0
- package/resource/kubernetes_kinds_test.go +38 -0
- package/resource/models.go +23 -14
- package/resource/network_topology.go +166 -0
- package/resource/network_topology_projection.go +208 -0
- package/resource/network_topology_projection_test.go +53 -0
- package/resource/network_topology_test.go +51 -0
- package/resource/network_topology_validation.go +29 -0
- package/resource/node_drain.go +34 -0
- package/resource/resource_monitoring.go +99 -0
- package/resource/runtime/network_topology.go +232 -0
- package/resource/runtime/network_topology_test.go +62 -0
- package/resource/runtime/node_drain.go +124 -0
- package/resource/runtime/node_drain_test.go +95 -0
- package/resource/runtime/resource_edit.go +128 -0
- package/resource/runtime/resource_edit_test.go +183 -0
- package/resource/runtime/resource_monitoring.go +243 -0
- package/resource/runtime/resource_monitoring_test.go +88 -0
|
@@ -6,8 +6,8 @@ import _ "embed"
|
|
|
6
6
|
|
|
7
7
|
const (
|
|
8
8
|
PermissionCatalogVersion = "2.0.0"
|
|
9
|
-
PermissionCatalogContentSHA256 = "
|
|
10
|
-
PermissionCatalogSHA256 = "
|
|
9
|
+
PermissionCatalogContentSHA256 = "2d98b53189afa67c09a2917325e3b1b1b70aafe00d370bdabaef7d6b11ef493c"
|
|
10
|
+
PermissionCatalogSHA256 = "ae344007ad96fa0b24a0bf74121e1db762a1b904e58b8c8b53a8ac9168abea80"
|
|
11
11
|
)
|
|
12
12
|
|
|
13
13
|
//go:embed permission-catalog.json
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
package auth
|
|
2
|
+
|
|
3
|
+
import (
|
|
4
|
+
"encoding/json"
|
|
5
|
+
"slices"
|
|
6
|
+
"testing"
|
|
7
|
+
)
|
|
8
|
+
|
|
9
|
+
func TestGatewayRouteMutationPermissionsAreExplicit(t *testing.T) {
|
|
10
|
+
var catalog struct {
|
|
11
|
+
Permissions []struct {
|
|
12
|
+
Key string `json:"key"`
|
|
13
|
+
Resource string `json:"resource"`
|
|
14
|
+
Action string `json:"action"`
|
|
15
|
+
RiskLevel string `json:"riskLevel"`
|
|
16
|
+
ScopeKinds []string `json:"scopeKinds"`
|
|
17
|
+
ApprovalPolicy string `json:"approvalPolicy"`
|
|
18
|
+
LegacyAliases []string `json:"legacyAliases"`
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
if err := json.Unmarshal(PermissionCatalogJSON(), &catalog); err != nil {
|
|
22
|
+
t.Fatal(err)
|
|
23
|
+
}
|
|
24
|
+
for _, resource := range []string{"http-routes", "grpc-routes", "backend-tls-policies", "reference-grants"} {
|
|
25
|
+
for _, action := range []string{"create", "update", "delete"} {
|
|
26
|
+
key := "platform.network." + resource + "." + action
|
|
27
|
+
var index = -1
|
|
28
|
+
for i, permission := range catalog.Permissions {
|
|
29
|
+
if permission.Key == key {
|
|
30
|
+
index = i
|
|
31
|
+
break
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
if index < 0 {
|
|
35
|
+
t.Fatalf("missing %s", key)
|
|
36
|
+
}
|
|
37
|
+
p := catalog.Permissions[index]
|
|
38
|
+
|
|
39
|
+
risk, approval := "mutate", "never"
|
|
40
|
+
if action == "delete" {
|
|
41
|
+
risk, approval = "high", "eligible"
|
|
42
|
+
}
|
|
43
|
+
if p.Resource != "network."+resource || p.Action != action || p.RiskLevel != risk || p.ApprovalPolicy != approval || !slices.Contains(p.ScopeKinds, "namespace") || len(p.LegacyAliases) != 0 {
|
|
44
|
+
t.Fatalf("invalid explicit mutation permission: %+v", p)
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "authorization.opensoha.io/v1",
|
|
3
3
|
"catalogVersion": "2.0.0",
|
|
4
|
-
"contentHash": "sha256:
|
|
4
|
+
"contentHash": "sha256:2d98b53189afa67c09a2917325e3b1b1b70aafe00d370bdabaef7d6b11ef493c",
|
|
5
5
|
"permissions": [
|
|
6
6
|
{
|
|
7
7
|
"key": "access.directory.create",
|
|
@@ -8504,6 +8504,54 @@
|
|
|
8504
8504
|
"status": "active",
|
|
8505
8505
|
"assignable": true
|
|
8506
8506
|
},
|
|
8507
|
+
{
|
|
8508
|
+
"key": "platform.network.backend-tls-policies.create",
|
|
8509
|
+
"domain": "platform",
|
|
8510
|
+
"resource": "network.backend-tls-policies",
|
|
8511
|
+
"action": "create",
|
|
8512
|
+
"displayName": "创建 Kubernetes BackendTLSPolicy",
|
|
8513
|
+
"riskLevel": "mutate",
|
|
8514
|
+
"scopeKinds": [
|
|
8515
|
+
"cluster",
|
|
8516
|
+
"namespace",
|
|
8517
|
+
"resource"
|
|
8518
|
+
],
|
|
8519
|
+
"approvalPolicy": "never",
|
|
8520
|
+
"status": "active",
|
|
8521
|
+
"assignable": true
|
|
8522
|
+
},
|
|
8523
|
+
{
|
|
8524
|
+
"key": "platform.network.backend-tls-policies.delete",
|
|
8525
|
+
"domain": "platform",
|
|
8526
|
+
"resource": "network.backend-tls-policies",
|
|
8527
|
+
"action": "delete",
|
|
8528
|
+
"displayName": "删除 Kubernetes BackendTLSPolicy",
|
|
8529
|
+
"riskLevel": "high",
|
|
8530
|
+
"scopeKinds": [
|
|
8531
|
+
"cluster",
|
|
8532
|
+
"namespace",
|
|
8533
|
+
"resource"
|
|
8534
|
+
],
|
|
8535
|
+
"approvalPolicy": "eligible",
|
|
8536
|
+
"status": "active",
|
|
8537
|
+
"assignable": true
|
|
8538
|
+
},
|
|
8539
|
+
{
|
|
8540
|
+
"key": "platform.network.backend-tls-policies.update",
|
|
8541
|
+
"domain": "platform",
|
|
8542
|
+
"resource": "network.backend-tls-policies",
|
|
8543
|
+
"action": "update",
|
|
8544
|
+
"displayName": "修改 Kubernetes BackendTLSPolicy",
|
|
8545
|
+
"riskLevel": "mutate",
|
|
8546
|
+
"scopeKinds": [
|
|
8547
|
+
"cluster",
|
|
8548
|
+
"namespace",
|
|
8549
|
+
"resource"
|
|
8550
|
+
],
|
|
8551
|
+
"approvalPolicy": "never",
|
|
8552
|
+
"status": "active",
|
|
8553
|
+
"assignable": true
|
|
8554
|
+
},
|
|
8507
8555
|
{
|
|
8508
8556
|
"key": "platform.network.backend-tls-policies.view",
|
|
8509
8557
|
"domain": "platform",
|
|
@@ -8755,6 +8803,54 @@
|
|
|
8755
8803
|
"platform.network.view"
|
|
8756
8804
|
]
|
|
8757
8805
|
},
|
|
8806
|
+
{
|
|
8807
|
+
"key": "platform.network.grpc-routes.create",
|
|
8808
|
+
"domain": "platform",
|
|
8809
|
+
"resource": "network.grpc-routes",
|
|
8810
|
+
"action": "create",
|
|
8811
|
+
"displayName": "创建 Kubernetes GRPCRoute",
|
|
8812
|
+
"riskLevel": "mutate",
|
|
8813
|
+
"scopeKinds": [
|
|
8814
|
+
"cluster",
|
|
8815
|
+
"namespace",
|
|
8816
|
+
"resource"
|
|
8817
|
+
],
|
|
8818
|
+
"approvalPolicy": "never",
|
|
8819
|
+
"status": "active",
|
|
8820
|
+
"assignable": true
|
|
8821
|
+
},
|
|
8822
|
+
{
|
|
8823
|
+
"key": "platform.network.grpc-routes.delete",
|
|
8824
|
+
"domain": "platform",
|
|
8825
|
+
"resource": "network.grpc-routes",
|
|
8826
|
+
"action": "delete",
|
|
8827
|
+
"displayName": "删除 Kubernetes GRPCRoute",
|
|
8828
|
+
"riskLevel": "high",
|
|
8829
|
+
"scopeKinds": [
|
|
8830
|
+
"cluster",
|
|
8831
|
+
"namespace",
|
|
8832
|
+
"resource"
|
|
8833
|
+
],
|
|
8834
|
+
"approvalPolicy": "eligible",
|
|
8835
|
+
"status": "active",
|
|
8836
|
+
"assignable": true
|
|
8837
|
+
},
|
|
8838
|
+
{
|
|
8839
|
+
"key": "platform.network.grpc-routes.update",
|
|
8840
|
+
"domain": "platform",
|
|
8841
|
+
"resource": "network.grpc-routes",
|
|
8842
|
+
"action": "update",
|
|
8843
|
+
"displayName": "修改 Kubernetes GRPCRoute",
|
|
8844
|
+
"riskLevel": "mutate",
|
|
8845
|
+
"scopeKinds": [
|
|
8846
|
+
"cluster",
|
|
8847
|
+
"namespace",
|
|
8848
|
+
"resource"
|
|
8849
|
+
],
|
|
8850
|
+
"approvalPolicy": "never",
|
|
8851
|
+
"status": "active",
|
|
8852
|
+
"assignable": true
|
|
8853
|
+
},
|
|
8758
8854
|
{
|
|
8759
8855
|
"key": "platform.network.grpc-routes.view",
|
|
8760
8856
|
"domain": "platform",
|
|
@@ -8775,6 +8871,54 @@
|
|
|
8775
8871
|
"platform.network.view"
|
|
8776
8872
|
]
|
|
8777
8873
|
},
|
|
8874
|
+
{
|
|
8875
|
+
"key": "platform.network.http-routes.create",
|
|
8876
|
+
"domain": "platform",
|
|
8877
|
+
"resource": "network.http-routes",
|
|
8878
|
+
"action": "create",
|
|
8879
|
+
"displayName": "创建 Kubernetes HTTPRoute",
|
|
8880
|
+
"riskLevel": "mutate",
|
|
8881
|
+
"scopeKinds": [
|
|
8882
|
+
"cluster",
|
|
8883
|
+
"namespace",
|
|
8884
|
+
"resource"
|
|
8885
|
+
],
|
|
8886
|
+
"approvalPolicy": "never",
|
|
8887
|
+
"status": "active",
|
|
8888
|
+
"assignable": true
|
|
8889
|
+
},
|
|
8890
|
+
{
|
|
8891
|
+
"key": "platform.network.http-routes.delete",
|
|
8892
|
+
"domain": "platform",
|
|
8893
|
+
"resource": "network.http-routes",
|
|
8894
|
+
"action": "delete",
|
|
8895
|
+
"displayName": "删除 Kubernetes HTTPRoute",
|
|
8896
|
+
"riskLevel": "high",
|
|
8897
|
+
"scopeKinds": [
|
|
8898
|
+
"cluster",
|
|
8899
|
+
"namespace",
|
|
8900
|
+
"resource"
|
|
8901
|
+
],
|
|
8902
|
+
"approvalPolicy": "eligible",
|
|
8903
|
+
"status": "active",
|
|
8904
|
+
"assignable": true
|
|
8905
|
+
},
|
|
8906
|
+
{
|
|
8907
|
+
"key": "platform.network.http-routes.update",
|
|
8908
|
+
"domain": "platform",
|
|
8909
|
+
"resource": "network.http-routes",
|
|
8910
|
+
"action": "update",
|
|
8911
|
+
"displayName": "修改 Kubernetes HTTPRoute",
|
|
8912
|
+
"riskLevel": "mutate",
|
|
8913
|
+
"scopeKinds": [
|
|
8914
|
+
"cluster",
|
|
8915
|
+
"namespace",
|
|
8916
|
+
"resource"
|
|
8917
|
+
],
|
|
8918
|
+
"approvalPolicy": "never",
|
|
8919
|
+
"status": "active",
|
|
8920
|
+
"assignable": true
|
|
8921
|
+
},
|
|
8778
8922
|
{
|
|
8779
8923
|
"key": "platform.network.http-routes.view",
|
|
8780
8924
|
"domain": "platform",
|
|
@@ -9084,6 +9228,54 @@
|
|
|
9084
9228
|
"platform.network.view"
|
|
9085
9229
|
]
|
|
9086
9230
|
},
|
|
9231
|
+
{
|
|
9232
|
+
"key": "platform.network.reference-grants.create",
|
|
9233
|
+
"domain": "platform",
|
|
9234
|
+
"resource": "network.reference-grants",
|
|
9235
|
+
"action": "create",
|
|
9236
|
+
"displayName": "创建 Kubernetes ReferenceGrant",
|
|
9237
|
+
"riskLevel": "mutate",
|
|
9238
|
+
"scopeKinds": [
|
|
9239
|
+
"cluster",
|
|
9240
|
+
"namespace",
|
|
9241
|
+
"resource"
|
|
9242
|
+
],
|
|
9243
|
+
"approvalPolicy": "never",
|
|
9244
|
+
"status": "active",
|
|
9245
|
+
"assignable": true
|
|
9246
|
+
},
|
|
9247
|
+
{
|
|
9248
|
+
"key": "platform.network.reference-grants.delete",
|
|
9249
|
+
"domain": "platform",
|
|
9250
|
+
"resource": "network.reference-grants",
|
|
9251
|
+
"action": "delete",
|
|
9252
|
+
"displayName": "删除 Kubernetes ReferenceGrant",
|
|
9253
|
+
"riskLevel": "high",
|
|
9254
|
+
"scopeKinds": [
|
|
9255
|
+
"cluster",
|
|
9256
|
+
"namespace",
|
|
9257
|
+
"resource"
|
|
9258
|
+
],
|
|
9259
|
+
"approvalPolicy": "eligible",
|
|
9260
|
+
"status": "active",
|
|
9261
|
+
"assignable": true
|
|
9262
|
+
},
|
|
9263
|
+
{
|
|
9264
|
+
"key": "platform.network.reference-grants.update",
|
|
9265
|
+
"domain": "platform",
|
|
9266
|
+
"resource": "network.reference-grants",
|
|
9267
|
+
"action": "update",
|
|
9268
|
+
"displayName": "修改 Kubernetes ReferenceGrant",
|
|
9269
|
+
"riskLevel": "mutate",
|
|
9270
|
+
"scopeKinds": [
|
|
9271
|
+
"cluster",
|
|
9272
|
+
"namespace",
|
|
9273
|
+
"resource"
|
|
9274
|
+
],
|
|
9275
|
+
"approvalPolicy": "never",
|
|
9276
|
+
"status": "active",
|
|
9277
|
+
"assignable": true
|
|
9278
|
+
},
|
|
9087
9279
|
{
|
|
9088
9280
|
"key": "platform.network.reference-grants.view",
|
|
9089
9281
|
"domain": "platform",
|
|
@@ -9358,6 +9550,22 @@
|
|
|
9358
9550
|
"enable"
|
|
9359
9551
|
]
|
|
9360
9552
|
},
|
|
9553
|
+
{
|
|
9554
|
+
"key": "platform.pods.create",
|
|
9555
|
+
"domain": "platform",
|
|
9556
|
+
"resource": "pods",
|
|
9557
|
+
"action": "create",
|
|
9558
|
+
"displayName": "创建 Kubernetes Pod",
|
|
9559
|
+
"riskLevel": "mutate",
|
|
9560
|
+
"scopeKinds": [
|
|
9561
|
+
"cluster",
|
|
9562
|
+
"namespace",
|
|
9563
|
+
"resource"
|
|
9564
|
+
],
|
|
9565
|
+
"approvalPolicy": "never",
|
|
9566
|
+
"status": "active",
|
|
9567
|
+
"assignable": true
|
|
9568
|
+
},
|
|
9361
9569
|
{
|
|
9362
9570
|
"key": "platform.pods.delete",
|
|
9363
9571
|
"domain": "platform",
|
|
@@ -9537,6 +9745,81 @@
|
|
|
9537
9745
|
"status": "active",
|
|
9538
9746
|
"assignable": true
|
|
9539
9747
|
},
|
|
9748
|
+
{
|
|
9749
|
+
"key": "platform.resource-monitoring.conntrack.view",
|
|
9750
|
+
"domain": "platform",
|
|
9751
|
+
"resource": "resource-monitoring.conntrack",
|
|
9752
|
+
"action": "view",
|
|
9753
|
+
"displayName": "查看资源监控连接跟踪",
|
|
9754
|
+
"riskLevel": "read",
|
|
9755
|
+
"scopeKinds": [
|
|
9756
|
+
"workspace",
|
|
9757
|
+
"cluster"
|
|
9758
|
+
],
|
|
9759
|
+
"approvalPolicy": "never",
|
|
9760
|
+
"status": "active",
|
|
9761
|
+
"assignable": true
|
|
9762
|
+
},
|
|
9763
|
+
{
|
|
9764
|
+
"key": "platform.resource-monitoring.cpu.view",
|
|
9765
|
+
"domain": "platform",
|
|
9766
|
+
"resource": "resource-monitoring.cpu",
|
|
9767
|
+
"action": "view",
|
|
9768
|
+
"displayName": "查看资源监控CPU",
|
|
9769
|
+
"riskLevel": "read",
|
|
9770
|
+
"scopeKinds": [
|
|
9771
|
+
"workspace",
|
|
9772
|
+
"cluster"
|
|
9773
|
+
],
|
|
9774
|
+
"approvalPolicy": "never",
|
|
9775
|
+
"status": "active",
|
|
9776
|
+
"assignable": true
|
|
9777
|
+
},
|
|
9778
|
+
{
|
|
9779
|
+
"key": "platform.resource-monitoring.memory.view",
|
|
9780
|
+
"domain": "platform",
|
|
9781
|
+
"resource": "resource-monitoring.memory",
|
|
9782
|
+
"action": "view",
|
|
9783
|
+
"displayName": "查看资源监控内存",
|
|
9784
|
+
"riskLevel": "read",
|
|
9785
|
+
"scopeKinds": [
|
|
9786
|
+
"workspace",
|
|
9787
|
+
"cluster"
|
|
9788
|
+
],
|
|
9789
|
+
"approvalPolicy": "never",
|
|
9790
|
+
"status": "active",
|
|
9791
|
+
"assignable": true
|
|
9792
|
+
},
|
|
9793
|
+
{
|
|
9794
|
+
"key": "platform.resource-monitoring.overview.view",
|
|
9795
|
+
"domain": "platform",
|
|
9796
|
+
"resource": "resource-monitoring.overview",
|
|
9797
|
+
"action": "view",
|
|
9798
|
+
"displayName": "查看资源监控总览",
|
|
9799
|
+
"riskLevel": "read",
|
|
9800
|
+
"scopeKinds": [
|
|
9801
|
+
"workspace",
|
|
9802
|
+
"cluster"
|
|
9803
|
+
],
|
|
9804
|
+
"approvalPolicy": "never",
|
|
9805
|
+
"status": "active",
|
|
9806
|
+
"assignable": true
|
|
9807
|
+
},
|
|
9808
|
+
{
|
|
9809
|
+
"key": "platform.resource-monitoring.pods.view",
|
|
9810
|
+
"domain": "platform",
|
|
9811
|
+
"resource": "resource-monitoring.pods",
|
|
9812
|
+
"action": "view",
|
|
9813
|
+
"displayName": "查看资源监控Pod 容量",
|
|
9814
|
+
"riskLevel": "read",
|
|
9815
|
+
"scopeKinds": [
|
|
9816
|
+
"workspace",
|
|
9817
|
+
"cluster"
|
|
9818
|
+
],
|
|
9819
|
+
"approvalPolicy": "never",
|
|
9820
|
+
"status": "active",
|
|
9821
|
+
"assignable": true
|
|
9822
|
+
},
|
|
9540
9823
|
{
|
|
9541
9824
|
"key": "platform.storage.persistent-volume-claims.create",
|
|
9542
9825
|
"domain": "platform",
|
|
@@ -10183,6 +10466,22 @@
|
|
|
10183
10466
|
"create"
|
|
10184
10467
|
]
|
|
10185
10468
|
},
|
|
10469
|
+
{
|
|
10470
|
+
"key": "platform.workloads.replication-controllers.delete",
|
|
10471
|
+
"domain": "platform",
|
|
10472
|
+
"resource": "workloads.replication-controllers",
|
|
10473
|
+
"action": "delete",
|
|
10474
|
+
"displayName": "删除 Kubernetes ReplicationController",
|
|
10475
|
+
"riskLevel": "high",
|
|
10476
|
+
"scopeKinds": [
|
|
10477
|
+
"cluster",
|
|
10478
|
+
"namespace",
|
|
10479
|
+
"resource"
|
|
10480
|
+
],
|
|
10481
|
+
"approvalPolicy": "eligible",
|
|
10482
|
+
"status": "active",
|
|
10483
|
+
"assignable": true
|
|
10484
|
+
},
|
|
10186
10485
|
{
|
|
10187
10486
|
"key": "platform.workloads.replication-controllers.update",
|
|
10188
10487
|
"domain": "platform",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"soha": "
|
|
2
|
+
"soha": "57bfa94873ff2825bccc6312842859011c1ec23a",
|
|
3
3
|
"soha-web": "447cbe5358802ef40d86ac67b7b59c5afe9c846a",
|
|
4
4
|
"soha-app": "0c3c76c373246f7d2218b48f68b89bf3097f777b",
|
|
5
5
|
"soha-cli": "1c9b760c986a9c1a5148db55b72ab99d23edd7a3",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"*"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"workbench"
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"items": [
|
|
3
|
+
{
|
|
4
|
+
"name": "worker-a",
|
|
5
|
+
"status": "ready",
|
|
6
|
+
"unschedulable": true,
|
|
7
|
+
"podCount": 2,
|
|
8
|
+
"ageSeconds": 3600,
|
|
9
|
+
"taints": [
|
|
10
|
+
{
|
|
11
|
+
"key": "maintenance",
|
|
12
|
+
"value": "task113",
|
|
13
|
+
"effect": "NoSchedule"
|
|
14
|
+
}
|
|
15
|
+
],
|
|
16
|
+
"conditions": [
|
|
17
|
+
{
|
|
18
|
+
"type": "Ready",
|
|
19
|
+
"status": "True"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"type": "DiskPressure",
|
|
23
|
+
"status": "True"
|
|
24
|
+
}
|
|
25
|
+
]
|
|
26
|
+
}
|
|
27
|
+
]
|
|
28
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "edge-1",
|
|
3
|
+
"source": "rule:route-uid:0",
|
|
4
|
+
"target": "service-1",
|
|
5
|
+
"relation": "weights",
|
|
6
|
+
"resolutionState": "resolved",
|
|
7
|
+
"port": "http",
|
|
8
|
+
"weight": 0,
|
|
9
|
+
"totalWeight": 100,
|
|
10
|
+
"sourceRef": {
|
|
11
|
+
"clusterId": "cluster-a",
|
|
12
|
+
"apiVersion": "traefik.io/v1alpha1",
|
|
13
|
+
"kind": "IngressRoute",
|
|
14
|
+
"name": "api",
|
|
15
|
+
"namespace": "team-a",
|
|
16
|
+
"scopeMode": "namespace",
|
|
17
|
+
"uid": "route-uid",
|
|
18
|
+
"resourceVersion": "7"
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "rule:route-uid:0",
|
|
3
|
+
"type": "live-traffic",
|
|
4
|
+
"label": "api /",
|
|
5
|
+
"provider": "traefik",
|
|
6
|
+
"protocol": "HTTP",
|
|
7
|
+
"resolutionState": "resolved",
|
|
8
|
+
"resource": {
|
|
9
|
+
"clusterId": "cluster-a",
|
|
10
|
+
"apiVersion": "traefik.io/v1alpha1",
|
|
11
|
+
"kind": "IngressRoute",
|
|
12
|
+
"name": "api",
|
|
13
|
+
"namespace": "team-a",
|
|
14
|
+
"scopeMode": "namespace",
|
|
15
|
+
"uid": "route-uid",
|
|
16
|
+
"resourceVersion": "7"
|
|
17
|
+
},
|
|
18
|
+
"rule": {
|
|
19
|
+
"index": 0,
|
|
20
|
+
"matchGroups": [
|
|
21
|
+
[
|
|
22
|
+
{
|
|
23
|
+
"type": "host",
|
|
24
|
+
"operator": "exact",
|
|
25
|
+
"value": "api.example.test"
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"type": "path",
|
|
29
|
+
"operator": "prefix",
|
|
30
|
+
"value": "/"
|
|
31
|
+
}
|
|
32
|
+
]
|
|
33
|
+
],
|
|
34
|
+
"tlsMode": "terminate"
|
|
35
|
+
},
|
|
36
|
+
"properties": [
|
|
37
|
+
{
|
|
38
|
+
"name": "source",
|
|
39
|
+
"value": "configuration"
|
|
40
|
+
}
|
|
41
|
+
]
|
|
42
|
+
}
|