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
Verify the chart appears:
Step 3: Configure Deployment Settings
Create a new file called my-cloud-reporter.yaml in your working directory. This Helm values file will be used in all subsequent steps.
Step 4: Load Configuration
Load the 10x Engine config folder into the cluster using one of the methods below.
If you skip this step, the default configuration bundled with the Log10x image is used.
An init container clones your configuration repository before each CronJob run, ensuring always up-to-date configuration. Works with GitHub, GitLab, Bitbucket, or any HTTPS-accessible Git provider.
- Fork the Config Repository
- Create a branch for your configuration changes
- Edit the app configuration to match your analyzer input and metric output
Add to your Helm values:
config:
git:
enabled: true
url: "https://github.com/YOUR-ACCOUNT/config.git"
branch: "my-cloud-reporter-config" # Optional
gitToken: "YOUR-GIT-TOKEN"
For production, store the token in a Kubernetes Secret rather than in the values file.
Mount an existing PersistentVolumeClaim that contains your configuration directory. This approach works in air-gapped environments and requires no external network access.
- Create a PVC containing your configuration files (cloned from the Config Repository)
- Reference it in your Helm values:
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:
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 7: Verify
Check the CronJob was created:
Trigger a manual run to test:
Check pod logs for errors:
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
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