Export Application as a helm chart

An application or a set of applications on Truefoundry can be exported as helm chart along with the supplied values file. This means this helm chart can be used to create the same application in a non-Truefoundry environment as well.

Pre-requisites

Truefoundry depends on some resources already being available on the target cluster for the exported helm chart to work. You can choose to not install them if the corresponding feature is not needed. They are as follows -

ArgoCD

Purpose

This is a mandatory requirement and must be installed in the cluster

Installation

kubectl create namespace argocd
cat > values.yaml << EOF
dex:
  enabled: false
redis:
  resources:
    requests:
      cpu: 100m
      memory: 256Mi
      ephemeral-storage: 256Mi
server:
  extraArgs:
    - --insecure
    - --application-namespaces="*"
  resources:
    requests:
      cpu: 100m
      memory: 256Mi
      ephemeral-storage: 256Mi
configs:
  cm:
    resource.customizations.knownTypeFields.serving.kserve.io_InferenceService: |-
      - field: spec.predictor.model.resources
        type: core/v1/ResourceRequirements
      - field: spec.predictor.containers
        type: core/v1/Container
controller:
  extraArgs:
    - --application-namespaces="*"
  resources:
    requests:
      cpu: 100m
      memory: 256Mi
      ephemeral-storage: 256Mi
repoServer:
  resources:
    requests:
      cpu: 100m
      memory: 256Mi
      ephemeral-storage: 256Mi
notifications:
  enabled: false
applicationSet:
  enabled: false
EOF
helm repo add argo https://argoproj.github.io/argo-helm
helm install argocd -n argocd argo/argo-cd --version 5.16.13 -f values.yaml

Argo Rollouts

Purpose

This is a mandatory requirement and must be installed in the cluster.

Installation

kubectl create namespace argo-rollouts
helm repo add argo https://argoproj.github.io/argo-helm
helm install argo-rollout -n argo-rollouts argo/argo-rollouts --version 2.25.0

KEDA

Purpose

This is needed for autoscaling. If there is no autoscaling needed, this dependency can be skipped. It depends on prometheus to perform request throughput based autoscaling being available on the cluster.

Installation

kubectl create namespace keda
cat > values.yaml << EOF
resources:
  operator:
    requests:
      cpu: 100m
      memory: 256Mi
      ephemeral-storage: 256Mi
  metricServer:
    requests:
      cpu: 100m
      memory: 256Mi
      ephemeral-storage: 256Mi
prometheus:
  operator:
    enabled: true
EOF
helm repo add kedacore https://kedacore.github.io/charts
helm install keda -n keda kedacore/keda --version 2.12.0 -f values.yaml