Allow to Select Kubernetes Namespace in Environment setting page [FE]
What does this MR do and why?
This MR adds a new field to the environment settings page, which allows users to set the Kubernetes Namespace for the Environment. The feature requires connecting to the cluster via the selected agent and requesting a list of available namespaces to choose from. That's why it depends on selecting an agent first.
The flow is:
flowchart TD
A[Environment has an agent] -->|Yes| B{{Performs cluster connection}}
A[Environment has an agent] -->|No| D(Namespace selector is not shown)
D(Namespace selector is not shown) --> C{{User selects agent}}
C{{User selects agent}} --> B{{Performs cluster connection}}
B{{Performs cluster connection}} -->|Success| E(Namespace selector is shown)
B{{Performs cluster connection}} -->|Failure| F(Alert is shown)
Screenshots or screen recordings
Scenario | Screenshot |
---|---|
Environment doesn't have an agent | |
Environment has an agent and no namespace | |
Environment has an agent and cannot connect to the cluster | |
Environment has an agent and a namespace |
New environment:
Screen_Recording_2023-07-02_at_22.04.29
How to set up and validate locally
Numbered steps to set up and validate the change are strongly suggested.
-
In rails console enable the kas_user_access_project feature flag
Feature.enable(:kas_user_access_project, Project.find(<your-project-id>))
-
In rails console enable the kubernetes_namespace_for_environment feature flag
Feature.enable(:kubernetes_namespace_for_environment)
-
Enable KAS on your GDK (steps 1-2 from the guide).
-
Visit the Project -> Infrastructure -> Kubernetes clusters page and create an agent following the instruction from the modal.
- Select the "Connect a cluster" button
- The modal should pop up
- In the modal select "Select an agent or enter a name to create new"
- You probably won't have any configured agents to show up in the list, create a new one by typing the name of your choice
- The button should appear at the bottom of the list saying "Create agent:
<your-agent-name>
" - Select the button and click "Register" in the next view.
- Save the token to use it in the next point.
-
Please follow points 3-8 from the guide and then the (Optional) Deploy the GitLab Agent (agentk) with k3d section to create a local cluster and connect your agent with the cluster.
-
Add the following configuration file inside your project on the default branch:
.gitlab/agents/<your-agent-name>/config.yaml
:gitops: manifest_projects: - id: <your-group>/<your-project> user_access: access_as: agent: {} projects: - id: <your-group>/<your-project>
-
Visit the Environments page:
- Project -> Operate -> Environments if the new navigation is enabled
- Project -> Deployments -> Environments if the new navigation is not enabled
-
Create/Edit an environment using the UI, select the agent created in the previous steps
-
Verify the behaviour of the Kubernetes namespace field
MR acceptance checklist
This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.
-
I have evaluated the MR acceptance checklist for this MR.
Review progress:
-
UX review -
UI text review -
backend maintainer review -
frontend developer review -
frontend maintainer review
Related to #403618 (closed)