Tenant to Host and DPU mapping example
Check Manual GRPC API usage doc before start
Replace $API_GW_ADDRESS
with address of iCP API GW in your environment
Here a full example of the needed gRPC calls for creating a Tenant tenant-a
with two Hosts:
Host host-a
with DPU dpu1-host-a
and Host host-b
with DPU dpu1-host-b
.
The examples use ‘grpcurl’ tool to access the API:
Create Tenant tenant-a
:
grpcurl -cacert=ca.crt -cert=admin.crt -key=admin.key -servername api-gateway.local \
-proto universe/admin/provisioning/v1/provisioning.proto \
-d '{"name": "tenant-a"}' \
$API_GW_ADDRESS \
universe.admin.provisioning.v1.UniverseProvisioningService.CreateTenant
Create Host host-a
:
grpcurl -cacert=ca.crt -cert=admin.crt -key=admin.key -servername api-gateway.local \
-proto universe/admin/provisioning/v1/provisioning.proto \
-d '{"host": {"name": "host-a"}}' \
$API_GW_ADDRESS \
universe.admin.provisioning.v1.UniverseProvisioningService.CreateHost
Create Host host-b
:
grpcurl -cacert=ca.crt -cert=admin.crt -key=admin.key -servername api-gateway.local \
-proto universe/admin/provisioning/v1/provisioning.proto \
-d '{"host": {"name": "host-b"}}' \
$API_GW_ADDRESS \
universe.admin.provisioning.v1.UniverseProvisioningService.CreateHost
Create HostConfiguration host-a-hcfg
, mapping Host host-a
to Tenant tenant-a
:
cat << 'EOF' | tee hcfg-a.json
{
"host_config":{
"name": "host-a-hcfg",
"tenant_name": "tenant-a",
"host_name": "host-a"
}
}
EOF
grpcurl -cacert=ca.crt -cert=admin.crt -key=admin.key -servername api-gateway.local \
-proto universe/admin/provisioning/v1/provisioning.proto \
-d "`cat hcfg-a.json`" \
$API_GW_ADDRESS \
universe.admin.provisioning.v1.UniverseProvisioningService.CreateHostConfig
Create HostConfiguration host-b-hcfg
, mapping Host host-b
to Tenant tenant-a
:
cat << 'EOF' | tee hcfg-b.json
{
"host_config":{
"name": "host-b-hcfg",
"tenant_name": "tenant-a",
"host_name": "host-b"
}
}
EOF
grpcurl -cacert=ca.crt -cert=admin.crt -key=admin.key -servername api-gateway.local \
-proto universe/admin/provisioning/v1/provisioning.proto \
-d "`cat hcfg-b.json`" \
$API_GW_ADDRESS \
universe.admin.provisioning.v1.UniverseProvisioningService.CreateHostConfig
Create DPU dpu1-host-a
, mapped to Host host-a
:
cat << 'EOF' | tee dpu-a.json
{
"dpu":{
"name":"dpu1-host-a",
"host_ref":{
"name": "host-a"
}
}
}
EOF
grpcurl -cacert=ca.crt -cert=admin.crt -key=admin.key -servername api-gateway.local \
-proto universe/admin/provisioning/v1/provisioning.proto \
-d "`cat dpu-a.json`" \
$API_GW_ADDRESS \
universe.admin.provisioning.v1.UniverseProvisioningService.CreateDPU
Create DPU dpu1-host-b
, mapped to Host host-b
:
cat << 'EOF' | tee dpu-b.json
{
"dpu":{
"name":"dpu1-host-b",
"host_ref":{
"name": "host-b"
}
}
}
EOF
grpcurl -cacert=ca.crt -cert=admin.crt -key=admin.key -servername api-gateway.local \
-proto universe/admin/provisioning/v1/provisioning.proto \
-d "`cat dpu-b.json`" \
$API_GW_ADDRESS \
universe.admin.provisioning.v1.UniverseProvisioningService.CreateDPU
Separate namespace will be created for each Tenant in iCP cluster.
This namespace will be named tenant-<tenant-name>
. Also, the namespace will have the label
tenant-id.icp.nvidia.com/<tenant-ID>=
to indicate that it belongs to a specific Tenant.
If the Host (for example host-a
) is mapped to a Tenant (for example tenant-a
), and is associated to a DPU,
the Kubernetes node matching this DPU will have the following labels:
tenant-id.icp.nvidia.com/tenant-a=
hostname.icp.nvidia.com/host-a=