Browse Source

Add config template plugin examples (#7)

Alexander Matyushentsev 6 years ago
parent
commit
23eeb0925b

+ 1 - 0
README.md

@@ -16,3 +16,4 @@ to explore ArgoCD and GitOps!
 | [helm-dependency](helm-dependency/) | Demonstrates how to customize an OTS (off-the-shelf) helm chart from an upstream repo |
 | [blue-green-deploy](blue-green-deploy/) | Demonstrates an Argo CD Sync hook which performs a blue/green deployment |
 | [sock-shop](sock-shop/) | A microservices demo application (https://microservices-demo.github.io) |
+| [plugins](plugins/) | Applications which demonstrate config management plugins usage |

+ 9 - 9
guestbook/guestbook-ui-svc.yaml

@@ -1,10 +1,10 @@
-apiVersion: v1	
-kind: Service	
-metadata:	
-  name: guestbook-ui	
-spec:	
-  ports:	
-  - port: 80	
-    targetPort: 80	
-  selector:	
+apiVersion: v1
+kind: Service
+metadata:
+  name: guestbook-ui
+spec:
+  ports:
+  - port: 80
+    targetPort: 80
+  selector:
     app: guestbook-ui

+ 6 - 0
plugins/README.md

@@ -0,0 +1,6 @@
+# Config Management Plugins Examples
+
+| Application | Description |
+|-------------|-------------|
+| [kasane](kasane/) | The guestbook application as a `kasane` package. |
+| [kustomized-helm](kustomized-helm/) | Application comprised of a `helm` chart and customized using `kustomize` |

+ 2 - 0
plugins/kasane/.gitignore

@@ -0,0 +1,2 @@
+vendor
+Kasanefile.lock

+ 5 - 0
plugins/kasane/Kasanefile

@@ -0,0 +1,5 @@
+layers:
+- ../../guestbook/guestbook-ui-deployment.yaml
+- patch.jsonnet
+- ../../guestbook/guestbook-ui-svc.yaml
+

+ 29 - 0
plugins/kasane/README.md

@@ -0,0 +1,29 @@
+# Kasane
+
+[Kasane](https://github.com/google/kasane) is a layering tool for Kubernetes which utilises Jsonnet for deep object modification and patching.
+
+Use following steps to try the application:
+
+* Follow instructions from [custom_tools.md](https://github.com/argoproj/argo-cd/blob/master/docs/custom_tools.md) to make sure `kasane` binary is available in `argocd-repo-server` pod.
+* Register `kasane` plugin `argocd-cm` ConfigMap:
+
+```yaml
+apiVersion: v1
+data:
+  configManagementPlugins: |
+    - name: kasane
+      init:
+        command: [kasane, update]
+      generate:
+        command: [kasane, show]
+```
+* Create application using `kasane` as a config management plugin name.
+
+```
+argocd app create kasane \
+    --config-management-plugin kasane \
+    --repo https://github.com/argoproj/argocd-example-apps \
+    --path plugins/kasane \
+    --dest-server https://kubernetes.default.svc \
+    --dest-namespace default
+```

+ 9 - 0
plugins/kasane/patch.jsonnet

@@ -0,0 +1,9 @@
+function (layers)
+
+[
+  layers[0] {
+    spec+: {
+      replicas: 2,
+    },
+  }
+]

+ 3 - 0
plugins/kustomized-helm/.gitignore

@@ -0,0 +1,3 @@
+all.yaml
+charts
+requirements.lock

+ 1 - 0
plugins/kustomized-helm/Chart.yaml

@@ -0,0 +1 @@
+name: guestbook

+ 30 - 0
plugins/kustomized-helm/README.md

@@ -0,0 +1,30 @@
+# Helm + Kustomize
+
+Sometimes Helm chart don't have all required parameters and additional customization is required. This example application demonstrates how to combine Helm and Kustomize and use it
+as a config management plugin in Argo CD.
+
+Use following steps to try the application:
+
+* configure `kustomized-helm` tool in `argocd-cm` ConfigMap:
+
+```yaml
+  configManagementPlugins: |
+    - name: kustomized-helm
+      init:
+        command: [helm, dependency, build]
+      generate:
+        command: [sh, -c]
+        args: ["helm template . > all.yaml && kustomize build"]
+```
+
+* create application using `kustomized-helm` as a config management plugin name:
+
+
+```
+argocd app create kustomized-helm \
+    --config-management-plugin kustomized-helm \
+    --repo https://github.com/argoproj/argocd-example-apps \
+    --path plugins/kustomized-helm \
+    --dest-server https://kubernetes.default.svc \
+    --dest-namespace default
+```

+ 7 - 0
plugins/kustomized-helm/kustomization.yaml

@@ -0,0 +1,7 @@
+namePrefix: kustomize-
+
+resources:
+- ./all.yaml
+
+patches:
+- overlays/guestbook-deployment.yaml

+ 10 - 0
plugins/kustomized-helm/overlays/guestbook-deployment.yaml

@@ -0,0 +1,10 @@
+apiVersion: apps/v1beta2
+kind: Deployment
+metadata:
+  name: release-name-helm-guestbook
+spec:
+  template:
+    spec:
+      containers:
+        - name: helm-guestbook
+          image: "gcr.io/heptio-images/ks-guestbook-demo:0.2"

+ 4 - 0
plugins/kustomized-helm/requirements.yaml

@@ -0,0 +1,4 @@
+dependencies:
+- name: helm-guestbook
+  version: 0.1.0
+  repository: file://../../helm-guestbook