Skip to content
Open
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 42 additions & 0 deletions packs/stormforge-optimize-live-2.0.3/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# Optimize Live

StormForge Optimize Live applies machine learning to your existing observability metrics to make real-time, actionable recommendations to resource settings for any deployment active in Kubernetes


# Prerequisites

- Kubernetes version 1.16 or later

- Supported Metrics source (Prometheus or Datadog) along with Kube State Metrics. Check out the [Deploy Monitoring](https://docs.spectrocloud.com/clusters/cluster-management/monitoring/deploy-monitor-stack) guide to learn how to enable Prometheus with Palette.

- StormForge Command Line Interface Tool (v3.0.0+). Refer to the [StormForge CLI Install Guide](https://docs.stormforge.io/stormforge-cli/) for install steps.


- A [StormForge Account](https://app.stormforge.io/)




# Usage

StormForge Optimize Live applies machine learning to your existing observability metrics to make real-time, actionable recommendations to resource settings for any deployment running in Kubernetes. Save cloud resources and money, reduce the business risk of poorly performing applications, and get your developers focused on innovating, not tuning your Kubernetes environment.

You can use Stormforge with all the Palette-supported infrastructure providers.

To get started with Stormforge, check out the [Configuration](https://docs.stormforge.io/optimize-live/getting-started/configuration/) guide from Stormforge.


# References

- [Stormforge Documentation](https://docs.stormforge.io)


- [Stormforge FAQ](https://docs.stormforge.io/perftest/faq/)


- [Configuration using a CRD](https://docs.stormforge.io/optimize-live/guides/create-app-crd/)


- [Environment variables](https://docs.stormforge.io/optimize-live/reference/envvar/)


Binary file not shown.
Binary file not shown.
Binary file added packs/stormforge-optimize-live-2.0.3/logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
14 changes: 14 additions & 0 deletions packs/stormforge-optimize-live-2.0.3/pack.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"name": "stormforge-optimize-live",
"displayName": "Stormforge-Optimize-Live",
"layer": "addon",
"version": "2.0.3",
"cloudTypes": [
"all"
],
"charts": [
"charts/workload-agent-live-2.0.3.tgz"
],
"addonType": "monitoring",
"annotations": {}
}
7 changes: 7 additions & 0 deletions packs/stormforge-optimize-live-2.0.3/schema.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
charts.workload-agent-live.authorization.clientID:
schema: '{{ required }}'
charts.workload-agent-live.authorization.clientSecret:
schema: '{{ required | format "${password}" }}'

charts.workload-agent-live.stormforge.clusterName:
schema: '{{ required }}'
176 changes: 176 additions & 0 deletions packs/stormforge-optimize-live-2.0.3/values.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,176 @@
pack:
namespace: "stormforge-system"
content:
images:
- image: registry.stormforge.io/optimize-live/controller:0.0.26
charts:
- repo: https://registry.stormforge.io/chartrepo/library/
name: stormforge-agent
version: 2.0.3
#- repo: https://registry.stormforge.io/chartrepo/library/
# name: stormforge-applier
# version: 2.0.3

# Default values for optimize-live.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.

charts:
workload-agent-live:
##
# StormForge Agent Settings
##

### Required Configuration ###

# The following required values will be supplied by `stormforge create auth`.
#
# ---
stormforge:
address: "https://api.stormforge.io/"
clusterName:
authorization:
clientID:
clientSecret:
issuer: "https://api.stormforge.io/"

### End Required Configuration ###

# proxyUrl: "https://proxy.example.com"
# noProxy: "10.76.0.0/16"
#
# imagePullSecrets:
# - name: secret-name
resetSecret: false
workload:
autoDiscovery: true
denyNamespaces:
- kube-system
# `allowNamespaces` can be used as an alternative to `denyNamespaces`. Note
# that `allowNamespaces` and `denyNamespaces` are mututally exclusive; only
# one of them may be specified.
# `allowNamespaces` takes precedence over `denyNamespaces` in case both are
# specified.
allowNamespaces: []
# - app-1
# - app-2
# - monitoring

debug: false
image:
repository: registry.stormforge.io/optimize/workload-agent
pullPolicy: IfNotPresent
tag: "2.0.3"
resources:
requests:
cpu: 250m
memory: 100M
limits:
cpu: 500m
memory: 1000M
prom:
image:
repository: prom/prometheus
pullPolicy: IfNotPresent
tag: v2.44.0
resources:
requests:
cpu: 200m
memory: 100M
limits:
cpu: 1
memory: 1000M
remoteWriteUrl: "https://in.stormforge.io/prometheus/write"
tokenUrl: "https://api.stormforge.io/oauth/token"
scrapeTimeout: 8s
serviceAccount:
create: true
name: ""
annotations: {}
rbac:
# If set to false, user needs to handle all rbac needed for agent + workload manager
# there is a minimum of rules for metrics required, see template
create: true
# Leverage k8s "view" role for resources, minimizing RBAC rules needed
# and creating an additional clusterrolebinding for the service account
useViewRole: true
additional: |-
# In this section, we add resources that are not usually part of the view role
- apiGroups:
- monitoring.coreos.com
resources:
- prometheuses
- alertmanagers
verbs:
- get
- list
- watch
- apiGroups:
- optimize.stormforge.io
resources:
- lives
verbs:
- get
- list
- watch
# Volume for WAL - https://grafana.com/blog/2021/04/12/how-to-troubleshoot-remote-write-issues-in-prometheus/
# Assumption on needed_disk_space = (retention_time_in_seconds / scrapeInterval) * number_of_collected_metrics * bytes_per_sample )) * workloads_per_cluster
# Assuming each metric takes 512 bytes and 2000 workloads with 2 containers
# needed_disk_space = ((30 * 60 / 10) * 11 * 512) * 2000 ~= 200Mi
storageVolumeSize: 250Mi
agentRetentionMaxTime: 30m
nodeSelector: {}
tolerations: []
affinity: {}
# applier:
# # Default settings for Stormforge Applier
#
# image:
# repository: registry.stormforge.io/optimize/applier
# pullPolicy: IfNotPresent
# tag: "2.0.0-beta.9"
# serviceAccount:
# create: true
# name: ""
# annotations: {}
# # Fill these in as needed
# # extraEnvVars:
# # # Value here should be a parseable duration
# # # cf. https://pkg.go.dev/time#ParseDuration
# # - name: STORMFORGE_API_POLL_INTERVAL
# # value: 5s
# # - name: LOG_LEVEL
# # value: debug
# rbac:
# # This setting will aggregate the applier's custom ClusterRole to your cluster's edit role
# useEditRole: true
# create: true
# additional: |-
# # In this section, add any resources that you want the applier to patch
# - apiGroups:
# - monitoring.coreos.com
# resources:
# - prometheuses
# - alertmanagers
# verbs:
# - get
# - list
# - watch
# - create
# - patch
# - apiGroups:
# - optimize.stormforge.io
# resources:
# - lives
# verbs:
# - get
# - list
# - watch
# - create
# - patch
# imagePullSecrets:
# - name: stormforge-docker
# podSecurityContext: {}
# securityContext: {}
# resources: {}
#