feat: initial commit
This commit is contained in:
@@ -0,0 +1,2 @@
|
||||
argo-repo-server.yaml
|
||||
values.yaml
|
||||
@@ -0,0 +1,10 @@
|
||||
FROM alpine/k8s:1.28.3
|
||||
|
||||
RUN mkdir -p /home/argocd/cmp-server/config/
|
||||
COPY plugin.yaml /home/argocd/cmp-server/config/
|
||||
|
||||
WORKDIR /plugin
|
||||
COPY init.sh get-values.sh generate.sh ./
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
#!/bin/sh
|
||||
|
||||
img=registry.gitlab.com/oceanbox/gitops-manifests/kustomize-helm-with-rewrite
|
||||
tag=${1:-latest}
|
||||
|
||||
docker build -t $img:$tag .
|
||||
docker push $img:$tag
|
||||
@@ -0,0 +1,25 @@
|
||||
#!/bin/sh
|
||||
|
||||
export HOME=/tmp
|
||||
|
||||
echo $ARGOCD_APP_PARAMETERS | jq '.[] | select(.name == "helm-parameters") | .map' | yq -P -oy > parameters.yaml
|
||||
cp parameters.yaml /tmp/$ARGOCD_APP_NAME-parameters.yaml
|
||||
|
||||
if [ -f chart -a $PARAM_CHART = "." ]; then
|
||||
CHART=$(cat chart)
|
||||
else
|
||||
CHART=$PARAM_CHART
|
||||
fi
|
||||
|
||||
helm template $PARAM_FLAGS \
|
||||
-f values.yaml \
|
||||
-f parameters.yaml \
|
||||
-f $PARAM_ENV/values.yaml \
|
||||
$ARGOCD_APP_NAME $CHART > ./base/_manifest.yaml
|
||||
|
||||
cp ./base/_manifest.yaml /tmp/$ARGOCD_APP_NAME-manifest.yaml
|
||||
sed -i "$PARAM_REWRITE" ./base/_manifest.yaml
|
||||
cp ./base/_manifest.yaml /tmp/$ARGOCD_APP_NAME-manifest-rw.yaml
|
||||
|
||||
kubectl kustomize $PARAM_ENV > /tmp/$ARGOCD_APP_NAME-manifest.yaml
|
||||
cat /tmp/$ARGOCD_APP_NAME-manifest.yaml
|
||||
@@ -0,0 +1,19 @@
|
||||
#!/bin/sh
|
||||
|
||||
# cat << EOF
|
||||
# [{
|
||||
# "name": "values",
|
||||
# "title": "Values",
|
||||
# "collectionType": "map",
|
||||
# "map": { "replicaCount": "1" }
|
||||
# }]
|
||||
# EOF
|
||||
|
||||
yq e -o=p values.yaml | jq --slurp --raw-input '
|
||||
[{
|
||||
name: "helm-parameters",
|
||||
title: "Helm Parameters",
|
||||
collectionType: "map",
|
||||
map: split("\n") | map(capture("(?<key>.*) = (?<value>.*)")) | from_entries
|
||||
}]'
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
#!/bin/sh
|
||||
|
||||
export HOME=/tmp
|
||||
|
||||
helm repo add bitnami https://charts.bitnami.com/bitnami
|
||||
helm repo add cerbos https://download.cerbos.dev/helm-charts
|
||||
helm repo add dapr https://dapr.github.io/helm-charts/
|
||||
helm repo add ncsa https://opensource.ncsa.illinois.edu/charts
|
||||
|
||||
helm repo update
|
||||
|
||||
@@ -0,0 +1,94 @@
|
||||
apiVersion: argoproj.io/v1alpha1
|
||||
kind: ConfigManagementPlugin
|
||||
metadata:
|
||||
name: kustomize-helm-with-rewrite
|
||||
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: rewrite
|
||||
title: Rewrite
|
||||
tooltip: sed rewrite experssion
|
||||
required: false
|
||||
itemType: string
|
||||
collectionType: string
|
||||
string: ""
|
||||
- name: chart
|
||||
title: Chart
|
||||
tooltip: Name or path of helm chart
|
||||
required: false
|
||||
itemType: string
|
||||
collectionType: string
|
||||
string: "."
|
||||
- name: flags
|
||||
title: Helm flags
|
||||
tooltip: Extra helm flags
|
||||
required: false
|
||||
itemType: string
|
||||
collectionType: string
|
||||
string: ""
|
||||
# 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
|
||||
|
||||
Reference in New Issue
Block a user