Spring Boot with Kubernetes Java Client API - Edit Namespace

124 views Asked by At

I try to implement a sample example of Kubernetes Java Client Api in Spring Boot example. I already handled with creating , deleting and getting namespace but I couldn't handle with updating namespace by name in my Spring Boot example.

Here is the EditNamespaceRequest shown below

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class EditNamespaceRequest {
    private String name;
}

Here is the updateNamespace method of my Service


public V1Namespace updateNamespace(String currentName, EditNamespaceRequest editNamespaceRequest) throws ApiException {

try {
            // Retrieve the existing namespace
            V1Namespace existingNamespace = coreV1Api.readNamespace(currentName, null);

            // Update the existing namespace with the new values
            existingNamespace.metadata(new V1ObjectMeta().name(editNamespaceRequest.getName()));

            // Perform the update
            coreV1Api.replaceNamespace(currentName, existingNamespace, null, null, null,null);

            return existingNamespace;
        } catch (ApiException e) {
            // Handle API exception (e.g., namespace not found, permission issues, etc.)
            throw new RuntimeException("Failed to update namespace: " + e.getResponseBody(), e);
        }

    }

I have a problem to update Namespace by name through Kubernetes Java Client API.

this error message is shown below when I run

 {"kind":"Status","apiVersion":"v1","metadata":{},"status":"Failure","message":"the name of the object (namespace-update) does not match the name on the URL (namespace-new)","reason":"BadRequest","code":400}

How can I fix it?

I try to implement a sample example of Kubernetes Java Client Api in Spring Boot example. I already handled with creating , deleting and getting namespace but I couldn't handle with updating namespace by name in my Spring Boot example. How can I fix it?

1

There are 1 answers

5
mipo256 On

What you are trying to do here is basiaclly to update the name of the K8S namespace, which is impossible. Thus the cluster does not allow you to modify the namespace and returns 400.