diff --git a/charts/kubernetes-dashboard/Chart.yaml b/charts/kubernetes-dashboard/Chart.yaml index 7f74315e1bed..9ec8a9a50bca 100644 --- a/charts/kubernetes-dashboard/Chart.yaml +++ b/charts/kubernetes-dashboard/Chart.yaml @@ -14,7 +14,7 @@ apiVersion: v2 name: kubernetes-dashboard -version: 7.6.0 +version: 7.6.1 description: General-purpose web UI for Kubernetes clusters keywords: - kubernetes diff --git a/charts/kubernetes-dashboard/values.yaml b/charts/kubernetes-dashboard/values.yaml index d0879e379b68..43be1734e39e 100644 --- a/charts/kubernetes-dashboard/values.yaml +++ b/charts/kubernetes-dashboard/values.yaml @@ -173,7 +173,7 @@ api: role: api image: repository: docker.io/kubernetesui/dashboard-api - tag: 1.8.0 + tag: 1.8.1 scaling: replicas: 1 revisionHistoryLimit: 10 diff --git a/modules/api/pkg/handler/apihandler.go b/modules/api/pkg/handler/apihandler.go index 3bb6dcc6d465..6e26da2d4db2 100644 --- a/modules/api/pkg/handler/apihandler.go +++ b/modules/api/pkg/handler/apihandler.go @@ -876,7 +876,7 @@ func CreateHTTPAPIHandler(iManager integration.Manager) (*restful.Container, err Writes(pod.PodList{}). Returns(http.StatusOK, "OK", pod.PodList{})) apiV1Ws.Route( - apiV1Ws.POST("/node/{name}/drain").To(apiHandler.handleNodeDrain). + apiV1Ws.PUT("/node/{name}/drain").To(apiHandler.handleNodeDrain). // docs Doc("drains Node"). Param(apiV1Ws.PathParameter("name", "name of the Node")). diff --git a/modules/api/schema/swagger.json b/modules/api/schema/swagger.json index ea452a46fedf..d7d29fc47b7f 100644 --- a/modules/api/schema/swagger.json +++ b/modules/api/schema/swagger.json @@ -5241,7 +5241,7 @@ } }, "/api/v1/node/{name}/drain": { - "post": { + "put": { "consumes": [ "application/json" ], @@ -9999,8 +9999,8 @@ }, "configmap.ConfigMapDetail": { "required": [ - "objectMeta", - "typeMeta" + "typeMeta", + "objectMeta" ], "properties": { "data": { @@ -10140,13 +10140,13 @@ }, "cronjob.CronJobDetail": { "required": [ - "typeMeta", - "schedule", - "suspend", "active", "lastSchedule", "containerImages", "objectMeta", + "typeMeta", + "schedule", + "suspend", "concurrencyPolicy", "startingDeadlineSeconds", "errors" @@ -10489,11 +10489,11 @@ }, "deployment.DeploymentDetail": { "required": [ - "containerImages", - "initContainerImages", "objectMeta", "typeMeta", "pods", + "containerImages", + "initContainerImages", "selector", "statusInfo", "conditions", @@ -11111,13 +11111,13 @@ }, "job.JobDetail": { "required": [ + "parallelism", "jobStatus", "objectMeta", "typeMeta", "podInfo", "containerImages", "initContainerImages", - "parallelism", "completions", "errors" ], @@ -11611,10 +11611,10 @@ }, "node.NodeDetail": { "required": [ + "allocatedResources", "objectMeta", "typeMeta", "ready", - "allocatedResources", "phase", "podCIDR", "providerID", @@ -11810,14 +11810,14 @@ "required": [ "objectMeta", "typeMeta", + "accessModes", + "mountOptions", "capacity", "reclaimPolicy", - "claim", - "reason", - "accessModes", "storageClass", - "mountOptions", "status", + "claim", + "reason", "message", "persistentVolumeSource" ], @@ -11935,13 +11935,13 @@ }, "persistentvolumeclaim.PersistentVolumeClaimDetail": { "required": [ - "capacity", - "accessModes", "storageClass", "objectMeta", "typeMeta", "status", - "volume" + "volume", + "capacity", + "accessModes" ], "properties": { "accessModes": { @@ -12404,11 +12404,11 @@ }, "replicaset.ReplicaSetDetail": { "required": [ - "podInfo", - "containerImages", "initContainerImages", "objectMeta", "typeMeta", + "podInfo", + "containerImages", "selector", "horizontalPodAutoscalerList", "errors" @@ -12518,11 +12518,11 @@ }, "replicationcontroller.ReplicationControllerDetail": { "required": [ - "containerImages", - "initContainerImages", "objectMeta", "typeMeta", "podInfo", + "containerImages", + "initContainerImages", "labelSelector", "errors" ], @@ -12987,13 +12987,13 @@ }, "service.ServiceDetail": { "required": [ - "externalEndpoints", - "selector", - "type", "clusterIP", "objectMeta", "typeMeta", "internalEndpoint", + "externalEndpoints", + "selector", + "type", "endpointList", "sessionAffinity", "errors" @@ -13157,11 +13157,11 @@ }, "statefulset.StatefulSetDetail": { "required": [ - "objectMeta", "typeMeta", "podInfo", "containerImages", "initContainerImages", + "objectMeta", "errors" ], "properties": { @@ -13313,12 +13313,12 @@ }, "types.CustomResourceDefinitionDetail": { "required": [ + "scope", "names", "established", "objectMeta", "typeMeta", "group", - "scope", "conditions", "objects", "subresources", diff --git a/modules/web/schema/schema.graphql b/modules/web/schema/schema.graphql index 5842faad1ce8..bf833b8e1a07 100755 --- a/modules/web/schema/schema.graphql +++ b/modules/web/schema/schema.graphql @@ -2653,7 +2653,7 @@ type v1_IngressRule { Currently the port of an Ingress is implicitly :80 for http and :443 for https. Both these may change in the future. Incoming requests are matched against the host before the IngressRuleValue. If the host is unspecified, the Ingress routes all traffic based on the specified IngressRuleValue. - + host can be "precise" which is a domain name without the terminating dot of a network host (e.g. "foo.bar.com") or "wildcard", which is a domain name prefixed with a single wildcard label (e.g. "*.foo.com"). The wildcard character '*' must appear by itself as the first DNS label and matches only a single label. You cannot have a wildcard label by itself (e.g. Host == "*"). Requests will be matched against the Host field in the following way: 1. If host is precise, the request matches this rule if the http host header is equal to Host. 2. If host is a wildcard, then the request matches this rule if the http host header is to equal to the suffix (removing the first label) of the wildcard rule. """ host: String @@ -3919,7 +3919,7 @@ type v1_GRPCAction { port: Int! """ Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - + If this is not specified, the default behavior is defined by gRPC. """ service: String! @@ -3961,9 +3961,9 @@ type v1_TCPSocketAction { type v1_ResourceRequirements { """ Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. - + This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. - + This field is immutable. It can only be set for containers. """ claims: [v1_ResourceClaim] @@ -4101,7 +4101,7 @@ type v1_SeccompProfile { localhostProfile: String """ type indicates which kind of seccomp profile will be applied. Valid options are: - + Localhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied. """ type: String! @@ -4151,7 +4151,7 @@ type v1_ContainerStatus { name: String! """ Ready specifies whether the container is currently passing its readiness check. The value will change as readiness probes keep executing. If no readiness probes are specified, this field defaults to true once the container is fully started (see Started field). - + The value is typically used to determine whether a container is ready to accept traffic. """ ready: Boolean! @@ -4492,9 +4492,9 @@ type v1_ObjectMeta { finalizers: [String] """ GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server. - + If this field is specified and the generated name exists, the server will return a 409. - + Applied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency """ generateName: String @@ -4516,7 +4516,7 @@ type v1_ObjectMeta { name: String """ Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty. - + Must be a DNS_LABEL. Cannot be updated. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces """ namespace: String @@ -4526,7 +4526,7 @@ type v1_ObjectMeta { ownerReferences: [v1_OwnerReference] """ An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources. - + Populated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency """ resourceVersion: String @@ -4536,7 +4536,7 @@ type v1_ObjectMeta { selfLink: String """ UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations. - + Populated by the system. Read-only. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids """ uid: String @@ -4556,9 +4556,9 @@ type v1_ManagedFieldsEntry { fieldsType: String """ FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format. - + Each key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:', where is the name of a field in a struct, or key in a map 'v:', where is the exact json formatted value of a list item 'i:', where is position of a item in a list 'k:', where is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set. - + The exact format is defined in sigs.k8s.io/structured-merge-diff """ fieldsV1: JSON @@ -5036,7 +5036,7 @@ type v1_PodSecurityContext { appArmorProfile: v1_AppArmorProfile """ A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod: - + 1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw """ fsGroup: BigInt @@ -5210,14 +5210,14 @@ type endpoint_Endpoint { type v1_EndpointPort { """ The application protocol for this port. This is used as a hint for implementations to offer richer behavior for protocols that they understand. This field follows standard Kubernetes label syntax. Valid values are either: - + * Un-prefixed protocol names - reserved for IANA standard service names (as per RFC-6335 and https://www.iana.org/assignments/service-names). - + * Kubernetes-defined prefixed names: * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior- * 'kubernetes.io/ws' - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455 * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455 - + * Other protocols should use implementation-defined prefixed names such as mycompany.com/my-custom-protocol. """ appProtocol: String @@ -5573,7 +5573,7 @@ type Mutation { """Aggregations to be performed for each metric (default: sum)""" aggregations: String input: node_NodeDrainSpec_Input! - ): JSON @httpOperation(subgraph: "api", path: "/api/v1/node/{args.name}/drain", operationSpecificHeaders: "{\"Content-Type\":\"application/json\",\"Accept\":\"application/json\"}", httpMethod: POST, queryParamArgMap: "{\"filterBy\":\"filterBy\",\"sortBy\":\"sortBy\",\"itemsPerPage\":\"itemsPerPage\",\"page\":\"page\",\"metricNames\":\"metricNames\",\"aggregations\":\"aggregations\"}") + ): JSON @httpOperation(subgraph: "api", path: "/api/v1/node/{args.name}/drain", operationSpecificHeaders: "{\"Content-Type\":\"application/json\",\"Accept\":\"application/json\"}", httpMethod: PUT, queryParamArgMap: "{\"filterBy\":\"filterBy\",\"sortBy\":\"sortBy\",\"itemsPerPage\":\"itemsPerPage\",\"page\":\"page\",\"metricNames\":\"metricNames\",\"aggregations\":\"aggregations\"}") """scales ReplicationController to a number of replicas""" handleUpdateReplicasCount( """namespace of the ReplicationController""" @@ -5845,4 +5845,4 @@ type StringWrapper { type StateWrapper { state: ContainerState! -} +} \ No newline at end of file