mirror of
https://github.com/helm/charts.git
synced 2026-08-23 22:37:45 +00:00
112 lines
5.9 KiB
Markdown
112 lines
5.9 KiB
Markdown
# ⚠️ Repo Archive Notice
|
|
|
|
As of Nov 13, 2020, charts in this repo will no longer be updated.
|
|
For more information, see the Helm Charts [Deprecation and Archive Notice](https://github.com/helm/charts#%EF%B8%8F-deprecation-and-archive-notice), and [Update](https://helm.sh/blog/charts-repo-deprecation/).
|
|
|
|
# OPA
|
|
|
|
[OPA](https://www.openpolicyagent.org) is an open source general-purpose policy
|
|
engine designed for cloud-native environments.
|
|
|
|
## DEPRECATION NOTICE
|
|
|
|
This chart is deprecated and no longer supported.
|
|
|
|
## Prerequisites
|
|
|
|
- Kubernetes 1.9 (or newer) for validating and mutating webhook admission
|
|
controller support.
|
|
- Optional, cert-manager (https://docs.cert-manager.io/en/latest/)
|
|
|
|
## Overview
|
|
|
|
This helm chart installs OPA as a [Kubernetes admission
|
|
controller](https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/).
|
|
Using OPA, you can enforce fine-grained invariants over arbitrary resources in
|
|
your Kubernetes cluster.
|
|
|
|
## Kick the tires
|
|
|
|
If you just want to see something run, install the chart without any
|
|
configuration.
|
|
|
|
```bash
|
|
helm install stable/opa
|
|
```
|
|
|
|
Once installed, the OPA will download a sample bundle from
|
|
https://www.openpolicyagent.org. The sample bundle contains a simple policy that
|
|
restricts the hostnames that can be specified on Ingress objects created in the
|
|
`opa-example` namespace. You can download the bundle and inspect it yourself:
|
|
|
|
```bash
|
|
mkdir example && cd example
|
|
curl -s -L https://www.openpolicyagent.org/bundles/kubernetes/admission | tar xzv
|
|
```
|
|
|
|
See the [NOTES.txt](./templates/NOTES.txt) file for examples of how to exercise
|
|
the admission controller.
|
|
|
|
## Configuration
|
|
|
|
All configuration settings are contained and described in
|
|
[values.yaml](values.yaml).
|
|
|
|
You should set the URL and credentials for the OPA to use to download policies.
|
|
The URL should identify an HTTP endpoint that implements the [OPA Bundle
|
|
API](https://www.openpolicyagent.org/docs/bundles.html).
|
|
|
|
- `opa.services.controller.url` specifies the base URL of the OPA control plane.
|
|
|
|
- `opa.services.controller.credentials.bearer.token` specifies a bearer token
|
|
for the OPA to use to authenticate with the control plane.
|
|
|
|
For more information on OPA-specific configuration see the [OPA Configuration
|
|
Reference](https://www.openpolicyagent.org/docs/configuration.html).
|
|
|
|
| Parameter | Description | Default |
|
|
| --- | --- | --- |
|
|
| `certManager.enabled` | Setup the Webhook using cert-manager | `false` |
|
|
| `admissionControllerKind` | Type of admission controller to install. | `ValidatingWebhookConfiguration` |
|
|
| `admissionControllerFailurePolicy` | Fail-open (`Ignore`) or fail-closed (`Fail`)? | `Ignore` |
|
|
| `admissionControllerRules` | Types of operations resources to check. | `*` |
|
|
| `admissionControllerNamespaceSelector` | Namespace selector for the admission controller | See [values.yaml](values.yaml) |
|
|
| `generateAdmissionControllerCerts` | Auto-generate TLS certificates for admission controller. | `true` |
|
|
| `admissionControllerCA` | Manually set admission controller certificate CA. | Unset |
|
|
| `admissionControllerCert` | Manually set admission controller certificate. | Unset |
|
|
| `admissionControllerKey` | Manually set admission controller key. | Unset |
|
|
| `podDisruptionBudget.enabled` | Enables creation of a PodDisruptionBudget for OPA. | `false` |
|
|
| `podDisruptionBudget.minAvailable` | Sets the minimum number of pods to be available. Cannot be set at the same time as maxUnavailable. | `1` |
|
|
| `podDisruptionBudget.maxUnavailable` | Sets the maximum number of pods to be unavailable. Cannot be set at the same time as minAvailable. | Unset |
|
|
| `hostNetwork.enabled` | Use hostNetwork setting on OPA pod | `false` |
|
|
| `image` | OPA image to deploy. | `openpolicyagent/opa` |
|
|
| `imageTag` | OPA image tag to deploy. | See [values.yaml](values.yaml) |
|
|
| `port` | Port in the pod to which OPA will bind itself. | `443` |
|
|
| `logLevel` | Log level that OPA outputs at, (`debug`, `info` or `error`) | `info` |
|
|
| `logFormat` | Log format that OPA produces (`text` or `json`) | `text` |
|
|
| `replicas` | Number of admission controller replicas to deploy. | `1` |
|
|
| `affinity` | Pod/Node affinity and anti-affinity | `{}` |
|
|
| `tolerations` | List of node taint tolerations. | `[]` |
|
|
| `nodeSelector` | Node labels for pod assignment. | `{}` |
|
|
| `resources` | CPU and memory limits for OPA container. | `{}` |
|
|
| `readinessProbe` | HTTP readiness probe for OPA container. | See [values.yaml](values.yaml) |
|
|
| `livenessProbe` | HTTP liveness probe for OPA container. | See [values.yaml](values.yaml) |
|
|
| `opa` | OPA configuration. | See [values.yaml](values.yaml) |
|
|
| `mgmt` | kube-mgmt configuration. | See [values.yaml](values.yaml) |
|
|
| `mgmt.port` | kube-mgmt/prometheus port used to communicate with opa. | See [values.yaml](values.yaml) |
|
|
| `sar.resources` | CPU and memory limits for the sar container. | `{}` |
|
|
| `priorityClassName` | The name of the priorityClass for the pods. | Unset |
|
|
| `prometheus.enabled` | Flag to expose the `/metrics` endpoint to be scraped. | `false` |
|
|
| `serviceMonitor.enabled` | if `true`, creates a Prometheus Operator ServiceMonitor | `false` |
|
|
| `serviceMonitor.interval` | Interval that Prometheus scrapes Envoy metrics | `15s` |
|
|
| `serviceMonitor.namespace` | Namespace which the operated Prometheus is running in | `` |
|
|
| `annotations` | Annotations to be added to the deployment template. | `{}` |
|
|
| `bootstrapPolicies` | Bootstrap policies to be loaded during OPA startup. | `{}` |
|
|
| `timeoutSeconds` | Timeout for a webhook call in seconds. | `` |
|
|
| `securityContext` | Security context for the containers | `{enabled: false, runAsNonRoot: true, runAsUser: 1}` |
|
|
| `deploymentStrategy` | Specify deployment spec rollout strategy | `{}` |
|
|
| `extraArgs` | Additional arguments to be added to the opa container | `[]` |
|
|
| `extraContainers` | Additional containers to be added to the deployment | `[]` |
|
|
| `extraVolumes` | Additional volumes to be added to the deployment | `[]` |
|
|
| `extraPorts` | Additional ports to OPA service. Useful to expose `extraContainer` ports. | `[]` |
|