diff --git a/argocd/helm-kustomize/.gitignore b/argocd/helm-kustomize-cmp/.gitignore similarity index 100% rename from argocd/helm-kustomize/.gitignore rename to argocd/helm-kustomize-cmp/.gitignore diff --git a/argocd/helm-kustomize/Dockerfile b/argocd/helm-kustomize-cmp/Dockerfile similarity index 100% rename from argocd/helm-kustomize/Dockerfile rename to argocd/helm-kustomize-cmp/Dockerfile diff --git a/argocd/helm-kustomize/deploy.sh b/argocd/helm-kustomize-cmp/deploy.sh similarity index 52% rename from argocd/helm-kustomize/deploy.sh rename to argocd/helm-kustomize-cmp/deploy.sh index 0a188923..aedb1d1e 100644 --- a/argocd/helm-kustomize/deploy.sh +++ b/argocd/helm-kustomize-cmp/deploy.sh @@ -1,6 +1,6 @@ #!/bin/sh -img=registry.gitlab.com/oceanbox/manifests/kustomize-helm-with-rewrite +img=registry.gitlab.com/oceanbox/manifests/helm-kustomize-cmp tag=${1:-latest} docker build -t $img:$tag . diff --git a/argocd/helm-kustomize/generate.sh b/argocd/helm-kustomize-cmp/generate.sh similarity index 100% rename from argocd/helm-kustomize/generate.sh rename to argocd/helm-kustomize-cmp/generate.sh diff --git a/argocd/helm-kustomize/get-values.sh b/argocd/helm-kustomize-cmp/get-values.sh similarity index 100% rename from argocd/helm-kustomize/get-values.sh rename to argocd/helm-kustomize-cmp/get-values.sh diff --git a/argocd/helm-kustomize/init-helm-repos.sh b/argocd/helm-kustomize-cmp/init-helm-repos.sh similarity index 100% rename from argocd/helm-kustomize/init-helm-repos.sh rename to argocd/helm-kustomize-cmp/init-helm-repos.sh diff --git a/argocd/helm-kustomize/init.sh b/argocd/helm-kustomize-cmp/init.sh similarity index 100% rename from argocd/helm-kustomize/init.sh rename to argocd/helm-kustomize-cmp/init.sh diff --git a/argocd/helm-kustomize/plugin.yaml b/argocd/helm-kustomize-cmp/plugin.yaml similarity index 99% rename from argocd/helm-kustomize/plugin.yaml rename to argocd/helm-kustomize-cmp/plugin.yaml index a353493e..fdbacbd5 100644 --- a/argocd/helm-kustomize/plugin.yaml +++ b/argocd/helm-kustomize-cmp/plugin.yaml @@ -1,7 +1,7 @@ apiVersion: argoproj.io/v1alpha1 kind: ConfigManagementPlugin metadata: - name: helm-kustomize + name: helm-kustomize-cmp spec: # version: v1.2 # The init command runs in the Application source directory at the beginning of each manifest generation. The init diff --git a/argocd/manifest-cmp/.gitignore b/argocd/manifest-cmp/.gitignore new file mode 100644 index 00000000..5ab6415a --- /dev/null +++ b/argocd/manifest-cmp/.gitignore @@ -0,0 +1,2 @@ +argo-repo-server.yaml +values.yaml diff --git a/argocd/manifest-cmp/Dockerfile b/argocd/manifest-cmp/Dockerfile new file mode 100644 index 00000000..5b7f9c4c --- /dev/null +++ b/argocd/manifest-cmp/Dockerfile @@ -0,0 +1,7 @@ +FROM alpine/k8s:1.28.9 + +RUN mkdir -p /home/argocd/cmp-server/config/ +COPY plugin.yaml /home/argocd/cmp-server/config/ + +WORKDIR /plugin +COPY generate.sh ./ diff --git a/argocd/manifest-cmp/deploy.sh b/argocd/manifest-cmp/deploy.sh new file mode 100644 index 00000000..a2b3be53 --- /dev/null +++ b/argocd/manifest-cmp/deploy.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +img=registry.gitlab.com/oceanbox/manifests/manifests-cmp +tag=${1:-latest} + +docker build -t $img:$tag . +docker push $img:$tag diff --git a/argocd/manifest-cmp/generate.sh b/argocd/manifest-cmp/generate.sh new file mode 100644 index 00000000..544d2ae4 --- /dev/null +++ b/argocd/manifest-cmp/generate.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +env > /tmp/$ARGOCD_APP_NAME.env + +# cat /tmp/$ARGOCD_APP_NAME-manifest.yaml diff --git a/argocd/manifest-cmp/plugin.yaml b/argocd/manifest-cmp/plugin.yaml new file mode 100644 index 00000000..4e8a1340 --- /dev/null +++ b/argocd/manifest-cmp/plugin.yaml @@ -0,0 +1,88 @@ +apiVersion: argoproj.io/v1alpha1 +kind: ConfigManagementPlugin +metadata: + name: manifest-cmp +spec: + # version: v1.2 + # The init command runs in the Application source directory at the beginning of each manifest generation. The init + # command can output anything. A non-zero status code will fail manifest generation. + # init: + # Init always happens immediately before generate, but its output is not treated as manifests. + # This is a good place to, for example, download chart dependencies. + # command: [ /bin/sh ] + # args: + # - /plugin/init.sh + # The generate command runs in the Application source directory each time manifests are generated. Standard output + # must be ONLY valid Kubernetes Objects in either YAML or JSON. A non-zero exit code will fail manifest generation. + # To write log messages from the command, write them to stderr, it will always be displayed. + # Error output will be sent to the UI, so avoid printing sensitive information (such as secrets). + generate: + command: [ /bin/sh ] + args: + - /plugin/generate.sh + + # The discovery config is applied to a repository. If every configured discovery tool matches, then the plugin may be + # used to generate manifests for Applications using the repository. If the discovery config is omitted then the plugin + # will not match any application but can still be invoked explicitly by specifying the plugin name in the app spec. + # Only one of fileName, find.glob, or find.command should be specified. If multiple are specified then only the + # first (in that order) is evaluated. + # discover: + # fileName is a glob pattern (https://pkg.go.dev/path/filepath#Glob) that is applied to the Application's source + # directory. If there is a match, this plugin may be used for the Application. + # fileName: "./subdir/s*.yaml" + # find: + # This does the same thing as fileName, but it supports double-start (nested directory) glob patterns. + # glob: "**/Chart.yaml" + # The find command runs in the repository's root directory. To match, it must exit with status code 0 _and_ + # produce non-empty output to standard out. + # command: [sh, -c, find . -name env.yaml] + # The parameters config describes what parameters the UI should display for an Application. It is up to the user to + # actually set parameters in the Application manifest (in spec.source.plugin.parameters). The announcements _only_ + # inform the "Parameters" tab in the App Details page of the UI. + parameters: + # Static parameter announcements are sent to the UI for _all_ Applications handled by this plugin. + # Think of the `string`, `array`, and `map` values set here as "defaults". It is up to the plugin author to make + # sure that these default values actually reflect the plugin's behavior if the user doesn't explicitly set different + # values for those parameters. + static: + - name: env + title: Environment + tooltip: Kustomization env (directory in manifest folder) + required: true + itemType: string + collectionType: string + string: "staging" + - name: cluster + title: Cluster + tooltip: Name of cluster + required: true + itemType: string + collectionType: string + string: "oceanbox" + - name: flags + title: Feature flags + tooltip: Feature flags + required: false + collectionType: map + map: + cilium: true + kyverno: true + # All the fields above besides "string" apply to both the array and map type parameter announcements. + # - name: array-param + # # This field communicates the parameter's default value to the UI. Setting this field is optional. + # array: [default, items] + # collectionType: array + # - name: map-param + # # This field communicates the parameter's default value to the UI. Setting this field is optional. + # map: + # some: value + # collectionType: map + # dynamic: + # The command is run in an Application's source directory. Standard output must be JSON matching the schema of the + # static parameter announcements list. + # command: [ /bin/sh, /plugin/get-values.sh ] + + # If set to `true` then the plugin receives repository files with original file mode. Dangerous since the repository + # might have executable files. Set to true only if you trust the CMP plugin authors. + preserveFileMode: false +