diff --git a/examples/ingress.jsonnet b/examples/ingress.jsonnet
index 6eb6e3eb0ae4c01a8c0585ba20301d2b98ac3425..32dd2f1cf3e6b8296516a7ee43fda61279fe8f67 100644
--- a/examples/ingress.jsonnet
+++ b/examples/ingress.jsonnet
@@ -1,9 +1,17 @@
-local k = import 'ksonnet/ksonnet.beta.3/k.libsonnet';
-local secret = k.core.v1.secret;
-local ingress = k.extensions.v1beta1.ingress;
-local ingressTls = ingress.mixin.spec.tlsType;
-local ingressRule = ingress.mixin.spec.rulesType;
-local httpIngressPath = ingressRule.mixin.http.pathsType;
+local ingress(name, namespace, rules) = {
+  apiVersion: 'extensions/v1beta1',
+  kind: 'Ingress',
+  metadata: {
+    name: name,
+    namespace: namespace,
+    annotations: {
+      'nginx.ingress.kubernetes.io/auth-type': 'basic',
+      'nginx.ingress.kubernetes.io/auth-secret': 'basic-auth',
+      'nginx.ingress.kubernetes.io/auth-realm': 'Authentication Required',
+    },
+  },
+  spec: { rules: rules },
+};
 
 local kp =
   (import 'kube-prometheus/kube-prometheus.libsonnet') +
@@ -37,67 +45,65 @@ local kp =
     },
     // Create ingress objects per application
     ingress+:: {
-      'alertmanager-main':
-        ingress.new() +
-        ingress.mixin.metadata.withName('alertmanager-main') +
-        ingress.mixin.metadata.withNamespace($._config.namespace) +
-        ingress.mixin.metadata.withAnnotations({
-          'nginx.ingress.kubernetes.io/auth-type': 'basic',
-          'nginx.ingress.kubernetes.io/auth-secret': 'basic-auth',
-          'nginx.ingress.kubernetes.io/auth-realm': 'Authentication Required',
-        }) +
-        ingress.mixin.spec.withRules(
-          ingressRule.new() +
-          ingressRule.withHost('alertmanager.example.com') +
-          ingressRule.mixin.http.withPaths(
-            httpIngressPath.new() +
-            httpIngressPath.mixin.backend.withServiceName('alertmanager-main') +
-            httpIngressPath.mixin.backend.withServicePort('web')
-          ),
-        ),
-      grafana:
-        ingress.new() +
-        ingress.mixin.metadata.withName('grafana') +
-        ingress.mixin.metadata.withNamespace($._config.namespace) +
-        ingress.mixin.metadata.withAnnotations({
-          'nginx.ingress.kubernetes.io/auth-type': 'basic',
-          'nginx.ingress.kubernetes.io/auth-secret': 'basic-auth',
-          'nginx.ingress.kubernetes.io/auth-realm': 'Authentication Required',
-        }) +
-        ingress.mixin.spec.withRules(
-          ingressRule.new() +
-          ingressRule.withHost('grafana.example.com') +
-          ingressRule.mixin.http.withPaths(
-            httpIngressPath.new() +
-            httpIngressPath.mixin.backend.withServiceName('grafana') +
-            httpIngressPath.mixin.backend.withServicePort('http')
-          ),
-        ),
-      'prometheus-k8s':
-        ingress.new() +
-        ingress.mixin.metadata.withName('prometheus-k8s') +
-        ingress.mixin.metadata.withNamespace($._config.namespace) +
-        ingress.mixin.metadata.withAnnotations({
-          'nginx.ingress.kubernetes.io/auth-type': 'basic',
-          'nginx.ingress.kubernetes.io/auth-secret': 'basic-auth',
-          'nginx.ingress.kubernetes.io/auth-realm': 'Authentication Required',
-        }) +
-        ingress.mixin.spec.withRules(
-          ingressRule.new() +
-          ingressRule.withHost('prometheus.example.com') +
-          ingressRule.mixin.http.withPaths(
-            httpIngressPath.new() +
-            httpIngressPath.mixin.backend.withServiceName('prometheus-k8s') +
-            httpIngressPath.mixin.backend.withServicePort('web')
-          ),
-        ),
+      'alertmanager-main': ingress(
+        'alertmanager-main',
+        $._config.namespace,
+        [{
+          host: 'alertmanager.example.com',
+          http: {
+            paths: [{
+              backend: {
+                serviceName: 'alertmanager-main',
+                servicePort: 'web',
+              },
+            }],
+          },
+        }]
+      ),
+      grafana: ingress(
+        'grafana',
+        $._config.namespace,
+        [{
+          host: 'grafana.example.com',
+          http: {
+            paths: [{
+              backend: {
+                serviceName: 'grafana',
+                servicePort: 'http',
+              },
+            }],
+          },
+        }],
+      ),
+      'prometheus-k8s': ingress(
+        'prometheus-k8s',
+        $._config.namespace,
+        [{
+          host: 'prometheus.example.com',
+          http: {
+            paths: [{
+              backend: {
+                serviceName: 'prometheus-k8s',
+                servicePort: 'web',
+              },
+            }],
+          },
+        }],
+      ),
     },
   } + {
     // Create basic auth secret - replace 'auth' file with your own
     ingress+:: {
-      'basic-auth-secret':
-        secret.new('basic-auth', { auth: std.base64(importstr 'auth') }) +
-        secret.mixin.metadata.withNamespace($._config.namespace),
+      'basic-auth-secret': {
+        apiVersion: 'v1',
+        kind: 'Secret',
+        metadata: {
+          name: 'basic-auth',
+          namespace: $._config.namespace,
+        },
+        data: { auth: std.base64(importstr 'auth') },
+        type: 'Opaque',
+      },
     },
   };