diff --git a/helmfile.d/yolo-registry.yaml.gotmpl b/helmfile.d/yolo-registry.yaml.gotmpl new file mode 100644 index 00000000..14d19b11 --- /dev/null +++ b/helmfile.d/yolo-registry.yaml.gotmpl @@ -0,0 +1,38 @@ +bases: + - ../envs/environments.yaml.gotmpl + +commonLabels: + tier: oceanbox + +releases: +- name: yolo-registry + namespace: yolo + chart: ../charts/yolo-registry + condition: yolo_registry.enabled + values: + - ../values/yolo-registry/values/values.yaml + - ../values/yolo-registry/values/values-{{ .Environment.Name }}.yaml + postRenderer: ../bin/kustomizer + postRendererArgs: + - ../values/yolo-registry/kustomize/{{ .Environment.Name }} + missingFileHandler: Info +- name: manifests + namespace: yolo + chart: manifests + condition: yolo_registry.enabled + missingFileHandler: Info + values: + - ../values/env.yaml + - ../values/env-{{ requiredEnv "ARGOCD_ENV_CLUSTER_NAME" }}.yaml + - ../values/yolo-registry/env.yaml.gotmpl + - ../values/yolo-registry/env-{{ requiredEnv "ARGOCD_ENV_CLUSTER_NAME" }}.yaml.gotmpl + hooks: + - events: [ prepare, cleanup ] + showlogs: true + command: ../bin/helmify + args: + - '{{`{{ if eq .Event.Name "prepare" }}build{{ else }}clean{{ end }}`}}' + - '{{`{{ .Release.Chart }}`}}' + - '{{`{{ .Environment.Name }}`}}' + - ../values/yolo-registry/manifests + - manifests diff --git a/values/yolo-registry/env-oceanbox.yaml.gotmpl b/values/yolo-registry/env-oceanbox.yaml.gotmpl new file mode 100644 index 00000000..36bc2869 --- /dev/null +++ b/values/yolo-registry/env-oceanbox.yaml.gotmpl @@ -0,0 +1,4 @@ +yolo_registry: + enabled: true + autosync: false + diff --git a/values/yolo-registry/env.yaml.gotmpl b/values/yolo-registry/env.yaml.gotmpl new file mode 100644 index 00000000..1883c217 --- /dev/null +++ b/values/yolo-registry/env.yaml.gotmpl @@ -0,0 +1,3 @@ +yolo_registry: + enabled: true + autosync: false diff --git a/values/yolo-registry/manifests/yolo-registry.yaml b/values/yolo-registry/manifests/yolo-registry.yaml new file mode 100644 index 00000000..eda1e6a9 --- /dev/null +++ b/values/yolo-registry/manifests/yolo-registry.yaml @@ -0,0 +1,42 @@ +{{- if .Values.clusterConfig.argo.enabled }} +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: yolo-registry + namespace: argocd + annotations: + argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true + finalizers: + - resources-finalizer.argocd.argoproj.io +spec: + destination: + namespace: yolo + server: https://kubernetes.default.svc + sources: + - repoURL: {{ .Values.clusterConfig.manifests }} + targetRevision: HEAD + path: helmfile.d + plugin: + name: helmfile-cmp + env: + - name: CLUSTER_NAME + value: {{ .Values.clusterConfig.cluster }} + - name: HELMFILE_ENVIRONMENT + value: default + - name: HELMFILE_FILE_PATH + value: yolo-registry.yaml.gotmpl + project: aux + syncPolicy: + managedNamespaceMetadata: + labels: + component: sys + syncOptions: + - CreateNamespace=true + - ApplyOutOfSyncOnly=true + # - ServerSideApply=true + {{- if .Values.yolo_registry.autosync }} + automated: + prune: true + # selfHeal: false + {{- end }} +{{- end }} diff --git a/values/yolo-registry/values/values.yaml b/values/yolo-registry/values/values.yaml new file mode 100644 index 00000000..d379de63 --- /dev/null +++ b/values/yolo-registry/values/values.yaml @@ -0,0 +1,87 @@ +# Default values for YoloRegistry. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. + +replicaCount: 1 +image: + repository: registry + tag: 2 + pullPolicy: IfNotPresent +init: + enabled: false + image: ubuntu:rolling + command: ["/bin/sh", "-c", "true"] +nameOverride: "" +fullnameOverride: "" +serviceAccount: + create: true + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" +podAnnotations: {} +podSecurityContext: + fsGroup: 2000 +securityContext: + capabilities: + drop: + - ALL + readOnlyRootFilesystem: false + runAsNonRoot: false + runAsUser: 0 +service: + type: ClusterIP + port: 5000 +ingress: + enabled: true + className: nginx + annotations: + cert-manager.io/cluster-issuer: letsencrypt-production + nginx.ingress.kubernetes.io/proxy-body-size: "0" + nginx.ingress.kubernetes.io/proxy-read-timeout: "600" + nginx.ingress.kubernetes.io/proxy-send-timeout: "600" + nginx.ingress.kubernetes.io/ssl-redirect: "true" + nginx.ingress.kubernetes.io/backend-protocol: HTTP + nginx.ingress.kubernetes.io/whitelist-source-range: 10.0.0.0/8,172.16.0.0/12,192.168.0.0/16 + hosts: + - host: yolo-registry.dev.oceanbox.io + paths: + - path: / + pathType: ImplementationSpecific + tls: + - hosts: + - yolo-registry.dev.oceanbox.io + secretName: yolo-registry-tls +persistence: + enabled: true + size: 1G + storageClass: "" + accessMode: ReadWriteOnce +cluster: + enabled: false + instances: 1 + backupEnabled: true + backupRetention: 60d + size: 5Gi +resources: {} +# We usually recommend not to specify default resources and to leave this as a conscious +# choice for the user. This also increases chances charts run on environments with little +# resources, such as Minikube. If you do want to specify resources, uncomment the following +# lines, adjust them as necessary, and remove the curly braces after 'resources:'. +# limits: +# cpu: 100m +# memory: 128Mi +# requests: +# cpu: 100m +# memory: 128Mi + +autoscaling: + enabled: false + minReplicas: 1 + maxReplicas: 100 + targetCPUUtilizationPercentage: 80 + # targetMemoryUtilizationPercentage: 80 +nodeSelector: {} +tolerations: [] +affinity: {}