diff --git a/chart/templates/kyverno/gitrepository.yaml b/chart/templates/kyverno/gitrepository.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..e3155018544f6f5ee8b4263080fc155d020636db
--- /dev/null
+++ b/chart/templates/kyverno/gitrepository.yaml
@@ -0,0 +1,18 @@
+{{- if and (not .Values.offline) .Values.kyverno.enabled }}
+apiVersion: source.toolkit.fluxcd.io/v1beta1
+kind: GitRepository
+metadata:
+  name: kyverno
+  namespace: {{ .Release.Namespace }}
+  labels:
+    app.kubernetes.io/name: kyverno
+    app.kubernetes.io/component: "core"
+    {{- include "commonLabels" . | nindent 4}}
+spec:
+  interval: {{ .Values.flux.interval }}
+  url: {{ .Values.kyverno.git.repo }}
+  ref:
+    {{- include "validRef" .Values.kyverno.git | nindent 4 }}
+  {{ include "gitIgnore" . }}
+  {{- include "gitCreds" . | nindent 2 }}
+{{- end }}
diff --git a/chart/templates/kyverno/helmrelease.yaml b/chart/templates/kyverno/helmrelease.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..1a9f6584776225a7afa434b1154a2d30aa589168
--- /dev/null
+++ b/chart/templates/kyverno/helmrelease.yaml
@@ -0,0 +1,45 @@
+{{- $fluxSettingskyverno := merge .Values.kyverno.flux .Values.flux -}}
+{{- if .Values.kyverno.enabled }}
+apiVersion: helm.toolkit.fluxcd.io/v2beta1
+kind: HelmRelease
+metadata:
+  name: kyverno
+  namespace: {{ .Release.Namespace }}
+  labels:
+    app.kubernetes.io/name: kyverno
+    app.kubernetes.io/component: "core"
+    {{- include "commonLabels" . | nindent 4}}
+spec:
+  targetNamespace: kyverno
+
+  chart:
+    spec:
+      chart: {{ .Values.kyverno.git.path }}
+      interval: 5m
+      sourceRef:
+        kind: GitRepository
+        name: kyverno
+        namespace: {{ .Release.Namespace }}
+
+  {{- toYaml $fluxSettingskyverno | nindent 2 }}
+
+  {{- if .Values.kyverno.postRenderers }}
+  postRenderers:
+  {{ toYaml .Values.kyverno.postRenderers | nindent 4 }}
+  {{- end }}
+  valuesFrom:
+    - name: {{ .Release.Name }}-kyverno-values
+      kind: Secret
+      valuesKey: "common"
+    - name: {{ .Release.Name }}-kyverno-values
+      kind: Secret
+      valuesKey: "defaults"
+    - name: {{ .Release.Name }}-kyverno-values
+      kind: Secret
+      valuesKey: "overlays"
+  {{- if .Values.gatekeeper.enabled }}
+  dependsOn:
+    - name: gatekeeper
+      namespace: {{ .Release.Namespace }}
+  {{- end }}
+{{- end }}
diff --git a/chart/templates/kyverno/imagepullsecret.yaml b/chart/templates/kyverno/imagepullsecret.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..c2c687f9d6983e1327fe5ce68b152f40ac6c58fd
--- /dev/null
+++ b/chart/templates/kyverno/imagepullsecret.yaml
@@ -0,0 +1,16 @@
+{{- if .Values.kyverno.enabled }}
+{{- if ( include "imagePullSecret" . ) }}
+apiVersion: v1
+kind: Secret
+metadata:
+  name: private-registry
+  namespace: kyverno
+  labels:
+    app.kubernetes.io/name: kyverno
+    app.kubernetes.io/component: "core"
+    {{- include "commonLabels" . | nindent 4}}
+type: kubernetes.io/dockerconfigjson
+data:
+  .dockerconfigjson: {{ template "imagePullSecret" . }}
+{{- end }}
+{{- end }}
\ No newline at end of file
diff --git a/chart/templates/kyverno/namespace.yaml b/chart/templates/kyverno/namespace.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..d0e14c6f031ae42066dd4550f94a1b2386527b55
--- /dev/null
+++ b/chart/templates/kyverno/namespace.yaml
@@ -0,0 +1,14 @@
+{{- if .Values.kyverno.enabled }}
+apiVersion: v1
+kind: Namespace
+metadata:
+  labels:
+    admission.kyverno.sh/ignore: no-self-managing
+    control-plane: controller-manager
+    kyverno.sh/system: "yes"
+    app.kubernetes.io/name: kyverno
+    app.kubernetes.io/component: "core"
+    {{- include "commonLabels" . | nindent 4}}
+    istio-injection: disabled
+  name: kyverno
+{{- end }}
\ No newline at end of file
diff --git a/chart/templates/kyverno/values.yaml b/chart/templates/kyverno/values.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..39c44a38fe94aa7cfbb1018947d89d159d4e8986
--- /dev/null
+++ b/chart/templates/kyverno/values.yaml
@@ -0,0 +1,21 @@
+{{- if .Values.kyverno.enabled }}
+{{- include "values-secret" (dict "root" $ "package" .Values.kyverno "name" "kyverno" "defaults" (include "bigbang.defaults.kyverno" .)) }}
+{{- end }}
+
+{{- define "bigbang.defaults.kyverno" -}}
+image:
+  pullSecrets:
+  - name: private-registry
+
+openshift: {{ .Values.openshift }}
+
+networkPolicies:
+  enabled: {{ .Values.networkPolicies.enabled }}
+  controlPlaneCidr: {{ .Values.networkPolicies.controlPlaneCidr }}
+
+monitoring:
+  enabled: false #{{ .Values.monitoring.enabled }} To enable this, we need PodMonitor crd
+
+istio:
+  enabled: {{ .Values.istio.enabled }}
+{{- end -}}
diff --git a/chart/values.yaml b/chart/values.yaml
index dadfcc6f2ab2ce0dfbf305af4d8b113ae6d82922..534e53ec4d5681287a1dabb5f56547e25ab7da52 100644
--- a/chart/values.yaml
+++ b/chart/values.yaml
@@ -321,6 +321,32 @@ gatekeeper:
   postRenderers: []
 # ----------------------------------------------------------------------------------------------------------------------
 
+# ----------------------------------------------------------------------------------------------------------------------
+# Kyverno
+#
+kyverno:
+  # -- Toggle deployment of Kyverno.
+  enabled: false
+  git:
+    repo: https://repo1.dso.mil/platform-one/big-bang/apps/sandbox/kyverno
+    path: "./chart"
+    tag: "2.1.2-bb.0"
+
+  # -- Flux reconciliation overrides specifically for the Kyverno Package
+  flux:
+    install:
+      crds: CreateReplace
+    upgrade:
+      crds: CreateReplace
+
+  # -- Values to passthrough to the kyverno chart: https://repo1.dso.mil/platform-one/big-bang/apps/sandbox/kyverno.git
+  values: {}
+
+  # -- Post Renderers.  See docs/postrenders.md
+  postRenderers: []
+# ----------------------------------------------------------------------------------------------------------------------
+
+
 # ----------------------------------------------------------------------------------------------------------------------
 # Logging
 #
diff --git a/tests/test-values.yaml b/tests/test-values.yaml
index 0d78abca8370483624f6cd59c56d5f5bd01c75ad..3bab446b1a5b36b151e9f83186e01869250af88f 100644
--- a/tests/test-values.yaml
+++ b/tests/test-values.yaml
@@ -200,6 +200,22 @@ gatekeeper:
           - name: "{{ .Chart.Name }}-kube-cache"
             emptyDir: {}
 
+kyverno:
+  enabled: false
+  values:
+    replicas: 1
+    bbtests:
+      enabled: true
+      scripts:
+        image: registry1.dso.mil/ironbank/opensource/kubernetes-1.21/kubectl:v1.21.1
+        additionalVolumeMounts:
+          - name: "{{ .Chart.Name }}-test-config"
+            mountPath: /yaml
+        additionalVolumes:
+          - name: "{{ .Chart.Name }}-test-config"
+            configMap:
+              name: "{{ .Chart.Name }}-test-config"
+
 logging:
   enabled: true
   sso: