# Custom Resource Definition

{% hint style="warning" %}
You can downlod kubeconfig in Deka GPU Service Portal, and click [this link](/deka-gpu/deka-gpu-kubernetes/dashboard/download-kube-config.md) for further information.
{% endhint %}

{% hint style="warning" %}
Before you use the CRD, you must configure your kubeconfig according to the operating system you are using. Click [this link](/reference/how-to-use-kubeconfig-on-windows.md) if you are using Windows, and click [this link](/reference/how-to-use-kubeconfig-on-linux.md) if you are using Linux.
{% endhint %}

Custom Resource Definition (CRD) is a feature provided by the Deka GPU Service Portal to display the resources used by customers. In the CRD on the Deka GPU Service Portal, there are available modules.

## Cloudeka Tenants

**Cloudeka Tenants** is a module that displays a list of information related to Billing, Charging, and Balance. You can run the following syntax.

```bash
kubectl get tenant
```

<figure><img src="/files/BLuXmIJAtqxKWNQIWldQ" alt=""><figcaption><p>Cloudeka Tenant</p></figcaption></figure>

In the figure above after you run the `kubectl get tenant` syntax, display several columns between the following.

<table><thead><tr><th width="173">Column</th><th>Description</th></tr></thead><tbody><tr><td><strong>Name</strong></td><td>The name of the tenant, in this case, default.</td></tr><tr><td><strong>Project</strong></td><td>The name of the project associated with the tenant, in this case, post-f-bison.</td></tr><tr><td><strong>Organization</strong></td><td>The name of the organization that owns this tenant, which is cv-af2</td></tr><tr><td><strong>Billing</strong></td><td>The billing method, shown as postpaid (payment is made after usage).</td></tr><tr><td><strong>Charging</strong></td><td>The charging model, set as fixed (fixed-rate pricing).</td></tr><tr><td><strong>Balance</strong></td><td>The available balance, currently showing 0.</td></tr><tr><td><strong>Update At</strong></td><td>The last updated time of the data.</td></tr></tbody></table>

## Cloudeka Resources Quotas

**Cloudeka Resources Quotas** is a module used to view the maximum resource limits that each component of the Deka GPU can use and is only used for service charge types SME: Prepaid Hourly Quota Fix, and SME: Prepaid Fixed except that the Quota Balance column is only used for service charge types Enterprise: Postpaid Hourly. You can run the following syntax.

```bash
kubectl get rquota
```

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXegSLSTCayi3faJT5VrvscV66tw-PYP-Ul5TBkuOO2DHp3orrI_HJ9MR-n9mtXnjO15LQkprXSPLEnFuDsY6vFLG39tjAnlfgLOEanzM1AKhjvG6NPqs0sI6d0bWFo5di4M8qGl7g?key=j5cAgZ4reQhgRipI177hLQ" alt=""><figcaption><p>Cloudeka Resources Quota</p></figcaption></figure>

In the figure above after you run the `kubectl get rquota` syntax, display several columns between the following.

<table><thead><tr><th width="180">Column</th><th>Description</th></tr></thead><tbody><tr><td>Name</td><td>The name of the resource quota, in this case, default.</td></tr><tr><td>CPU</td><td>The allocated number of CPU cores, which is 8.</td></tr><tr><td>RAM</td><td>The allocated memory, which is 16Gi (16 Gigabytes).</td></tr><tr><td>Quota Balance</td><td>The remaining quota balance, also shown as Rp1.000.000</td></tr></tbody></table>

## Cloudeka Prices

**Cloudeka Prices** is a module that displays prices on Deka GPU, which are divided into hourly and monthly pricing types and are specifically used for the Prepaid Hourly and Prepaid Hourly Quota Fix service cost types.

```bash
kubectl get price -o yaml
```

After you run the `kubectl get price` syntax, displaying.

{% code lineNumbers="true" %}

```yaml
apiVersion: v1
items:
- apiVersion: tenants.cloudeka.ai/v1alpha2
  kind: CloudekaPrice
  metadata:
    annotations:
      cloudeka.ai/reconciled: "true"
      kubectl.kubernetes.io/last-applied-configuration: |
        {"apiVersion":"tenants.cloudeka.ai/v1alpha2","kind":"CloudekaPrice","metadata":{"annotations":{},"name":"default","namespace":"default"}}
    creationTimestamp: "2025-02-01T03:05:48Z"
    generation: 3
    name: default
    namespace: default
    resourceVersion: "948453"
    uid: a5586724-04c4-404f-9f3c-96dd72932437
  spec:
    cpu:
      price: 100
      priceMonthly: 500000
    createdBy: cloudeka-system
    floatingIP:
      price: 103
      priceMonthly: 75000
    gpu:
      NVIDIA-H100-80GB-HBM3:
        price: 63356
        priceMonthly: 46250000
      NVIDIA-H100-80GB-HBM3-MIG-1g.10gb:
        price: 19178
        priceMonthly: 14000000
      NVIDIA-H100-80GB-HBM3-MIG-1g.10gb-SHARED:
        price: 19178
        priceMonthly: 14000000
      NVIDIA-H100-80GB-HBM3-MIG-1g.20gb:
        price: 19178
        priceMonthly: 14000000
      NVIDIA-H100-80GB-HBM3-MIG-1g.40gb:
        price: 19178
        priceMonthly: 14000000
      NVIDIA-L40S:
        price: 19452
        priceMonthly: 14200000
      Tesla-T4:
        price: 19452
        priceMonthly: 14200000
    nvaie:
      price: 16000
      priceMonthly: 11680000
    ram:
      price: 60
      priceMonthly: 300000
    storage:
      local-path:
        price: 1
        priceMonthly: 850
      storage-mgmt:
        price: 2
        priceMonthly: 1000
      storage-nlsas:
        price: 1
        priceMonthly: 850
      storage-nvme-c1:
        price: 2
        priceMonthly: 1650
      storage-nvme-c2:
        price: 2
        priceMonthly: 1650
      storage-nvme-lustre:
        price: 3
        priceMonthly: 2450
      storage-nvme-rdma-c1:
        price: 2
        priceMonthly: 1450
      storage-nvme-rdma-c2:
        price: 2
        priceMonthly: 1450
    updatedBy: cloudeka-system
  status:
    CreatedAt: "2025-02-01 03:05:48"
    updatedAt: "2025-02-01 03:05:48"
kind: List
metadata:
  resourceVersion: ""
```

{% endcode %}

### Metadata

The **metadata** section in this YAML file contains information about the identity and status of the **CloudekaPrice** resource within the Kubernetes cluster. The resource name is **`default`**, indicating that this is the default pricing configuration within the **`default`** namespace. The generation version (**`generation: 3`**) shows that this resource has been updated three times. Additionally, **`resourceVersion: "948453"`** is used by Kubernetes to track changes to this resource. Every resource in Kubernetes has a unique **UID**, in this case, **`a5586724-04c4-404f-9f3c-96dd72932437`**, ensuring that this resource can be uniquely identified within the system.

### Specification

Defines the **pricing details** for various resources in the Cloudeka environment.

#### CPU Pricing

```yaml
cpu:
  price: 100
  priceMonthly: 500000
```

The CPU is priced Rp100 per hour or per usage unit, and Rp500.000 per month.

#### Floating IP

```yaml
floatingIP:
  price: 103
  priceMonthly: 75000
```

The Floating IP is priced Rp103 per hour, and Rp75.000 per month.

#### GPU Pricing

```yaml
gpu:
  NVIDIA-H100-80GB-HBM3:
    price: 63356
    priceMonthly: 46250000
  NVIDIA-H100-80GB-HBM3-MIG-1g.10gb:
    price: 19178
    priceMonthly: 14000000
  NVIDIA-L40S:
    price: 19452
    priceMonthly: 14200000
```

The GPU pricing varies based on the GPU model and Configuration.  The pricing structure includes high-performance GPUs such as the **NVIDIA H100 80GB HBM3**, which has an hourly price of RP**63.356** and a monthly price of Rp**46.250.000** making it one of the most expensive options due to its powerful capabilities. There are also multiple **MIG (Multi-Instance GPU) configurations** of the H100 model, such as **1g.10GB, 1g.10GB-SHARED, 1g.20GB, and 1g.40GB**, all priced at Rp**19.178 per hour** and Rp**14.000.000 per month**. Additionally, other GPU models like **NVIDIA L40S** available at an hourly rate of Rp**19.452** and a monthly price of Rp**14.200.000** making them more affordable alternatives.

#### NVAIE Pricing

```bash
    nvaie:
      price: 16000
      priceMonthly: 11680000
```

The NVAIE (NVIDIA AI Enterprise)  is priced Rp**16.000 per unit** and Rp**11.680.000 per month**.

#### RAM Pricing

```yaml
ram:
  price: 60
  priceMonthly: 300000
```

The RAM Pricing is priced Rp60 per hour, and Rp300.000 per month.

#### Storage Pricing

```yaml
storage:
  local-path:
    price: 1
    priceMonthly: 850
  storage-mgmt:
    price: 2
    priceMonthly: 1000
  storage-nvme-c1:
    price: 2
    priceMonthly: 1650
  storage-nvme-lustre:
    price: 3
    priceMonthly: 2450
```

The pricing structure includes several types of storage, each designed for specific use cases. The **local-path** and **storage-nlsas** options are the most affordable, with an hourly price of **Rp1,** and a monthly price of **Rp850**. The **storage-mgmt** class, which likely offers better performance or management features, is priced slightly higher at **Rp2 per hour** and **Rp1.000 per month**. More advanced storage solutions, such as **storage-nvme-c1 and storage-nvme-c2**, are available at **Rp2 per hour** and **Rp1.650 per month**, providing faster NVMe-based storage performance. The **storage-nvme-lustre**, optimized for high-performance workloads, has a higher rate of **Rp3 per hour** and **Rp2,450 per month**.&#x20;

## Cloudeka Charges

**Cloudeka Charges** is a module that displays the costs incurred based on your hourly usage.

```
kubectl get charges
```

## Cloudeka Floating IPs

**Cloudeka Floating IPs** is the module used to display the Public IP address used to connect to the Virtual Machine (VM). You can run the following syntax.

```
kubectl get cfip
```

## Cloudeka Resources

**Cloudeka Resources** displays the resource module used in the Pod which is a combination of CPU, RAM, and GPU, and the service fee charged by the hour. You can run the following syntax.

```
kubectl get container
```

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeiCncbjJe3IItTfdwOgMY1rLMELfkEE1FCm1R85cP03R3TDVnvs3dfhacIBBvtXDPv2BcGWZ7cLTPVHoB5Gp6rBE6PKLuE23xKH8DZfz7oasGFvoeDMy5zUraQXK-I7TJKWc7R?key=j5cAgZ4reQhgRipI177hLQ" alt=""><figcaption><p>Cloudeka Resources</p></figcaption></figure>

In the figure above after you run the `kubectl get container` syntax, display several columns between the following.

<table><thead><tr><th width="160">Column</th><th>Description</th></tr></thead><tbody><tr><td>NAME</td><td>The name of the container or pod. Here, gpu-pod, pod-1, and pod-2.</td></tr><tr><td>KIND</td><td>The type of resource. pod-1 and pod-2 are of type Pod, while gpu-pod does not specify a kind, possibly indicating a higher-level grouping.</td></tr><tr><td>CPU</td><td>The allocated CPU for each pod. Each pod (pod-1 and pod-2) has 1 CPU core.</td></tr><tr><td>RAM</td><td>The allocated memory for each pod, which is 512Mi (512 Megabytes).</td></tr><tr><td>CHARGE</td><td>The cost or charge associated with each pod, shown as Rp130.</td></tr><tr><td>STATUS</td><td>The current state of the container. Both pod-1 and pod-2 are in the Running state, meaning they are active and functioning.</td></tr></tbody></table>

## Cloudeka Resources Storages

**Cloudeka Resources Storages** is a module that displays storage resources used in Persistent Volume Claims (PVC), and the cost of services charged is calculated by the hour. You can run the following syntax.

```
kubectl get storage
```

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdE9e2s19F6Soae6u9PjI05CGuA49KYFd5U4gg_dwtvEfy3Z4XrGBq0VBKpyHUkn4VxClydklBItDfNpTQG3Dc-8vfvT4X58RK1IAYJUtcpTi3dZ9B9W-uUCI-WYpQvkoldQzekTg?key=j5cAgZ4reQhgRipI177hLQ" alt=""><figcaption><p>Cloudeka Resources Storages</p></figcaption></figure>

In the figure above after you run the `kubectl get storage` syntax, display several columns between the following.

<table><thead><tr><th width="238">Column</th><th>Description</th></tr></thead><tbody><tr><td>NAME</td><td>The name of the storage resource, in this case, persistentvolumeclaim-cufdp.</td></tr><tr><td>STORAGECLASSNAME</td><td>The storage class assigned to the storage, which is storage-mgmt. This defines the type and provisioning method of storage.</td></tr><tr><td>SIZE</td><td>The allocated storage size, which is 1Gi (1 Gigabyte).</td></tr><tr><td>CHARGE</td><td>The storage charge, displayed as Rp2. This could indicate a cost unit or charge level.</td></tr><tr><td>STATUS</td><td>The current status of the storage, which is Bound, meaning the storage is successfully attached to a Persistent Volume.</td></tr></tbody></table>

## Cloudeka VPC

**Cloudeka VPC** is a module that displays Virtual Private Cloud (VPC) to perform network isolation on each virtual namespace in vCluster. You can run the following syntax.

```
kubectl get cvpc
```

<figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXexGtaX1LoAlAOjnceMPDKYfmfLKl5XBlR-Ln2n1yF8RM-OlevyRNqUQnEc8xMxKn-R6Lsjln5C78dKrLCm5nGCn4GI8q7yMLXvitKtduDhSaAvIKWpg7dbWrRAh5GSp1nU42CA?key=j5cAgZ4reQhgRipI177hLQ" alt=""><figcaption><p>Cloudeka VPC</p></figcaption></figure>

In the figure above after you run the `kubectl get cvpc` syntax, display several columns between the following.

<table><thead><tr><th width="150">Column</th><th>Description</th></tr></thead><tbody><tr><td>NAME</td><td>The name of the Cloud VPC (Virtual Private Cloud), in this case, default.</td></tr><tr><td>ISOLATE</td><td>Indicates whether the VPC is isolated. The value false means the VPC is not isolated and can communicate with other networks.</td></tr><tr><td>CIDR</td><td>The CIDR (Classless Inter-Domain Routing) block assigned to the VPC, which is 10.168.176.0/24. This means the network has a range of IP addresses from 10.168.176.0 to 10.168.176.255.</td></tr><tr><td>GATEWAY</td><td>The default gateway for the VPC, which is 10.168.176.1. This IP is typically used for routing traffic inside and outside the VPC.</td></tr></tbody></table>

## Cloudeka Guard

**Cloudeka Guard** is a module that displays the network policies applied to a namespace. You can run the following syntax.

```
kubectl get guard
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.cloudeka.ai/service-portal-ai/balance/custom-resource-definition.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
