Browse Source

Add example for jsonnet using functions with top level arguments (#30)

Liviu Costea 5 years ago
parent
commit
454cc52962
2 changed files with 66 additions and 0 deletions
  1. 1 0
      README.md
  2. 65 0
      jsonnet-guestbook-tla/guestbook-ui.jsonnet

+ 1 - 0
README.md

@@ -10,6 +10,7 @@ to explore ArgoCD and GitOps!
 | [ksonnet-guestbook](ksonnet-guestbook/) | The guestbook application as a ksonnet app |
 | [helm-guestbook](helm-guestbook/) | The guestbook application as a Helm chart |
 | [jsonnet-guestbook](jsonnet-guestbook/) | The guestbook application as a raw jsonnet |
+| [jsonnet-guestbook-tla](jsonnet-guestbook-tla/) | The guestbook application as a raw jsonnet with support for top level arguments |
 | [kustomize-guestbook](kustomize-guestbook/) | The guestbook application as a Kustomize 2 app |
 | [pre-post-sync](pre-post-sync/) | Demonstrates Argo CD PreSync and PostSync hooks |
 | [sync-waves](sync-waves/) | Demonstrates Argo CD sync waves with hooks |

+ 65 - 0
jsonnet-guestbook-tla/guestbook-ui.jsonnet

@@ -0,0 +1,65 @@
+function (
+    containerPort=80, 
+    image="gcr.io/heptio-images/ks-guestbook-demo:0.2", 
+    name="jsonnet-guestbook-ui",
+    replicas=1,
+    servicePort=80, 
+    type="LoadBalancer"
+)
+    [
+    {
+        "apiVersion": "v1",
+        "kind": "Service",
+        "metadata": {
+            "name": name
+        },
+        "spec": {
+            "ports": [
+                {
+                "port": servicePort,
+                "targetPort": containerPort
+                }
+            ],
+            "selector": {
+                "app": name
+            },
+            "type": type
+        }
+    },
+    {
+        "apiVersion": "apps/v1beta2",
+        "kind": "Deployment",
+        "metadata": {
+            "name": name
+        },
+        "spec": {
+            "replicas": replicas,
+            "revisionHistoryLimit": 3,
+            "selector": {
+                "matchLabels": {
+                "app": name
+                },
+            },
+            "template": {
+                "metadata": {
+                "labels": {
+                    "app": name
+                }
+                },
+                "spec": {
+                "containers": [
+                    {
+                        "image": image,
+                        "name": name,
+                        "ports": [
+                        {
+                            "containerPort": containerPort
+                        }
+                        ]
+                    }
+                ]
+                }
+            }
+        }
+    }
+    ]