Skip to content

Invalid Namespace Names Bypass Validation, Waste Build Time and Show Confusing Errors #3132

@RayyanSeliya

Description

@RayyanSeliya

Problem

When running func deploy with invalid namespace names, the command attempts to build and deploy before catching naming errors, resulting in wasted time and confusing error messages.

Current Behavior

Scenario 1: Invalid namespace with spaces

Command:

func deploy --registry ghcr.io/user --namespace "my app"

Current Output:

Warning: namespace chosen is 'my app', but currently active namespace is 'default'. Continuing with deployment to 'my app'.
Building function image
Still building
^CError: executing lifecycle: context canceled

Problems:

  • Starts building before validating namespace name
  • Wastes time (minutes) building an image that can't be deployed
  • User must manually cancel (Ctrl+C) the build

Scenario 2: Invalid namespace with special characters

Command:

func deploy --registry ghcr.io/user --namespace "invalid@123"

Current Output:

Warning: namespace chosen is 'invalid@123', but currently active namespace is 'default'. Continuing with deployment to 'invalid@123'.
Building function image
Still building
^CError: executing lifecycle: context canceled

Problems:

  • Shows only warning instead of validation error
  • No guidance on valid namespace naming rules

Scenario 3: Invalid namespace with spaces (build and push disabled)

Command:

func deploy --registry ghcr.io/user --namespace "my app" --build=false --push=false

Current Output:

Warning: namespace chosen is 'my app', but currently active namespace is 'default'. Continuing with deployment to 'my app'.
Error: deploy error. knative deployer failed to get the Knative Service: no or newer Knative Serving API found on the backend, please verify the installation or update the 'kn' client

Problems:

  • Even with build/push disabled, proceeds to deployment
  • Shows technical Knative API error instead of validation error
  • Error message doesn't indicate namespace naming is the issue
  • No guidance on valid namespace naming rules

Proposed improvement

Scenario 1: Invalid namespace with spaces

Command:

func deploy --registry ghcr.io/user --namespace "invalid namespace"

Improved Output:

Error: invalid namespace

Invalid namespace name. Kubernetes namespaces must:
  - Contain only lowercase letters, numbers, and hyphens (-)
  - Start and end with a letter or number
  - Be 63 characters or less

Valid examples:
  func deploy --namespace myapp
  func deploy --namespace my-app-123

For more options, run 'func deploy --help'

Scenario 2: Invalid namespace with special characters

Command:

func deploy --registry ghcr.io/user --namespace "my@app" --build=false --push=false

Improved Output:

Error: invalid namespace

Invalid namespace name. Kubernetes namespaces must:
  - Contain only lowercase letters, numbers, and hyphens (-)
  - Start and end with a letter or number
  - Be 63 characters or less

Valid examples:
  func deploy --namespace myapp
  func deploy --namespace my-app-123

For more options, run 'func deploy --help'

Scenario 3: Invalid namespace with spaces (build and push disabled)

same as above ..

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions