Deploy

Deploy the Cloud Reporter app to Kubernetes via Helm.

The chart deploys a CronJob for periodic reporter invocation.

Step 1: Prerequisites
Requirement Description
Log10x License Your license key (get one)
Helm Helm CLI installed
kubectl Configured to access your cluster
GitHub Token Personal access token for config repo (create one)
Analyzer Credentials API keys for your platform: Splunk, Elasticsearch, Datadog, or CloudWatch
Step 2: Add Helm Repository
helm repo add log10x https://log-10x.github.io/helm-charts

Verify the chart appears:

helm search repo log10x-cron
Step 3: Configure Application

Create a new file called my-cloud-reporter.yaml in your working directory. This Helm values file will be used in all subsequent steps.

my-cloud-reporter.yaml
# License key added to all pods via TENX_LICENSE env var
log10xLicense: "YOUR-LICENSE-KEY-HERE"

jobs:
  - name: reporter-job
    runtimeName: my-cloud-reporter      # Optional: identifies this instance
    schedule: "*/10 * * * *"            # Run every 10 minutes
    args:
      - "@apps/cloud/reporter"
Step 4: GitOps (optional)

Log10x uses GitOps to manage configuration centrally.

Setup steps:

  1. Fork the Config Repository
  2. Create a branch for your configuration
  3. Edit the app configuration to match your analyzer input and metric output

Add GitHub credentials to your my-cloud-reporter.yaml:

my-cloud-reporter.yaml
jobs:
  - name: reporter-job
    # ... (previous config)

    github:
      config:
        token: "YOUR-GITHUB-TOKEN"
        repo: "YOUR-ACCOUNT/REPO-NAME"
        branch: "my-cloud-reporter-config"    # Optional: defaults to main

An Init Container pulls your config before each job run, ensuring always up-to-date configuration.

Step 5: Configure Secrets

Store sensitive credentials in Kubernetes Secrets rather than plain files.

Important: Only add secrets for analyzer inputs and metric outputs you've configured in your Cloud Reporter app configuration.

Create the secret (example for Splunk):

kubectl create secret generic cloud-reporter-credentials \
  --from-literal=splunk-username=YOUR_USERNAME \
  --from-literal=splunk-password=YOUR_PASSWORD

Add secret references to your my-cloud-reporter.yaml:

my-cloud-reporter.yaml
jobs:
  - name: reporter-job
    # ... (previous config)

    extraEnv:
      # From k8s Secret (example for Splunk)
      - name: SPLUNK_USERNAME
        valueFrom:
          secretKeyRef:
            name: cloud-reporter-credentials
            key: splunk-username
      - name: SPLUNK_PASSWORD
        valueFrom:
          secretKeyRef:
            name: cloud-reporter-credentials
            key: splunk-password

      # For other platforms (see vendor docs for credentials):
      # Elasticsearch: ELASTIC_USERNAME, ELASTIC_PASSWORD
      # Datadog: DD_API_KEY, DD_APP_KEY
      # CloudWatch: AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY
Step 6: Deploy
helm install my-cloud-reporter log10x/log10x-cron -f my-cloud-reporter.yaml
Step 7: Verify

Check the CronJob was created:

kubectl get cronjobs

Trigger a manual run to test:

kubectl create job --from=cronjob/reporter-job my-cloud-reporter-test

Check pod logs for errors:

kubectl logs -l job-name=my-cloud-reporter-test --tail=100

Verify no errors appear in the log file.

View results in the dashboard:

Once running, view your cost analytics in the Cloud Reporter Dashboard.

Quickstart Full Sample
my-cloud-reporter.yaml
log10xLicense: "YOUR-LICENSE-KEY-HERE"

jobs:
  - name: cloud-reporter
    runtimeName: my-first-cloud-reporter
    schedule: "*/15 * * * *"
    args:
      - "@apps/cloud/reporter"

    github:
      config:
        token: "YOUR-GITHUB-TOKEN"
        repo: "YOUR-ACCOUNT/REPO-NAME"
        branch: "my-cloud-reporter-config"

    extraEnv:
      - name: SPLUNK_USERNAME
        valueFrom:
          secretKeyRef:
            name: cloud-reporter-credentials
            key: splunk-username
      - name: SPLUNK_PASSWORD
        valueFrom:
          secretKeyRef:
            name: cloud-reporter-credentials
            key: splunk-password