This repository contains a Go API client for the KubeBlocks Cloud API.
- Go 1.22+
go get github.com/apecloud/kb-cloud-client-goThe client library contains the following packages:
The main API client is located in the api/kbcloud directory. Import it with:
import "github.com/apecloud/kb-cloud-client-go/api/kbcloud"The admin API client is located in the api/kbcloud/admin directory. Import it with:
import "github.com/apecloud/kb-cloud-client-go/api/kbcloud/admin" The data API client is located in the api/kbcloud/data directory. Import it with:
import "github.com/apecloud/kb-cloud-client-go/api/kbcloud/data"The client supports authentication via API Key & Secret. The recommended way is to use environment variables with NewDefaultContext:
// Use environment variables: // KB_CLOUD_API_KEY_NAME - API key name // KB_CLOUD_API_KEY_SECRET - API key secret // KB_CLOUD_SITE - Optional site configuration ctx := common.NewDefaultContext(context.Background())You can also configure authentication directly through context:
ctx := context.WithValue( context.Background(), common.ContextDigestAuth, common.DigestAuth{ UserName: os.Getenv("KB_CLOUD_API_KEY_NAME"), Password: os.Getenv("KB_CLOUD_API_KEY_SECRET"), }, )For complete examples, check out the examples directory.
Here's an example using API key authentication:
package main import ( "context" "fmt" "os" "github.com/apecloud/kb-cloud-client-go/api/common" "github.com/apecloud/kb-cloud-client-go/api/kbcloud" ) func main() { // Set up authentication context ctx := context.WithValue( context.Background(), common.ContextDigestAuth, common.DigestAuth{ UserName: os.Getenv("KB_CLOUD_API_KEY_NAME"), Password: os.Getenv("KB_CLOUD_API_KEY_SECRET"), }, ) // Optional: Set site configuration ctx = context.WithValue( ctx, common.ContextServerVariables, map[string]string{"site": os.Getenv("KB_CLOUD_SITE")}, ) orgName := "my-org" client := common.NewAPIClient(configuration) fmt.Println("Listing environments...") api := kbcloud.NewEnvironmentApi(client) envs, resp, err := api.ListEnvironment(ctx, orgName) if err != nil { log.Fatalf("Error listing environments: %v\nResponse: %v", err, resp) } fmt.Printf("Environments: %+v\n\n", envs) }The client supports the following environment variables:
# Authentication KB_CLOUD_API_KEY_NAME=your-api-key-name KB_CLOUD_API_KEY_SECRET=your-api-key-secret # Site configuration KB_CLOUD_SITE=https://api-test.apecloud.com # HTTP proxy settings HTTP_PROXY=http://proxy.example.com:8080 HTTPS_PROXY=http://proxy.example.com:8080Configure server URL and variables:
configuration := common.NewConfiguration() // Set server URL configuration.Host = "api.example.com" // Set server variables configuration.ServerVariables = map[string]string{ "site": os.Getenv("KB_CLOUD_SITE"), } // Or use context to set server variables ctx := context.WithValue( context.Background(), common.ContextServerVariables, map[string]string{"site": os.Getenv("KB_CLOUD_SITE")}, )Enable debug logging:
configuration := common.NewConfiguration() configuration.Debug = trueConfigure retry behavior:
configuration := common.NewConfiguration() // Configure retry settings configuration.RetryConfiguration = common.RetryConfiguration{ EnableRetry: true, // Enable/disable retry MaxRetries: 3, // Maximum number of retries RetryInterval: 2, // Base retry interval in seconds MaxRetryInterval: 30, // Maximum retry interval in seconds BackOffBase: 2, // Exponential backoff base RequestTimeout: 30, // Request timeout in seconds }Configure HTTP client:
configuration := common.NewConfiguration() // Custom HTTP client configuration.HTTPClient = &http.Client{ Timeout: time.Second * 30, Transport: &http.Transport{ MaxIdleConns: 10, MaxIdleConnsPerHost: 10, IdleConnTimeout: 30 * time.Second, }, } // Skip TLS verification (not recommended for production) ctx := context.WithValue( context.Background(), common.ContextInsecureSkipVerify, true, )Configure custom user agent:
configuration := common.NewConfiguration() configuration.UserAgent = "MyApp/1.0.0"Add default headers to all requests:
configuration := common.NewConfiguration() configuration.AddDefaultHeader("Custom-Header", "value")To regenerate the API client code:
./generate.shWe welcome contributions! Please feel free to submit a Pull Request.
This project's generator is inspired by and built upon the work from Datadog's API client generator. We are grateful to Datadog for their excellent work and open source contributions.
This library is distributed under the Apache 2.0 license found in the LICENSE file.