Skip to content
 
 

Latest commit

 

History

13 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ingext CLI

ingext is a command-line interface tool for managing Ingext resources on Kubernetes. It allows users to manage streams, processors, integrations, and authentication through a structured, AWS-CLI-style interface.

Features

  • Standardized CLI: Follows the intuitive noun verb [flags] pattern (e.g., ingext stream add source).
  • Kubernetes Native: Connects directly to your clusters using your local kubeconfig context.
  • Pipe Friendly: Designed for automation—strictly separates data output (STDOUT) from logs (STDERR) and supports reading files from STDIN.
  • Smart Config: Hierarchical configuration (Flags > Env Vars > Config File).

Installation

From Source

Requirements: Go 1.21+

# Clone the repository
git clone https://github.com/your-org/ingext.git
cd ingext

# Build the binary
go build -o ingext cmd/ingext/main.go

# (Optional) Move to path
install -m 755 ingext /usr/local/bin/.

Configuration

Before running commands, configure the target Kubernetes cluster and namespace. This saves settings to ~/.ingext/config.yaml.

# Set your default target
ingext config set --cluster <k8s-cluster> --namespace <app-namespace> --context <kubectlContext>  --provider <eks|aks|gke>

# Example
ingext config set --cluster datalake  --namespace ingext --provider eks --context arn:aws:eks:$Region:$AWSAccount:cluster/datalake 

You can view your current configuration at any time:

ingext config view

List all configured clusters or delete a cluster profile:

ingext config list
ingext config delete --cluster <cluster-name>

Environment Variables You can override defaults using INGEXT_ prefixed variables:

export INGEXT_CLUSTER=prod-cluster
export INGEXT_NAMESPACE=ingext

Usage

Global flags

Flag Shorthand Default Description
--cluster none Target Kubernetes cluster (required unless set via config).
--namespace -n ingext Namespace of the ingext app.
--log-level -l warn Log level: debug, info, warn, or error.
--version -v false Print CLI version (1.1.0) and exit.

Status (status)

Check the current namespace for running services and health checks for core ingext endpoints. Prints a table plus a summary of healthy/degraded/down services.

ingext status

Authentication (auth)

Manage users and access tokens.

# Users
ingext auth add-user --name foo@gmail.com --role admin --displayName "Foo Bar" --org ingext
ingext auth del-user --name foo@gmail.com
ingext auth list-user

# API tokens
ingext auth add-token --name ci-bot --role analyst --displayName "CI Bot"
ingext auth del-token --name ci-bot
ingext auth list-token

Streams (stream)

Manage data pipelines (sources, sinks, routers).

# Sources
ingext stream add-source --name clickstream-v1 --source-type plugin --integration-id <integration-id>
ingext stream add-source --name hec-ingest --source-type hec
ingext stream list-source
ingext stream del-source --id <source-id>

# Sinks
ingext stream add-sink --name datalake-out --sink-type datalake --datalake managed --index <index-name>
ingext stream add-sink --name hec-out --sink-type hec --url https://hec.example --token <token>
ingext stream add-sink --name webhook-out --sink-type webhook --url https://example.com/hook
ingext stream list-sink
ingext stream del-sink --id <sink-id>

# Routers and wiring
ingext stream add-router --processor my-processor --router-name main-router
ingext stream connect-router --source-id <source-id> --router-id <router-id>
ingext stream connect-sink --router-id <router-id> --sink-id <sink-id>

Processors (processor)

Deploy data processors. Supports piping input via - and file loading via @path.

ingext processor add --name filter-logic --content @./scripts/filter.js [--type fpl_processor] [--desc "Filter logic"]
cat ./scripts/transform.js | ingext processor add --name transform-logic --content -
ingext processor list
ingext processor del --name filter-logic

Integrations (integration)

Manage third-party connections.

ingext integration add --integration slack --name alert-bot --description "Send alerts to Slack" \
  --config key1=value1 --config-bool enabled=true --config-int retries=3 \
  --config-json 'tags=["a","b"]' --secret api_key=xxx --add-source
ingext integration list
ingext integration del --id <integration-id>

Data Lake (datalake)

Manage datalakes and their indexes.

ingext datalake add --datalake my-datalake --managed --integration <integration-id>
ingext datalake list
ingext datalake add-index --datalake my-datalake --index events --schema "ingext default"
ingext datalake list-index --datalake my-datalake
ingext datalake del-index --datalake my-datalake --index events

EKS Pod Identity Roles (eks)

ingext eks add-assumed-role --name ingest-role --roleArn <role-arn> [--externalId <external-id>]
ingext eks list-assumed-role
ingext eks del-assumed-role --id <role-id>
ingext eks get-pod-role
ingext eks test-assumed-role --roleArn <role-arn> [--externalId <external-id>]

Applications (application)

# List and manage templates
ingext application list
ingext application add --content @./template.yaml
ingext application update --app <template> --content @./template.yaml
ingext application del --app <template>

# Install and manage instances
ingext application install --app <template> --instance <instance> --displayName "My App" --config key=value --secret secretKey=value
ingext application uninstall --app <template> --instance <instance>
ingext application get-instance --app <template> --instance <instance>

Import (import)

Import resources from a GitHub repository.

ingext import processor --type fpl_processor
ingext import application

Development

Project Structure

The project follows the Standard Go Project Layout:

Path Description
cmd/ingext/ Application entry point (main.go).
internal/commands/ Cobra command definitions and flag parsing.
internal/api/ Business logic and Kubernetes client (client-go).
internal/config/ Configuration loading (Viper).

Kubernetes Dependency Note

This project uses client-go v0.35.0. If you change versions, ensure all k8s libraries match exactly to avoid build errors:

go get k8s.io/client-go@v0.35.0 k8s.io/api@v0.35.0 k8s.io/apimachinery@v0.35.0
go get "github.com/google/go-github/v64/github"
go mod tidy

License

MIT

About

Fluency api client

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages