UffizziCloud / uffizzi

Build self-serve developer platforms in minutes, not months with out-of-the-box Kubernetes multi-tenancy, virtual clusters, cloud-based dev environments, customizable templating, and more.
https://uffizzi.com
Apache License 2.0
320 stars 25 forks source link

Remote dataplanes for Uffizzi #508

Open waveywaves opened 5 months ago

waveywaves commented 5 months ago

Tell us about your request

I want a user to be able to run their environments in multiple places

Which service(s) is this request for?**

Cloud, Open-Source, CLI

Tell us about the problem you're trying to solve. What are you trying to do, and why is it hard?

Be able to connect to a multiple remote data planes as a Uffizzi user.

Describe the solution you'd like

AS A uffizzi user I WANT TO connect to create clusters in a remote dataplane SO THAT I can run my workloads in a remote specialized environment

SCENARIO 1: CONNECT TO THE REMOTE DATAPLANE USING THE CLI GIVEN uffizzi user has permission to create uffizzi clusters on the dataplane, AND the dataplane is hosted with a "exampleuffizzidataplane.com" domain and is accessible to the user, AND uffizzi user is logged in,

WHEN uffizzi user runs

$ uffizzi cluster data-plane connect example_gpu_dp https://controller.uffizzigpu.examplecompany.com

example_gpu_dp is the name of the data_plane here and https:// controller.uffizzigpu.examplecompany.com is the controller endpoint here. THEN

Successfully connected to Uffizzi data plane example_gpu_dp (https://controller.uffizzigpu.examplecompany.com) !
Data plane example_gpu_dp has been set as default
To create a cluster on this environment run the following command

# uffizzi cluster create 

WHEN the user runs uffizzi user runs uffizzi config list, THEN the output should show (notice the data_planes (previously_vclusters_controller_url), notice the **swd),

$ uffizzi config list
server = https://app.qa.uffizzi.com/
account = {
    :id=>5, 
    :name=>"waveywaves", 
    :has_installation=>true, 
    :data_planes=> {
        :uffizzi=>"https://controller.app.qa.uffizzi.com", 
        :example_wasm_dp=>"https://controller.uffizziwasm.examplecompany.com"
        :example_gpu_dp=>"https://controller.uffizzigpu.examplecompany.com"
    }
   :default_data_plane=>"example_gpu_dp"
}
...

WHEN the user is not able to access the dataplane THEN the following output is given

Unable to connect to Uffizzi data plane example_gpu_dp (https://controller.uffizzigpu.examplecompany.com)
Contact your admin to check if you have permissions to access 

WHEN uffizzi user runs

$ uffizzi cluster data-plane connect example_wasm_dp

THEN

WHEN the user runs uffizzi user runs uffizzi config list after the above, THEN the output should show (notice the default_data_plane updated),

$ uffizzi config list
server = https://app.qa.uffizzi.com/
account = {
    :id=>5, 
    :name=>"waveywaves", 
    :has_installation=>true, 
    :data_planes=> {
        :uffizzi=>"https://controller.app.qa.uffizzi.com", 
        :example_wasm_dp= "https://controller.uffizziwasm.examplecompany.com"
        :example_gpu_dp=>"https://controller.uffizzigpu.examplecompany.com"
    }
  :default_data_plane=>"example_wasm_dp"
}
...