v2 Schemas

Below are the schemas Armada uses to validate Charts, Chart Groups, and Manifests.

Charts

Charts consist of the smallest building blocks in Armada. A Chart is comparable to a Helm chart. Charts consist of all the labels, dependencies, install and upgrade information, hooks and additional information needed to convey to Helm.

Chart Groups

A Chart Group consists of a list of charts. Chart Group documents are useful for managing a group of Chart documents together.

Manifests

A Manifest is the largest building block in Armada. Manifest documents are responsible for managing collections of Chart Group documents.

Validation Schemas

Introduction

All schemas below are Deckhand DataSchema documents, which are essentially JSON schemas, with additional metadata useful for Deckhand to perform layering and substitution.

The validation schemas below are used by Armada to validate all ingested Charts, Chart Groups, and Manifests. Use the schemas below as models for authoring Armada documents.

Schemas

  • Chart schema.

    JSON schema against which all documents with armada/Chart/v2 metadata.name are validated.

    Schema for armada/Chart/v2 documents.
    # JSON schema for validating Armada charts.
    ---
    schema: deckhand/DataSchema/v1
    metadata:
      name: armada/Chart/v2
      schema: metadata/Control/v1
    data:
      $schema: http://json-schema.org/schema#
      definitions:
        labels:
          type: object
          additionalProperties:
            type: string
        hook_action:
          type: array
          items:
            properties:
              type:
                type: string
              labels:
                $ref: '#/definitions/labels'
            required:
              - type
            additionalProperties: false
        wait_resource_type_config:
          properties:
            labels:
              $ref: '#/definitions/labels'
            min_ready:
              anyOf:
                - type: integer
                - type: string
            required:
              type: boolean
      type: object
      properties:
        release:
          type: string
        namespace:
          type: string
        values:
          type: object
        # TODO: Remove this, and just read dependencies out of `chart` dir as helm
        # CLI does.
        dependencies:
          type: array
          items:
            type: string
        protected:
          type: object
          properties:
            continue_processing:
              type: boolean
          additionalProperties: false
        test:
          type: object
          properties:
            enabled:
              type: boolean
            timeout:
              type: integer
            options:
              type: object
              properties:
                cleanup:
                  type: boolean
              additionalProperties: false
          additionalProperties: false
        wait:
          type: object
          properties:
            timeout:
              type: integer
            resources:
              anyOf:
                - additionalProperties:
                    anyOf:
                      - $ref: '#/definitions/wait_resource_type_config'
                      - type: array
                        items:
                          $ref: '#/definitions/wait_resource_type_config'
                - type: array
                  items:
                    allOf:
                      - $ref: '#/definitions/wait_resource_type_config'
                      - properties:
                          type:
                            type: string
                        required:
                          - type
            labels:
              $ref: "#/definitions/labels"
            # Config for helm's native `--wait` param.
            native:
              type: object
              properties:
                enabled:
                  type: boolean
              additionalProperties: false
          additionalProperties: false
        source:
          type: object
          properties:
            type:
              type: string
            location:
              type: string
            subpath:
              type: string
            reference:
              type: string
            proxy_server:
              type: string
            auth_method:
              type: string
          required:
            - location
            - type
        delete:
          type: object
          properties:
            timeout:
              type: integer
        upgrade:
          type: object
          properties:
            pre:
              type: object
              additionalProperties: false
              properties:
                delete:
                  $ref: '#/definitions/hook_action'
            options:
              type: object
              properties:
                force:
                  type: boolean
                no_hooks:
                  type: boolean
              additionalProperties: false
          additionalProperties: false
      required:
        - namespace
        - release
        - source
      additionalProperties: false
    ...
    

    This schema is used to sanity-check all Chart documents that are passed to Armada.

  • Chart Group schema.

    JSON schema against which all documents with armada/Chart/v2 metadata.name are validated.

    Schema for armada/ChartGroup/v2 documents.
    # JSON schema for validating Armada chart groups.
    ---
    schema: deckhand/DataSchema/v1
    metadata:
      name: armada/ChartGroup/v2
      schema: metadata/Control/v1
    data:
      $schema: http://json-schema.org/schema#
      properties:
        name:
          type: string
        description:
          type: string
        sequenced:
          type: boolean
        chart_group:
          type: array
          items:
            type: string
      required:
        # TODO: Rename to `charts`?
        - chart_group
      additionalProperties: false
    ...
    

    This schema is used to sanity-check all Chart Group documents that are passed to Armada.

  • Manifest schema.

    JSON schema against which all documents with armada/Manifest/v2 metadata.name are validated.

    Schema for armada/Manifest/v2 documents.
    # JSON schema for validating Armada manifests.
    ---
    schema: deckhand/DataSchema/v1
    metadata:
      name: armada/Manifest/v2
      schema: metadata/Control/v1
    data:
      $schema: http://json-schema.org/schema#
      properties:
        release_prefix:
          type: string
        chart_groups:
          type: array
          items:
            type: string
      required:
        - chart_groups
        - release_prefix
      additionalProperties: false
    ...
    

    This schema is used to sanity-check all Manifest documents that are passed to Armada.

Authoring Guidelines

All Armada documents must use the deckhand/DataSchema/v1 schema.