1. Packages
  2. CAST AI
CAST AI v0.1.45 published on Thursday, Apr 17, 2025 by CAST AI

CAST AI

castai logo
CAST AI v0.1.45 published on Thursday, Apr 17, 2025 by CAST AI

    CAST AI Provider

    The CAST AI Provider for Pulumi enables you to manage CAST AI resources in your cloud infrastructure using Pulumi. CAST AI is a Kubernetes cost optimization platform that helps you reduce cloud costs by up to 50% through automated instance selection, scaling, and spot instance management.

    Example

    import * as pulumi from "@pulumi/pulumi";
    import * as castai from "@castai/pulumi";
    
    // Initialize the CAST AI provider
    const provider = new castai.Provider("castai-provider", {
        apiToken: process.env.CASTAI_API_TOKEN,
        apiUrl: process.env.CASTAI_API_URL || "https://api.cast.ai",
    });
    
    // Connect a GKE cluster to CAST AI
    const gkeCluster = new castai.GkeCluster("gke-cluster-connection", {
        projectId: process.env.GCP_PROJECT_ID || "my-gcp-project-id",
        location: "us-central1",
        name: process.env.GKE_CLUSTER_NAME || "cast_ai_test_cluster",
        deleteNodesOnDisconnect: true,
    }, { provider });
    
    // Export the cluster ID
    export const clusterId = gkeCluster.id;
    
    import pulumi
    import os
    from pulumi_castai import Provider, GkeCluster
    
    # Initialize the CAST AI provider
    api_token = os.environ.get("CASTAI_API_TOKEN", "your-api-token-here")
    provider = Provider("castai-provider", api_token=api_token)
    
    # Connect a GKE cluster to CAST AI
    gke_cluster = GkeCluster("gke-cluster-connection",
        project_id=os.environ.get("GCP_PROJECT_ID", "my-gcp-project-id"),
        location="us-central1",
        name=os.environ.get("GKE_CLUSTER_NAME", "cast_ai_test_cluster"),
        delete_nodes_on_disconnect=True,
        opts=pulumi.ResourceOptions(provider=provider)
    )
    
    # Export the cluster ID
    pulumi.export("cluster_id", gke_cluster.id)
    
    package main
    
    import (
    	"os"
    
    	"github.com/castai/pulumi-castai/sdk/go/castai"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		// Initialize the provider
    		provider, err := castai.NewProvider(ctx, "castai-provider", &castai.ProviderArgs{
    			ApiToken: pulumi.String(os.Getenv("CASTAI_API_TOKEN")),
    		})
    		if err != nil {
    			return err
    		}
    
    		// Get GCP project ID from environment variable or use a default value
    		projectID := os.Getenv("GCP_PROJECT_ID")
    		if projectID == "" {
    			projectID = "my-gcp-project-id"
    		}
    
    		// Get GKE cluster name from environment variable or use a default value
    		clusterName := os.Getenv("GKE_CLUSTER_NAME")
    		if clusterName == "" {
    			clusterName = "cast_ai_test_cluster"
    		}
    
    		// Connect a GKE cluster to CAST AI
    		gkeCluster, err := castai.NewGkeCluster(ctx, "gke-cluster-connection", &castai.GkeClusterArgs{
    			ProjectId:              pulumi.String(projectID),
    			Location:               pulumi.String("us-central1"),
    			Name:                   pulumi.String(clusterName),
    			DeleteNodesOnDisconnect: pulumi.Bool(true),
    		}, pulumi.Provider(provider))
    		if err != nil {
    			return err
    		}
    
    		// Export the cluster ID
    		ctx.Export("clusterId", gkeCluster.ID())
    		return nil
    	})
    }
    
    using System;
    using Pulumi;
    using Pulumi.CastAI;
    
    class MyStack : Stack
    {
        public MyStack()
        {
            // Initialize the CAST AI provider
            var provider = new Provider("castai-provider", new ProviderArgs
            {
                ApiToken = Environment.GetEnvironmentVariable("CASTAI_API_TOKEN"),
                ApiUrl = Environment.GetEnvironmentVariable("CASTAI_API_URL") ?? "https://api.cast.ai"
            });
    
            // Connect a GKE cluster to CAST AI
            var gkeCluster = new GkeCluster("gke-cluster-connection", new GkeClusterArgs
            {
                ProjectId = Environment.GetEnvironmentVariable("GCP_PROJECT_ID") ?? "my-gcp-project-id",
                Location = "us-central1",
                Name = Environment.GetEnvironmentVariable("GKE_CLUSTER_NAME") ?? "cast_ai_test_cluster",
                DeleteNodesOnDisconnect = true
            }, new CustomResourceOptions
            {
                Provider = provider
            });
    
            // Export the cluster ID
            this.ClusterId = gkeCluster.Id;
        }
    
        [Output] public Output<string> ClusterId { get; set; }
    }
    

    Features

    The CAST AI Provider offers resources to:

    • Connect your Kubernetes clusters (EKS, GKE, AKS) to CAST AI for cost optimization
    • Configure autoscaling policies for your clusters
    • Manage node configurations and templates
    • Set up IAM roles and service accounts for CAST AI
    • Configure cost optimization policies

    Available Resources

    The CAST AI provider supports the following resources:

    Cloud Provider Resources

    • AWS EKS clusters: castai:aws:EksCluster
    • GCP GKE clusters: castai:gcp:GkeCluster
    • Azure AKS clusters: castai:azure:AksCluster

    Core Resources

    • Cluster: castai:index:Cluster
    • Credentials: castai:index:Credentials
    • Cluster Token: castai:index:ClusterToken

    Autoscaling Resources

    • Autoscaler: castai:autoscaling:Autoscaler

    Organization Resources

    • Service Account: castai:organization:ServiceAccount
    • Service Account Key: castai:organization:ServiceAccountKey
    castai logo
    CAST AI v0.1.45 published on Thursday, Apr 17, 2025 by CAST AI