x-google-marketplace:
  schemaVersion: v2
  applicationApiVersion: v1beta1
  publishedVersion: 2.0.0-alpha.2
  publishedVersionMetadata:
    releaseNote: Based on 2.0.0-alpha.2 version.
    releaseTypes:
      - Feature
    recommended: false
  managedUpdates:
    kalmSupported: false
  images:
    '':
      properties:
        imageRepo:
          type: REPO_WITH_REGISTRY
        imageTag:
          type: TAG
    mysql:
      properties:
        images.mysql:
          type: FULL
    minio:
      properties:
        images.minio:
          type: FULL
    argoexecutor:
      properties:
        images.argoexecutor:
          type: FULL
    argoworkflowcontroller:
      properties:
        images.argoworkflowcontroller:
          type: FULL
    apiserver:
      properties:
        images.apiserver:
          type: FULL
    persistenceagent:
      properties:
        images.persistenceagent:
          type: FULL
    scheduledworkflow:
      properties:
        images.scheduledworkflow:
          type: FULL
    frontend:
      properties:
        images.frontend:
          type: FULL
    viewercrd:
      properties:
        images.viewercrd:
          type: FULL
    visualizationserver:
      properties:
        images.visualizationserver:
          type: FULL
    metadataserver:
      properties:
        images.metadataserver:
          type: FULL
    proxyagent:
      properties:
        images.proxyagent:
          type: FULL
    cloudsqlproxy:
      properties:
        images.cloudsqlproxy:
          type: FULL
    metadataenvoy:
      properties:
        images.metadataenvoy:
          type: FULL
    metadatawriter:
      properties:
        images.metadatawriter:
          type: FULL
    cacheserver:
      properties:
        images.cacheserver:
          type: FULL
    cachedeployer:
      properties:
        images.cachedeployer:
          type: FULL
  deployerServiceAccount:
    description: Service account used to deploy cluster-wide Kubeflow Pipelines objects
    roles:
      - type: ClusterRole # This is a cluster-wide ClusterRole
        rulesType: CUSTOM # We specify our own custom RBAC roles
        rules:
          - apiGroups: ['apiextensions.k8s.io', 'rbac.authorization.k8s.io']
            resources: ['customresourcedefinitions', 'clusterroles', 'clusterrolebindings']
            verbs: ['*']
      # For CRs in the following deployer-applied Roles:
      # - kubeflow-pipelines-cache-role
      # - kubeflow-pipelines-metadata-writer-role
      # - ml-pipeline
      # - ml-pipeline-persistenceagent-role
      # - ml-pipeline-scheduledworkflow-role
      # - ml-pipeline-viewer-controller-role
      # - ml-pipeline-ui
      # - pipeline-runner
      # - proxy-agent-runner
      - type: Role
        rulesType: CUSTOM
        rules:
          - apiGroups: ['argoproj.io']
            resources:
              - 'workflows'
              - 'workflows/finalizers'
              - 'workflowtemplates'
              - 'workflowtemplates/finalizers'
              - 'cronworkflows'
              - 'cronworkflows/finalizers'
            verbs: ['*']
          - apiGroups: ['kubeflow.org']
            resources: ['*']
            verbs: ['*']
          - apiGroups: ['']
            resources: ['configmaps', 'events', 'pods/log', 'persistentvolumes', 'persistentvolumeclaims', 'pods', 'pods/exec']
            verbs: ['*']
          # Needed by argo v3.1.0+
          - apiGroups: ['coordination.k8s.io']
            resources: ['leases']
            verbs: ['create', 'get', 'update']
          - apiGroups: ['batch']
            resources: ['jobs']
            verbs: ['*']
          - apiGroups: ['*']
            resources: ['deployments', 'services', 'replicasets']
            verbs: ['*']
          # Not a CR, but an alpha resource so not present in
          # all clusters (and their `admin` Role definition)
          - apiGroups: ['snapshot.storage.k8s.io']
            resources: ['volumesnapshots']
            verbs: ['*']
      # Marketplace does not provision default
      # Role/binding if custom Role is provided
      - type: Role
        rulesType: CUSTOM
        rules:
          - apiGroups: ['app.k8s.io']
            resources: ['applications']
            verbs: ['*']
      - type: Role
        rulesType: PREDEFINED
        rulesFromRoleName: admin
  clusterConstraints:
    resources:
      - replicas: 3
        requests:
          cpu: 1
          memory: 2Gi
        affinity:
          simpleNodeAffinity:
            type: REQUIRE_ONE_NODE_PER_REPLICA
    gcp:
      nodes:
        requiredOauthScopes:
          - https://www.googleapis.com/auth/cloud-platform
properties:
  name:
    type: string
    x-google-marketplace:
      type: NAME
  namespace:
    type: string
    x-google-marketplace:
      type: NAMESPACE
  executor.emissary:
    type: boolean
    title: Use emissary executor (Alpha)
    default: false
    description: |-
      Warning, Kubeflow Pipelines does not work on Google Kubernetes Engine (GKE) 1.19+ by
      default. You cluster node image must be configured to use docker as container runtime.

      Using emissary executor removes the restriction on container runtime, but note some of
      your pipelines may require manual migrations.

      Refer to Argo Workflow Executors documentation for detailed configuration and migration instructions for both options:
      https://www.kubeflow.org/docs/components/pipelines/installation/choose-executor/
  managedstorage.enabled:
    type: boolean
    title: Use managed storage
    description: |-
      Select this option to store pipeline artifacts and metadata using
      Cloud SQL and Cloud Storage. Otherwise, pipeline artifacts and metadata
      are stored on Compute Engine persistent disks.

      Cloud SQL and Cloud Storage provides better reliability and performance,
      as well as features such as data backup and usage monitoring.
      Using Cloud SQL and Cloud Storage is recommended for production
      deployments.

      To configure your cluster to use managed storage, specify your Cloud
      Storage bucket and Cloud SQL connection details below. To preserve your
      data while reinstalling Kubeflow Pipelines, you must specify the same
      managed storage options as your previous instance.

      If upgrading from Kubeflow Pipelines 0.5.1 with managed storage, the
      Cloud Storage bucket was auto-generated in the same project. This bucket
      should be named like "<cloudsql instance connection name>-<database prefix or instance name>".
    default: false
  managedstorage.gcsBucketName:
    type: string
    title: Artifact storage Cloud Storage bucket (Managed storage only)
    description: |-
      If you are deploying Kubeflow Pipelines with managed storage, specify the
      Cloud Storage bucket that you would like Kubeflow Pipelines to store
      pipeline artifacts in. Learn more about creating a new bucket,
      see https://cloud.google.com/storage/docs/creating-buckets.

      Warning, if the provided bucket doesn't exist, the deployer will
      automatically create a bucket for you in us-central1, but you won't be
      able to customize the bucket's parameters.
    default: ""
  managedstorage.cloudsqlInstanceConnectionName:
    type: string
    title: Cloud SQL instance connection name (Managed storage only)
    description: |-
      If you are deploying Kubeflow Pipelines with managed storage, specify the
      instance connection name for your MySQL instance on Cloud SQL.
      The instance connection name can be found on the instance detail page in
      the Cloud SQL console. The instance connection name uses the format
      "<project>:<region>:<instance-name>", for example: myproject:us-central1:myinstance.
      Learn more about setting up your Cloud SQL instance, see https://cloud.google.com/sql/docs/mysql/quickstart.
    default: ""
  managedstorage.dbUsername:
    type: string
    title: Database username (Managed storage only)
    description: |-
      If you are deploying Kubeflow Pipelines with managed storage, specify the
      database username for Kubeflow Pipelines to use when connecting to your
      MySQL instance on Cloud SQL.
      Learn more about MySQL users, see https://cloud.google.com/sql/docs/mysql/users.
    default: root
  managedstorage.dbPassword:
    type: string
    title: Database password (Managed storage only)
    x-google-marketplace:
      type: MASKED_FIELD
    description: |-
      If you are deploying Kubeflow Pipelines with managed storage, specify the
      database password for Kubeflow Pipelines to use when connecting to your
      MySQL instance on Cloud SQL. If you leave this field empty, Kubeflow
      Pipelines connects to your Cloud SQL instance without providing a
      password. This will fail if a password is required for the username you
      specified.
    default: ""
  managedstorage.databaseNamePrefix:
    type: string
    title: Database name prefix (Managed storage only)
    description: |-
      If you are deploying Kubeflow Pipelines with managed storage, specify the
      database name prefix. The prefix value must contain only lowercase
      letters, numbers and underscores. Additionally, the prefix must start with a letter.

      During the deployment process, Kubeflow Pipelines creates two databases,
      "<prefix>_pipeline" and "<prefix>_metadata". If the prefix specified
      matches a previous deployment, this deployment will reuse the existing
      databases.
    default: ""
required:
  - name
  - namespace
