Skip to content

Latest commit

 

History

History
79 lines (68 loc) · 2.26 KB

File metadata and controls

79 lines (68 loc) · 2.26 KB

Runbook Yaml

apiVersion: platform.plural.sh/v1alpha1
kind: Runbook
metadata:
  name: scaling-manual
  labels:
    platform.plural.sh/pinned: 'true'
{{ include "ghost.labels" . | indent 4 }}
spec:
  name: Ghost Scaling
  description: overview of how to accurately scale ghost deployment
  display: |-
{{ .Files.Get "runbooks/scaling.xml" | indent 4 }}
  datasources:
  - name: cpu
    type: prometheus
    prometheus:
      format: cpu
      legend: $pod
      query: sum(rate(container_cpu_usage_seconds_total{namespace="{{ .Release.Namespace }}",pod=~"ghost-[0-9]+"}[5m])) by (pod)
  - name: memory
    type: prometheus
    prometheus:
      format: memory
      legend: $pod
      query: sum(container_memory_working_set_bytes{namespace="{{ .Release.Namespace }}",pod=~"ghost-[0-9]+"}) by (pod)
  - name: statefulset
    type: kubernetes
    kubernetes:
      resource: statefulset
      name: ghost
  - name: nodes
    type: nodes
  actions:
  - name: scale
    action: config
    redirectTo: '/'
    configuration:
      updates:
      - path: 
        - ghost
        - resources
        - requests
        - cpu
        valueFrom: cpu
      - path:
        - ghost
        - resources
        - requests
        - memory
        valueFrom: memory

Each datasource has a type. At the moment, the only types Plural supports are prometheus, kubernetes, and nodes. Each type has a spec that's specific to the type.

  • prometheus

    spec:

    • format
    • legend
    • query
  • kubernetes

    spec:

    • resource
    • name -- the namespace of the kubernetes resource
  • nodes

    This just fetches all the nodes in the Kubernetes cluster

Additionally, in runbooks.yaml, you can define a specific action that the runbook can take based off of context from what the user input has given it.

For example, in the file above, we've defined an action that allows the runbook to update the home values file for that installation. It's done by yaml path, which means it will recursively update ghost.resources.request.cpu.

This will update the yaml file, save it back, issue a commit, and create a build in the console to actually apply the change.