diff --git a/charts/community/infinispan/infinispan/0.4.0/infinispan-0.4.0.tgz b/charts/community/infinispan/infinispan/0.4.0/infinispan-0.4.0.tgz new file mode 100644 index 000000000..d2af00196 Binary files /dev/null and b/charts/community/infinispan/infinispan/0.4.0/infinispan-0.4.0.tgz differ diff --git a/charts/community/infinispan/infinispan/OWNERS b/charts/community/infinispan/infinispan/OWNERS index 056499a76..361b4b6c5 100644 --- a/charts/community/infinispan/infinispan/OWNERS +++ b/charts/community/infinispan/infinispan/OWNERS @@ -4,6 +4,7 @@ chart: publicPgpKey: null users: - githubUsername: ryanemerson +- githubUsername: rigazilla vendor: label: infinispan name: Infinispan diff --git a/charts/community/redhat/redhat-gatekeeper/3.11.0/report.yaml b/charts/community/redhat/redhat-gatekeeper/3.11.0/report.yaml new file mode 100644 index 000000000..aafbbba9c --- /dev/null +++ b/charts/community/redhat/redhat-gatekeeper/3.11.0/report.yaml @@ -0,0 +1,90 @@ +apiversion: v1 +kind: verify-report +metadata: + tool: + verifier-version: 1.10.1 + profile: + VendorType: community + version: v1.2 + reportDigest: uint64:366159531824194231 + chart-uri: . + digests: + chart: sha256:5ac936bda5cbe721ee3253fafbd9f51b80ff96e0c2b6a6475da10459f8e8cbff + lastCertifiedTimestamp: "2023-04-20T13:00:34.695177-04:00" + testedOpenShiftVersion: N/A + supportedOpenShiftVersions: N/A + webCatalogOnly: false + chart: + name: gatekeeper + home: https://github.com/open-policy-agent/gatekeeper + sources: + - https://github.com/open-policy-agent/gatekeeper.git + version: 3.11.0 + description: A Helm chart for Gatekeeper + keywords: + - open policy agent + maintainers: [] + icon: https://open-policy-agent.github.io/gatekeeper/website/img/logo.svg + apiversion: v2 + condition: "" + tags: "" + appversion: v3.11.0 + deprecated: false + annotations: {} + kubeversion: "" + dependencies: [] + type: "" + chart-overrides: "" +results: + - check: v1.0/helm-lint + type: Mandatory + outcome: PASS + reason: Helm lint successful + - check: v1.0/required-annotations-present + type: Optional + outcome: FAIL + reason: 'Missing required annotations: [charts.openshift.io/name]' + - check: v1.0/signature-is-valid + type: Optional + outcome: SKIPPED + reason: 'Chart is not signed : Signature verification not required' + - check: v1.0/not-contain-csi-objects + type: Optional + outcome: PASS + reason: CSI objects do not exist + - check: v1.0/chart-testing + type: Optional + outcome: FAIL + reason: 'Chart Install failure: failed to install CRD crds/assign-customresourcedefinition.yaml: customresourcedefinitions.apiextensions.k8s.io is forbidden: User "thomasmckay" cannot create resource "customresourcedefinitions" in API group "apiextensions.k8s.io" at the cluster scope' + - check: v1.0/has-readme + type: Optional + outcome: PASS + reason: Chart has a README + - check: v1.0/not-contains-crds + type: Optional + outcome: FAIL + reason: Chart contains CRDs + - check: v1.1/has-kubeversion + type: Optional + outcome: FAIL + reason: Kubernetes version is not specified + - check: v1.0/contains-test + type: Optional + outcome: FAIL + reason: Chart test files do not exist + - check: v1.0/contains-values-schema + type: Optional + outcome: FAIL + reason: Values schema file does not exist + - check: v1.0/contains-values + type: Optional + outcome: PASS + reason: Values file exist + - check: v1.1/images-are-certified + type: Optional + outcome: SKIPPED + reason: 'Image certification skipped : registry.redhat.io/gatekeeper/gatekeeper-rhel8:v3.11' + - check: v1.0/is-helm-v3 + type: Optional + outcome: PASS + reason: API version is V2, used in Helm 3 diff --git a/charts/community/redhat/redhat-gatekeeper/3.11.0/src/.helmignore b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/.helmignore new file mode 100644 index 000000000..f0c131944 --- /dev/null +++ b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/.helmignore @@ -0,0 +1,21 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj diff --git a/charts/community/redhat/redhat-gatekeeper/3.11.0/src/Chart.yaml b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/Chart.yaml new file mode 100644 index 000000000..e1b5ac3b5 --- /dev/null +++ b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/Chart.yaml @@ -0,0 +1,11 @@ +apiVersion: v2 +description: A Helm chart for Gatekeeper +name: gatekeeper +icon: https://open-policy-agent.github.io/gatekeeper/website/img/logo.svg +keywords: + - open policy agent +version: 3.11.0 +home: https://github.com/open-policy-agent/gatekeeper +sources: + - https://github.com/open-policy-agent/gatekeeper.git +appVersion: v3.11.0 diff --git a/charts/community/redhat/redhat-gatekeeper/3.11.0/src/README.md b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/README.md new file mode 100644 index 000000000..3f9e8044c --- /dev/null +++ b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/README.md @@ -0,0 +1,195 @@ +# Gatekeeper Helm Chart + +## Get Repo Info + +```console +helm repo add gatekeeper https://open-policy-agent.github.io/gatekeeper/charts +helm repo update +``` + +_See [helm repo](https://helm.sh/docs/helm/helm_repo/) for command documentation._ + +## Install Chart + +```console +# Helm install with gatekeeper-system namespace already created +$ helm install -n gatekeeper-system [RELEASE_NAME] gatekeeper/gatekeeper + +# Helm install and create namespace +$ helm install -n gatekeeper-system [RELEASE_NAME] gatekeeper/gatekeeper --create-namespace + +``` + +_See [parameters](#parameters) below._ + +_See [helm install](https://helm.sh/docs/helm/helm_install/) for command documentation._ + +## Upgrade Chart + +**Upgrading from < v3.4.0** +Chart 3.4.0 deprecates support for Helm 2 and also removes the creation of the `gatekeeper-system` Namespace from within the chart. This follows Helm 3 Best Practices. + +Option 1: +A simple way to upgrade is to uninstall first and re-install with 3.4.0 or greater. + +```console +$ helm uninstall gatekeeper +$ helm install -n gatekeeper-system [RELEASE_NAME] gatekeeper/gatekeeper --create-namespace + +``` + +Option 2: +Run the `helm_migrate.sh` script before installing the 3.4.0 or greater chart. This will remove the Helm secret for the original release, while keeping all of the resources. It then updates the annotations of the resources so that the new chart can import and manage them. + +```console +$ helm_migrate.sh +$ helm install -n gatekeeper-system gatekeeper gatekeeper/gatekeeper +``` + +**Upgrading from >= v3.4.0** +```console +$ helm upgrade -n gatekeeper-system [RELEASE_NAME] gatekeeper/gatekeeper +``` + +_See [helm 2 to 3](https://helm.sh/docs/topics/v2_v3_migration/) for Helm 2 migration documentation._ + + +## Exempting Namespace + +The Helm chart automatically sets the Gatekeeper flag `--exempt-namespace={{ .Release.Namespace }}` in order to exempt the namespace where the chart is installed, and adds the `admission.gatekeeper.sh/ignore` label to the namespace during a post-install hook. + +_See [Exempting Namespaces](https://open-policy-agent.github.io/gatekeeper/website/docs/exempt-namespaces) for more information._ + +## Parameters + +| Parameter | Description | Default | +| :-------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------ | +| postInstall.labelNamespace.enabled | Add labels to the namespace during post install hooks | `true` | +| postInstall.labelNamespace.extraNamespaces | The extra namespaces that need to have the label during post upgrade hooks | `[]` | +| postInstall.labelNamespace.image.repository | Image with kubectl to label the namespace | `openpolicyagent/gatekeeper-crds` | +| postInstall.labelNamespace.image.tag | Image tag | Current release version: `v3.11.0` | +| postInstall.labelNamespace.image.pullPolicy | Image pullPolicy | `IfNotPresent` | +| postInstall.labelNamespace.image.pullSecrets | Image pullSecrets | `[]` | +| postInstall.labelNamespace.extraRules | Extra rules for the gatekeeper-update-namespace-label Role | `[]` | +| postInstall.probeWebhook.enabled | Probe webhook API post install. When enabled along with `postInstall.labelNamespace.enabled`, this probe will run as part of `postInstall.labelNamespace` Job as an initContainer | `true` | +| postInstall.probeWebhook.image.repository | Image with curl to probe the webhook API | `curlimages/curl` | +| postInstall.probeWebhook.image.tag | Image tag | `7.83.1` | +| postInstall.probeWebhook.image.pullPolicy | Image pullPolicy | `IfNotPresent` | +| postInstall.probeWebhook.image.pullSecrets | Image pullSecrets | `[]` | +| postInstall.probeWebhook.waitTimeout | Total time to wait for the webhook API to become available | `60` | +| postInstall.probeWebhook.httpTimeout | HTTP client timeout | `2` | +| postInstall.probeWebhook.insecureHTTPS | Ignore server SSL certificate | `false` | +| postInstall.affinity | The affinity to use for pod scheduling in postInstall hook jobs | `{}` | +| postInstall.tolerations | The tolerations to use for pod scheduling in postInstall hook jobs | `[]` | +| postInstall.nodeSelector | The node selector to use for pod scheduling in postInstall hook jobs | `kubernetes.io/os: linux` | +| postInstall.resources | The resource request/limits for the container image in postInstall hook jobs | `{}` | +| postInstall.securityContext | Security context applied on the container | `{ "allowPrivilegeEscalation": false, "capabilities": "drop": [all], "readOnlyRootFilesystem": true, "runAsGroup": 999, "runAsNonRoot": true, "runAsUser": 1000 }` | +| postUpgrade.labelNamespace.enabled | Add labels to the namespace during post upgrade hooks | `false` | +| postUpgrade.labelNamespace.extraNamespaces | The extra namespaces that need to have the label during post upgrade hooks | `[]` | +| postUpgrade.labelNamespace.image.repository | Image with kubectl to label the namespace | `openpolicyagent/gatekeeper-crds` | +| postUpgrade.labelNamespace.image.tag | Image tag | Current release version: `v3.11.0` | +| postUpgrade.labelNamespace.image.pullPolicy | Image pullPolicy | `IfNotPresent` | +| postUpgrade.labelNamespace.image.pullSecrets | Image pullSecrets | `[]` +| postUpgrade.affinity | The affinity to use for pod scheduling in postUpgrade hook jobs | `{}` | +| postUpgrade.tolerations | The tolerations to use for pod scheduling in postUpgrade hook jobs | `[]` | +| postUpgrade.nodeSelector | The node selector to use for pod scheduling in postUpgrade hook jobs | `kubernetes.io/os: linux` | +| postUpgrade.resources | The resource request/limits for the container image in postUpgrade hook jobs | `{}` | +| postUpgrade.securityContext | Security context applied on the container | `{ "allowPrivilegeEscalation": false, "capabilities": "drop": [all], "readOnlyRootFilesystem": true, "runAsGroup": 999, "runAsNonRoot": true, "runAsUser": 1000 }` | +| preUninstall.deleteWebhooks.enabled | Delete webhooks before gatekeeper itself is uninstalled | `false` | +| preUninstall.deleteWebhooks.image.repository | Image with kubectl to delete the webhooks | `openpolicyagent/gatekeeper-crds` | +| preUninstall.deleteWebhooks.image.tag | Image tag | Current release version: `v3.11.0` | +| preUninstall.deleteWebhooks.image.pullPolicy | Image pullPolicy | `IfNotPresent` | +| preUninstall.deleteWebhooks.image.pullSecrets | Image pullSecrets | `[]` | +| preUninstall.deleteWebhooks.extraRules | Extra rules for the gatekeeper-delete-webhook-configs Role | `[]` | +| preUninstall.affinity | The affinity to use for pod scheduling in preUninstall hook jobs | `{}` | +| preUninstall.tolerations | The tolerations to use for pod scheduling in preUninstall hook jobs | `[]` | +| preUninstall.nodeSelector | The node selector to use for pod scheduling in preUninstall hook jobs | `kubernetes.io/os: linux` | +| preUninstall.resources | The resource request/limits for the container image in preUninstall hook jobs | `{}` | +| preUninstall.securityContext | Security context applied on the container | `{ "allowPrivilegeEscalation": false, "capabilities": "drop": [all], "readOnlyRootFilesystem": true, "runAsGroup": 999, "runAsNonRoot": true, "runAsUser": 1000 }` | +| psp.enabled | Enabled PodSecurityPolicy | `true` | +| upgradeCRDs.enabled | Upgrade CRDs using pre-install/pre-upgrade hooks | `true` | +| upgradeCRDs.extraRules | Extra rules for the gatekeeper-admin-upgrade-crds ClusterRole | `[]` | +| crds.affinity | The affinity to use for pod scheduling in crds hook jobs | `{}` | +| crds.tolerations | The tolerations to use for pod scheduling in crds hook jobs | `[]` | +| crds.nodeSelector | The node selector to use for pod scheduling in crds hook jobs | `kubernetes.io/os: linux` | +| crds.resources | The resource request/limits for the container image in crds hook jobs | `{}` | +| crds.securityContext | Security context applied to the container | `{ "allowPrivilegeEscalation": false, "capabilities": "drop": [all], "readOnlyRootFilesystem": true, "runAsGroup": 65532, "runAsNonRoot": true, "runAsUser": 65532 }` | +| auditInterval | The frequency with which audit is run | `60` | +| constraintViolationsLimit | The maximum # of audit violations reported on a constraint | `20` | +| auditFromCache | Take the roster of resources to audit from the OPA cache | `false` | +| auditChunkSize | Chunk size for listing cluster resources for audit (alpha feature) | `500` | +| auditMatchKindOnly | Only check resources of the kinds specified in all constraints defined in the cluster. | `false` | +| disableValidatingWebhook | Disable the validating webhook | `false` | +| disableMutation | Disable mutation | `false` | +| validatingWebhookTimeoutSeconds | The timeout for the validating webhook in seconds | `3` | +| validatingWebhookFailurePolicy | The failurePolicy for the validating webhook | `Ignore` | +| validatingWebhookAnnotations | The annotations to add to the ValidatingWebhookConfiguration | `{}` | +| validatingWebhookObjectSelector | The label selector to further refine which namespaced resources will be selected by the webhook. Please note that an exemption label means users can circumvent Gatekeeper's validation webhook unless measures are taken to control how exemption labels can be set. | `{}` | +| validatingWebhookCheckIgnoreFailurePolicy | The failurePolicy for the check-ignore-label validating webhook | `Fail` | +| validatingWebhookExemptNamespacesLabels | Additional namespace labels that will be exempt from the validating webhook. Please note that anyone in the cluster capable to manage namespaces will be able to skip all Gatekeeper validation by setting one of these labels for their namespace. | `{}` | +| validatingWebhookCustomRules | Custom rules for selecting which API resources trigger the webhook. Mutually exclusive with `enableDeleteOperations`. NOTE: If you change this, ensure all your constraints are still being enforced. | `{}` | +| enableDeleteOperations | Enable validating webhook for delete operations. Does not work with `validatingWebhookCustomRules` | `false` | +| enableExternalData | Enable external data | `true` | +| enableGeneratorResourceExpansion | Enable generator resource expansion (alpha feature) | `false` | +| enableTLSHealthcheck | Enable probing webhook API with certificate stored in certDir | `false` | +| maxServingThreads | Limit the number of concurrent calls the validation backend made by the validation webhook. -1 limits this value to GOMAXPROCS. Configuring this value may lower max RAM usage and limit CPU throttling, Tuning it can optimize serving capacity. | `-1` | +| metricsBackends | Metrics exporters to use. Valid exporters are: `prometheus`, `stackdriver`, and `opencensus` | `["prometheus"]` | +| mutatingWebhookFailurePolicy | The failurePolicy for the mutating webhook | `Ignore` | +| mutatingWebhookReinvocationPolicy | The reinvocationPolicy for the mutating webhook | `Never` | +| mutatingWebhookAnnotations | The annotations to add to the MutatingWebhookConfiguration | `{}` | +| mutatingWebhookExemptNamespacesLabels | Additional namespace labels that will be exempt from the mutating webhook. Please note that anyone in the cluster capable to manage namespaces will be able to skip all Gatekeeper validation by setting one of these labels for their namespace. | `{}` | +| mutatingWebhookObjectSelector | The label selector to further refine which namespaced resources will be selected by the webhook. Please note that an exemption label means users can circumvent Gatekeeper's mutation webhook unless measures are taken to control how exemption labels can be set. | `{}` | +| mutatingWebhookTimeoutSeconds | The timeout for the mutating webhook in seconds | `3` | +| mutatingWebhookCustomRules | Custom rules for selecting which API resources trigger the webhook. NOTE: If you change this, ensure all your constraints are still being enforced. | `{}` | +| emitAdmissionEvents | Emit K8s events in gatekeeper namespace for admission violations (alpha feature) | `false` | +| emitAuditEvents | Emit K8s events in gatekeeper namespace for audit violations (alpha feature) | `false` | +| logDenies | Log detailed info on each deny | `false` | +| logLevel | Minimum log level | `INFO` | +| image.pullPolicy | The image pull policy | `IfNotPresent` | +| image.repository | Image repository | `openpolicyagent/gatekeeper` | +| image.release | The image release tag to use | Current release version: `v3.11.0` | +| image.pullSecrets | Specify an array of imagePullSecrets | `[]` | +| resources | The resource request/limits for the container image | limits: 1 CPU, 512Mi, requests: 100mCPU, 256Mi | +| nodeSelector | The node selector to use for pod scheduling | `kubernetes.io/os: linux` | +| affinity | The node affinity to use for pod scheduling | `{}` | +| topologySpreadConstraints | The topology spread constraints to use for pod scheduling | `[]` | +| tolerations | The tolerations to use for pod scheduling | `[]` | +| controllerManager.healthPort | Health port for controller manager | `9090` | +| controllerManager.port | Webhook-server port for controller manager | `8443` | +| controllerManager.metricsPort | Metrics port for controller manager | `8888` | +| controllerManager.readinessTimeout | Timeout in seconds for the controller manager's readiness probe | `1` | +| controllerManager.livenessTimeout | Timeout in seconds for the controller manager's liveness probe | `1` | +| controllerManager.priorityClassName | Priority class name for controller manager | `system-cluster-critical` | +| controllerManager.podSecurityContext | Security context on pod level for controller manager | {fsGroup: 999, suplementalGroups: [999]} | +| controllerManager.exemptNamespaces | The exact namespaces to exempt by the admission webhook | `[]` | +| controllerManager.exemptNamespacePrefixes | The namespace prefixes to exempt by the admission webhook | `[]` | +| controllerManager.hostNetwork | Enables controllerManager to be deployed on hostNetwork | `false` | +| controllerManager.dnsPolicy | Set the dnsPolicy for controllerManager pods | `ClusterFirst` | +| controllerManager.securityContext | Security context applied on the container | `{ "allowPrivilegeEscalation": false, "capabilities": "drop": [all], "readOnlyRootFilesystem": true, "runAsGroup": 999, "runAsNonRoot": true, "runAsUser": 1000 }` | +| controllerManager.tlsMinVersion | Set the minimum supported TLS version for validating and mutating webhook servers | `1.3` | +| controllerManager.extraRules | Extra rules for the gatekeeper-manager-role Role | `[]` | +| audit.priorityClassName | Priority class name for audit controller | `system-cluster-critical` | +| audit.podSecurityContext | Security context for audit on pod level | {fsGroup: 999, suplementalGroups: [999]} | +| audit.hostNetwork | Enables audit to be deployed on hostNetwork | `false` | +| audit.dnsPolicy | Set the dnsPolicy for audit pods | `ClusterFirst` | +| audit.securityContext | Security context applied on the container | `{ "allowPrivilegeEscalation": false, "capabilities": "drop": [all], "readOnlyRootFilesystem": true, "runAsGroup": 999, "runAsNonRoot": true, "runAsUser": 1000 }` | +| audit.healthPort | Health port for audit | `9090` | +| audit.metricsPort | Metrics port for audit | `8888` | +| audit.readinessTimeout | Timeout in seconds for audit's readiness probe | `1` | +| audit.livenessTimeout | Timeout in seconds for the audit's liveness probe | `1` | +| replicas | The number of Gatekeeper replicas to deploy for the webhook | `3` | +| podAnnotations | The annotations to add to the Gatekeeper pods | `container.seccomp.security.alpha.kubernetes.io/manager: runtime/default` | +| podLabels | The labels to add to the Gatekeeper pods | `{}` | +| podCountLimit | The maximum number of Gatekeeper pods to run | `100` | +| secretAnnotations | The annotations to add to the Gatekeeper secrets | `{}` | +| pdb.controllerManager.minAvailable | The number of controller manager pods that must still be available after an eviction | `1` | +| service.type | Service type | `ClusterIP` | +| service.loadBalancerIP | The IP address of LoadBalancer service | `` | +| service.healthzPort | Service port to gatekeeper Webhook health port | `9090` | +| rbac.create | Enable the creation of RBAC resources | `true` | +| externalCertInjection.enabled | Enable the injection of an external certificate. This disables automatic certificate generation and rotation | `false` | +| externalCertInjection.secretName | Name of secret for injected certificate | `gatekeeper-webhook-server-cert` | + +## Contributing Changes + +Please refer to [Contributing to Helm Chart](https://open-policy-agent.github.io/gatekeeper/website/docs/help#contributing-to-helm-chart) for modifying the Helm chart. diff --git a/charts/community/redhat/redhat-gatekeeper/3.11.0/src/crds/assign-customresourcedefinition.yaml b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/crds/assign-customresourcedefinition.yaml new file mode 100644 index 000000000..ce98648ba --- /dev/null +++ b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/crds/assign-customresourcedefinition.yaml @@ -0,0 +1,757 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.10.0 + labels: + gatekeeper.sh/system: "yes" + name: assign.mutations.gatekeeper.sh +spec: + group: mutations.gatekeeper.sh + names: + kind: Assign + listKind: AssignList + plural: assign + singular: assign + preserveUnknownFields: false + scope: Cluster + versions: + - name: v1 + schema: + openAPIV3Schema: + description: Assign is the Schema for the assign API. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + properties: + name: + maxLength: 63 + type: string + type: object + spec: + description: AssignSpec defines the desired state of Assign. + properties: + applyTo: + description: ApplyTo lists the specific groups, versions and kinds a mutation will be applied to. This is necessary because every mutation implies part of an object schema and object schemas are associated with specific GVKs. + items: + description: ApplyTo determines what GVKs items the mutation should apply to. Globs are not allowed. + properties: + groups: + items: + type: string + type: array + kinds: + items: + type: string + type: array + versions: + items: + type: string + type: array + type: object + type: array + location: + description: 'Location describes the path to be mutated, for example: `spec.containers[name: main]`.' + type: string + match: + description: Match allows the user to limit which resources get mutated. Individual match criteria are AND-ed together. An undefined match criteria matches everything. + properties: + excludedNamespaces: + description: 'ExcludedNamespaces is a list of namespace names. If defined, a constraint only applies to resources not in a listed namespace. ExcludedNamespaces also supports a prefix or suffix based glob. For example, `excludedNamespaces: [kube-*]` matches both `kube-system` and `kube-public`, and `excludedNamespaces: [*-system]` matches both `kube-system` and `gatekeeper-system`.' + items: + description: 'A string that supports globbing at its front or end. Ex: "kube-*" will match "kube-system" or "kube-public", "*-system" will match "kube-system" or "gatekeeper-system". The asterisk is required for wildcard matching.' + pattern: ^(\*|\*-)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\*|-\*)?$ + type: string + type: array + kinds: + items: + description: Kinds accepts a list of objects with apiGroups and kinds fields that list the groups/kinds of objects to which the mutation will apply. If multiple groups/kinds objects are specified, only one match is needed for the resource to be in scope. + properties: + apiGroups: + description: APIGroups is the API groups the resources belong to. '*' is all groups. If '*' is present, the length of the slice must be one. Required. + items: + type: string + type: array + kinds: + items: + type: string + type: array + type: object + type: array + labelSelector: + description: 'LabelSelector is the combination of two optional fields: `matchLabels` and `matchExpressions`. These two fields provide different methods of selecting or excluding k8s objects based on the label keys and values included in object metadata. All selection expressions from both sections are ANDed to determine if an object meets the cumulative requirements of the selector.' + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + name: + description: 'Name is the name of an object. If defined, it will match against objects with the specified name. Name also supports a prefix or suffix glob. For example, `name: pod-*` would match both `pod-a` and `pod-b`, and `name: *-pod` would match both `a-pod` and `b-pod`.' + pattern: ^(\*|\*-)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\*|-\*)?$ + type: string + namespaceSelector: + description: NamespaceSelector is a label selector against an object's containing namespace or the object itself, if the object is a namespace. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + namespaces: + description: 'Namespaces is a list of namespace names. If defined, a constraint only applies to resources in a listed namespace. Namespaces also supports a prefix or suffix based glob. For example, `namespaces: [kube-*]` matches both `kube-system` and `kube-public`, and `namespaces: [*-system]` matches both `kube-system` and `gatekeeper-system`.' + items: + description: 'A string that supports globbing at its front or end. Ex: "kube-*" will match "kube-system" or "kube-public", "*-system" will match "kube-system" or "gatekeeper-system". The asterisk is required for wildcard matching.' + pattern: ^(\*|\*-)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\*|-\*)?$ + type: string + type: array + scope: + description: Scope determines if cluster-scoped and/or namespaced-scoped resources are matched. Accepts `*`, `Cluster`, or `Namespaced`. (defaults to `*`) + type: string + source: + description: Source determines whether generated or original resources are matched. Accepts `Generated`|`Original`|`All` (defaults to `All`). A value of `Generated` will only match generated resources, while `Original` will only match regular resources. + enum: + - All + - Generated + - Original + type: string + type: object + parameters: + description: Parameters define the behavior of the mutator. + properties: + assign: + description: Assign.value holds the value to be assigned + properties: + externalData: + description: ExternalData describes the external data provider to be used for mutation. + properties: + dataSource: + default: ValueAtLocation + description: DataSource specifies where to extract the data that will be sent to the external data provider as parameters. + enum: + - ValueAtLocation + - Username + type: string + default: + description: Default specifies the default value to use when the external data provider returns an error and the failure policy is set to "UseDefault". + type: string + failurePolicy: + default: Fail + description: FailurePolicy specifies the policy to apply when the external data provider returns an error. + enum: + - UseDefault + - Ignore + - Fail + type: string + provider: + description: Provider is the name of the external data provider. + type: string + type: object + fromMetadata: + description: FromMetadata assigns a value from the specified metadata field. + properties: + field: + description: Field specifies which metadata field provides the assigned value. Valid fields are `namespace` and `name`. + type: string + type: object + value: + description: Value is a constant value that will be assigned to `location` + x-kubernetes-preserve-unknown-fields: true + type: object + pathTests: + items: + description: "PathTest allows the user to customize how the mutation works if parent paths are missing. It traverses the list in order. All sub paths are tested against the provided condition, if the test fails, the mutation is not applied. All `subPath` entries must be a prefix of `location`. Any glob characters will take on the same value as was used to expand the matching glob in `location`. \n Available Tests: * MustExist - the path must exist or do not mutate * MustNotExist - the path must not exist or do not mutate." + properties: + condition: + description: Condition describes whether the path either MustExist or MustNotExist in the original object + enum: + - MustExist + - MustNotExist + type: string + subPath: + type: string + type: object + type: array + type: object + type: object + status: + description: AssignStatus defines the observed state of Assign. + properties: + byPod: + items: + description: MutatorPodStatusStatus defines the observed state of MutatorPodStatus. + properties: + enforced: + type: boolean + errors: + items: + description: MutatorError represents a single error caught while adding a mutator to a system. + properties: + message: + type: string + type: + description: Type indicates a specific class of error for use by controller code. If not present, the error should be treated as not matching any known type. + type: string + required: + - message + type: object + type: array + id: + type: string + mutatorUID: + description: Storing the mutator UID allows us to detect drift, such as when a mutator has been recreated after its CRD was deleted out from under it, interrupting the watch + type: string + observedGeneration: + format: int64 + type: integer + operations: + items: + type: string + type: array + type: object + type: array + type: object + type: object + served: true + storage: true + subresources: + status: {} + - name: v1alpha1 + schema: + openAPIV3Schema: + description: Assign is the Schema for the assign API. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: AssignSpec defines the desired state of Assign. + properties: + applyTo: + description: ApplyTo lists the specific groups, versions and kinds a mutation will be applied to. This is necessary because every mutation implies part of an object schema and object schemas are associated with specific GVKs. + items: + description: ApplyTo determines what GVKs items the mutation should apply to. Globs are not allowed. + properties: + groups: + items: + type: string + type: array + kinds: + items: + type: string + type: array + versions: + items: + type: string + type: array + type: object + type: array + location: + description: 'Location describes the path to be mutated, for example: `spec.containers[name: main]`.' + type: string + match: + description: Match allows the user to limit which resources get mutated. Individual match criteria are AND-ed together. An undefined match criteria matches everything. + properties: + excludedNamespaces: + description: 'ExcludedNamespaces is a list of namespace names. If defined, a constraint only applies to resources not in a listed namespace. ExcludedNamespaces also supports a prefix or suffix based glob. For example, `excludedNamespaces: [kube-*]` matches both `kube-system` and `kube-public`, and `excludedNamespaces: [*-system]` matches both `kube-system` and `gatekeeper-system`.' + items: + description: 'A string that supports globbing at its front or end. Ex: "kube-*" will match "kube-system" or "kube-public", "*-system" will match "kube-system" or "gatekeeper-system". The asterisk is required for wildcard matching.' + pattern: ^(\*|\*-)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\*|-\*)?$ + type: string + type: array + kinds: + items: + description: Kinds accepts a list of objects with apiGroups and kinds fields that list the groups/kinds of objects to which the mutation will apply. If multiple groups/kinds objects are specified, only one match is needed for the resource to be in scope. + properties: + apiGroups: + description: APIGroups is the API groups the resources belong to. '*' is all groups. If '*' is present, the length of the slice must be one. Required. + items: + type: string + type: array + kinds: + items: + type: string + type: array + type: object + type: array + labelSelector: + description: 'LabelSelector is the combination of two optional fields: `matchLabels` and `matchExpressions`. These two fields provide different methods of selecting or excluding k8s objects based on the label keys and values included in object metadata. All selection expressions from both sections are ANDed to determine if an object meets the cumulative requirements of the selector.' + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + name: + description: 'Name is the name of an object. If defined, it will match against objects with the specified name. Name also supports a prefix or suffix glob. For example, `name: pod-*` would match both `pod-a` and `pod-b`, and `name: *-pod` would match both `a-pod` and `b-pod`.' + pattern: ^(\*|\*-)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\*|-\*)?$ + type: string + namespaceSelector: + description: NamespaceSelector is a label selector against an object's containing namespace or the object itself, if the object is a namespace. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + namespaces: + description: 'Namespaces is a list of namespace names. If defined, a constraint only applies to resources in a listed namespace. Namespaces also supports a prefix or suffix based glob. For example, `namespaces: [kube-*]` matches both `kube-system` and `kube-public`, and `namespaces: [*-system]` matches both `kube-system` and `gatekeeper-system`.' + items: + description: 'A string that supports globbing at its front or end. Ex: "kube-*" will match "kube-system" or "kube-public", "*-system" will match "kube-system" or "gatekeeper-system". The asterisk is required for wildcard matching.' + pattern: ^(\*|\*-)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\*|-\*)?$ + type: string + type: array + scope: + description: Scope determines if cluster-scoped and/or namespaced-scoped resources are matched. Accepts `*`, `Cluster`, or `Namespaced`. (defaults to `*`) + type: string + source: + description: Source determines whether generated or original resources are matched. Accepts `Generated`|`Original`|`All` (defaults to `All`). A value of `Generated` will only match generated resources, while `Original` will only match regular resources. + enum: + - All + - Generated + - Original + type: string + type: object + parameters: + description: Parameters define the behavior of the mutator. + properties: + assign: + description: Assign.value holds the value to be assigned + properties: + externalData: + description: ExternalData describes the external data provider to be used for mutation. + properties: + dataSource: + default: ValueAtLocation + description: DataSource specifies where to extract the data that will be sent to the external data provider as parameters. + enum: + - ValueAtLocation + - Username + type: string + default: + description: Default specifies the default value to use when the external data provider returns an error and the failure policy is set to "UseDefault". + type: string + failurePolicy: + default: Fail + description: FailurePolicy specifies the policy to apply when the external data provider returns an error. + enum: + - UseDefault + - Ignore + - Fail + type: string + provider: + description: Provider is the name of the external data provider. + type: string + type: object + fromMetadata: + description: FromMetadata assigns a value from the specified metadata field. + properties: + field: + description: Field specifies which metadata field provides the assigned value. Valid fields are `namespace` and `name`. + type: string + type: object + value: + description: Value is a constant value that will be assigned to `location` + x-kubernetes-preserve-unknown-fields: true + type: object + pathTests: + items: + description: "PathTest allows the user to customize how the mutation works if parent paths are missing. It traverses the list in order. All sub paths are tested against the provided condition, if the test fails, the mutation is not applied. All `subPath` entries must be a prefix of `location`. Any glob characters will take on the same value as was used to expand the matching glob in `location`. \n Available Tests: * MustExist - the path must exist or do not mutate * MustNotExist - the path must not exist or do not mutate." + properties: + condition: + description: Condition describes whether the path either MustExist or MustNotExist in the original object + enum: + - MustExist + - MustNotExist + type: string + subPath: + type: string + type: object + type: array + type: object + type: object + status: + description: AssignStatus defines the observed state of Assign. + properties: + byPod: + items: + description: MutatorPodStatusStatus defines the observed state of MutatorPodStatus. + properties: + enforced: + type: boolean + errors: + items: + description: MutatorError represents a single error caught while adding a mutator to a system. + properties: + message: + type: string + type: + description: Type indicates a specific class of error for use by controller code. If not present, the error should be treated as not matching any known type. + type: string + required: + - message + type: object + type: array + id: + type: string + mutatorUID: + description: Storing the mutator UID allows us to detect drift, such as when a mutator has been recreated after its CRD was deleted out from under it, interrupting the watch + type: string + observedGeneration: + format: int64 + type: integer + operations: + items: + type: string + type: array + type: object + type: array + type: object + type: object + served: true + storage: false + subresources: + status: {} + - name: v1beta1 + schema: + openAPIV3Schema: + description: Assign is the Schema for the assign API. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: AssignSpec defines the desired state of Assign. + properties: + applyTo: + description: ApplyTo lists the specific groups, versions and kinds a mutation will be applied to. This is necessary because every mutation implies part of an object schema and object schemas are associated with specific GVKs. + items: + description: ApplyTo determines what GVKs items the mutation should apply to. Globs are not allowed. + properties: + groups: + items: + type: string + type: array + kinds: + items: + type: string + type: array + versions: + items: + type: string + type: array + type: object + type: array + location: + description: 'Location describes the path to be mutated, for example: `spec.containers[name: main]`.' + type: string + match: + description: Match allows the user to limit which resources get mutated. Individual match criteria are AND-ed together. An undefined match criteria matches everything. + properties: + excludedNamespaces: + description: 'ExcludedNamespaces is a list of namespace names. If defined, a constraint only applies to resources not in a listed namespace. ExcludedNamespaces also supports a prefix or suffix based glob. For example, `excludedNamespaces: [kube-*]` matches both `kube-system` and `kube-public`, and `excludedNamespaces: [*-system]` matches both `kube-system` and `gatekeeper-system`.' + items: + description: 'A string that supports globbing at its front or end. Ex: "kube-*" will match "kube-system" or "kube-public", "*-system" will match "kube-system" or "gatekeeper-system". The asterisk is required for wildcard matching.' + pattern: ^(\*|\*-)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\*|-\*)?$ + type: string + type: array + kinds: + items: + description: Kinds accepts a list of objects with apiGroups and kinds fields that list the groups/kinds of objects to which the mutation will apply. If multiple groups/kinds objects are specified, only one match is needed for the resource to be in scope. + properties: + apiGroups: + description: APIGroups is the API groups the resources belong to. '*' is all groups. If '*' is present, the length of the slice must be one. Required. + items: + type: string + type: array + kinds: + items: + type: string + type: array + type: object + type: array + labelSelector: + description: 'LabelSelector is the combination of two optional fields: `matchLabels` and `matchExpressions`. These two fields provide different methods of selecting or excluding k8s objects based on the label keys and values included in object metadata. All selection expressions from both sections are ANDed to determine if an object meets the cumulative requirements of the selector.' + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + name: + description: 'Name is the name of an object. If defined, it will match against objects with the specified name. Name also supports a prefix or suffix glob. For example, `name: pod-*` would match both `pod-a` and `pod-b`, and `name: *-pod` would match both `a-pod` and `b-pod`.' + pattern: ^(\*|\*-)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\*|-\*)?$ + type: string + namespaceSelector: + description: NamespaceSelector is a label selector against an object's containing namespace or the object itself, if the object is a namespace. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + namespaces: + description: 'Namespaces is a list of namespace names. If defined, a constraint only applies to resources in a listed namespace. Namespaces also supports a prefix or suffix based glob. For example, `namespaces: [kube-*]` matches both `kube-system` and `kube-public`, and `namespaces: [*-system]` matches both `kube-system` and `gatekeeper-system`.' + items: + description: 'A string that supports globbing at its front or end. Ex: "kube-*" will match "kube-system" or "kube-public", "*-system" will match "kube-system" or "gatekeeper-system". The asterisk is required for wildcard matching.' + pattern: ^(\*|\*-)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\*|-\*)?$ + type: string + type: array + scope: + description: Scope determines if cluster-scoped and/or namespaced-scoped resources are matched. Accepts `*`, `Cluster`, or `Namespaced`. (defaults to `*`) + type: string + source: + description: Source determines whether generated or original resources are matched. Accepts `Generated`|`Original`|`All` (defaults to `All`). A value of `Generated` will only match generated resources, while `Original` will only match regular resources. + enum: + - All + - Generated + - Original + type: string + type: object + parameters: + description: Parameters define the behavior of the mutator. + properties: + assign: + description: Assign.value holds the value to be assigned + properties: + externalData: + description: ExternalData describes the external data provider to be used for mutation. + properties: + dataSource: + default: ValueAtLocation + description: DataSource specifies where to extract the data that will be sent to the external data provider as parameters. + enum: + - ValueAtLocation + - Username + type: string + default: + description: Default specifies the default value to use when the external data provider returns an error and the failure policy is set to "UseDefault". + type: string + failurePolicy: + default: Fail + description: FailurePolicy specifies the policy to apply when the external data provider returns an error. + enum: + - UseDefault + - Ignore + - Fail + type: string + provider: + description: Provider is the name of the external data provider. + type: string + type: object + fromMetadata: + description: FromMetadata assigns a value from the specified metadata field. + properties: + field: + description: Field specifies which metadata field provides the assigned value. Valid fields are `namespace` and `name`. + type: string + type: object + value: + description: Value is a constant value that will be assigned to `location` + x-kubernetes-preserve-unknown-fields: true + type: object + pathTests: + items: + description: "PathTest allows the user to customize how the mutation works if parent paths are missing. It traverses the list in order. All sub paths are tested against the provided condition, if the test fails, the mutation is not applied. All `subPath` entries must be a prefix of `location`. Any glob characters will take on the same value as was used to expand the matching glob in `location`. \n Available Tests: * MustExist - the path must exist or do not mutate * MustNotExist - the path must not exist or do not mutate." + properties: + condition: + description: Condition describes whether the path either MustExist or MustNotExist in the original object + enum: + - MustExist + - MustNotExist + type: string + subPath: + type: string + type: object + type: array + type: object + type: object + status: + description: AssignStatus defines the observed state of Assign. + properties: + byPod: + items: + description: MutatorPodStatusStatus defines the observed state of MutatorPodStatus. + properties: + enforced: + type: boolean + errors: + items: + description: MutatorError represents a single error caught while adding a mutator to a system. + properties: + message: + type: string + type: + description: Type indicates a specific class of error for use by controller code. If not present, the error should be treated as not matching any known type. + type: string + required: + - message + type: object + type: array + id: + type: string + mutatorUID: + description: Storing the mutator UID allows us to detect drift, such as when a mutator has been recreated after its CRD was deleted out from under it, interrupting the watch + type: string + observedGeneration: + format: int64 + type: integer + operations: + items: + type: string + type: array + type: object + type: array + type: object + type: object + served: true + storage: false + subresources: + status: {} diff --git a/charts/community/redhat/redhat-gatekeeper/3.11.0/src/crds/assignmetadata-customresourcedefinition.yaml b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/crds/assignmetadata-customresourcedefinition.yaml new file mode 100644 index 000000000..3a63eef3c --- /dev/null +++ b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/crds/assignmetadata-customresourcedefinition.yaml @@ -0,0 +1,655 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.10.0 + labels: + gatekeeper.sh/system: "yes" + name: assignmetadata.mutations.gatekeeper.sh +spec: + group: mutations.gatekeeper.sh + names: + kind: AssignMetadata + listKind: AssignMetadataList + plural: assignmetadata + singular: assignmetadata + preserveUnknownFields: false + scope: Cluster + versions: + - name: v1 + schema: + openAPIV3Schema: + description: AssignMetadata is the Schema for the assignmetadata API. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + properties: + name: + maxLength: 63 + type: string + type: object + spec: + description: AssignMetadataSpec defines the desired state of AssignMetadata. + properties: + location: + type: string + match: + description: Match selects objects to apply mutations to. + properties: + excludedNamespaces: + description: 'ExcludedNamespaces is a list of namespace names. If defined, a constraint only applies to resources not in a listed namespace. ExcludedNamespaces also supports a prefix or suffix based glob. For example, `excludedNamespaces: [kube-*]` matches both `kube-system` and `kube-public`, and `excludedNamespaces: [*-system]` matches both `kube-system` and `gatekeeper-system`.' + items: + description: 'A string that supports globbing at its front or end. Ex: "kube-*" will match "kube-system" or "kube-public", "*-system" will match "kube-system" or "gatekeeper-system". The asterisk is required for wildcard matching.' + pattern: ^(\*|\*-)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\*|-\*)?$ + type: string + type: array + kinds: + items: + description: Kinds accepts a list of objects with apiGroups and kinds fields that list the groups/kinds of objects to which the mutation will apply. If multiple groups/kinds objects are specified, only one match is needed for the resource to be in scope. + properties: + apiGroups: + description: APIGroups is the API groups the resources belong to. '*' is all groups. If '*' is present, the length of the slice must be one. Required. + items: + type: string + type: array + kinds: + items: + type: string + type: array + type: object + type: array + labelSelector: + description: 'LabelSelector is the combination of two optional fields: `matchLabels` and `matchExpressions`. These two fields provide different methods of selecting or excluding k8s objects based on the label keys and values included in object metadata. All selection expressions from both sections are ANDed to determine if an object meets the cumulative requirements of the selector.' + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + name: + description: 'Name is the name of an object. If defined, it will match against objects with the specified name. Name also supports a prefix or suffix glob. For example, `name: pod-*` would match both `pod-a` and `pod-b`, and `name: *-pod` would match both `a-pod` and `b-pod`.' + pattern: ^(\*|\*-)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\*|-\*)?$ + type: string + namespaceSelector: + description: NamespaceSelector is a label selector against an object's containing namespace or the object itself, if the object is a namespace. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + namespaces: + description: 'Namespaces is a list of namespace names. If defined, a constraint only applies to resources in a listed namespace. Namespaces also supports a prefix or suffix based glob. For example, `namespaces: [kube-*]` matches both `kube-system` and `kube-public`, and `namespaces: [*-system]` matches both `kube-system` and `gatekeeper-system`.' + items: + description: 'A string that supports globbing at its front or end. Ex: "kube-*" will match "kube-system" or "kube-public", "*-system" will match "kube-system" or "gatekeeper-system". The asterisk is required for wildcard matching.' + pattern: ^(\*|\*-)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\*|-\*)?$ + type: string + type: array + scope: + description: Scope determines if cluster-scoped and/or namespaced-scoped resources are matched. Accepts `*`, `Cluster`, or `Namespaced`. (defaults to `*`) + type: string + source: + description: Source determines whether generated or original resources are matched. Accepts `Generated`|`Original`|`All` (defaults to `All`). A value of `Generated` will only match generated resources, while `Original` will only match regular resources. + enum: + - All + - Generated + - Original + type: string + type: object + parameters: + properties: + assign: + description: Assign.value holds the value to be assigned + properties: + externalData: + description: ExternalData describes the external data provider to be used for mutation. + properties: + dataSource: + default: ValueAtLocation + description: DataSource specifies where to extract the data that will be sent to the external data provider as parameters. + enum: + - ValueAtLocation + - Username + type: string + default: + description: Default specifies the default value to use when the external data provider returns an error and the failure policy is set to "UseDefault". + type: string + failurePolicy: + default: Fail + description: FailurePolicy specifies the policy to apply when the external data provider returns an error. + enum: + - UseDefault + - Ignore + - Fail + type: string + provider: + description: Provider is the name of the external data provider. + type: string + type: object + fromMetadata: + description: FromMetadata assigns a value from the specified metadata field. + properties: + field: + description: Field specifies which metadata field provides the assigned value. Valid fields are `namespace` and `name`. + type: string + type: object + value: + description: Value is a constant value that will be assigned to `location` + x-kubernetes-preserve-unknown-fields: true + type: object + type: object + type: object + status: + description: AssignMetadataStatus defines the observed state of AssignMetadata. + properties: + byPod: + description: 'INSERT ADDITIONAL STATUS FIELD - define observed state of cluster Important: Run "make" to regenerate code after modifying this file' + items: + description: MutatorPodStatusStatus defines the observed state of MutatorPodStatus. + properties: + enforced: + type: boolean + errors: + items: + description: MutatorError represents a single error caught while adding a mutator to a system. + properties: + message: + type: string + type: + description: Type indicates a specific class of error for use by controller code. If not present, the error should be treated as not matching any known type. + type: string + required: + - message + type: object + type: array + id: + type: string + mutatorUID: + description: Storing the mutator UID allows us to detect drift, such as when a mutator has been recreated after its CRD was deleted out from under it, interrupting the watch + type: string + observedGeneration: + format: int64 + type: integer + operations: + items: + type: string + type: array + type: object + type: array + type: object + type: object + served: true + storage: true + subresources: + status: {} + - name: v1alpha1 + schema: + openAPIV3Schema: + description: AssignMetadata is the Schema for the assignmetadata API. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: AssignMetadataSpec defines the desired state of AssignMetadata. + properties: + location: + type: string + match: + description: Match selects objects to apply mutations to. + properties: + excludedNamespaces: + description: 'ExcludedNamespaces is a list of namespace names. If defined, a constraint only applies to resources not in a listed namespace. ExcludedNamespaces also supports a prefix or suffix based glob. For example, `excludedNamespaces: [kube-*]` matches both `kube-system` and `kube-public`, and `excludedNamespaces: [*-system]` matches both `kube-system` and `gatekeeper-system`.' + items: + description: 'A string that supports globbing at its front or end. Ex: "kube-*" will match "kube-system" or "kube-public", "*-system" will match "kube-system" or "gatekeeper-system". The asterisk is required for wildcard matching.' + pattern: ^(\*|\*-)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\*|-\*)?$ + type: string + type: array + kinds: + items: + description: Kinds accepts a list of objects with apiGroups and kinds fields that list the groups/kinds of objects to which the mutation will apply. If multiple groups/kinds objects are specified, only one match is needed for the resource to be in scope. + properties: + apiGroups: + description: APIGroups is the API groups the resources belong to. '*' is all groups. If '*' is present, the length of the slice must be one. Required. + items: + type: string + type: array + kinds: + items: + type: string + type: array + type: object + type: array + labelSelector: + description: 'LabelSelector is the combination of two optional fields: `matchLabels` and `matchExpressions`. These two fields provide different methods of selecting or excluding k8s objects based on the label keys and values included in object metadata. All selection expressions from both sections are ANDed to determine if an object meets the cumulative requirements of the selector.' + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + name: + description: 'Name is the name of an object. If defined, it will match against objects with the specified name. Name also supports a prefix or suffix glob. For example, `name: pod-*` would match both `pod-a` and `pod-b`, and `name: *-pod` would match both `a-pod` and `b-pod`.' + pattern: ^(\*|\*-)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\*|-\*)?$ + type: string + namespaceSelector: + description: NamespaceSelector is a label selector against an object's containing namespace or the object itself, if the object is a namespace. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + namespaces: + description: 'Namespaces is a list of namespace names. If defined, a constraint only applies to resources in a listed namespace. Namespaces also supports a prefix or suffix based glob. For example, `namespaces: [kube-*]` matches both `kube-system` and `kube-public`, and `namespaces: [*-system]` matches both `kube-system` and `gatekeeper-system`.' + items: + description: 'A string that supports globbing at its front or end. Ex: "kube-*" will match "kube-system" or "kube-public", "*-system" will match "kube-system" or "gatekeeper-system". The asterisk is required for wildcard matching.' + pattern: ^(\*|\*-)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\*|-\*)?$ + type: string + type: array + scope: + description: Scope determines if cluster-scoped and/or namespaced-scoped resources are matched. Accepts `*`, `Cluster`, or `Namespaced`. (defaults to `*`) + type: string + source: + description: Source determines whether generated or original resources are matched. Accepts `Generated`|`Original`|`All` (defaults to `All`). A value of `Generated` will only match generated resources, while `Original` will only match regular resources. + enum: + - All + - Generated + - Original + type: string + type: object + parameters: + properties: + assign: + description: Assign.value holds the value to be assigned + properties: + externalData: + description: ExternalData describes the external data provider to be used for mutation. + properties: + dataSource: + default: ValueAtLocation + description: DataSource specifies where to extract the data that will be sent to the external data provider as parameters. + enum: + - ValueAtLocation + - Username + type: string + default: + description: Default specifies the default value to use when the external data provider returns an error and the failure policy is set to "UseDefault". + type: string + failurePolicy: + default: Fail + description: FailurePolicy specifies the policy to apply when the external data provider returns an error. + enum: + - UseDefault + - Ignore + - Fail + type: string + provider: + description: Provider is the name of the external data provider. + type: string + type: object + fromMetadata: + description: FromMetadata assigns a value from the specified metadata field. + properties: + field: + description: Field specifies which metadata field provides the assigned value. Valid fields are `namespace` and `name`. + type: string + type: object + value: + description: Value is a constant value that will be assigned to `location` + x-kubernetes-preserve-unknown-fields: true + type: object + type: object + type: object + status: + description: AssignMetadataStatus defines the observed state of AssignMetadata. + properties: + byPod: + description: 'INSERT ADDITIONAL STATUS FIELD - define observed state of cluster Important: Run "make" to regenerate code after modifying this file' + items: + description: MutatorPodStatusStatus defines the observed state of MutatorPodStatus. + properties: + enforced: + type: boolean + errors: + items: + description: MutatorError represents a single error caught while adding a mutator to a system. + properties: + message: + type: string + type: + description: Type indicates a specific class of error for use by controller code. If not present, the error should be treated as not matching any known type. + type: string + required: + - message + type: object + type: array + id: + type: string + mutatorUID: + description: Storing the mutator UID allows us to detect drift, such as when a mutator has been recreated after its CRD was deleted out from under it, interrupting the watch + type: string + observedGeneration: + format: int64 + type: integer + operations: + items: + type: string + type: array + type: object + type: array + type: object + type: object + served: true + storage: false + subresources: + status: {} + - name: v1beta1 + schema: + openAPIV3Schema: + description: AssignMetadata is the Schema for the assignmetadata API. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: AssignMetadataSpec defines the desired state of AssignMetadata. + properties: + location: + type: string + match: + description: Match selects objects to apply mutations to. + properties: + excludedNamespaces: + description: 'ExcludedNamespaces is a list of namespace names. If defined, a constraint only applies to resources not in a listed namespace. ExcludedNamespaces also supports a prefix or suffix based glob. For example, `excludedNamespaces: [kube-*]` matches both `kube-system` and `kube-public`, and `excludedNamespaces: [*-system]` matches both `kube-system` and `gatekeeper-system`.' + items: + description: 'A string that supports globbing at its front or end. Ex: "kube-*" will match "kube-system" or "kube-public", "*-system" will match "kube-system" or "gatekeeper-system". The asterisk is required for wildcard matching.' + pattern: ^(\*|\*-)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\*|-\*)?$ + type: string + type: array + kinds: + items: + description: Kinds accepts a list of objects with apiGroups and kinds fields that list the groups/kinds of objects to which the mutation will apply. If multiple groups/kinds objects are specified, only one match is needed for the resource to be in scope. + properties: + apiGroups: + description: APIGroups is the API groups the resources belong to. '*' is all groups. If '*' is present, the length of the slice must be one. Required. + items: + type: string + type: array + kinds: + items: + type: string + type: array + type: object + type: array + labelSelector: + description: 'LabelSelector is the combination of two optional fields: `matchLabels` and `matchExpressions`. These two fields provide different methods of selecting or excluding k8s objects based on the label keys and values included in object metadata. All selection expressions from both sections are ANDed to determine if an object meets the cumulative requirements of the selector.' + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + name: + description: 'Name is the name of an object. If defined, it will match against objects with the specified name. Name also supports a prefix or suffix glob. For example, `name: pod-*` would match both `pod-a` and `pod-b`, and `name: *-pod` would match both `a-pod` and `b-pod`.' + pattern: ^(\*|\*-)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\*|-\*)?$ + type: string + namespaceSelector: + description: NamespaceSelector is a label selector against an object's containing namespace or the object itself, if the object is a namespace. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + namespaces: + description: 'Namespaces is a list of namespace names. If defined, a constraint only applies to resources in a listed namespace. Namespaces also supports a prefix or suffix based glob. For example, `namespaces: [kube-*]` matches both `kube-system` and `kube-public`, and `namespaces: [*-system]` matches both `kube-system` and `gatekeeper-system`.' + items: + description: 'A string that supports globbing at its front or end. Ex: "kube-*" will match "kube-system" or "kube-public", "*-system" will match "kube-system" or "gatekeeper-system". The asterisk is required for wildcard matching.' + pattern: ^(\*|\*-)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\*|-\*)?$ + type: string + type: array + scope: + description: Scope determines if cluster-scoped and/or namespaced-scoped resources are matched. Accepts `*`, `Cluster`, or `Namespaced`. (defaults to `*`) + type: string + source: + description: Source determines whether generated or original resources are matched. Accepts `Generated`|`Original`|`All` (defaults to `All`). A value of `Generated` will only match generated resources, while `Original` will only match regular resources. + enum: + - All + - Generated + - Original + type: string + type: object + parameters: + properties: + assign: + description: Assign.value holds the value to be assigned + properties: + externalData: + description: ExternalData describes the external data provider to be used for mutation. + properties: + dataSource: + default: ValueAtLocation + description: DataSource specifies where to extract the data that will be sent to the external data provider as parameters. + enum: + - ValueAtLocation + - Username + type: string + default: + description: Default specifies the default value to use when the external data provider returns an error and the failure policy is set to "UseDefault". + type: string + failurePolicy: + default: Fail + description: FailurePolicy specifies the policy to apply when the external data provider returns an error. + enum: + - UseDefault + - Ignore + - Fail + type: string + provider: + description: Provider is the name of the external data provider. + type: string + type: object + fromMetadata: + description: FromMetadata assigns a value from the specified metadata field. + properties: + field: + description: Field specifies which metadata field provides the assigned value. Valid fields are `namespace` and `name`. + type: string + type: object + value: + description: Value is a constant value that will be assigned to `location` + x-kubernetes-preserve-unknown-fields: true + type: object + type: object + type: object + status: + description: AssignMetadataStatus defines the observed state of AssignMetadata. + properties: + byPod: + description: 'INSERT ADDITIONAL STATUS FIELD - define observed state of cluster Important: Run "make" to regenerate code after modifying this file' + items: + description: MutatorPodStatusStatus defines the observed state of MutatorPodStatus. + properties: + enforced: + type: boolean + errors: + items: + description: MutatorError represents a single error caught while adding a mutator to a system. + properties: + message: + type: string + type: + description: Type indicates a specific class of error for use by controller code. If not present, the error should be treated as not matching any known type. + type: string + required: + - message + type: object + type: array + id: + type: string + mutatorUID: + description: Storing the mutator UID allows us to detect drift, such as when a mutator has been recreated after its CRD was deleted out from under it, interrupting the watch + type: string + observedGeneration: + format: int64 + type: integer + operations: + items: + type: string + type: array + type: object + type: array + type: object + type: object + served: true + storage: false + subresources: + status: {} diff --git a/charts/community/redhat/redhat-gatekeeper/3.11.0/src/crds/config-customresourcedefinition.yaml b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/crds/config-customresourcedefinition.yaml new file mode 100644 index 000000000..57826ac09 --- /dev/null +++ b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/crds/config-customresourcedefinition.yaml @@ -0,0 +1,105 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.10.0 + labels: + gatekeeper.sh/system: "yes" + name: configs.config.gatekeeper.sh +spec: + group: config.gatekeeper.sh + names: + kind: Config + listKind: ConfigList + plural: configs + singular: config + preserveUnknownFields: false + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: Config is the Schema for the configs API. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ConfigSpec defines the desired state of Config. + properties: + match: + description: Configuration for namespace exclusion + items: + properties: + excludedNamespaces: + items: + description: 'A string that supports globbing at its front or end. Ex: "kube-*" will match "kube-system" or "kube-public", "*-system" will match "kube-system" or "gatekeeper-system". The asterisk is required for wildcard matching.' + pattern: ^(\*|\*-)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\*|-\*)?$ + type: string + type: array + processes: + items: + type: string + type: array + type: object + type: array + readiness: + description: Configuration for readiness tracker + properties: + statsEnabled: + type: boolean + type: object + sync: + description: Configuration for syncing k8s objects + properties: + syncOnly: + description: If non-empty, only entries on this list will be replicated into OPA + items: + properties: + group: + type: string + kind: + type: string + version: + type: string + type: object + type: array + type: object + validation: + description: Configuration for validation + properties: + traces: + description: List of requests to trace. Both "user" and "kinds" must be specified + items: + properties: + dump: + description: Also dump the state of OPA with the trace. Set to `All` to dump everything. + type: string + kind: + description: Only trace requests of the following GroupVersionKind + properties: + group: + type: string + kind: + type: string + version: + type: string + type: object + user: + description: Only trace requests from the specified user + type: string + type: object + type: array + type: object + type: object + status: + description: ConfigStatus defines the observed state of Config. + type: object + type: object + served: true + storage: true diff --git a/charts/community/redhat/redhat-gatekeeper/3.11.0/src/crds/constraintpodstatus-customresourcedefinition.yaml b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/crds/constraintpodstatus-customresourcedefinition.yaml new file mode 100644 index 000000000..230a541bb --- /dev/null +++ b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/crds/constraintpodstatus-customresourcedefinition.yaml @@ -0,0 +1,67 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.10.0 + labels: + gatekeeper.sh/system: "yes" + name: constraintpodstatuses.status.gatekeeper.sh +spec: + group: status.gatekeeper.sh + names: + kind: ConstraintPodStatus + listKind: ConstraintPodStatusList + plural: constraintpodstatuses + singular: constraintpodstatus + preserveUnknownFields: false + scope: Namespaced + versions: + - name: v1beta1 + schema: + openAPIV3Schema: + description: ConstraintPodStatus is the Schema for the constraintpodstatuses API. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + status: + description: ConstraintPodStatusStatus defines the observed state of ConstraintPodStatus. + properties: + constraintUID: + description: Storing the constraint UID allows us to detect drift, such as when a constraint has been recreated after its CRD was deleted out from under it, interrupting the watch + type: string + enforced: + type: boolean + errors: + items: + description: Error represents a single error caught while adding a constraint to OPA. + properties: + code: + type: string + location: + type: string + message: + type: string + required: + - code + - message + type: object + type: array + id: + type: string + observedGeneration: + format: int64 + type: integer + operations: + items: + type: string + type: array + type: object + type: object + served: true + storage: true diff --git a/charts/community/redhat/redhat-gatekeeper/3.11.0/src/crds/constrainttemplate-customresourcedefinition.yaml b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/crds/constrainttemplate-customresourcedefinition.yaml new file mode 100644 index 000000000..a4da4e9e9 --- /dev/null +++ b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/crds/constrainttemplate-customresourcedefinition.yaml @@ -0,0 +1,303 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.10.0 + labels: + gatekeeper.sh/system: "yes" + name: constrainttemplates.templates.gatekeeper.sh +spec: + group: templates.gatekeeper.sh + names: + kind: ConstraintTemplate + listKind: ConstraintTemplateList + plural: constrainttemplates + singular: constrainttemplate + preserveUnknownFields: false + scope: Cluster + versions: + - name: v1 + schema: + openAPIV3Schema: + description: ConstraintTemplate is the Schema for the constrainttemplates API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ConstraintTemplateSpec defines the desired state of ConstraintTemplate. + properties: + crd: + properties: + spec: + properties: + names: + properties: + kind: + type: string + shortNames: + items: + type: string + type: array + type: object + validation: + default: + legacySchema: false + properties: + legacySchema: + default: false + type: boolean + openAPIV3Schema: + type: object + x-kubernetes-preserve-unknown-fields: true + type: object + type: object + type: object + targets: + items: + properties: + libs: + items: + type: string + type: array + rego: + type: string + target: + type: string + type: object + type: array + type: object + status: + description: ConstraintTemplateStatus defines the observed state of ConstraintTemplate. + properties: + byPod: + items: + description: ByPodStatus defines the observed state of ConstraintTemplate as seen by an individual controller + properties: + errors: + items: + description: CreateCRDError represents a single error caught during parsing, compiling, etc. + properties: + code: + type: string + location: + type: string + message: + type: string + required: + - code + - message + type: object + type: array + id: + description: a unique identifier for the pod that wrote the status + type: string + observedGeneration: + format: int64 + type: integer + type: object + x-kubernetes-preserve-unknown-fields: true + type: array + created: + type: boolean + type: object + type: object + served: true + storage: true + subresources: + status: {} + - name: v1alpha1 + schema: + openAPIV3Schema: + description: ConstraintTemplate is the Schema for the constrainttemplates API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ConstraintTemplateSpec defines the desired state of ConstraintTemplate. + properties: + crd: + properties: + spec: + properties: + names: + properties: + kind: + type: string + shortNames: + items: + type: string + type: array + type: object + validation: + default: + legacySchema: true + properties: + legacySchema: + default: true + type: boolean + openAPIV3Schema: + type: object + x-kubernetes-preserve-unknown-fields: true + type: object + type: object + type: object + targets: + items: + properties: + libs: + items: + type: string + type: array + rego: + type: string + target: + type: string + type: object + type: array + type: object + status: + description: ConstraintTemplateStatus defines the observed state of ConstraintTemplate. + properties: + byPod: + items: + description: ByPodStatus defines the observed state of ConstraintTemplate as seen by an individual controller + properties: + errors: + items: + description: CreateCRDError represents a single error caught during parsing, compiling, etc. + properties: + code: + type: string + location: + type: string + message: + type: string + required: + - code + - message + type: object + type: array + id: + description: a unique identifier for the pod that wrote the status + type: string + observedGeneration: + format: int64 + type: integer + type: object + x-kubernetes-preserve-unknown-fields: true + type: array + created: + type: boolean + type: object + type: object + served: true + storage: false + subresources: + status: {} + - name: v1beta1 + schema: + openAPIV3Schema: + description: ConstraintTemplate is the Schema for the constrainttemplates API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ConstraintTemplateSpec defines the desired state of ConstraintTemplate. + properties: + crd: + properties: + spec: + properties: + names: + properties: + kind: + type: string + shortNames: + items: + type: string + type: array + type: object + validation: + default: + legacySchema: true + properties: + legacySchema: + default: true + type: boolean + openAPIV3Schema: + type: object + x-kubernetes-preserve-unknown-fields: true + type: object + type: object + type: object + targets: + items: + properties: + libs: + items: + type: string + type: array + rego: + type: string + target: + type: string + type: object + type: array + type: object + status: + description: ConstraintTemplateStatus defines the observed state of ConstraintTemplate. + properties: + byPod: + items: + description: ByPodStatus defines the observed state of ConstraintTemplate as seen by an individual controller + properties: + errors: + items: + description: CreateCRDError represents a single error caught during parsing, compiling, etc. + properties: + code: + type: string + location: + type: string + message: + type: string + required: + - code + - message + type: object + type: array + id: + description: a unique identifier for the pod that wrote the status + type: string + observedGeneration: + format: int64 + type: integer + type: object + x-kubernetes-preserve-unknown-fields: true + type: array + created: + type: boolean + type: object + type: object + served: true + storage: false + subresources: + status: {} diff --git a/charts/community/redhat/redhat-gatekeeper/3.11.0/src/crds/constrainttemplatepodstatus-customresourcedefinition.yaml b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/crds/constrainttemplatepodstatus-customresourcedefinition.yaml new file mode 100644 index 000000000..271572bd7 --- /dev/null +++ b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/crds/constrainttemplatepodstatus-customresourcedefinition.yaml @@ -0,0 +1,66 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.10.0 + labels: + gatekeeper.sh/system: "yes" + name: constrainttemplatepodstatuses.status.gatekeeper.sh +spec: + group: status.gatekeeper.sh + names: + kind: ConstraintTemplatePodStatus + listKind: ConstraintTemplatePodStatusList + plural: constrainttemplatepodstatuses + singular: constrainttemplatepodstatus + preserveUnknownFields: false + scope: Namespaced + versions: + - name: v1beta1 + schema: + openAPIV3Schema: + description: ConstraintTemplatePodStatus is the Schema for the constrainttemplatepodstatuses API. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + status: + description: ConstraintTemplatePodStatusStatus defines the observed state of ConstraintTemplatePodStatus. + properties: + errors: + items: + description: CreateCRDError represents a single error caught during parsing, compiling, etc. + properties: + code: + type: string + location: + type: string + message: + type: string + required: + - code + - message + type: object + type: array + id: + description: 'Important: Run "make" to regenerate code after modifying this file' + type: string + observedGeneration: + format: int64 + type: integer + operations: + items: + type: string + type: array + templateUID: + description: UID is a type that holds unique ID values, including UUIDs. Because we don't ONLY use UUIDs, this is an alias to string. Being a type captures intent and helps make sure that UIDs and names do not get conflated. + type: string + type: object + type: object + served: true + storage: true diff --git a/charts/community/redhat/redhat-gatekeeper/3.11.0/src/crds/expansiontemplate-customresourcedefinition.yaml b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/crds/expansiontemplate-customresourcedefinition.yaml new file mode 100644 index 000000000..042249cf1 --- /dev/null +++ b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/crds/expansiontemplate-customresourcedefinition.yaml @@ -0,0 +1,73 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.10.0 + labels: + gatekeeper.sh/system: "yes" + name: expansiontemplate.expansion.gatekeeper.sh +spec: + group: expansion.gatekeeper.sh + names: + kind: ExpansionTemplate + listKind: ExpansionTemplateList + plural: expansiontemplate + singular: expansiontemplate + preserveUnknownFields: false + scope: Cluster + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: ExpansionTemplate is the Schema for the ExpansionTemplate API. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ExpansionTemplateSpec defines the desired state of ExpansionTemplate. + properties: + applyTo: + description: ApplyTo lists the specific groups, versions and kinds of generator resources which will be expanded. + items: + description: ApplyTo determines what GVKs items the mutation should apply to. Globs are not allowed. + properties: + groups: + items: + type: string + type: array + kinds: + items: + type: string + type: array + versions: + items: + type: string + type: array + type: object + type: array + enforcementAction: + description: EnforcementAction specifies the enforcement action to be used for resources matching the ExpansionTemplate. Specifying an empty value will use the enforcement action specified by the Constraint in violation. + type: string + generatedGVK: + description: GeneratedGVK specifies the GVK of the resources which the generator resource creates. + properties: + group: + type: string + kind: + type: string + version: + type: string + type: object + templateSource: + description: TemplateSource specifies the source field on the generator resource to use as the base for expanded resource. For Pod-creating generators, this is usually spec.template + type: string + type: object + type: object + served: true + storage: true diff --git a/charts/community/redhat/redhat-gatekeeper/3.11.0/src/crds/modifyset-customresourcedefinition.yaml b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/crds/modifyset-customresourcedefinition.yaml new file mode 100644 index 000000000..1bb193336 --- /dev/null +++ b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/crds/modifyset-customresourcedefinition.yaml @@ -0,0 +1,676 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.10.0 + labels: + gatekeeper.sh/system: "yes" + name: modifyset.mutations.gatekeeper.sh +spec: + group: mutations.gatekeeper.sh + names: + kind: ModifySet + listKind: ModifySetList + plural: modifyset + singular: modifyset + preserveUnknownFields: false + scope: Cluster + versions: + - name: v1 + schema: + openAPIV3Schema: + description: ModifySet allows the user to modify non-keyed lists, such as the list of arguments to a container. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + properties: + name: + maxLength: 63 + type: string + type: object + spec: + description: ModifySetSpec defines the desired state of ModifySet. + properties: + applyTo: + description: ApplyTo lists the specific groups, versions and kinds a mutation will be applied to. This is necessary because every mutation implies part of an object schema and object schemas are associated with specific GVKs. + items: + description: ApplyTo determines what GVKs items the mutation should apply to. Globs are not allowed. + properties: + groups: + items: + type: string + type: array + kinds: + items: + type: string + type: array + versions: + items: + type: string + type: array + type: object + type: array + location: + description: 'Location describes the path to be mutated, for example: `spec.containers[name: main].args`.' + type: string + match: + description: Match allows the user to limit which resources get mutated. Individual match criteria are AND-ed together. An undefined match criteria matches everything. + properties: + excludedNamespaces: + description: 'ExcludedNamespaces is a list of namespace names. If defined, a constraint only applies to resources not in a listed namespace. ExcludedNamespaces also supports a prefix or suffix based glob. For example, `excludedNamespaces: [kube-*]` matches both `kube-system` and `kube-public`, and `excludedNamespaces: [*-system]` matches both `kube-system` and `gatekeeper-system`.' + items: + description: 'A string that supports globbing at its front or end. Ex: "kube-*" will match "kube-system" or "kube-public", "*-system" will match "kube-system" or "gatekeeper-system". The asterisk is required for wildcard matching.' + pattern: ^(\*|\*-)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\*|-\*)?$ + type: string + type: array + kinds: + items: + description: Kinds accepts a list of objects with apiGroups and kinds fields that list the groups/kinds of objects to which the mutation will apply. If multiple groups/kinds objects are specified, only one match is needed for the resource to be in scope. + properties: + apiGroups: + description: APIGroups is the API groups the resources belong to. '*' is all groups. If '*' is present, the length of the slice must be one. Required. + items: + type: string + type: array + kinds: + items: + type: string + type: array + type: object + type: array + labelSelector: + description: 'LabelSelector is the combination of two optional fields: `matchLabels` and `matchExpressions`. These two fields provide different methods of selecting or excluding k8s objects based on the label keys and values included in object metadata. All selection expressions from both sections are ANDed to determine if an object meets the cumulative requirements of the selector.' + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + name: + description: 'Name is the name of an object. If defined, it will match against objects with the specified name. Name also supports a prefix or suffix glob. For example, `name: pod-*` would match both `pod-a` and `pod-b`, and `name: *-pod` would match both `a-pod` and `b-pod`.' + pattern: ^(\*|\*-)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\*|-\*)?$ + type: string + namespaceSelector: + description: NamespaceSelector is a label selector against an object's containing namespace or the object itself, if the object is a namespace. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + namespaces: + description: 'Namespaces is a list of namespace names. If defined, a constraint only applies to resources in a listed namespace. Namespaces also supports a prefix or suffix based glob. For example, `namespaces: [kube-*]` matches both `kube-system` and `kube-public`, and `namespaces: [*-system]` matches both `kube-system` and `gatekeeper-system`.' + items: + description: 'A string that supports globbing at its front or end. Ex: "kube-*" will match "kube-system" or "kube-public", "*-system" will match "kube-system" or "gatekeeper-system". The asterisk is required for wildcard matching.' + pattern: ^(\*|\*-)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\*|-\*)?$ + type: string + type: array + scope: + description: Scope determines if cluster-scoped and/or namespaced-scoped resources are matched. Accepts `*`, `Cluster`, or `Namespaced`. (defaults to `*`) + type: string + source: + description: Source determines whether generated or original resources are matched. Accepts `Generated`|`Original`|`All` (defaults to `All`). A value of `Generated` will only match generated resources, while `Original` will only match regular resources. + enum: + - All + - Generated + - Original + type: string + type: object + parameters: + description: Parameters define the behavior of the mutator. + properties: + operation: + default: merge + description: Operation describes whether values should be merged in ("merge"), or pruned ("prune"). Default value is "merge" + enum: + - merge + - prune + type: string + pathTests: + description: PathTests are a series of existence tests that can be checked before a mutation is applied + items: + description: "PathTest allows the user to customize how the mutation works if parent paths are missing. It traverses the list in order. All sub paths are tested against the provided condition, if the test fails, the mutation is not applied. All `subPath` entries must be a prefix of `location`. Any glob characters will take on the same value as was used to expand the matching glob in `location`. \n Available Tests: * MustExist - the path must exist or do not mutate * MustNotExist - the path must not exist or do not mutate." + properties: + condition: + description: Condition describes whether the path either MustExist or MustNotExist in the original object + enum: + - MustExist + - MustNotExist + type: string + subPath: + type: string + type: object + type: array + values: + description: Values describes the values provided to the operation as `values.fromList`. + type: object + x-kubernetes-preserve-unknown-fields: true + type: object + type: object + status: + description: ModifySetStatus defines the observed state of ModifySet. + properties: + byPod: + items: + description: MutatorPodStatusStatus defines the observed state of MutatorPodStatus. + properties: + enforced: + type: boolean + errors: + items: + description: MutatorError represents a single error caught while adding a mutator to a system. + properties: + message: + type: string + type: + description: Type indicates a specific class of error for use by controller code. If not present, the error should be treated as not matching any known type. + type: string + required: + - message + type: object + type: array + id: + type: string + mutatorUID: + description: Storing the mutator UID allows us to detect drift, such as when a mutator has been recreated after its CRD was deleted out from under it, interrupting the watch + type: string + observedGeneration: + format: int64 + type: integer + operations: + items: + type: string + type: array + type: object + type: array + type: object + type: object + served: true + storage: true + subresources: + status: {} + - name: v1alpha1 + schema: + openAPIV3Schema: + description: ModifySet allows the user to modify non-keyed lists, such as the list of arguments to a container. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ModifySetSpec defines the desired state of ModifySet. + properties: + applyTo: + description: ApplyTo lists the specific groups, versions and kinds a mutation will be applied to. This is necessary because every mutation implies part of an object schema and object schemas are associated with specific GVKs. + items: + description: ApplyTo determines what GVKs items the mutation should apply to. Globs are not allowed. + properties: + groups: + items: + type: string + type: array + kinds: + items: + type: string + type: array + versions: + items: + type: string + type: array + type: object + type: array + location: + description: 'Location describes the path to be mutated, for example: `spec.containers[name: main].args`.' + type: string + match: + description: Match allows the user to limit which resources get mutated. Individual match criteria are AND-ed together. An undefined match criteria matches everything. + properties: + excludedNamespaces: + description: 'ExcludedNamespaces is a list of namespace names. If defined, a constraint only applies to resources not in a listed namespace. ExcludedNamespaces also supports a prefix or suffix based glob. For example, `excludedNamespaces: [kube-*]` matches both `kube-system` and `kube-public`, and `excludedNamespaces: [*-system]` matches both `kube-system` and `gatekeeper-system`.' + items: + description: 'A string that supports globbing at its front or end. Ex: "kube-*" will match "kube-system" or "kube-public", "*-system" will match "kube-system" or "gatekeeper-system". The asterisk is required for wildcard matching.' + pattern: ^(\*|\*-)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\*|-\*)?$ + type: string + type: array + kinds: + items: + description: Kinds accepts a list of objects with apiGroups and kinds fields that list the groups/kinds of objects to which the mutation will apply. If multiple groups/kinds objects are specified, only one match is needed for the resource to be in scope. + properties: + apiGroups: + description: APIGroups is the API groups the resources belong to. '*' is all groups. If '*' is present, the length of the slice must be one. Required. + items: + type: string + type: array + kinds: + items: + type: string + type: array + type: object + type: array + labelSelector: + description: 'LabelSelector is the combination of two optional fields: `matchLabels` and `matchExpressions`. These two fields provide different methods of selecting or excluding k8s objects based on the label keys and values included in object metadata. All selection expressions from both sections are ANDed to determine if an object meets the cumulative requirements of the selector.' + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + name: + description: 'Name is the name of an object. If defined, it will match against objects with the specified name. Name also supports a prefix or suffix glob. For example, `name: pod-*` would match both `pod-a` and `pod-b`, and `name: *-pod` would match both `a-pod` and `b-pod`.' + pattern: ^(\*|\*-)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\*|-\*)?$ + type: string + namespaceSelector: + description: NamespaceSelector is a label selector against an object's containing namespace or the object itself, if the object is a namespace. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + namespaces: + description: 'Namespaces is a list of namespace names. If defined, a constraint only applies to resources in a listed namespace. Namespaces also supports a prefix or suffix based glob. For example, `namespaces: [kube-*]` matches both `kube-system` and `kube-public`, and `namespaces: [*-system]` matches both `kube-system` and `gatekeeper-system`.' + items: + description: 'A string that supports globbing at its front or end. Ex: "kube-*" will match "kube-system" or "kube-public", "*-system" will match "kube-system" or "gatekeeper-system". The asterisk is required for wildcard matching.' + pattern: ^(\*|\*-)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\*|-\*)?$ + type: string + type: array + scope: + description: Scope determines if cluster-scoped and/or namespaced-scoped resources are matched. Accepts `*`, `Cluster`, or `Namespaced`. (defaults to `*`) + type: string + source: + description: Source determines whether generated or original resources are matched. Accepts `Generated`|`Original`|`All` (defaults to `All`). A value of `Generated` will only match generated resources, while `Original` will only match regular resources. + enum: + - All + - Generated + - Original + type: string + type: object + parameters: + description: Parameters define the behavior of the mutator. + properties: + operation: + default: merge + description: Operation describes whether values should be merged in ("merge"), or pruned ("prune"). Default value is "merge" + enum: + - merge + - prune + type: string + pathTests: + description: PathTests are a series of existence tests that can be checked before a mutation is applied + items: + description: "PathTest allows the user to customize how the mutation works if parent paths are missing. It traverses the list in order. All sub paths are tested against the provided condition, if the test fails, the mutation is not applied. All `subPath` entries must be a prefix of `location`. Any glob characters will take on the same value as was used to expand the matching glob in `location`. \n Available Tests: * MustExist - the path must exist or do not mutate * MustNotExist - the path must not exist or do not mutate." + properties: + condition: + description: Condition describes whether the path either MustExist or MustNotExist in the original object + enum: + - MustExist + - MustNotExist + type: string + subPath: + type: string + type: object + type: array + values: + description: Values describes the values provided to the operation as `values.fromList`. + type: object + x-kubernetes-preserve-unknown-fields: true + type: object + type: object + status: + description: ModifySetStatus defines the observed state of ModifySet. + properties: + byPod: + items: + description: MutatorPodStatusStatus defines the observed state of MutatorPodStatus. + properties: + enforced: + type: boolean + errors: + items: + description: MutatorError represents a single error caught while adding a mutator to a system. + properties: + message: + type: string + type: + description: Type indicates a specific class of error for use by controller code. If not present, the error should be treated as not matching any known type. + type: string + required: + - message + type: object + type: array + id: + type: string + mutatorUID: + description: Storing the mutator UID allows us to detect drift, such as when a mutator has been recreated after its CRD was deleted out from under it, interrupting the watch + type: string + observedGeneration: + format: int64 + type: integer + operations: + items: + type: string + type: array + type: object + type: array + type: object + type: object + served: true + storage: false + subresources: + status: {} + - name: v1beta1 + schema: + openAPIV3Schema: + description: ModifySet allows the user to modify non-keyed lists, such as the list of arguments to a container. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ModifySetSpec defines the desired state of ModifySet. + properties: + applyTo: + description: ApplyTo lists the specific groups, versions and kinds a mutation will be applied to. This is necessary because every mutation implies part of an object schema and object schemas are associated with specific GVKs. + items: + description: ApplyTo determines what GVKs items the mutation should apply to. Globs are not allowed. + properties: + groups: + items: + type: string + type: array + kinds: + items: + type: string + type: array + versions: + items: + type: string + type: array + type: object + type: array + location: + description: 'Location describes the path to be mutated, for example: `spec.containers[name: main].args`.' + type: string + match: + description: Match allows the user to limit which resources get mutated. Individual match criteria are AND-ed together. An undefined match criteria matches everything. + properties: + excludedNamespaces: + description: 'ExcludedNamespaces is a list of namespace names. If defined, a constraint only applies to resources not in a listed namespace. ExcludedNamespaces also supports a prefix or suffix based glob. For example, `excludedNamespaces: [kube-*]` matches both `kube-system` and `kube-public`, and `excludedNamespaces: [*-system]` matches both `kube-system` and `gatekeeper-system`.' + items: + description: 'A string that supports globbing at its front or end. Ex: "kube-*" will match "kube-system" or "kube-public", "*-system" will match "kube-system" or "gatekeeper-system". The asterisk is required for wildcard matching.' + pattern: ^(\*|\*-)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\*|-\*)?$ + type: string + type: array + kinds: + items: + description: Kinds accepts a list of objects with apiGroups and kinds fields that list the groups/kinds of objects to which the mutation will apply. If multiple groups/kinds objects are specified, only one match is needed for the resource to be in scope. + properties: + apiGroups: + description: APIGroups is the API groups the resources belong to. '*' is all groups. If '*' is present, the length of the slice must be one. Required. + items: + type: string + type: array + kinds: + items: + type: string + type: array + type: object + type: array + labelSelector: + description: 'LabelSelector is the combination of two optional fields: `matchLabels` and `matchExpressions`. These two fields provide different methods of selecting or excluding k8s objects based on the label keys and values included in object metadata. All selection expressions from both sections are ANDed to determine if an object meets the cumulative requirements of the selector.' + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + name: + description: 'Name is the name of an object. If defined, it will match against objects with the specified name. Name also supports a prefix or suffix glob. For example, `name: pod-*` would match both `pod-a` and `pod-b`, and `name: *-pod` would match both `a-pod` and `b-pod`.' + pattern: ^(\*|\*-)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\*|-\*)?$ + type: string + namespaceSelector: + description: NamespaceSelector is a label selector against an object's containing namespace or the object itself, if the object is a namespace. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + namespaces: + description: 'Namespaces is a list of namespace names. If defined, a constraint only applies to resources in a listed namespace. Namespaces also supports a prefix or suffix based glob. For example, `namespaces: [kube-*]` matches both `kube-system` and `kube-public`, and `namespaces: [*-system]` matches both `kube-system` and `gatekeeper-system`.' + items: + description: 'A string that supports globbing at its front or end. Ex: "kube-*" will match "kube-system" or "kube-public", "*-system" will match "kube-system" or "gatekeeper-system". The asterisk is required for wildcard matching.' + pattern: ^(\*|\*-)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\*|-\*)?$ + type: string + type: array + scope: + description: Scope determines if cluster-scoped and/or namespaced-scoped resources are matched. Accepts `*`, `Cluster`, or `Namespaced`. (defaults to `*`) + type: string + source: + description: Source determines whether generated or original resources are matched. Accepts `Generated`|`Original`|`All` (defaults to `All`). A value of `Generated` will only match generated resources, while `Original` will only match regular resources. + enum: + - All + - Generated + - Original + type: string + type: object + parameters: + description: Parameters define the behavior of the mutator. + properties: + operation: + default: merge + description: Operation describes whether values should be merged in ("merge"), or pruned ("prune"). Default value is "merge" + enum: + - merge + - prune + type: string + pathTests: + description: PathTests are a series of existence tests that can be checked before a mutation is applied + items: + description: "PathTest allows the user to customize how the mutation works if parent paths are missing. It traverses the list in order. All sub paths are tested against the provided condition, if the test fails, the mutation is not applied. All `subPath` entries must be a prefix of `location`. Any glob characters will take on the same value as was used to expand the matching glob in `location`. \n Available Tests: * MustExist - the path must exist or do not mutate * MustNotExist - the path must not exist or do not mutate." + properties: + condition: + description: Condition describes whether the path either MustExist or MustNotExist in the original object + enum: + - MustExist + - MustNotExist + type: string + subPath: + type: string + type: object + type: array + values: + description: Values describes the values provided to the operation as `values.fromList`. + type: object + x-kubernetes-preserve-unknown-fields: true + type: object + type: object + status: + description: ModifySetStatus defines the observed state of ModifySet. + properties: + byPod: + items: + description: MutatorPodStatusStatus defines the observed state of MutatorPodStatus. + properties: + enforced: + type: boolean + errors: + items: + description: MutatorError represents a single error caught while adding a mutator to a system. + properties: + message: + type: string + type: + description: Type indicates a specific class of error for use by controller code. If not present, the error should be treated as not matching any known type. + type: string + required: + - message + type: object + type: array + id: + type: string + mutatorUID: + description: Storing the mutator UID allows us to detect drift, such as when a mutator has been recreated after its CRD was deleted out from under it, interrupting the watch + type: string + observedGeneration: + format: int64 + type: integer + operations: + items: + type: string + type: array + type: object + type: array + type: object + type: object + served: true + storage: false + subresources: + status: {} diff --git a/charts/community/redhat/redhat-gatekeeper/3.11.0/src/crds/mutatorpodstatus-customresourcedefinition.yaml b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/crds/mutatorpodstatus-customresourcedefinition.yaml new file mode 100644 index 000000000..fd6a0f6de --- /dev/null +++ b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/crds/mutatorpodstatus-customresourcedefinition.yaml @@ -0,0 +1,65 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.10.0 + labels: + gatekeeper.sh/system: "yes" + name: mutatorpodstatuses.status.gatekeeper.sh +spec: + group: status.gatekeeper.sh + names: + kind: MutatorPodStatus + listKind: MutatorPodStatusList + plural: mutatorpodstatuses + singular: mutatorpodstatus + preserveUnknownFields: false + scope: Namespaced + versions: + - name: v1beta1 + schema: + openAPIV3Schema: + description: MutatorPodStatus is the Schema for the mutationpodstatuses API. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + status: + description: MutatorPodStatusStatus defines the observed state of MutatorPodStatus. + properties: + enforced: + type: boolean + errors: + items: + description: MutatorError represents a single error caught while adding a mutator to a system. + properties: + message: + type: string + type: + description: Type indicates a specific class of error for use by controller code. If not present, the error should be treated as not matching any known type. + type: string + required: + - message + type: object + type: array + id: + type: string + mutatorUID: + description: Storing the mutator UID allows us to detect drift, such as when a mutator has been recreated after its CRD was deleted out from under it, interrupting the watch + type: string + observedGeneration: + format: int64 + type: integer + operations: + items: + type: string + type: array + type: object + type: object + served: true + storage: true diff --git a/charts/community/redhat/redhat-gatekeeper/3.11.0/src/crds/provider-customresourcedefinition.yaml b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/crds/provider-customresourcedefinition.yaml new file mode 100644 index 000000000..0deb6f630 --- /dev/null +++ b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/crds/provider-customresourcedefinition.yaml @@ -0,0 +1,78 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.10.0 + labels: + gatekeeper.sh/system: "yes" + name: providers.externaldata.gatekeeper.sh +spec: + group: externaldata.gatekeeper.sh + names: + kind: Provider + listKind: ProviderList + plural: providers + singular: provider + preserveUnknownFields: false + scope: Cluster + versions: + - deprecated: true + deprecationWarning: externaldata.gatekeeper.sh/v1alpha1 is deprecated. Use externaldata.gatekeeper.sh/v1beta1 instead. + name: v1alpha1 + schema: + openAPIV3Schema: + description: Provider is the Schema for the Provider API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: Spec defines the Provider specifications. + properties: + caBundle: + description: CABundle is a base64-encoded string that contains the TLS CA bundle in PEM format. It is used to verify the signature of the provider's certificate. + type: string + timeout: + description: Timeout is the timeout when querying the provider. + type: integer + url: + description: URL is the url for the provider. URL is prefixed with http:// or https://. + type: string + type: object + type: object + served: true + storage: true + - name: v1beta1 + schema: + openAPIV3Schema: + description: Provider is the Schema for the providers API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: Spec defines the Provider specifications. + properties: + caBundle: + description: CABundle is a base64-encoded string that contains the TLS CA bundle in PEM format. It is used to verify the signature of the provider's certificate. + type: string + timeout: + description: Timeout is the timeout when querying the provider. + type: integer + url: + description: URL is the url for the provider. URL is prefixed with http:// or https://. + type: string + type: object + type: object + served: true + storage: false diff --git a/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/_helpers.tpl b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/_helpers.tpl new file mode 100644 index 000000000..8898e0df7 --- /dev/null +++ b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/_helpers.tpl @@ -0,0 +1,90 @@ + +{{/* +Expand the name of the chart. +*/}} +{{- define "gatekeeper.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "gatekeeper.fullname" -}} +{{- if .Values.fullnameOverride -}} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- $name := default .Chart.Name .Values.nameOverride -}} +{{- if contains $name .Release.Name -}} +{{- .Release.Name | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} +{{- end -}} +{{- end -}} +{{- end -}} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "gatekeeper.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Adds additional pod labels to the common ones +*/}} +{{- define "gatekeeper.podLabels" -}} +{{- if .Values.podLabels }} +{{- toYaml .Values.podLabels | nindent 8 }} +{{- end }} +{{- end -}} + +{{/* +Output post install webhook probe container entry +*/}} +{{- define "gatekeeper.postInstallWebhookProbeContainer" -}} +- name: webhook-probe-post + image: "{{ .Values.postInstall.probeWebhook.image.repository }}:{{ .Values.postInstall.probeWebhook.image.tag }}" + imagePullPolicy: {{ .Values.postInstall.probeWebhook.image.pullPolicy }} + command: + - "/bin/curl" + args: + - "--retry" + - "99999" + - "--retry-max-time" + - "{{ .Values.postInstall.probeWebhook.waitTimeout }}" + - "--retry-delay" + - "1" + - "--max-time" + - "{{ .Values.postInstall.probeWebhook.httpTimeout }}" + {{- if .Values.postInstall.probeWebhook.insecureHTTPS }} + - "--insecure" + {{- else }} + - "--cacert" + - /certs/ca.crt + {{- end }} + - "-v" + - "https://gatekeeper-webhook-service.{{ .Release.Namespace }}.svc/v1/admitlabel?timeout=2s" + resources: + {{- toYaml .Values.postInstall.resources | nindent 4 }} + securityContext: + {{- if .Values.enableRuntimeDefaultSeccompProfile }} + seccompProfile: + type: RuntimeDefault + {{- end }} + {{- toYaml .Values.postInstall.securityContext | nindent 4 }} + volumeMounts: + - mountPath: /certs + name: cert + readOnly: true +{{- end -}} + +{{/* +Output post install webhook probe volume entry +*/}} +{{- define "gatekeeper.postInstallWebhookProbeVolume" -}} +- name: cert + secret: + secretName: {{ .Values.externalCertInjection.secretName }} +{{- end -}} diff --git a/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/gatekeeper-admin-podsecuritypolicy.yaml b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/gatekeeper-admin-podsecuritypolicy.yaml new file mode 100644 index 000000000..398b14600 --- /dev/null +++ b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/gatekeeper-admin-podsecuritypolicy.yaml @@ -0,0 +1,38 @@ +{{- if and .Values.psp.enabled (.Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy") }} +apiVersion: policy/v1beta1 +kind: PodSecurityPolicy +metadata: + annotations: + seccomp.security.alpha.kubernetes.io/allowedProfileNames: '*' + labels: + app: '{{ template "gatekeeper.name" . }}' + chart: '{{ template "gatekeeper.name" . }}' + gatekeeper.sh/system: "yes" + heritage: '{{ .Release.Service }}' + release: '{{ .Release.Name }}' + name: gatekeeper-admin +spec: + allowPrivilegeEscalation: false + fsGroup: + ranges: + - max: 65535 + min: 1 + rule: MustRunAs + requiredDropCapabilities: + - ALL + runAsUser: + rule: MustRunAsNonRoot + seLinux: + rule: RunAsAny + supplementalGroups: + ranges: + - max: 65535 + min: 1 + rule: MustRunAs + volumes: + - configMap + - projected + - secret + - downwardAPI + - emptyDir +{{- end }} diff --git a/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/gatekeeper-admin-serviceaccount.yaml b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/gatekeeper-admin-serviceaccount.yaml new file mode 100644 index 000000000..4b68998cb --- /dev/null +++ b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/gatekeeper-admin-serviceaccount.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + labels: + app: '{{ template "gatekeeper.name" . }}' + chart: '{{ template "gatekeeper.name" . }}' + gatekeeper.sh/system: "yes" + heritage: '{{ .Release.Service }}' + release: '{{ .Release.Name }}' + name: gatekeeper-admin + namespace: '{{ .Release.Namespace }}' diff --git a/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/gatekeeper-audit-deployment.yaml b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/gatekeeper-audit-deployment.yaml new file mode 100644 index 000000000..e11ad7487 --- /dev/null +++ b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/gatekeeper-audit-deployment.yaml @@ -0,0 +1,149 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: '{{ template "gatekeeper.name" . }}' + chart: '{{ template "gatekeeper.name" . }}' + control-plane: audit-controller + gatekeeper.sh/operation: audit + gatekeeper.sh/system: "yes" + heritage: '{{ .Release.Service }}' + release: '{{ .Release.Name }}' + name: gatekeeper-audit + namespace: '{{ .Release.Namespace }}' +spec: + replicas: 1 + selector: + matchLabels: + app: '{{ template "gatekeeper.name" . }}' + chart: '{{ template "gatekeeper.name" . }}' + control-plane: audit-controller + gatekeeper.sh/operation: audit + gatekeeper.sh/system: "yes" + heritage: '{{ .Release.Service }}' + release: '{{ .Release.Name }}' + template: + metadata: + annotations: + {{- if .Values.podAnnotations }} + {{- toYaml .Values.podAnnotations | trim | nindent 8 }} + {{- end }} + labels: +{{- include "gatekeeper.podLabels" . }} + app: '{{ template "gatekeeper.name" . }}' + chart: '{{ template "gatekeeper.name" . }}' + control-plane: audit-controller + gatekeeper.sh/operation: audit + gatekeeper.sh/system: "yes" + heritage: '{{ .Release.Service }}' + release: '{{ .Release.Name }}' + spec: + affinity: + {{- toYaml .Values.audit.affinity | nindent 8 }} + automountServiceAccountToken: true + containers: + - {{- if .Values.image.release }} + image: {{ .Values.image.repository }}:{{ .Values.image.release }} + {{- else }} + image: {{ .Values.image.repository }} + {{- end }} + args: + - --audit-interval={{ .Values.auditInterval }} + - --log-level={{ .Values.logLevel }} + - --constraint-violations-limit={{ .Values.constraintViolationsLimit }} + - --audit-from-cache={{ .Values.auditFromCache }} + - --audit-chunk-size={{ .Values.auditChunkSize }} + - --audit-match-kind-only={{ .Values.auditMatchKindOnly }} + - --emit-audit-events={{ .Values.emitAuditEvents }} + - --operation=audit + - --operation=status + {{ if not .Values.disableMutation}}- --operation=mutation-status{{- end }} + - --logtostderr + - --health-addr=:{{ .Values.audit.healthPort }} + - --prometheus-port={{ .Values.audit.metricsPort }} + - --enable-external-data={{ .Values.enableExternalData }} + - --enable-generator-resource-expansion={{ .Values.enableGeneratorResourceExpansion }} + + {{- range .Values.metricsBackends}} + - --metrics-backend={{ . }} + {{- end }} + - --disable-cert-rotation={{ or .Values.audit.disableCertRotation .Values.externalCertInjection.enabled }} + command: + - /manager + env: + - name: POD_NAMESPACE + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.namespace + - name: POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: NAMESPACE + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.namespace + - name: CONTAINER_NAME + value: manager + imagePullPolicy: '{{ .Values.image.pullPolicy }}' + livenessProbe: + httpGet: + path: /healthz + port: {{ .Values.audit.healthPort }} + timeoutSeconds: {{ .Values.audit.livenessTimeout }} + name: manager + ports: + - containerPort: {{ .Values.audit.metricsPort }} + name: metrics + protocol: TCP + - containerPort: {{ .Values.audit.healthPort }} + name: healthz + protocol: TCP + readinessProbe: + httpGet: + path: /readyz + port: {{ .Values.audit.healthPort }} + timeoutSeconds: {{ .Values.audit.readinessTimeout }} + resources: + {{- toYaml .Values.audit.resources | nindent 10 }} + securityContext: + {{- if .Values.enableRuntimeDefaultSeccompProfile }} + seccompProfile: + type: RuntimeDefault + {{- end }} + {{- toYaml .Values.audit.securityContext | nindent 10}} + volumeMounts: + - mountPath: /certs + name: cert + readOnly: true + - mountPath: /tmp/audit + name: tmp-volume + dnsPolicy: {{ .Values.audit.dnsPolicy }} + hostNetwork: {{ .Values.audit.hostNetwork }} + imagePullSecrets: + {{- toYaml .Values.image.pullSecrets | nindent 8 }} + nodeSelector: + {{- toYaml .Values.audit.nodeSelector | nindent 8 }} + {{- if .Values.audit.priorityClassName }} + priorityClassName: {{ .Values.audit.priorityClassName }} + {{- end }} + securityContext: + {{- toYaml .Values.audit.podSecurityContext | nindent 8 }} + serviceAccountName: gatekeeper-admin + terminationGracePeriodSeconds: 60 + tolerations: + {{- toYaml .Values.audit.tolerations | nindent 8 }} + volumes: + - name: cert + secret: + defaultMode: 420 + secretName: gatekeeper-webhook-server-cert + {{- if .Values.audit.writeToRAMDisk }} + - emptyDir: + medium: Memory + {{ else }} + - emptyDir: {} + {{- end }} + name: tmp-volume diff --git a/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/gatekeeper-controller-manager-deployment.yaml b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/gatekeeper-controller-manager-deployment.yaml new file mode 100644 index 000000000..0ac934b00 --- /dev/null +++ b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/gatekeeper-controller-manager-deployment.yaml @@ -0,0 +1,160 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: '{{ template "gatekeeper.name" . }}' + chart: '{{ template "gatekeeper.name" . }}' + control-plane: controller-manager + gatekeeper.sh/operation: webhook + gatekeeper.sh/system: "yes" + heritage: '{{ .Release.Service }}' + release: '{{ .Release.Name }}' + name: gatekeeper-controller-manager + namespace: '{{ .Release.Namespace }}' +spec: + replicas: {{ .Values.replicas }} + selector: + matchLabels: + app: '{{ template "gatekeeper.name" . }}' + chart: '{{ template "gatekeeper.name" . }}' + control-plane: controller-manager + gatekeeper.sh/operation: webhook + gatekeeper.sh/system: "yes" + heritage: '{{ .Release.Service }}' + release: '{{ .Release.Name }}' + template: + metadata: + annotations: + {{- if .Values.podAnnotations }} + {{- toYaml .Values.podAnnotations | trim | nindent 8 }} + {{- end }} + labels: +{{- include "gatekeeper.podLabels" . }} + app: '{{ template "gatekeeper.name" . }}' + chart: '{{ template "gatekeeper.name" . }}' + control-plane: controller-manager + gatekeeper.sh/operation: webhook + gatekeeper.sh/system: "yes" + heritage: '{{ .Release.Service }}' + release: '{{ .Release.Name }}' + spec: + affinity: + {{- toYaml .Values.controllerManager.affinity | nindent 8 }} + automountServiceAccountToken: true + containers: + - {{- if .Values.image.release }} + image: {{ .Values.image.repository }}:{{ .Values.image.release }} + {{- else }} + image: {{ .Values.image.repository }} + {{- end }} + args: + - --port={{ .Values.controllerManager.port }} + - --health-addr=:{{ .Values.controllerManager.healthPort }} + - --prometheus-port={{ .Values.controllerManager.metricsPort }} + - --logtostderr + - --log-denies={{ .Values.logDenies }} + - --emit-admission-events={{ .Values.emitAdmissionEvents }} + - --log-level={{ .Values.logLevel }} + - --exempt-namespace={{ .Release.Namespace }} + - --operation=webhook + - --enable-external-data={{ .Values.enableExternalData }} + - --enable-generator-resource-expansion={{ .Values.enableGeneratorResourceExpansion }} + - --log-mutations={{ .Values.logMutations }} + - --mutation-annotations={{ .Values.mutationAnnotations }} + - --disable-cert-rotation={{ .Values.controllerManager.disableCertRotation }} + - --max-serving-threads={{ .Values.maxServingThreads }} + - --tls-min-version={{ .Values.controllerManager.tlsMinVersion }} + {{ if ne .Values.controllerManager.clientCertName "" }}- --client-cert-name={{ .Values.controllerManager.clientCertName }}{{- end }} + + {{- range .Values.metricsBackends}} + - --metrics-backend={{ . }} + {{- end }} + {{ if .Values.enableTLSHealthcheck}}- --enable-tls-healthcheck{{- end }} + {{ if not .Values.disableMutation}}- --operation=mutation-webhook{{- end }} + + {{- range .Values.disabledBuiltins}} + - --disable-opa-builtin={{ . }} + {{- end }} + + {{- range .Values.controllerManager.exemptNamespaces}} + - --exempt-namespace={{ . }} + {{- end }} + + {{- range .Values.controllerManager.exemptNamespacePrefixes}} + - --exempt-namespace-prefix={{ . }} + {{- end }} + command: + - /manager + env: + - name: POD_NAMESPACE + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.namespace + - name: POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: NAMESPACE + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.namespace + - name: CONTAINER_NAME + value: manager + imagePullPolicy: '{{ .Values.image.pullPolicy }}' + livenessProbe: + httpGet: + path: /healthz + port: {{ .Values.controllerManager.healthPort }} + timeoutSeconds: {{ .Values.controllerManager.livenessTimeout }} + name: manager + ports: + - containerPort: {{ .Values.controllerManager.port }} + name: webhook-server + protocol: TCP + - containerPort: {{ .Values.controllerManager.metricsPort }} + name: metrics + protocol: TCP + - containerPort: {{ .Values.controllerManager.healthPort }} + name: healthz + protocol: TCP + readinessProbe: + httpGet: + path: /readyz + port: {{ .Values.controllerManager.healthPort }} + timeoutSeconds: {{ .Values.controllerManager.readinessTimeout }} + resources: + {{- toYaml .Values.controllerManager.resources | nindent 10 }} + securityContext: + {{- if .Values.enableRuntimeDefaultSeccompProfile }} + seccompProfile: + type: RuntimeDefault + {{- end }} + {{- toYaml .Values.controllerManager.securityContext | nindent 10}} + volumeMounts: + - mountPath: /certs + name: cert + readOnly: true + dnsPolicy: {{ .Values.controllerManager.dnsPolicy }} + hostNetwork: {{ .Values.controllerManager.hostNetwork }} + imagePullSecrets: + {{- toYaml .Values.image.pullSecrets | nindent 8 }} + nodeSelector: + {{- toYaml .Values.controllerManager.nodeSelector | nindent 8 }} + {{- if .Values.controllerManager.priorityClassName }} + priorityClassName: {{ .Values.controllerManager.priorityClassName }} + {{- end }} + securityContext: + {{- toYaml .Values.controllerManager.podSecurityContext | nindent 8 }} + serviceAccountName: gatekeeper-admin + terminationGracePeriodSeconds: 60 + tolerations: + {{- toYaml .Values.controllerManager.tolerations | nindent 8 }} + topologySpreadConstraints: + {{- toYaml .Values.controllerManager.topologySpreadConstraints | nindent 8 }} + volumes: + - name: cert + secret: + defaultMode: 420 + secretName: gatekeeper-webhook-server-cert diff --git a/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/gatekeeper-controller-manager-poddisruptionbudget.yaml b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/gatekeeper-controller-manager-poddisruptionbudget.yaml new file mode 100644 index 000000000..424f6a67c --- /dev/null +++ b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/gatekeeper-controller-manager-poddisruptionbudget.yaml @@ -0,0 +1,24 @@ +{{- $v1 := .Capabilities.APIVersions.Has "policy/v1/PodDisruptionBudget" -}} +{{- $v1beta1 := .Capabilities.APIVersions.Has "policy/v1beta1/PodDisruptionBudget" -}} +apiVersion: policy/v1{{- if and (not $v1) $v1beta1 -}}beta1{{- end }} +kind: PodDisruptionBudget +metadata: + labels: + app: '{{ template "gatekeeper.name" . }}' + chart: '{{ template "gatekeeper.name" . }}' + gatekeeper.sh/system: "yes" + heritage: '{{ .Release.Service }}' + release: '{{ .Release.Name }}' + name: gatekeeper-controller-manager + namespace: '{{ .Release.Namespace }}' +spec: + minAvailable: {{ .Values.pdb.controllerManager.minAvailable }} + selector: + matchLabels: + app: '{{ template "gatekeeper.name" . }}' + chart: '{{ template "gatekeeper.name" . }}' + control-plane: controller-manager + gatekeeper.sh/operation: webhook + gatekeeper.sh/system: "yes" + heritage: '{{ .Release.Service }}' + release: '{{ .Release.Name }}' diff --git a/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/gatekeeper-critical-pods-resourcequota.yaml b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/gatekeeper-critical-pods-resourcequota.yaml new file mode 100644 index 000000000..154646366 --- /dev/null +++ b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/gatekeeper-critical-pods-resourcequota.yaml @@ -0,0 +1,23 @@ +{{- if .Values.resourceQuota }} +apiVersion: v1 +kind: ResourceQuota +metadata: + labels: + app: '{{ template "gatekeeper.name" . }}' + chart: '{{ template "gatekeeper.name" . }}' + gatekeeper.sh/system: "yes" + heritage: '{{ .Release.Service }}' + release: '{{ .Release.Name }}' + name: gatekeeper-critical-pods + namespace: '{{ .Release.Namespace }}' +spec: + hard: + pods: {{ .Values.podCountLimit }} + scopeSelector: + matchExpressions: + - operator: In + scopeName: PriorityClass + values: + - {{ .Values.controllerManager.priorityClassName }} + - {{ .Values.audit.priorityClassName }} +{{- end }} diff --git a/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/gatekeeper-manager-role-clusterrole.yaml b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/gatekeeper-manager-role-clusterrole.yaml new file mode 100644 index 000000000..8b32f9601 --- /dev/null +++ b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/gatekeeper-manager-role-clusterrole.yaml @@ -0,0 +1,167 @@ +{{- if .Values.rbac.create }} +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + creationTimestamp: null + labels: + app: '{{ template "gatekeeper.name" . }}' + chart: '{{ template "gatekeeper.name" . }}' + gatekeeper.sh/system: "yes" + heritage: '{{ .Release.Service }}' + release: '{{ .Release.Name }}' + name: gatekeeper-manager-role +rules: +- apiGroups: + - '*' + resources: + - '*' + verbs: + - get + - list + - watch +- apiGroups: + - admissionregistration.k8s.io + resourceNames: + - gatekeeper-mutating-webhook-configuration + resources: + - mutatingwebhookconfigurations + verbs: + - get + - list + - patch + - update + - watch +- apiGroups: + - apiextensions.k8s.io + resources: + - customresourcedefinitions + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - config.gatekeeper.sh + resources: + - configs + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - config.gatekeeper.sh + resources: + - configs/status + verbs: + - get + - patch + - update +- apiGroups: + - constraints.gatekeeper.sh + resources: + - '*' + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - externaldata.gatekeeper.sh + resources: + - providers + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - mutations.gatekeeper.sh + resources: + - '*' + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +{{- if and .Values.psp.enabled (.Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy") }} +- apiGroups: + - policy + resourceNames: + - gatekeeper-admin + resources: + - podsecuritypolicies + verbs: + - use +{{- end }} +- apiGroups: + - status.gatekeeper.sh + resources: + - '*' + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - templates.gatekeeper.sh + resources: + - constrainttemplates + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - templates.gatekeeper.sh + resources: + - constrainttemplates/finalizers + verbs: + - delete + - get + - patch + - update +- apiGroups: + - templates.gatekeeper.sh + resources: + - constrainttemplates/status + verbs: + - get + - patch + - update +- apiGroups: + - admissionregistration.k8s.io + resourceNames: + - gatekeeper-validating-webhook-configuration + resources: + - validatingwebhookconfigurations + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +{{- end }} diff --git a/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/gatekeeper-manager-role-role.yaml b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/gatekeeper-manager-role-role.yaml new file mode 100644 index 000000000..1018dcdb6 --- /dev/null +++ b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/gatekeeper-manager-role-role.yaml @@ -0,0 +1,37 @@ +{{- if .Values.rbac.create }} +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + creationTimestamp: null + labels: + app: '{{ template "gatekeeper.name" . }}' + chart: '{{ template "gatekeeper.name" . }}' + gatekeeper.sh/system: "yes" + heritage: '{{ .Release.Service }}' + release: '{{ .Release.Name }}' + name: gatekeeper-manager-role + namespace: '{{ .Release.Namespace }}' +rules: +- apiGroups: + - "" + resources: + - events + verbs: + - create + - patch +- apiGroups: + - "" + resources: + - secrets + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +{{- with .Values.controllerManager.extraRules }} + {{- toYaml . | nindent 0 }} +{{- end }} +{{- end }} diff --git a/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/gatekeeper-manager-rolebinding-clusterrolebinding.yaml b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/gatekeeper-manager-rolebinding-clusterrolebinding.yaml new file mode 100644 index 000000000..1fb9f6c87 --- /dev/null +++ b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/gatekeeper-manager-rolebinding-clusterrolebinding.yaml @@ -0,0 +1,20 @@ +{{- if .Values.rbac.create }} +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + labels: + app: '{{ template "gatekeeper.name" . }}' + chart: '{{ template "gatekeeper.name" . }}' + gatekeeper.sh/system: "yes" + heritage: '{{ .Release.Service }}' + release: '{{ .Release.Name }}' + name: gatekeeper-manager-rolebinding +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: gatekeeper-manager-role +subjects: +- kind: ServiceAccount + name: gatekeeper-admin + namespace: '{{ .Release.Namespace }}' +{{- end }} diff --git a/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/gatekeeper-manager-rolebinding-rolebinding.yaml b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/gatekeeper-manager-rolebinding-rolebinding.yaml new file mode 100644 index 000000000..fbe9580d5 --- /dev/null +++ b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/gatekeeper-manager-rolebinding-rolebinding.yaml @@ -0,0 +1,21 @@ +{{- if .Values.rbac.create }} +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + labels: + app: '{{ template "gatekeeper.name" . }}' + chart: '{{ template "gatekeeper.name" . }}' + gatekeeper.sh/system: "yes" + heritage: '{{ .Release.Service }}' + release: '{{ .Release.Name }}' + name: gatekeeper-manager-rolebinding + namespace: '{{ .Release.Namespace }}' +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: gatekeeper-manager-role +subjects: +- kind: ServiceAccount + name: gatekeeper-admin + namespace: '{{ .Release.Namespace }}' +{{- end }} diff --git a/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/gatekeeper-mutating-webhook-configuration-mutatingwebhookconfiguration.yaml b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/gatekeeper-mutating-webhook-configuration-mutatingwebhookconfiguration.yaml new file mode 100644 index 000000000..30a23b4fb --- /dev/null +++ b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/gatekeeper-mutating-webhook-configuration-mutatingwebhookconfiguration.yaml @@ -0,0 +1,60 @@ +{{- if not .Values.disableMutation }} +apiVersion: admissionregistration.k8s.io/v1 +kind: MutatingWebhookConfiguration +metadata: + annotations: {{- toYaml .Values.mutatingWebhookAnnotations | trim | nindent 4 }} + labels: + app: '{{ template "gatekeeper.name" . }}' + chart: '{{ template "gatekeeper.name" . }}' + gatekeeper.sh/system: "yes" + heritage: '{{ .Release.Service }}' + release: '{{ .Release.Name }}' + name: gatekeeper-mutating-webhook-configuration +webhooks: +- admissionReviewVersions: + - v1 + - v1beta1 + clientConfig: + service: + name: gatekeeper-webhook-service + namespace: '{{ .Release.Namespace }}' + path: /v1/mutate + failurePolicy: {{ .Values.mutatingWebhookFailurePolicy }} + matchPolicy: Exact + name: mutation.gatekeeper.sh + namespaceSelector: + matchExpressions: + - key: admission.gatekeeper.sh/ignore + operator: DoesNotExist + - key: kubernetes.io/metadata.name + operator: NotIn + values: + - {{ .Release.Namespace }} + + {{- range $key, $value := .Values.mutatingWebhookExemptNamespacesLabels}} + - key: {{ $key }} + operator: NotIn + values: + {{- range $value }} + - {{ . }} + {{- end }} + {{- end }} + objectSelector: {{ toYaml .Values.mutatingWebhookObjectSelector }} + reinvocationPolicy: {{ .Values.mutatingWebhookReinvocationPolicy }} + rules: + {{- if .Values.mutatingWebhookCustomRules }} + {{- toYaml .Values.mutatingWebhookCustomRules | nindent 2 }} + {{- else }} + - apiGroups: + - '*' + apiVersions: + - '*' + operations: + - CREATE + - UPDATE + resources: + - '*' + {{- end }} + sideEffects: None + timeoutSeconds: {{ .Values.mutatingWebhookTimeoutSeconds }} +{{- end }} diff --git a/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/gatekeeper-validating-webhook-configuration-validatingwebhookconfiguration.yaml b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/gatekeeper-validating-webhook-configuration-validatingwebhookconfiguration.yaml new file mode 100644 index 000000000..a51dcef6b --- /dev/null +++ b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/gatekeeper-validating-webhook-configuration-validatingwebhookconfiguration.yaml @@ -0,0 +1,109 @@ +{{- if not .Values.disableValidatingWebhook }} +apiVersion: admissionregistration.k8s.io/v1 +kind: ValidatingWebhookConfiguration +metadata: + annotations: {{- toYaml .Values.validatingWebhookAnnotations | trim | nindent 4 }} + labels: + app: '{{ template "gatekeeper.name" . }}' + chart: '{{ template "gatekeeper.name" . }}' + gatekeeper.sh/system: "yes" + heritage: '{{ .Release.Service }}' + release: '{{ .Release.Name }}' + name: gatekeeper-validating-webhook-configuration +webhooks: +- admissionReviewVersions: + - v1 + - v1beta1 + clientConfig: + service: + name: gatekeeper-webhook-service + namespace: '{{ .Release.Namespace }}' + path: /v1/admit + failurePolicy: {{ .Values.validatingWebhookFailurePolicy }} + matchPolicy: Exact + name: validation.gatekeeper.sh + namespaceSelector: + matchExpressions: + - key: admission.gatekeeper.sh/ignore + operator: DoesNotExist + - key: kubernetes.io/metadata.name + operator: NotIn + values: + - {{ .Release.Namespace }} + + {{- range $key, $value := .Values.validatingWebhookExemptNamespacesLabels}} + - key: {{ $key }} + operator: NotIn + values: + {{- range $value }} + - {{ . }} + {{- end }} + {{- end }} + objectSelector: {{ toYaml .Values.validatingWebhookObjectSelector }} + rules: + {{- if .Values.validatingWebhookCustomRules }} + {{- toYaml .Values.validatingWebhookCustomRules | nindent 2 }} + {{- else }} + - apiGroups: + - '*' + apiVersions: + - '*' + operations: + - CREATE + - UPDATE + {{- if .Values.enableDeleteOperations }} + - DELETE + {{- end }} + resources: + - '*' + # Explicitly list all known subresources except "status" (to avoid destabilizing the cluster and increasing load on gatekeeper). + # You can find a rough list of subresources by doing a case-sensitive search in the Kubernetes codebase for 'Subresource("' + - 'pods/ephemeralcontainers' + - 'pods/exec' + - 'pods/log' + - 'pods/eviction' + - 'pods/portforward' + - 'pods/proxy' + - 'pods/attach' + - 'pods/binding' + - 'deployments/scale' + - 'replicasets/scale' + - 'statefulsets/scale' + - 'replicationcontrollers/scale' + - 'services/proxy' + - 'nodes/proxy' + # For constraints that mitigate CVE-2020-8554 + - 'services/status' + {{- end }} + sideEffects: None + timeoutSeconds: {{ .Values.validatingWebhookTimeoutSeconds }} +- admissionReviewVersions: + - v1 + - v1beta1 + clientConfig: + service: + name: gatekeeper-webhook-service + namespace: '{{ .Release.Namespace }}' + path: /v1/admitlabel + failurePolicy: {{ .Values.validatingWebhookCheckIgnoreFailurePolicy }} + matchPolicy: Exact + name: check-ignore-label.gatekeeper.sh + namespaceSelector: + matchExpressions: + - key: kubernetes.io/metadata.name + operator: NotIn + values: + - {{ .Release.Namespace }} + rules: + - apiGroups: + - "" + apiVersions: + - '*' + operations: + - CREATE + - UPDATE + resources: + - namespaces + sideEffects: None + timeoutSeconds: {{ .Values.validatingWebhookTimeoutSeconds }} +{{- end }} diff --git a/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/gatekeeper-webhook-server-cert-secret.yaml b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/gatekeeper-webhook-server-cert-secret.yaml new file mode 100644 index 000000000..a841780a5 --- /dev/null +++ b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/gatekeeper-webhook-server-cert-secret.yaml @@ -0,0 +1,14 @@ +{{- if not .Values.externalCertInjection.enabled }} +apiVersion: v1 +kind: Secret +metadata: + annotations: {{- toYaml .Values.secretAnnotations | trim | nindent 4 }} + labels: + app: '{{ template "gatekeeper.name" . }}' + chart: '{{ template "gatekeeper.name" . }}' + gatekeeper.sh/system: "yes" + heritage: '{{ .Release.Service }}' + release: '{{ .Release.Name }}' + name: gatekeeper-webhook-server-cert + namespace: '{{ .Release.Namespace }}' +{{- end }} diff --git a/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/gatekeeper-webhook-service-service.yaml b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/gatekeeper-webhook-service-service.yaml new file mode 100644 index 000000000..3c0f4453a --- /dev/null +++ b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/gatekeeper-webhook-service-service.yaml @@ -0,0 +1,38 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + app: '{{ template "gatekeeper.name" . }}' + chart: '{{ template "gatekeeper.name" . }}' + gatekeeper.sh/system: "yes" + heritage: '{{ .Release.Service }}' + release: '{{ .Release.Name }}' + name: gatekeeper-webhook-service + namespace: '{{ .Release.Namespace }}' +spec: + + ports: + - name: https-webhook-server + port: 443 + targetPort: webhook-server +{{- if .Values.service }} +{{- if .Values.service.healthzPort }} + - name: http-webhook-healthz + port: {{ .Values.service.healthzPort }} + targetPort: healthz + {{- end }} + {{- end }} + {{- if .Values.service }} + type: {{ .Values.service.type | default "ClusterIP" }} + {{- if .Values.service.loadBalancerIP }} + loadBalancerIP: {{ .Values.service.loadBalancerIP }} + {{- end }} + {{- end }} + selector: + app: '{{ template "gatekeeper.name" . }}' + chart: '{{ template "gatekeeper.name" . }}' + control-plane: controller-manager + gatekeeper.sh/operation: webhook + gatekeeper.sh/system: "yes" + heritage: '{{ .Release.Service }}' + release: '{{ .Release.Name }}' diff --git a/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/namespace-post-install.yaml b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/namespace-post-install.yaml new file mode 100644 index 000000000..4f3a9920c --- /dev/null +++ b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/namespace-post-install.yaml @@ -0,0 +1,156 @@ +{{- if .Values.postInstall.labelNamespace.enabled }} +apiVersion: batch/v1 +kind: Job +metadata: + name: gatekeeper-update-namespace-label + labels: + app: '{{ template "gatekeeper.name" . }}' + chart: '{{ template "gatekeeper.name" . }}' + gatekeeper.sh/system: "yes" + heritage: '{{ .Release.Service }}' + release: '{{ .Release.Name }}' + annotations: + "helm.sh/hook": post-install + "helm.sh/hook-weight": "-5" + "helm.sh/hook-delete-policy": hook-succeeded,before-hook-creation +spec: + template: + metadata: + annotations: + {{- toYaml .Values.podAnnotations | trim | nindent 8 }} + labels: + {{- include "gatekeeper.podLabels" . }} + app: '{{ template "gatekeeper.name" . }}' + chart: '{{ template "gatekeeper.name" . }}' + gatekeeper.sh/system: "yes" + heritage: '{{ .Release.Service }}' + release: '{{ .Release.Name }}' + spec: + restartPolicy: OnFailure + {{- if .Values.postInstall.labelNamespace.image.pullSecrets }} + imagePullSecrets: + {{- .Values.postInstall.labelNamespace.image.pullSecrets | toYaml | nindent 12 }} + {{- end }} + serviceAccount: gatekeeper-update-namespace-label + {{- if .Values.postInstall.probeWebhook.enabled }} + volumes: + {{- include "gatekeeper.postInstallWebhookProbeVolume" . | nindent 8 }} + initContainers: + {{- include "gatekeeper.postInstallWebhookProbeContainer" . | nindent 8 }} + {{- end }} + containers: + - name: kubectl-label + image: "{{ .Values.postInstall.labelNamespace.image.repository }}:{{ .Values.postInstall.labelNamespace.image.tag }}" + imagePullPolicy: {{ .Values.postInstall.labelNamespace.image.pullPolicy }} + args: + - label + - ns + - {{ .Release.Namespace }} + - admission.gatekeeper.sh/ignore=no-self-managing + {{- range .Values.postInstall.labelNamespace.podSecurity }} + - {{ . }} + {{- end }} + - --overwrite + resources: + {{- toYaml .Values.postInstall.resources | nindent 12 }} + securityContext: + {{- if .Values.enableRuntimeDefaultSeccompProfile }} + seccompProfile: + type: RuntimeDefault + {{- end }} + {{- toYaml .Values.postInstall.securityContext | nindent 12 }} + {{- if .Values.postInstall.labelNamespace.extraNamespaces }} + - name: kubectl-label-extra + image: "{{ .Values.postInstall.labelNamespace.image.repository }}:{{ .Values.postInstall.labelNamespace.image.tag }}" + imagePullPolicy: {{ .Values.postInstall.labelNamespace.image.pullPolicy }} + args: + - label + - ns + {{- range .Values.postInstall.labelNamespace.extraNamespaces }} + - {{ . }} + {{- end }} + - admission.gatekeeper.sh/ignore=extra-namespaces + - --overwrite + resources: + {{- toYaml .Values.postInstall.resources | nindent 12 }} + securityContext: + {{- if .Values.enableRuntimeDefaultSeccompProfile }} + seccompProfile: + type: RuntimeDefault + {{- end }} + {{- toYaml .Values.postInstall.securityContext | nindent 12 }} + {{- end }} + {{- with .Values.postInstall }} + nodeSelector: + {{- toYaml .nodeSelector | nindent 8 }} + affinity: + {{- toYaml .affinity | nindent 8 }} + tolerations: + {{- toYaml .tolerations | nindent 8 }} + {{- end }} +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: gatekeeper-update-namespace-label + labels: + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + annotations: + "helm.sh/hook": post-install + "helm.sh/hook-weight": "-5" + "helm.sh/hook-delete-policy": hook-succeeded,before-hook-creation +--- +{{- if .Values.rbac.create }} +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: gatekeeper-update-namespace-label + labels: + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + annotations: + "helm.sh/hook": post-install + "helm.sh/hook-weight": "-5" + "helm.sh/hook-delete-policy": hook-succeeded,before-hook-creation +rules: + - apiGroups: + - "" + resources: + - namespaces + verbs: + - get + - update + - patch + resourceNames: + - {{ .Release.Namespace }} + {{- range .Values.postInstall.labelNamespace.extraNamespaces }} + - {{ . }} + {{- end }} +{{- with .Values.postInstall.labelNamespace.extraRules }} + {{- toYaml . | nindent 2 }} +{{- end }} +{{- end }} +--- +{{- if .Values.rbac.create }} +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: gatekeeper-update-namespace-label + labels: + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + annotations: + "helm.sh/hook": post-install + "helm.sh/hook-weight": "-5" + "helm.sh/hook-delete-policy": hook-succeeded,before-hook-creation +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: gatekeeper-update-namespace-label +subjects: + - kind: ServiceAccount + name: gatekeeper-update-namespace-label + namespace: {{ .Release.Namespace | quote }} +{{- end }} +{{- end }} diff --git a/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/namespace-post-upgrade.yaml b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/namespace-post-upgrade.yaml new file mode 100644 index 000000000..28d223bf4 --- /dev/null +++ b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/namespace-post-upgrade.yaml @@ -0,0 +1,145 @@ +{{- if .Values.postUpgrade.labelNamespace.enabled }} +apiVersion: batch/v1 +kind: Job +metadata: + name: gatekeeper-update-namespace-label-post-upgrade + labels: + app: '{{ template "gatekeeper.name" . }}' + chart: '{{ template "gatekeeper.name" . }}' + gatekeeper.sh/system: "yes" + heritage: '{{ .Release.Service }}' + release: '{{ .Release.Name }}' + annotations: + "helm.sh/hook": post-upgrade + "helm.sh/hook-weight": "-5" + "helm.sh/hook-delete-policy": hook-succeeded,before-hook-creation +spec: + template: + metadata: + labels: + {{- include "gatekeeper.podLabels" . }} + app: '{{ template "gatekeeper.name" . }}' + chart: '{{ template "gatekeeper.name" . }}' + gatekeeper.sh/system: "yes" + heritage: '{{ .Release.Service }}' + release: '{{ .Release.Name }}' + spec: + restartPolicy: OnFailure + {{- if .Values.postUpgrade.labelNamespace.image.pullSecrets }} + imagePullSecrets: + {{- .Values.postUpgrade.labelNamespace.image.pullSecrets | toYaml | nindent 12 }} + {{- end }} + serviceAccount: gatekeeper-update-namespace-label-post-upgrade + containers: + - name: kubectl-label + image: "{{ .Values.postUpgrade.labelNamespace.image.repository }}:{{ .Values.postUpgrade.labelNamespace.image.tag }}" + imagePullPolicy: {{ .Values.postUpgrade.labelNamespace.image.pullPolicy }} + args: + - label + - ns + - {{ .Release.Namespace }} + - admission.gatekeeper.sh/ignore=no-self-managing + {{- range .Values.postUpgrade.labelNamespace.podSecurity }} + - {{ . }} + {{- end }} + - --overwrite + resources: + {{- toYaml .Values.postUpgrade.resources | nindent 12 }} + securityContext: + {{- if .Values.enableRuntimeDefaultSeccompProfile }} + seccompProfile: + type: RuntimeDefault + {{- end }} + {{- toYaml .Values.postUpgrade.securityContext | nindent 12 }} + {{- if .Values.postUpgrade.labelNamespace.extraNamespaces }} + - name: kubectl-label-extra + image: "{{ .Values.postUpgrade.labelNamespace.image.repository }}:{{ .Values.postUpgrade.labelNamespace.image.tag }}" + imagePullPolicy: {{ .Values.postUpgrade.labelNamespace.image.pullPolicy }} + args: + - label + - ns + {{- range .Values.postUpgrade.labelNamespace.extraNamespaces }} + - {{ . }} + {{- end }} + - admission.gatekeeper.sh/ignore=extra-namespaces + - --overwrite + resources: + {{- toYaml .Values.postUpgrade.resources | nindent 12 }} + securityContext: + {{- if .Values.enableRuntimeDefaultSeccompProfile }} + seccompProfile: + type: RuntimeDefault + {{- end }} + {{- toYaml .Values.postUpgrade.securityContext | nindent 12 }} + {{- end }} + {{- with .Values.postUpgrade }} + affinity: + {{- toYaml .affinity | nindent 8 }} + tolerations: + {{- toYaml .tolerations | nindent 8 }} + nodeSelector: + {{- toYaml .nodeSelector | nindent 8 }} + {{- end }} +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: gatekeeper-update-namespace-label-post-upgrade + labels: + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + annotations: + "helm.sh/hook": post-upgrade + "helm.sh/hook-weight": "-5" + "helm.sh/hook-delete-policy": hook-succeeded,before-hook-creation +--- +{{- if .Values.rbac.create }} +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: gatekeeper-update-namespace-label-post-upgrade + labels: + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + annotations: + "helm.sh/hook": post-upgrade + "helm.sh/hook-weight": "-5" + "helm.sh/hook-delete-policy": hook-succeeded,before-hook-creation +rules: + - apiGroups: + - "" + resources: + - namespaces + verbs: + - get + - update + - patch + resourceNames: + - {{ .Release.Namespace }} + {{- range .Values.postUpgrade.labelNamespace.extraNamespaces }} + - {{ . }} + {{- end }} +{{- end }} +--- +{{- if .Values.rbac.create }} +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: gatekeeper-update-namespace-label-post-upgrade + labels: + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + annotations: + "helm.sh/hook": post-upgrade + "helm.sh/hook-weight": "-5" + "helm.sh/hook-delete-policy": hook-succeeded,before-hook-creation +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: gatekeeper-update-namespace-label-post-upgrade +subjects: + - kind: ServiceAccount + name: gatekeeper-update-namespace-label-post-upgrade + namespace: {{ .Release.Namespace | quote }} +{{- end }} +{{- end }} diff --git a/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/probe-webhook-post-install.yaml b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/probe-webhook-post-install.yaml new file mode 100644 index 000000000..5a140d31c --- /dev/null +++ b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/probe-webhook-post-install.yaml @@ -0,0 +1,48 @@ +{{- if not .Values.disableValidatingWebhook }} +{{- if and (not .Values.postInstall.labelNamespace.enabled) .Values.postInstall.probeWebhook.enabled }} +apiVersion: batch/v1 +kind: Job +metadata: + name: gatekeeper-probe-webhook-post-install + labels: + app: '{{ template "gatekeeper.name" . }}' + chart: '{{ template "gatekeeper.name" . }}' + gatekeeper.sh/system: "yes" + heritage: '{{ .Release.Service }}' + release: '{{ .Release.Name }}' + annotations: + "helm.sh/hook": post-install + "helm.sh/hook-weight": "-5" + "helm.sh/hook-delete-policy": hook-succeeded,before-hook-creation +spec: + template: + metadata: + annotations: + {{- toYaml .Values.podAnnotations | trim | nindent 8 }} + labels: + {{- include "gatekeeper.podLabels" . }} + app: '{{ template "gatekeeper.name" . }}' + chart: '{{ template "gatekeeper.name" . }}' + gatekeeper.sh/system: "yes" + heritage: '{{ .Release.Service }}' + release: '{{ .Release.Name }}' + spec: + restartPolicy: Never + {{- if .Values.postInstall.probeWebhook.image.pullSecrets }} + imagePullSecrets: + {{- .Values.postInstall.probeWebhook.image.pullSecrets | toYaml | nindent 12 }} + {{- end }} + volumes: + {{- include "gatekeeper.postInstallWebhookProbeVolume" . | nindent 8 }} + containers: + {{- include "gatekeeper.postInstallWebhookProbeContainer" . | nindent 8 }} + {{- with .Values.postInstall }} + affinity: + {{- toYaml .affinity | nindent 8 }} + tolerations: + {{- toYaml .tolerations | nindent 8 }} + nodeSelector: + {{- toYaml .nodeSelector | nindent 8 }} + {{- end }} +{{- end }} +{{- end }} diff --git a/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/upgrade-crds-hook.yaml b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/upgrade-crds-hook.yaml new file mode 100644 index 000000000..cd57573f3 --- /dev/null +++ b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/upgrade-crds-hook.yaml @@ -0,0 +1,122 @@ +{{- if .Values.upgradeCRDs.enabled }} +{{- if .Values.rbac.create }} +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: gatekeeper-admin-upgrade-crds + labels: + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + annotations: + helm.sh/hook: pre-install,pre-upgrade + helm.sh/hook-delete-policy: "hook-succeeded,before-hook-creation" + helm.sh/hook-weight: "1" +rules: + - apiGroups: ["apiextensions.k8s.io"] + resources: ["customresourcedefinitions"] + verbs: ["get", "create", "update", "patch"] +{{- with .Values.upgradeCRDs.extraRules }} + {{- toYaml . | nindent 2 }} +{{- end }} +{{- end }} +--- +{{- if .Values.rbac.create }} +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: gatekeeper-admin-upgrade-crds + labels: + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + annotations: + helm.sh/hook: pre-install,pre-upgrade + helm.sh/hook-delete-policy: "hook-succeeded,before-hook-creation" + helm.sh/hook-weight: "1" +subjects: + - kind: ServiceAccount + name: gatekeeper-admin-upgrade-crds + namespace: {{ .Release.Namespace }} +roleRef: + kind: ClusterRole + name: gatekeeper-admin-upgrade-crds + apiGroup: rbac.authorization.k8s.io +{{- end }} +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + labels: + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + name: gatekeeper-admin-upgrade-crds + namespace: '{{ .Release.Namespace }}' + annotations: + helm.sh/hook: pre-install,pre-upgrade + helm.sh/hook-delete-policy: "hook-succeeded,before-hook-creation" + helm.sh/hook-weight: "1" +--- +apiVersion: batch/v1 +kind: Job +metadata: + name: gatekeeper-update-crds-hook + namespace: {{ .Release.Namespace }} + labels: + app: {{ template "gatekeeper.name" . }} + chart: {{ template "gatekeeper.name" . }} + gatekeeper.sh/system: "yes" + heritage: {{ .Release.Service }} + release: {{ .Release.Name }} + annotations: + helm.sh/hook: pre-install,pre-upgrade + helm.sh/hook-weight: "1" + helm.sh/hook-delete-policy: "hook-succeeded,before-hook-creation" +spec: + backoffLimit: 0 + template: + metadata: + name: gatekeeper-update-crds-hook + annotations: + {{- toYaml .Values.podAnnotations | trim | nindent 8 }} + labels: + {{- include "gatekeeper.podLabels" . }} + app: '{{ template "gatekeeper.name" . }}' + chart: '{{ template "gatekeeper.name" . }}' + gatekeeper.sh/system: "yes" + heritage: '{{ .Release.Service }}' + release: '{{ .Release.Name }}' + spec: + serviceAccountName: gatekeeper-admin-upgrade-crds + restartPolicy: Never + {{- if .Values.image.pullSecrets }} + imagePullSecrets: + {{- toYaml .Values.image.pullSecrets | nindent 8 }} + {{- end }} + containers: + - name: crds-upgrade + {{- if not .Values.image.release }} + image: '{{ .Values.image.crdRepository }}' + {{- else }} + image: '{{ .Values.image.crdRepository }}:{{ .Values.image.release }}' + {{- end }} + imagePullPolicy: '{{ .Values.image.pullPolicy }}' + args: + - apply + - -f + - crds/ + resources: + {{- toYaml .Values.crds.resources | nindent 10 }} + securityContext: + {{- if .Values.enableRuntimeDefaultSeccompProfile }} + seccompProfile: + type: RuntimeDefault + {{- end }} + {{- toYaml .Values.crds.securityContext | nindent 10 }} + {{- with .Values.crds }} + affinity: + {{- toYaml .affinity | nindent 8 }} + tolerations: + {{- toYaml .tolerations | nindent 8 }} + nodeSelector: + {{- toYaml .nodeSelector | nindent 8 }} + {{- end }} +{{- end }} diff --git a/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/webhook-configs-pre-delete.yaml b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/webhook-configs-pre-delete.yaml new file mode 100644 index 000000000..d610394de --- /dev/null +++ b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/templates/webhook-configs-pre-delete.yaml @@ -0,0 +1,135 @@ +{{- if and (or (not .Values.disableValidatingWebhook) (not .Values.disableMutation)) .Values.preUninstall.deleteWebhookConfigurations.enabled }} +apiVersion: batch/v1 +kind: Job +metadata: + name: gatekeeper-delete-webhook-configs + labels: + app: '{{ template "gatekeeper.name" . }}' + chart: '{{ template "gatekeeper.name" . }}' + gatekeeper.sh/system: "yes" + heritage: '{{ .Release.Service }}' + release: '{{ .Release.Name }}' + annotations: + "helm.sh/hook": pre-delete + "helm.sh/hook-weight": "-5" + "helm.sh/hook-delete-policy": hook-succeeded,before-hook-creation +spec: + template: + metadata: + annotations: + {{- toYaml .Values.podAnnotations | trim | nindent 8 }} + labels: + {{- include "gatekeeper.podLabels" . }} + app: '{{ template "gatekeeper.name" . }}' + chart: '{{ template "gatekeeper.name" . }}' + gatekeeper.sh/system: "yes" + heritage: '{{ .Release.Service }}' + release: '{{ .Release.Name }}' + spec: + restartPolicy: OnFailure + {{- if .Values.preUninstall.deleteWebhookConfigurations.image.pullSecrets }} + imagePullSecrets: + {{- .Values.preUninstall.deleteWebhookConfigurations.image.pullSecrets | toYaml | nindent 12 }} + {{- end }} + serviceAccount: gatekeeper-delete-webhook-configs + containers: + - name: kubectl-delete + image: "{{ .Values.preUninstall.deleteWebhookConfigurations.image.repository }}:{{ .Values.preUninstall.deleteWebhookConfigurations.image.tag }}" + imagePullPolicy: {{ .Values.preUninstall.deleteWebhookConfigurations.image.pullPolicy }} + args: + - delete + {{- if not .Values.disableValidatingWebhook }} + - validatingwebhookconfiguration/gatekeeper-validating-webhook-configuration + {{- end }} + {{- if not .Values.disableMutation }} + - mutatingwebhookconfiguration/gatekeeper-mutating-webhook-configuration + {{- end }} + resources: + {{- toYaml .Values.preUninstall.resources | nindent 10 }} + securityContext: + {{- if .Values.enableRuntimeDefaultSeccompProfile }} + seccompProfile: + type: RuntimeDefault + {{- end }} + {{- toYaml .Values.preUninstall.securityContext | nindent 10 }} + {{- with .Values.preUninstall }} + nodeSelector: + {{- toYaml .nodeSelector | nindent 8 }} + affinity: + {{- toYaml .affinity | nindent 8 }} + tolerations: + {{- toYaml .tolerations | nindent 8 }} + {{- end }} +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: gatekeeper-delete-webhook-configs + labels: + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + annotations: + "helm.sh/hook": pre-delete + "helm.sh/hook-weight": "-5" + "helm.sh/hook-delete-policy": hook-succeeded,before-hook-creation +--- +{{- if .Values.rbac.create }} +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: gatekeeper-delete-webhook-configs + labels: + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + annotations: + "helm.sh/hook": pre-delete + "helm.sh/hook-weight": "-5" + "helm.sh/hook-delete-policy": hook-succeeded,before-hook-creation +rules: + {{- if not .Values.disableValidatingWebhook }} + - apiGroups: + - admissionregistration.k8s.io + resources: + - validatingwebhookconfigurations + resourceNames: + - gatekeeper-validating-webhook-configuration + verbs: + - delete + {{- end }} + {{- if not .Values.disableMutation }} + - apiGroups: + - admissionregistration.k8s.io + resources: + - mutatingwebhookconfigurations + resourceNames: + - gatekeeper-mutating-webhook-configuration + verbs: + - delete + {{- end }} +{{- with .Values.preUninstall.deleteWebhookConfigurations.extraRules }} + {{- toYaml . | nindent 2 }} +{{- end }} +{{- end }} +--- +{{- if .Values.rbac.create }} +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: gatekeeper-delete-webhook-configs + labels: + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + annotations: + "helm.sh/hook": pre-delete + "helm.sh/hook-weight": "-5" + "helm.sh/hook-delete-policy": hook-succeeded,before-hook-creation +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: gatekeeper-delete-webhook-configs +subjects: + - kind: ServiceAccount + name: gatekeeper-delete-webhook-configs + namespace: {{ .Release.Namespace | quote }} +{{- end }} +{{- end }} diff --git a/charts/community/redhat/redhat-gatekeeper/3.11.0/src/values.yaml b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/values.yaml new file mode 100644 index 000000000..b9a24046d --- /dev/null +++ b/charts/community/redhat/redhat-gatekeeper/3.11.0/src/values.yaml @@ -0,0 +1,241 @@ +replicas: 3 +auditInterval: 60 +metricsBackends: ["prometheus"] +auditMatchKindOnly: false +constraintViolationsLimit: 20 +auditFromCache: false +disableMutation: false +disableValidatingWebhook: false +validatingWebhookTimeoutSeconds: 3 +validatingWebhookFailurePolicy: Ignore +validatingWebhookAnnotations: {} +validatingWebhookExemptNamespacesLabels: {} +validatingWebhookObjectSelector: {} +validatingWebhookCheckIgnoreFailurePolicy: Fail +validatingWebhookCustomRules: {} +enableDeleteOperations: false +enableExternalData: true +enableGeneratorResourceExpansion: false +enableTLSHealthcheck: false +maxServingThreads: -1 +mutatingWebhookFailurePolicy: Ignore +mutatingWebhookReinvocationPolicy: Never +mutatingWebhookAnnotations: {} +mutatingWebhookExemptNamespacesLabels: {} +mutatingWebhookObjectSelector: {} +mutatingWebhookTimeoutSeconds: 1 +mutatingWebhookCustomRules: {} +mutationAnnotations: false +auditChunkSize: 500 +logLevel: INFO +logDenies: false +logMutations: false +emitAdmissionEvents: false +emitAuditEvents: false +resourceQuota: true +postUpgrade: + labelNamespace: + enabled: false + image: + repository: registry.redhat.io/gatekeeper/gatekeeper-rhel8 + tag: v3.11 + pullPolicy: IfNotPresent + pullSecrets: [] + extraNamespaces: [] + podSecurity: ["pod-security.kubernetes.io/audit=baseline", + "pod-security.kubernetes.io/audit-version=latest", + "pod-security.kubernetes.io/warn=baseline", + "pod-security.kubernetes.io/warn-version=latest", + "pod-security.kubernetes.io/enforce=baseline", + "pod-security.kubernetes.io/enforce-version=v1.24"] + affinity: {} + tolerations: [] + nodeSelector: {kubernetes.io/os: linux} + resources: {} + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsNonRoot: true +postInstall: + labelNamespace: + enabled: true + extraRules: [] + image: + repository: registry.redhat.io/gatekeeper/gatekeeper-rhel8 + tag: v3.11 + pullPolicy: IfNotPresent + pullSecrets: [] + extraNamespaces: [] + podSecurity: ["pod-security.kubernetes.io/audit=baseline", + "pod-security.kubernetes.io/audit-version=latest", + "pod-security.kubernetes.io/warn=baseline", + "pod-security.kubernetes.io/warn-version=latest", + "pod-security.kubernetes.io/enforce=baseline", + "pod-security.kubernetes.io/enforce-version=v1.24"] + probeWebhook: + enabled: true + image: + repository: registry.redhat.io/gatekeeper/gatekeeper-rhel8 + tag: v3.11 + pullPolicy: IfNotPresent + pullSecrets: [] + waitTimeout: 60 + httpTimeout: 2 + insecureHTTPS: false + affinity: {} + tolerations: [] + nodeSelector: {kubernetes.io/os: linux} + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsNonRoot: true +preUninstall: + deleteWebhookConfigurations: + extraRules: [] + enabled: false + image: + repository: registry.redhat.io/gatekeeper/gatekeeper-rhel8 + tag: v3.11 + pullPolicy: IfNotPresent + pullSecrets: [] + affinity: {} + tolerations: [] + nodeSelector: {kubernetes.io/os: linux} + resources: {} + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsNonRoot: true +image: + repository: registry.redhat.io/gatekeeper/gatekeeper-rhel8 + crdRepository: registry.redhat.io/gatekeeper/gatekeeper-rhel8 + release: v3.11 + pullPolicy: IfNotPresent + pullSecrets: [] +podAnnotations: {} +podLabels: {} +podCountLimit: "100" +secretAnnotations: {} +enableRuntimeDefaultSeccompProfile: false +controllerManager: + exemptNamespaces: [] + exemptNamespacePrefixes: [] + hostNetwork: false + dnsPolicy: ClusterFirst + port: 8443 + metricsPort: 8888 + healthPort: 9090 + readinessTimeout: 1 + livenessTimeout: 1 + priorityClassName: system-cluster-critical + disableCertRotation: false + tlsMinVersion: 1.3 + clientCertName: "" + affinity: + podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - podAffinityTerm: + labelSelector: + matchExpressions: + - key: gatekeeper.sh/operation + operator: In + values: + - webhook + topologyKey: kubernetes.io/hostname + weight: 100 + topologySpreadConstraints: [] + tolerations: [] + nodeSelector: {kubernetes.io/os: linux} + resources: + limits: + memory: 512Mi + requests: + cpu: 100m + memory: 512Mi + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsNonRoot: true + podSecurityContext: + fsGroup: 999 + supplementalGroups: + - 999 + extraRules: + - apiGroups: + - security.openshift.io + resourceNames: + - anyuid + resources: + - securitycontextconstraints + verbs: + - use +audit: + hostNetwork: false + dnsPolicy: ClusterFirst + metricsPort: 8888 + healthPort: 9090 + readinessTimeout: 1 + livenessTimeout: 1 + priorityClassName: system-cluster-critical + disableCertRotation: true + affinity: {} + tolerations: [] + nodeSelector: {kubernetes.io/os: linux} + resources: + limits: + memory: 512Mi + requests: + cpu: 100m + memory: 512Mi + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsNonRoot: true + podSecurityContext: + fsGroup: 999 + supplementalGroups: + - 999 + writeToRAMDisk: false + extraRules: [] +crds: + affinity: {} + tolerations: [] + nodeSelector: {kubernetes.io/os: linux} + resources: {} + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + runAsNonRoot: true +pdb: + controllerManager: + minAvailable: 1 +service: {} +disabledBuiltins: ["{http.send}"] +psp: + enabled: false +upgradeCRDs: + enabled: true + extraRules: [] +rbac: + create: true +externalCertInjection: + enabled: false + secretName: gatekeeper-webhook-server-cert diff --git a/charts/community/redhat/redhat-gatekeeper/OWNERS b/charts/community/redhat/redhat-gatekeeper/OWNERS new file mode 100644 index 000000000..8fa00583d --- /dev/null +++ b/charts/community/redhat/redhat-gatekeeper/OWNERS @@ -0,0 +1,13 @@ +chart: + name: redhat-gatekeeper + shortDescription: OPA Gatekeeper +publicPgpKey: null +users: +- githubUsername: thomasmckay +- githubUsername: gparvin +- githubUsername: mprahl +- githubUsername: dhaiducek +- githubUsername: JustinKuli +vendor: + label: redhat + name: Red Hat diff --git a/charts/community/redhat/redhat-wildfly/1.4.0/report.yaml b/charts/community/redhat/redhat-wildfly/1.4.0/report.yaml new file mode 100644 index 000000000..f17c6f43f --- /dev/null +++ b/charts/community/redhat/redhat-wildfly/1.4.0/report.yaml @@ -0,0 +1,95 @@ +apiversion: v1 +kind: verify-report +metadata: + tool: + verifier-version: 1.1.0 + profile: + VendorType: partner + version: v1.0 + chart-uri: https://redhat-developer.github.io/redhat-helm-charts/charts/wildfly-1.4.0.tgz + digest: sha256:80630f72e50faa6cd799f8bad147f834fe2e4b181ba4a8298a40e743665fba1b + digests: + chart: sha256:80630f72e50faa6cd799f8bad147f834fe2e4b181ba4a8298a40e743665fba1b + package: 1c4a83c3ea0b23f7adf22210e950ddb4a658641ecb57a97ef9a19268059412d2 + lastCertifiedTimestamp: "2021-07-09T23:13:06.36487+00:00" + certifiedOpenShiftVersions: 4.7.5 + chart: + name: wildfly + home: "" + sources: [] + version: 1.4.0 + description: Build and Deploy WildFly applications on OpenShift + keywords: [] + maintainers: + - name: WildFly + email: wildfly-dev@lists.jboss.org + url: https://wildfly.org + icon: https://design.jboss.org/wildfly/logo/final/wildfly_logomark_256px.png + apiversion: v2 + condition: "" + tags: "" + appversion: "24.0" + deprecated: false + annotations: {} + kubeversion: "" + dependencies: + - name: wildfly-common + version: 1.3.0 + repository: file://../wildfly-common + condition: "" + tags: [] + enabled: false + importvalues: [] + alias: "" + type: application + chart-overrides: "" +results: + - check: v1.0/contains-values-schema + type: Mandatory + outcome: PASS + reason: Values schema file exist + - check: v1.0/has-kubeversion + type: Mandatory + outcome: FAIL + reason: Kubernetes version is not specified + - check: v1.0/images-are-certified + type: Mandatory + outcome: FAIL + reason: 'Failed to certify images : Failed to get images, error running helm template + : execution error at (wildfly/templates/buildconfig-s2i-build-artifacts.yaml:2:4): + Git source repository URL is required' + - check: v1.0/has-readme + type: Mandatory + outcome: PASS + reason: Chart has a README + - check: v1.0/is-helm-v3 + type: Mandatory + outcome: PASS + reason: API version is V2, used in Helm 3 + - check: v1.0/contains-test + type: Mandatory + outcome: FAIL + reason: Chart test files do not exist + - check: v1.0/not-contain-csi-objects + type: Mandatory + outcome: PASS + reason: CSI objects do not exist + - check: v1.0/chart-testing + type: Mandatory + outcome: FAIL + reason: |- + Error running process: executing helm with args "install wildfly-dy22xxfx2x /root/.cache/chart-verifier/https___redhat_developer_github_io_redhat_helm_charts_charts_wildfly_1_4_0_tgz/wildfly --namespace davptest --wait --values /tmp/chart-testing-636415511/values.yaml": exit status 1 + --- + Error: execution error at (wildfly/templates/buildconfig-s2i-build-artifacts.yaml:2:4): Git source repository URL is required + - check: v1.0/contains-values + type: Mandatory + outcome: PASS + reason: Values file exist + - check: v1.0/not-contains-crds + type: Mandatory + outcome: PASS + reason: Chart does not contain CRDs + - check: v1.0/helm-lint + type: Mandatory + outcome: PASS + reason: Helm lint successful diff --git a/charts/community/redhat/redhat-wildfly/1.4.0/wildfly-1.4.0.tgz b/charts/community/redhat/redhat-wildfly/1.4.0/wildfly-1.4.0.tgz new file mode 100644 index 000000000..23c088275 Binary files /dev/null and b/charts/community/redhat/redhat-wildfly/1.4.0/wildfly-1.4.0.tgz differ diff --git a/charts/community/redhat/redhat-wildfly/1.5.2/report.yaml b/charts/community/redhat/redhat-wildfly/1.5.2/report.yaml new file mode 100644 index 000000000..eca46fec8 --- /dev/null +++ b/charts/community/redhat/redhat-wildfly/1.5.2/report.yaml @@ -0,0 +1,99 @@ +2021/10/26 13:47:48 [INFO] Missing required value: Git source repository URL is required +apiversion: v1 +kind: verify-report +metadata: + tool: + verifier-version: 1.2.3 + profile: + VendorType: partner + version: v1.0 + chart-uri: /charts/1.5.2/wildfly-1.5.2.tgz + digest: sha256:0fc18ecec3ca14a3fe4bcd7dd097e50f34945f412a476df34a60a235f02671fc + digests: + chart: sha256:0fc18ecec3ca14a3fe4bcd7dd097e50f34945f412a476df34a60a235f02671fc + package: 0c999e8ba0987312ec5a40a148a37f8a69d3c0949a3f174ba7e5ca51fa98975f + lastCertifiedTimestamp: "2021-10-26T13:47:49.146017+00:00" + certifiedOpenShiftVersions: N/A + chart: + name: wildfly + home: "" + sources: [] + version: 1.5.2 + description: Build and Deploy WildFly applications on OpenShift + keywords: [] + maintainers: + - name: WildFly + email: wildfly-dev@lists.jboss.org + url: https://wildfly.org + icon: https://design.jboss.org/wildfly/logo/final/wildfly_logomark_256px.png + apiversion: v2 + condition: "" + tags: "" + appversion: "25.0" + deprecated: false + annotations: + charts.openshift.io/name: WildFly + charts.openshift.io/provider: WildFly + kubeversion: "" + dependencies: + - name: wildfly-common + version: 1.4.1 + repository: file://../wildfly-common + condition: "" + tags: [] + enabled: false + importvalues: [] + alias: "" + type: application + chart-overrides: "" +results: + - check: v1.0/not-contains-crds + type: Mandatory + outcome: PASS + reason: Chart does not contain CRDs + - check: v1.0/helm-lint + type: Mandatory + outcome: PASS + reason: Helm lint successful + - check: v1.0/not-contain-csi-objects + type: Mandatory + outcome: PASS + reason: CSI objects do not exist + - check: v1.0/images-are-certified + type: Mandatory + outcome: FAIL + reason: 'Failed to certify images : Failed to get images, error running helm template + : execution error at (wildfly/templates/buildconfig-s2i-build-artifacts.yaml:2:4): + Git source repository URL is required' + - check: v1.0/is-helm-v3 + type: Mandatory + outcome: PASS + reason: API version is V2, used in Helm 3 + - check: v1.0/contains-values + type: Mandatory + outcome: PASS + reason: Values file exist + - check: v1.0/contains-values-schema + type: Mandatory + outcome: PASS + reason: Values schema file exist + - check: v1.0/has-kubeversion + type: Mandatory + outcome: FAIL + reason: Kubernetes version is not specified + - check: v1.0/chart-testing + type: Mandatory + outcome: FAIL + reason: |- + Error running process: executing helm with args "install wildfly-ua0iu48sbs /root/.cache/chart-verifier/_charts_1_5_2_wildfly_1_5_2_tgz/wildfly --namespace default --wait --values /tmp/chart-testing-093101968/values.yaml": exit status 1 + --- + Error: Kubernetes cluster unreachable: Get "http://localhost:8080/version?timeout=32s": dial tcp 127.0.0.1:8080: connect: connection refused + - check: v1.0/has-readme + type: Mandatory + outcome: PASS + reason: Chart has a README + - check: v1.0/contains-test + type: Mandatory + outcome: FAIL + reason: Chart test files do not exist + diff --git a/charts/community/redhat/redhat-wildfly/1.5.2/wildfly-1.5.2.tgz b/charts/community/redhat/redhat-wildfly/1.5.2/wildfly-1.5.2.tgz new file mode 100644 index 000000000..be413305d Binary files /dev/null and b/charts/community/redhat/redhat-wildfly/1.5.2/wildfly-1.5.2.tgz differ diff --git a/charts/community/redhat/redhat-wildfly/1.5.4/wildfly-1.5.4.tgz b/charts/community/redhat/redhat-wildfly/1.5.4/wildfly-1.5.4.tgz new file mode 100644 index 000000000..5160eb27f Binary files /dev/null and b/charts/community/redhat/redhat-wildfly/1.5.4/wildfly-1.5.4.tgz differ diff --git a/charts/community/redhat/redhat-wildfly/1.5.5/wildfly-1.5.5.tgz b/charts/community/redhat/redhat-wildfly/1.5.5/wildfly-1.5.5.tgz new file mode 100644 index 000000000..6847ec0de Binary files /dev/null and b/charts/community/redhat/redhat-wildfly/1.5.5/wildfly-1.5.5.tgz differ diff --git a/charts/community/redhat/redhat-wildfly/OWNERS b/charts/community/redhat/redhat-wildfly/OWNERS new file mode 100644 index 000000000..d6671ec84 --- /dev/null +++ b/charts/community/redhat/redhat-wildfly/OWNERS @@ -0,0 +1,10 @@ +chart: + name: redhat-wildfly + shortDescription: Build and Deploy WildFly applications +publicPgpKey: null +users: + - githubUsername: bstansberry + - githubUsername: jmesnil +vendor: + label: redhat + name: WildFly diff --git a/charts/partners/akeyless/akeyless-api-gateway/1.41.2/akeyless-api-gateway-1.41.2.tgz b/charts/partners/akeyless/akeyless-api-gateway/1.41.2/akeyless-api-gateway-1.41.2.tgz new file mode 100644 index 000000000..ed39cf30a Binary files /dev/null and b/charts/partners/akeyless/akeyless-api-gateway/1.41.2/akeyless-api-gateway-1.41.2.tgz differ diff --git a/charts/partners/akeyless/akeyless-api-gateway/1.41.2/report.yaml b/charts/partners/akeyless/akeyless-api-gateway/1.41.2/report.yaml new file mode 100644 index 000000000..c55ddbc97 --- /dev/null +++ b/charts/partners/akeyless/akeyless-api-gateway/1.41.2/report.yaml @@ -0,0 +1,90 @@ +apiversion: v1 +kind: verify-report +metadata: + tool: + verifier-version: 1.13.3 + profile: + VendorType: partner + version: v1.2 + reportDigest: uint64:14836295178275667294 + chart-uri: ./chart-verifier/akeyless-api-gateway-1.41.2.tgz + digests: + chart: sha256:35f918ae91e10db00705a0f2adffd8d7dedb77d14a384177eea44bed5c37ef61 + package: e6d56a79dfb27f13b6c05e199fe888613f79f557f2ef04840d48a28787290264 + lastCertifiedTimestamp: "2024-04-09T21:15:55.518689+03:00" + testedOpenShiftVersion: "4.13" + supportedOpenShiftVersions: '>=4.10' + webCatalogOnly: false + chart: + name: akeyless-api-gateway + home: "" + sources: [] + version: 1.41.2 + description: A Helm chart for Kubernetes that deploys akeyless-api-gateway + keywords: [] + maintainers: [] + icon: "" + apiversion: v2 + condition: "" + tags: "" + appversion: 4.4.1 + deprecated: false + annotations: + charts.openshift.io/name: akeyless-api-gateway + kubeversion: '>= 1.23-0' + dependencies: [] + type: application + chart-overrides: "" +results: + - check: v1.0/not-contains-crds + type: Mandatory + outcome: PASS + reason: Chart does not contain CRDs + - check: v1.0/helm-lint + type: Mandatory + outcome: PASS + reason: Helm lint successful + - check: v1.0/chart-testing + type: Mandatory + outcome: PASS + reason: Chart tests have passed + - check: v1.1/has-kubeversion + type: Mandatory + outcome: PASS + reason: Kubernetes version specified + - check: v1.0/has-readme + type: Mandatory + outcome: PASS + reason: Chart has a README + - check: v1.0/is-helm-v3 + type: Mandatory + outcome: PASS + reason: API version is V2, used in Helm 3 + - check: v1.0/contains-values + type: Mandatory + outcome: PASS + reason: Values file exist + - check: v1.1/images-are-certified + type: Mandatory + outcome: PASS + reason: No images to certify + - check: v1.0/signature-is-valid + type: Mandatory + outcome: SKIPPED + reason: 'Chart is not signed : Signature verification not required' + - check: v1.0/not-contain-csi-objects + type: Mandatory + outcome: PASS + reason: CSI objects do not exist + - check: v1.0/contains-test + type: Mandatory + outcome: PASS + reason: Chart test files exist + - check: v1.0/required-annotations-present + type: Mandatory + outcome: PASS + reason: All required annotations present + - check: v1.0/contains-values-schema + type: Mandatory + outcome: PASS + reason: Values schema file exist \ No newline at end of file diff --git a/charts/partners/akeyless/akeyless-api-gateway/OWNERS b/charts/partners/akeyless/akeyless-api-gateway/OWNERS new file mode 100644 index 000000000..32c4ef97a --- /dev/null +++ b/charts/partners/akeyless/akeyless-api-gateway/OWNERS @@ -0,0 +1,15 @@ +chart: + name: akeyless-api-gateway + shortDescription: A Helm chart for Kubernetes that deploys akeyless-api-gateway +providerDelivery: false +publicPgpKey: unknown +users: +- githubUsername: niv-ez +- githubUsername: omriezra +- githubUsername: OriBenHur-akeyless +- githubUsername: michelsk +- githubUsername: OriMankali +- githubUsername: AngelRefael +vendor: + label: akeyless + name: Akeyless diff --git a/charts/partners/axual/axual-governance-core/0.3.0/axual-governance-core-0.3.0.tgz b/charts/partners/axual/axual-governance-core/0.3.0/axual-governance-core-0.3.0.tgz new file mode 100644 index 000000000..89f5b0d22 Binary files /dev/null and b/charts/partners/axual/axual-governance-core/0.3.0/axual-governance-core-0.3.0.tgz differ diff --git a/charts/partners/axual/axual-governance-core/0.3.0/report.yaml b/charts/partners/axual/axual-governance-core/0.3.0/report.yaml new file mode 100644 index 000000000..79a8fb080 --- /dev/null +++ b/charts/partners/axual/axual-governance-core/0.3.0/report.yaml @@ -0,0 +1,143 @@ +apiversion: v1 +kind: verify-report +metadata: + tool: + verifier-version: 1.13.3 + profile: + VendorType: partner + version: v1.2 + reportDigest: uint64:17866615869955797949 + chart-uri: /charts/axual-governance-core-0.3.0.tgz + digests: + chart: sha256:d7d9b0b48c0460edef918e2c0f38f21a83170a1eb3e16a74103127171b1ff7eb + package: 3451fd413af67b1be84155b7a533bb6a303c545f9d92a63a885d7058df823ce7 + lastCertifiedTimestamp: "2024-03-27T01:10:57.183109+00:00" + testedOpenShiftVersion: "4.14" + supportedOpenShiftVersions: '>=4.11' + webCatalogOnly: false + chart: + name: axual-governance-core + home: https://axual.com + sources: [] + version: 0.3.0 + description: Axual Governance core which installs core Axual components defining the control plane. + keywords: + - axual + - kafka + - messaging + - integration + - streaming + maintainers: [] + icon: https://media.licdn.com/dms/image/C560BAQGNVRrjMGHmxQ/company-logo_200_200/0/1630600168205/axual_logo?e=2147483647&v=beta&t=NlepYScz7uLBwI1tawUVoq-wo1-qZdvA4LCzvH8mf5c + apiversion: v2 + condition: "" + tags: "" + appversion: 0.3.0 + deprecated: false + annotations: + charts.openshift.io/name: Axual Governance + kubeversion: '>= 1.24.0' + dependencies: + - name: platform-manager + version: 8.3.0 + repository: oci://registry.axual.io/axual-charts + condition: global.platform-manager.enabled + tags: [] + enabled: false + importvalues: [] + alias: "" + - name: organization-mgmt + version: 0.2.1 + repository: oci://registry.axual.io/axual-charts + condition: global.organization-mgmt.enabled + tags: [] + enabled: false + importvalues: [] + alias: "" + - name: platform-ui + version: 9.3.0 + repository: oci://registry.axual.io/axual-charts + condition: global.platform-ui.enabled + tags: [] + enabled: false + importvalues: [] + alias: "" + - name: api-gateway + version: 0.3.1 + repository: oci://registry.axual.io/axual-charts + condition: global.api-gateway.enabled + tags: [] + enabled: false + importvalues: [] + alias: "" + - name: topic-browse + version: 0.3.1 + repository: oci://registry.axual.io/axual-charts + condition: global.topic-browse.enabled + tags: [] + enabled: false + importvalues: [] + alias: "" + - name: metrics-exposer + version: 1.0.0 + repository: oci://registry.axual.io/axual-charts + condition: global.metrics-exposer.enabled + tags: [] + enabled: false + importvalues: [] + alias: "" + type: application + chart-overrides: "" +results: + - check: v1.0/contains-values + type: Mandatory + outcome: PASS + reason: Values file exist + - check: v1.0/helm-lint + type: Mandatory + outcome: PASS + reason: Helm lint successful + - check: v1.0/required-annotations-present + type: Mandatory + outcome: PASS + reason: All required annotations present + - check: v1.1/has-kubeversion + type: Mandatory + outcome: PASS + reason: Kubernetes version specified + - check: v1.0/has-readme + type: Mandatory + outcome: PASS + reason: Chart has a README + - check: v1.0/is-helm-v3 + type: Mandatory + outcome: PASS + reason: API version is V2, used in Helm 3 + - check: v1.0/not-contain-csi-objects + type: Mandatory + outcome: PASS + reason: CSI objects do not exist + - check: v1.0/not-contains-crds + type: Mandatory + outcome: PASS + reason: Chart does not contain CRDs + - check: v1.0/signature-is-valid + type: Mandatory + outcome: SKIPPED + reason: 'Chart is not signed : Signature verification not required' + - check: v1.0/chart-testing + type: Mandatory + outcome: PASS + reason: Chart tests have passed + - check: v1.0/contains-values-schema + type: Mandatory + outcome: PASS + reason: Values schema file exist + - check: v1.1/images-are-certified + type: Mandatory + outcome: PASS + reason: No images to certify + - check: v1.0/contains-test + type: Mandatory + outcome: PASS + reason: Chart test files exist diff --git a/charts/partners/container-registry-prod-namespace/helm-chart-0904/OWNERS b/charts/partners/container-registry-prod-namespace/helm-chart-0904/OWNERS new file mode 100644 index 000000000..6bd9ec598 --- /dev/null +++ b/charts/partners/container-registry-prod-namespace/helm-chart-0904/OWNERS @@ -0,0 +1,10 @@ +chart: + name: helm-chart-0904 + shortDescription: unknown +providerDelivery: false +publicPgpKey: unknown +users: +- githubUsername: bovem +vendor: + label: container-registry-prod-namespace + name: Connect Test Company diff --git a/charts/partners/container-registry-prod-namespace/test-helm-chart-2163/OWNERS b/charts/partners/container-registry-prod-namespace/test-helm-chart-2163/OWNERS new file mode 100644 index 000000000..66cc3e9ae --- /dev/null +++ b/charts/partners/container-registry-prod-namespace/test-helm-chart-2163/OWNERS @@ -0,0 +1,9 @@ +chart: + name: test-helm-chart-2163 + shortDescription: unknown +providerDelivery: false +publicPgpKey: unknown +users: [] +vendor: + label: container-registry-prod-namespace + name: Connect Test Company diff --git a/charts/partners/gigamon2/uctc/1.4.0/report.yaml b/charts/partners/gigamon2/uctc/1.4.0/report.yaml new file mode 100644 index 000000000..9949a720b --- /dev/null +++ b/charts/partners/gigamon2/uctc/1.4.0/report.yaml @@ -0,0 +1,91 @@ +apiversion: v1 +kind: verify-report +metadata: + tool: + verifier-version: 1.13.3 + profile: + VendorType: partner + version: v1.2 + reportDigest: uint64:763178109872671851 + chart-uri: uctc-1.4.0.tgz + digests: + chart: sha256:6a6c1adedf00d9f23ead4331befcbe5e6ce5b7b06ccb0e4b1028aee053cb7fac + package: 68bcacf63656e46d88cf4bec99a2b755b57d6b0ac8672c9cac8128862274042c + lastCertifiedTimestamp: "2024-04-03T14:44:51.292958+05:30" + testedOpenShiftVersion: "4.12" + supportedOpenShiftVersions: '>=4.9' + webCatalogOnly: false + chart: + name: uctc + home: "" + sources: [] + version: 1.4.0 + description: A Helm chart for Gigamon UCT-C + keywords: [] + maintainers: [] + icon: data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1NjguNTQgOTcuMjEiPjxkZWZzPjxzdHlsZT4uY2xzLTF7ZmlsbDojZjI2NzIyO308L3N0eWxlPjwvZGVmcz48dGl0bGU+UHJpbnQtR2lnYW1vbi1PcmFuZ2UtTG9nbzwvdGl0bGU+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNODUsODcuMTJINjZWNzNoNDAuMzJ2MzguMzJhMTIzLjgxLDEyMy44MSwwLDAsMS0zNi43NSw1LjE1Yy0zMi4xMywwLTQ4LjI5LTEyLjkxLTQ4LjI5LTM4LjQzLDAtMjUuMTksMTYuMzktMzkuMzcsNDYuMDktMzkuMzcsMjUsMCwzNy44OSw4LjMsMzksMjUuMDlIODMuMTdjLS4zMi02LjkyLTYuNC0xMS4yNC0xNi40OS0xMS4yNC0xNC45LDAtMjMuMTksOC43My0yMy4xOSwyNC4zNywwLDE2LjU5LDguNTEsMjUsMjUuMzksMjVBNjMuNTksNjMuNTksMCwwLDAsODUsOTkuNjFaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjEuMjMgLTM4LjYyKSIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTExNy4zOSwzOS41NmgyMS43M1Y1NC4zN0gxMTcuMzlabS44NCwyMi44OWgyMC4xNnY1Mi43SDExOC4yM1oiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMS4yMyAtMzguNjIpIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTk4LjY1LDYyLjQ1aDE5LjcyYTk0LjgxLDk0LjgxLDAsMCwwLS43MywxMlYxMDEuM2MwLDEwLjE3LS40MSwxNy41My00LjgzLDIzLjQxLTUuODgsNy42NS0xNi4zOCwxMS4xMi0zMi4yMiwxMS4xMi0xOS43NCwwLTI5LjcyLTYuMDktMjkuOTItMTguNTdoMTkuOTRjLjIxLDQuNzMsMy43OCw3LjEzLDEwLjYsNy4xMywxMS4xNCwwLDE2LjI3LTUsMTYuMjctMTUuNzR2LTQuNDFjLTUuMjUsNi0xMi44MSw4LjkxLTIyLjQ1LDguOTEtMTYuNTksMC0yNy4xOS0xMC44LTI3LjE5LTI1LjYxLDAtMTYuMjcsMTAuNDktMjYuMzQsMjguMTItMjYuMzRxMTIuNDUsMCwyMiw5LjEyQTQxLjc3LDQxLjc3LDAsMCwxLDE5OC42NSw2Mi40NVpNMTgyLjksMTAxLjVjOS42NSwwLDE0LjgtNS4xNCwxNC44LTE0LjU5LDAtOS01LjM1LTE0LjI4LTE0LjU5LTE0LjI4cy0xNC42LDUuNDYtMTQuNiwxNUMxNjguNTEsOTUuOTQsMTc0LjA3LDEwMS41LDE4Mi45LDEwMS41WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTIxLjIzIC0zOC42MikiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yNDYuMDgsMTE2LjQyYy0xMy41MywwLTIwLjg3LTYtMjAuODctMTZhMTYuNTIsMTYuNTIsMCwwLDEsOC4xOC0xNC44MWM1LjI0LTMuMjUsMTQuMTctMy42NywyNy0zLjY3aDkuNzdjMC0uNTMuMTEtMSwuMTEtMS40NiwwLTUuNzctMy40Ny04LjgzLTkuODgtOC44My03LDAtMTAuNiwxLjY4LTExLjM0LDYuNEgyMjguNTZjMS4zNi0xMS43NCwxMS43NS0xNi44OSwzMi4xMi0xNi44OSwxOS42NCwwLDI5LDYuMTgsMjksMjAuMTR2MjYuODlhMTguNzEsMTguNzEsMCwwLDAsMS4wNSw2LjkySDI3MS45MWExNi42MywxNi42MywwLDAsMS0xLjI2LTYuODF2LTFDMjY2LjQ2LDExMy4wNiwyNTguMDUsMTE2LjQyLDI0Ni4wOCwxMTYuNDJabTIyLjQ3LTI0Ljc4Yy0xNS4zMywwLTIyLjM2LDEuNTYtMjIuMzYsNy40NSwwLDMuODksMy4zNiw1Ljg4LDEwLjA5LDUuODgsOC45MSwwLDEzLjg1LTQuMywxMy44NS0xMi4xOFY5MS42NFoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMS4yMyAtMzguNjIpIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMjk5LjMxLDc0Ljg0YTk3LjkzLDk3LjkzLDAsMCwwLS42My0xMi4zOWgxOS44NHEuNjMsNC4yNy45NCw4LjVBMjguMzcsMjguMzcsMCwwLDEsMzQxLjMsNjEuMmM5Ljc2LDAsMTYuMTYsMy43NiwxOC45LDEwLjkxLDUtNy4yNCwxMi4zOC0xMC45MSwyMS41MS0xMC45MSwxNC44LDAsMjMuMSw3Ljc1LDIzLjEsMjIuMzZ2MzEuNTlIMzg0Ljc2VjgzYzAtNi40MS0zLjc4LTEwLTEwLjE5LTEwLTguNywwLTEyLjcsNS0xMi43LDE1LjMydjI2Ljc4SDM0MlY4M2MwLTYuMy0zLjc4LTEwLTEwLTEwLTguOTMsMC0xMi45MSw1LTEyLjkxLDE1LjMydjI2Ljc4SDI5OS4zMVoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMS4yMyAtMzguNjIpIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNDEyLjY4LDg4LjdjMC0xNy42MywxMi4yOC0yNy42MiwzNS43LTI3LjYyczM1LjgsMTAsMzUuOCwyNy44M2MwLDE4LjE2LTEyLjI5LDI3LjUxLTM2LjY1LDI3LjUxQzQyNC42NSwxMTYuNDIsNDEyLjY4LDEwNi40NCw0MTIuNjgsODguN1ptNTAuMzgtLjQyYzAtMTAuMjktNS42Ni0xNi41OS0xNC41OC0xNi41OS05LjI0LDAtMTQuNTksNS44OC0xNC41OSwxNi40OXM1LjE1LDE2LjQ3LDE0LjY5LDE2LjQ3QzQ1Ny41LDEwNC42NSw0NjMuMDYsOTguNDUsNDYzLjA2LDg4LjI4WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTIxLjIzIC0zOC42MikiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik00OTAuNzksNzQuODRhOTQuMzQsOTQuMzQsMCwwLDAtLjY1LTEyLjM5aDIwLjI4YTcwLjg2LDcwLjg2LDAsMCwxLC41Miw4LjRjNS44Ny02LjE5LDEyLjgxLTkuNjUsMjIuNjctOS42NSwxNC4yOCwwLDIyLjg4LDgsMjIuODgsMjEuNzN2MzIuMjJINTM2LjI0VjgzLjg3YzAtNy4xNC0zLjg4LTEwLjgyLTExLjEzLTEwLjgyLTkuNjcsMC0xNC4xNyw1LTE0LjE3LDE1LjMydjI2Ljc4SDQ5MC43OVoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMS4yMyAtMzguNjIpIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNTc1LjA3LDM4LjYyYTE1LDE1LDAsMCwxLDcuMjMsMS45QTEzLjQ3LDEzLjQ3LDAsMCwxLDU4Ny44LDQ2YTE0Ljc5LDE0Ljc5LDAsMCwxLDAsMTQuNywxMy42NSwxMy42NSwwLDAsMS01LjQ0LDUuNDUsMTQuNzMsMTQuNzMsMCwwLDEtMTQuNjUsMCwxMy42OCwxMy42OCwwLDAsMS01LjQ1LTUuNDUsMTQuNzMsMTQuNzMsMCwwLDEsMC0xNC43LDEzLjU1LDEzLjU1LDAsMCwxLDUuNTEtNS40NEExNSwxNSwwLDAsMSw1NzUuMDcsMzguNjJabTAsMi40NGExMi41MSwxMi41MSwwLDAsMC02LDEuNTksMTEuNDIsMTEuNDIsMCwwLDAtNC42LDQuNTQsMTIuMjMsMTIuMjMsMCwwLDAsMCwxMi4yNUExMS42LDExLjYsMCwwLDAsNTY5LDY0YTEyLjI1LDEyLjI1LDAsMCwwLDEyLjIxLDAsMTEuNTEsMTEuNTEsMCwwLDAsNC41NS00LjU1LDEyLjI5LDEyLjI5LDAsMCwwLDAtMTIuMjUsMTEuMywxMS4zLDAsMCwwLTQuNi00LjU0QTEyLjUyLDEyLjUyLDAsMCwwLDU3NS4wNyw0MS4wNlptLTYuNDYsMjAuNDJWNDUuNjRoNS40NGExMy4zOSwxMy4zOSwwLDAsMSw0LC40NCwzLjkyLDMuOTIsMCwwLDEsMiwxLjUzLDQuMDksNC4wOSwwLDAsMSwuNzQsMi4zMiw0LjIyLDQuMjIsMCwwLDEtMS4yNCwzLDQuOTIsNC45MiwwLDAsMS0zLjI5LDEuNDQsNC4yMSw0LjIxLDAsMCwxLDEuMzUuODRBMTcuNjIsMTcuNjIsMCwwLDEsNTgwLDU4LjM4bDEuOTMsMy4xaC0zLjEyTDU3Ny4zOSw1OWExMi42NCwxMi42NCwwLDAsMC0yLjY4LTMuNjksMy4yMywzLjIzLDAsMCwwLTIuMDUtLjU1aC0xLjV2Ni43M1ptMi41NS04LjkxaDMuMTFhNSw1LDAsMCwwLDMtLjY3LDIuMjcsMi4yNywwLDAsMCwuNDItMywyLjMsMi4zLDAsMCwwLTEuMDktLjgzLDguMDcsOC4wNywwLDAsMC0yLjU2LS4yN2gtMi45MVoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMS4yMyAtMzguNjIpIi8+PC9zdmc+ + apiversion: v2 + condition: "" + tags: "" + appversion: 6.6.00 + deprecated: false + annotations: + charts.openshift.io/name: gigamon-uctc + kubeversion: '>= 1.22.0-0' + dependencies: [] + type: application + chart-overrides: "" +results: + - check: v1.0/required-annotations-present + type: Mandatory + outcome: PASS + reason: All required annotations present + - check: v1.0/helm-lint + type: Mandatory + outcome: PASS + reason: Helm lint successful + - check: v1.0/signature-is-valid + type: Mandatory + outcome: SKIPPED + reason: 'Chart is not signed : Signature verification not required' + - check: v1.0/contains-test + type: Mandatory + outcome: PASS + reason: Chart test files exist + - check: v1.1/has-kubeversion + type: Mandatory + outcome: PASS + reason: Kubernetes version specified + - check: v1.0/has-readme + type: Mandatory + outcome: PASS + reason: Chart has a README + - check: v1.0/contains-values-schema + type: Mandatory + outcome: PASS + reason: Values schema file exist + - check: v1.1/images-are-certified + type: Mandatory + outcome: PASS + reason: No images to certify + - check: v1.0/not-contains-crds + type: Mandatory + outcome: PASS + reason: Chart does not contain CRDs + - check: v1.0/contains-values + type: Mandatory + outcome: PASS + reason: Values file exist + - check: v1.0/chart-testing + type: Mandatory + outcome: PASS + reason: Chart tests have passed + - check: v1.0/is-helm-v3 + type: Mandatory + outcome: PASS + reason: API version is V2, used in Helm 3 + - check: v1.0/not-contain-csi-objects + type: Mandatory + outcome: PASS + reason: CSI objects do not exist + diff --git a/charts/partners/gigamon2/uctc/1.4.0/uctc-1.4.0.tgz b/charts/partners/gigamon2/uctc/1.4.0/uctc-1.4.0.tgz new file mode 100644 index 000000000..b6092a273 Binary files /dev/null and b/charts/partners/gigamon2/uctc/1.4.0/uctc-1.4.0.tgz differ diff --git a/charts/partners/hashicorp/vault/0.28.0/src/.helmignore b/charts/partners/hashicorp/vault/0.28.0/src/.helmignore new file mode 100644 index 000000000..4007e2435 --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/.helmignore @@ -0,0 +1,28 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.terraform/ +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj + +# CI and test +.circleci/ +.github/ +.gitlab-ci.yml +test/ diff --git a/charts/partners/hashicorp/vault/0.28.0/src/CHANGELOG.md b/charts/partners/hashicorp/vault/0.28.0/src/CHANGELOG.md new file mode 100644 index 000000000..72e58a878 --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/CHANGELOG.md @@ -0,0 +1,545 @@ +## Unreleased + +## 0.28.0 (April 8, 2024) + +Changes: + +* Default `vault` version updated to 1.16.1 +* Default `vault-k8s` version updated to 1.4.1 +* Default `vault-csi-provider` version updated to 1.4.2 +* Tested with Kubernetes versions 1.25-1.29 + +Features: + +* server: Add annotation on config change [GH-1001](https://github.com/hashicorp/vault-helm/pull/1001) + +Bugs: + +* injector: add missing `get` `nodes` permission to ClusterRole [GH-1005](https://github.com/hashicorp/vault-helm/pull/1005) + +## 0.27.0 (November 16, 2023) + +Changes: + +* Default `vault` version updated to 1.15.2 + +Features: + +* server: Support setting `persistentVolumeClaimRetentionPolicy` on the StatefulSet [GH-965](https://github.com/hashicorp/vault-helm/pull/965) +* server: Support setting labels on PVCs [GH-969](https://github.com/hashicorp/vault-helm/pull/969) +* server: Support setting ingress rules for networkPolicy [GH-877](https://github.com/hashicorp/vault-helm/pull/877) + +Improvements: + +* Support exec in the server liveness probe [GH-971](https://github.com/hashicorp/vault-helm/pull/971) + +## 0.26.1 (October 30, 2023) + +Bugs: +* Fix templating of `server.ha.replicas` when set via override file. The `0.26.0` chart would ignore `server.ha.replicas` and always deploy 3 server replicas when `server.ha.enabled=true` unless overridden by command line when issuing the helm command: `--set server.ha.replicas=`. Fixed in [GH-961](https://github.com/hashicorp/vault-helm/pull/961) + +## 0.26.0 (October 27, 2023) + +Changes: +* Default `vault` version updated to 1.15.1 +* Default `vault-k8s` version updated to 1.3.1 +* Default `vault-csi-provider` version updated to 1.4.1 +* Tested with Kubernetes versions 1.24-1.28 +* server: OpenShift default readiness probe returns 204 when uninitialized [GH-966](https://github.com/hashicorp/vault-helm/pull/966) + +Features: +* server: Add support for dual stack clusters [GH-833](https://github.com/hashicorp/vault-helm/pull/833) +* server: Support `hostAliases` for the StatefulSet pods [GH-955](https://github.com/hashicorp/vault-helm/pull/955) +* server: Add `server.service.active.annotations` and `server.service.standby.annotations` [GH-896](https://github.com/hashicorp/vault-helm/pull/896) +* server: Add long-lived service account token option [GH-923](https://github.com/hashicorp/vault-helm/pull/923) + +Bugs: +* csi: Add namespace field to `csi-role` and `csi-rolebindings`. [GH-909](https://github.com/hashicorp/vault-helm/pull/909) + +Improvements: +* global: Add `global.namespace` to override the helm installation namespace. [GH-909](https://github.com/hashicorp/vault-helm/pull/909) +* server: use vault.fullname in Helm test [GH-912](https://github.com/hashicorp/vault-helm/pull/912) +* server: Allow scaling HA replicas to zero [GH-943](https://github.com/hashicorp/vault-helm/pull/943) + +## 0.25.0 (June 26, 2023) + +Changes: +* Latest Kubernetes version tested is now 1.27 +* server: Headless service ignores `server.service.publishNotReadyAddresses` setting and always sets it as `true` [GH-902](https://github.com/hashicorp/vault-helm/pull/902) +* `vault` updated to 1.14.0 [GH-916](https://github.com/hashicorp/vault-helm/pull/916) +* `vault-csi-provider` updated to 1.4.0 [GH-916](https://github.com/hashicorp/vault-helm/pull/916) + +Improvements: +* CSI: Make `nodeSelector` and `affinity` configurable for CSI daemonset's pods [GH-862](https://github.com/hashicorp/vault-helm/pull/862) +* injector: Add `ephemeralLimit` and `ephemeralRequest` as options for configuring Agent's ephemeral storage resources [GH-798](https://github.com/hashicorp/vault-helm/pull/798) +* Minimum kubernetes version for chart reverted to 1.20.0 to allow installation on clusters older than the oldest tested version [GH-916](https://github.com/hashicorp/vault-helm/pull/916) + +Bugs: +* server: Set the default for `prometheusRules.rules` to an empty list [GH-886](https://github.com/hashicorp/vault-helm/pull/886) + +## 0.24.1 (April 17, 2023) + +Bugs: +* csi: Add RBAC required by v1.3.0 to create secret for HMAC key used to generate secret versions [GH-872](https://github.com/hashicorp/vault-helm/pull/872) + +## 0.24.0 (April 6, 2023) + +Changes: +* Earliest Kubernetes version tested is now 1.22 +* `vault` updated to 1.13.1 [GH-863](https://github.com/hashicorp/vault-helm/pull/863) +* `vault-k8s` updated to 1.2.1 [GH-868](https://github.com/hashicorp/vault-helm/pull/868) +* `vault-csi-provider` updated to 1.3.0 [GH-749](https://github.com/hashicorp/vault-helm/pull/749) + +Features: +* server: New `extraPorts` option for adding ports to the Vault server statefulset [GH-841](https://github.com/hashicorp/vault-helm/pull/841) +* server: Add configurable Port Number in readinessProbe and livenessProbe for the server-statefulset [GH-831](https://github.com/hashicorp/vault-helm/pull/831) +* injector: Make livenessProbe and readinessProbe configurable and add configurable startupProbe [GH-852](https://github.com/hashicorp/vault-helm/pull/852) +* csi: Add an Agent sidecar to Vault CSI Provider pods to provide lease caching and renewals [GH-749](https://github.com/hashicorp/vault-helm/pull/749) + +## 0.23.0 (November 28th, 2022) + +Changes: +* `vault` updated to 1.12.1 [GH-814](https://github.com/hashicorp/vault-helm/pull/814) +* `vault-k8s` updated to 1.1.0 [GH-814](https://github.com/hashicorp/vault-helm/pull/814) +* `vault-csi-provider` updated to 1.2.1 [GH-814](https://github.com/hashicorp/vault-helm/pull/814) + +Features: +* server: Add `extraLabels` for Vault server serviceAccount [GH-806](https://github.com/hashicorp/vault-helm/pull/806) +* server: Add `server.service.active.enabled` and `server.service.standby.enabled` options to selectively disable additional services [GH-811](https://github.com/hashicorp/vault-helm/pull/811) +* server: Add `server.serviceAccount.serviceDiscovery.enabled` option to selectively disable a Vault service discovery role and role binding [GH-811](https://github.com/hashicorp/vault-helm/pull/811) +* server: Add `server.service.instanceSelector.enabled` option to allow selecting pods outside the helm chart deployment [GH-813](https://github.com/hashicorp/vault-helm/pull/813) + +Bugs: +* server: Quote `.server.ha.clusterAddr` value [GH-810](https://github.com/hashicorp/vault-helm/pull/810) + +## 0.22.1 (October 26th, 2022) + +Changes: +* `vault` updated to 1.12.0 [GH-803](https://github.com/hashicorp/vault-helm/pull/803) +* `vault-k8s` updated to 1.0.1 [GH-803](https://github.com/hashicorp/vault-helm/pull/803) + +## 0.22.0 (September 8th, 2022) + +Features: +* Add PrometheusOperator support for collecting Vault server metrics. [GH-772](https://github.com/hashicorp/vault-helm/pull/772) + +Changes: +* `vault-k8s` to 1.0.0 [GH-784](https://github.com/hashicorp/vault-helm/pull/784) +* Test against Kubernetes 1.25 [GH-784](https://github.com/hashicorp/vault-helm/pull/784) +* `vault` updated to 1.11.3 [GH-785](https://github.com/hashicorp/vault-helm/pull/785) + +## 0.21.0 (August 10th, 2022) + +CHANGES: +* `vault-k8s` updated to 0.17.0. [GH-771](https://github.com/hashicorp/vault-helm/pull/771) +* `vault-csi-provider` updated to 1.2.0 [GH-771](https://github.com/hashicorp/vault-helm/pull/771) +* `vault` updated to 1.11.2 [GH-771](https://github.com/hashicorp/vault-helm/pull/771) +* Start testing against Kubernetes 1.24. [GH-744](https://github.com/hashicorp/vault-helm/pull/744) +* Deprecated `injector.externalVaultAddr`. Added `global.externalVaultAddr`, which applies to both the Injector and the CSI Provider. [GH-745](https://github.com/hashicorp/vault-helm/pull/745) +* CSI Provider pods now set the `VAULT_ADDR` environment variable to either the internal Vault service or the configured external address. [GH-745](https://github.com/hashicorp/vault-helm/pull/745) + +Features: +* server: Add `server.statefulSet.securityContext` to override pod and container `securityContext`. [GH-767](https://github.com/hashicorp/vault-helm/pull/767) +* csi: Add `csi.daemonSet.securityContext` to override pod and container `securityContext`. [GH-767](https://github.com/hashicorp/vault-helm/pull/767) +* injector: Add `injector.securityContext` to override pod and container `securityContext`. [GH-750](https://github.com/hashicorp/vault-helm/pull/750) and [GH-767](https://github.com/hashicorp/vault-helm/pull/767) +* Add `server.service.activeNodePort` and `server.service.standbyNodePort` to specify the `nodePort` for active and standby services. [GH-610](https://github.com/hashicorp/vault-helm/pull/610) +* Support for setting annotations on the injector's serviceAccount [GH-753](https://github.com/hashicorp/vault-helm/pull/753) + +## 0.20.1 (May 25th, 2022) +CHANGES: +* `vault-k8s` updated to 0.16.1 [GH-739](https://github.com/hashicorp/vault-helm/pull/739) + +Improvements: +* Mutating webhook will no longer target the agent injector pod [GH-736](https://github.com/hashicorp/vault-helm/pull/736) + +Bugs: +* `vault` service account is now created even if the server is set to disabled, as per before 0.20.0 [GH-737](https://github.com/hashicorp/vault-helm/pull/737) + +## 0.20.0 (May 16th, 2022) + +CHANGES: +* `global.enabled` now works as documented, that is, setting `global.enabled` to false will disable everything, with individual components able to be turned on individually [GH-703](https://github.com/hashicorp/vault-helm/pull/703) +* Default value of `-` used for injector and server to indicate that they follow `global.enabled`. [GH-703](https://github.com/hashicorp/vault-helm/pull/703) +* Vault default image to 1.10.3 +* CSI provider default image to 1.1.0 +* Vault K8s default image to 0.16.0 +* Earliest Kubernetes version tested is now 1.16 +* Helm 3.6+ now required + +Features: +* Support topologySpreadConstraints in server and injector. [GH-652](https://github.com/hashicorp/vault-helm/pull/652) + +Improvements: +* CSI: Set `extraLabels` for daemonset, pods, and service account [GH-690](https://github.com/hashicorp/vault-helm/pull/690) +* Add namespace to injector-leader-elector role, rolebinding and secret [GH-683](https://github.com/hashicorp/vault-helm/pull/683) +* Support policy/v1 PodDisruptionBudget in Kubernetes 1.21+ for server and injector [GH-710](https://github.com/hashicorp/vault-helm/pull/710) +* Make the Cluster Address (CLUSTER_ADDR) configurable [GH-629](https://github.com/hashicorp/vault-helm/pull/709) +* server: Make `publishNotReadyAddresses` configurable for services [GH-694](https://github.com/hashicorp/vault-helm/pull/694) +* server: Allow config to be defined as a YAML object in the values file [GH-684](https://github.com/hashicorp/vault-helm/pull/684) +* Maintain default MutatingWebhookConfiguration values from `v1beta1` [GH-692](https://github.com/hashicorp/vault-helm/pull/692) + +## 0.19.0 (January 20th, 2022) + +CHANGES: +* Vault image default 1.9.2 +* Vault K8s image default 0.14.2 + +Features: +* Added configurable podDisruptionBudget for injector [GH-653](https://github.com/hashicorp/vault-helm/pull/653) +* Make terminationGracePeriodSeconds configurable for server [GH-659](https://github.com/hashicorp/vault-helm/pull/659) +* Added configurable update strategy for injector [GH-661](https://github.com/hashicorp/vault-helm/pull/661) +* csi: ability to set priorityClassName for CSI daemonset pods [GH-670](https://github.com/hashicorp/vault-helm/pull/670) + +Improvements: +* Set the namespace on the OpenShift Route [GH-679](https://github.com/hashicorp/vault-helm/pull/679) +* Add volumes and env vars to helm hook test pod [GH-673](https://github.com/hashicorp/vault-helm/pull/673) +* Make TLS configurable for OpenShift routes [GH-686](https://github.com/hashicorp/vault-helm/pull/686) + +## 0.18.0 (November 17th, 2021) + +CHANGES: +* Removed support for deploying a leader-elector container with the [vault-k8s injector](https://github.com/hashicorp/vault-k8s) injector since vault-k8s now uses an internal mechanism to determine leadership [GH-649](https://github.com/hashicorp/vault-helm/pull/649) +* Vault image default 1.9.0 +* Vault K8s image default 0.14.1 + +Improvements: +* Added templateConfig.staticSecretRenderInterval chart option for the injector [GH-621](https://github.com/hashicorp/vault-helm/pull/621) + +## 0.17.1 (October 25th, 2021) + +Improvements: + * Add option for Ingress PathType [GH-634](https://github.com/hashicorp/vault-helm/pull/634) + +## 0.17.0 (October 21st, 2021) + +KNOWN ISSUES: +* The chart will fail to deploy on Kubernetes 1.19+ with `server.ingress.enabled=true` because no `pathType` is set + +CHANGES: +* Vault image default 1.8.4 +* Vault K8s image default 0.14.0 + +Improvements: +* Support Ingress stable networking API [GH-590](https://github.com/hashicorp/vault-helm/pull/590) +* Support setting the `externalTrafficPolicy` for `LoadBalancer` and `NodePort` service types [GH-626](https://github.com/hashicorp/vault-helm/pull/626) +* Support setting ingressClassName on server Ingress [GH-630](https://github.com/hashicorp/vault-helm/pull/630) + +Bugs: +* Ensure `kubeletRootDir` volume path and mounts are the same when `csi.daemonSet.kubeletRootDir` is overridden [GH-628](https://github.com/hashicorp/vault-helm/pull/628) + +## 0.16.1 (September 29th, 2021) + +CHANGES: +* Vault image default 1.8.3 +* Vault K8s image default 0.13.1 + +## 0.16.0 (September 16th, 2021) + +CHANGES: +* Support for deploying a leader-elector container with the [vault-k8s injector](https://github.com/hashicorp/vault-k8s) injector will be removed in version 0.18.0 of this chart since vault-k8s now uses an internal mechanism to determine leadership. To enable the deployment of the leader-elector container for use with vault-k8s 0.12.0 and earlier, set `useContainer=true`. + +Improvements: + * Make CSI provider `hostPaths` configurable via `csi.daemonSet.providersDir` and `csi.daemonSet.kubeletRootDir` [GH-603](https://github.com/hashicorp/vault-helm/pull/603) + * Support vault-k8s internal leader election [GH-568](https://github.com/hashicorp/vault-helm/pull/568) [GH-607](https://github.com/hashicorp/vault-helm/pull/607) + +## 0.15.0 (August 23rd, 2021) + +Improvements: +* Add imagePullSecrets on server test [GH-572](https://github.com/hashicorp/vault-helm/pull/572) +* Add injector.webhookAnnotations chart option [GH-584](https://github.com/hashicorp/vault-helm/pull/584) + +## 0.14.0 (July 28th, 2021) + +Features: +* Added templateConfig.exitOnRetryFailure chart option for the injector [GH-560](https://github.com/hashicorp/vault-helm/pull/560) + +Improvements: +* Support configuring pod tolerations, pod affinity, and node selectors as YAML [GH-565](https://github.com/hashicorp/vault-helm/pull/565) +* Set the default vault image to come from the hashicorp organization [GH-567](https://github.com/hashicorp/vault-helm/pull/567) +* Add support for running the acceptance tests against a local `kind` cluster [GH-567](https://github.com/hashicorp/vault-helm/pull/567) +* Add `server.ingress.activeService` to configure if the ingress should use the active service [GH-570](https://github.com/hashicorp/vault-helm/pull/570) +* Add `server.route.activeService` to configure if the route should use the active service [GH-570](https://github.com/hashicorp/vault-helm/pull/570) +* Support configuring `global.imagePullSecrets` from a string array [GH-576](https://github.com/hashicorp/vault-helm/pull/576) + + +## 0.13.0 (June 17th, 2021) + +Improvements: +* Added a helm test for vault server [GH-531](https://github.com/hashicorp/vault-helm/pull/531) +* Added server.enterpriseLicense option [GH-547](https://github.com/hashicorp/vault-helm/pull/547) +* Added OpenShift overrides [GH-549](https://github.com/hashicorp/vault-helm/pull/549) + +Bugs: +* Fix ui.serviceNodePort schema [GH-537](https://github.com/hashicorp/vault-helm/pull/537) +* Fix server.ha.disruptionBudget.maxUnavailable schema [GH-535](https://github.com/hashicorp/vault-helm/pull/535) +* Added webhook-certs volume mount to sidecar injector [GH-545](https://github.com/hashicorp/vault-helm/pull/545) + +## 0.12.0 (May 25th, 2021) + +Features: +* Pass additional arguments to `vault-csi-provider` using `csi.extraArgs` [GH-526](https://github.com/hashicorp/vault-helm/pull/526) + +Improvements: +* Set chart kubeVersion and added chart-verifier tests [GH-510](https://github.com/hashicorp/vault-helm/pull/510) +* Added values json schema [GH-513](https://github.com/hashicorp/vault-helm/pull/513) +* Ability to set tolerations for CSI daemonset pods [GH-521](https://github.com/hashicorp/vault-helm/pull/521) +* UI target port is now configurable [GH-437](https://github.com/hashicorp/vault-helm/pull/437) + +Bugs: +* CSI: `global.imagePullSecrets` are now also used for CSI daemonset [GH-519](https://github.com/hashicorp/vault-helm/pull/519) + +## 0.11.0 (April 14th, 2021) + +Features: +* Added `server.enabled` to explicitly skip installing a Vault server [GH-486](https://github.com/hashicorp/vault-helm/pull/486) +* Injector now supports enabling host network [GH-471](https://github.com/hashicorp/vault-helm/pull/471) +* Injector port is now configurable [GH-489](https://github.com/hashicorp/vault-helm/pull/489) +* Injector Vault Agent resource defaults are now configurable [GH-493](https://github.com/hashicorp/vault-helm/pull/493) +* Extra paths can now be added to the Vault ingress service [GH-460](https://github.com/hashicorp/vault-helm/pull/460) +* Log level and format can now be set directly using `server.logFormat` and `server.logLevel` [GH-488](https://github.com/hashicorp/vault-helm/pull/488) + +Improvements: +* Added `https` name to injector service port [GH-495](https://github.com/hashicorp/vault-helm/pull/495) + +Bugs: +* CSI: Fix ClusterRole name and DaemonSet's service account to properly match deployment name [GH-486](https://github.com/hashicorp/vault-helm/pull/486) + +## 0.10.0 (March 25th, 2021) + +Features: +* Add support for [Vault CSI provider](https://github.com/hashicorp/vault-csi-provider) [GH-461](https://github.com/hashicorp/vault-helm/pull/461) + +Improvements: +* `objectSelector` can now be set on the mutating admission webhook [GH-456](https://github.com/hashicorp/vault-helm/pull/456) + +## 0.9.1 (February 2nd, 2021) + +Bugs: +* Injector: fix labels for default anti-affinity rule [GH-441](https://github.com/hashicorp/vault-helm/pull/441), [GH-442](https://github.com/hashicorp/vault-helm/pull/442) +* Set VAULT_DEV_LISTEN_ADDRESS in dev mode [GH-446](https://github.com/hashicorp/vault-helm/pull/446) + +## 0.9.0 (January 5th, 2021) + +Features: +* Injector now supports configurable number of replicas [GH-436](https://github.com/hashicorp/vault-helm/pull/436) +* Injector now supports auto TLS for multiple replicas using leader elections [GH-436](https://github.com/hashicorp/vault-helm/pull/436) + +Improvements: +* Dev mode now supports `server.extraArgs` [GH-421](https://github.com/hashicorp/vault-helm/pull/421) +* Dev mode root token is now configurable with `server.dev.devRootToken` [GH-415](https://github.com/hashicorp/vault-helm/pull/415) +* ClusterRoleBinding updated to `v1` [GH-395](https://github.com/hashicorp/vault-helm/pull/395) +* MutatingWebhook updated to `v1` [GH-408](https://github.com/hashicorp/vault-helm/pull/408) +* Injector service now supports `injector.service.annotations` [425](https://github.com/hashicorp/vault-helm/pull/425) +* Injector now supports `injector.extraLabels` [428](https://github.com/hashicorp/vault-helm/pull/428) +* Added `allowPrivilegeEscalation: false` to Vault and Injector containers [429](https://github.com/hashicorp/vault-helm/pull/429) +* Network Policy now supports `server.networkPolicy.egress` [389](https://github.com/hashicorp/vault-helm/pull/389) + +## 0.8.0 (October 20th, 2020) + +Improvements: +* Make server NetworkPolicy independent of OpenShift [GH-381](https://github.com/hashicorp/vault-helm/pull/381) +* Added configurables for all probe values [GH-387](https://github.com/hashicorp/vault-helm/pull/387) +* MountPath for audit and data storage is now configurable [GH-393](https://github.com/hashicorp/vault-helm/pull/393) +* Annotations can now be added to the Injector pods [GH-394](https://github.com/hashicorp/vault-helm/pull/394) +* The injector can now be configured with a failurePolicy [GH-400](https://github.com/hashicorp/vault-helm/pull/400) +* Added additional environment variables for rendering within Vault config [GH-398](https://github.com/hashicorp/vault-helm/pull/398) +* Service account for Vault K8s auth is automatically created when `injector.externalVaultAddr` is set [GH-392](https://github.com/hashicorp/vault-helm/pull/392) + +Bugs: +* Fixed install output using Helm V2 command [GH-378](https://github.com/hashicorp/vault-helm/pull/378) + +## 0.7.0 (August 24th, 2020) + +Features: +* Added `volumes` and `volumeMounts` for mounting _any_ type of volume [GH-314](https://github.com/hashicorp/vault-helm/pull/314). +* Added configurable to enable prometheus telemetery exporter for Vault Agent Injector [GH-372](https://github.com/hashicorp/vault-helm/pull/372) + +Improvements: +* Added `defaultMode` configurable to `extraVolumes`[GH-321](https://github.com/hashicorp/vault-helm/pull/321) +* Option to install and use PodSecurityPolicy's for vault server and injector [GH-177](https://github.com/hashicorp/vault-helm/pull/177) +* `VAULT_API_ADDR` is now configurable [GH-290](https://github.com/hashicorp/vault-helm/pull/290) +* Removed deprecated tolerate unready endpoint annotations [GH-363](https://github.com/hashicorp/vault-helm/pull/363) +* Add an option to set annotations on the StatefulSet [GH-199](https://github.com/hashicorp/vault-helm/pull/199) +* Make the vault server serviceAccount name a configuration option [GH-367](https://github.com/hashicorp/vault-helm/pull/367) +* Removed annotation striction from `dev` mode [GH-371](https://github.com/hashicorp/vault-helm/pull/371) +* Add an option to set annotations on PVCs [GH-364](https://github.com/hashicorp/vault-helm/pull/364) +* Added service configurables for UI [GH-285](https://github.com/hashicorp/vault-helm/pull/285) + +Bugs: +* Fix python dependency in test image [GH-337](https://github.com/hashicorp/vault-helm/pull/337) +* Fix caBundle not being quoted causing validation issues with Helm 3 [GH-352](https://github.com/hashicorp/vault-helm/pull/352) +* Fix injector network policy being rendered when injector is not enabled [GH-358](https://github.com/hashicorp/vault-helm/pull/358) + +## 0.6.0 (June 3rd, 2020) + +Features: +* Added `extraInitContainers` to define init containers for the Vault cluster [GH-258](https://github.com/hashicorp/vault-helm/pull/258) +* Added `postStart` lifecycle hook allowing users to configure commands to run on the Vault pods after they're ready [GH-315](https://github.com/hashicorp/vault-helm/pull/315) +* Beta: Added OpenShift support [GH-319](https://github.com/hashicorp/vault-helm/pull/319) + +Improvements: +* Server configs can now be defined in YAML. Multi-line string configs are still compatible [GH-213](https://github.com/hashicorp/vault-helm/pull/213) +* Removed IPC_LOCK privileges since swap is disabled on containers [[GH-198](https://github.com/hashicorp/vault-helm/pull/198)] +* Use port names that map to vault.scheme [[GH-223](https://github.com/hashicorp/vault-helm/pull/223)] +* Allow both yaml and multi-line string annotations [[GH-272](https://github.com/hashicorp/vault-helm/pull/272)] +* Added configurable to set the Raft node name to hostname [[GH-269](https://github.com/hashicorp/vault-helm/pull/269)] +* Support setting priorityClassName on pods [[GH-282](https://github.com/hashicorp/vault-helm/pull/282)] +* Added support for ingress apiVersion `networking.k8s.io/v1beta1` [[GH-310](https://github.com/hashicorp/vault-helm/pull/310)] +* Added configurable to change service type for the HA active service [GH-317](https://github.com/hashicorp/vault-helm/pull/317) + +Bugs: +* Fixed default ingress path [[GH-224](https://github.com/hashicorp/vault-helm/pull/224)] +* Fixed annotations for HA standby/active services [[GH-268](https://github.com/hashicorp/vault-helm/pull/268)] +* Updated some value defaults to match their use in templates [[GH-309](https://github.com/hashicorp/vault-helm/pull/309)] +* Use active service on ingress when ha [[GH-270](https://github.com/hashicorp/vault-helm/pull/270)] +* Fixed bug where pull secrets weren't being used for injector image [GH-298](https://github.com/hashicorp/vault-helm/pull/298) + +## 0.5.0 (April 9th, 2020) + +Features: + +* Added Raft support for HA mode [[GH-228](https://github.com/hashicorp/vault-helm/pull/229)] +* Now supports Vault Enterprise [[GH-250](https://github.com/hashicorp/vault-helm/pull/250)] +* Added K8s Service Registration for HA modes [[GH-250](https://github.com/hashicorp/vault-helm/pull/250)] + +* Option to set `AGENT_INJECT_VAULT_AUTH_PATH` for the injector [[GH-185](https://github.com/hashicorp/vault-helm/pull/185)] +* Added environment variables for logging and revocation on Vault Agent Injector [[GH-219](https://github.com/hashicorp/vault-helm/pull/219)] +* Option to set environment variables for the injector deployment [[GH-232](https://github.com/hashicorp/vault-helm/pull/232)] +* Added affinity, tolerations, and nodeSelector options for the injector deployment [[GH-234](https://github.com/hashicorp/vault-helm/pull/234)] +* Made all annotations multi-line strings [[GH-227](https://github.com/hashicorp/vault-helm/pull/227)] + +## 0.4.0 (February 21st, 2020) + +Improvements: + +* Allow process namespace sharing between Vault and sidecar containers [[GH-174](https://github.com/hashicorp/vault-helm/pull/174)] +* Added configurable to change updateStrategy [[GH-172](https://github.com/hashicorp/vault-helm/pull/172)] +* Added sleep in the preStop lifecycle step [[GH-188](https://github.com/hashicorp/vault-helm/pull/188)] +* Updated chart and tests to Helm 3 [[GH-195](https://github.com/hashicorp/vault-helm/pull/195)] +* Adds Values.injector.externalVaultAddr to use the injector with an external vault [[GH-207](https://github.com/hashicorp/vault-helm/pull/207)] + +Bugs: + +* Fix bug where Vault lifecycle was appended after extra containers. [[GH-179](https://github.com/hashicorp/vault-helm/pull/179)] + +## 0.3.3 (January 14th, 2020) + +Security: + +* Added `server.extraArgs` to allow loading of additional Vault configurations containing sensitive settings [GH-175](https://github.com/hashicorp/vault-helm/issues/175) + +Bugs: + +* Fixed injection bug where wrong environment variables were being used for manually mounted TLS files + +## 0.3.2 (January 8th, 2020) + +Bugs: + +* Fixed injection bug where TLS Skip Verify was true by default [VK8S-35] + +## 0.3.1 (January 2nd, 2020) + +Bugs: + +* Fixed injection bug causing kube-system pods to be rejected [VK8S-14] + +## 0.3.0 (December 19th, 2019) + +Features: + +* Extra containers can now be added to the Vault pods +* Added configurability of pod probes +* Added Vault Agent Injector + +Improvements: + +* Moved `global.image` to `server.image` +* Changed UI service template to route pods that aren't ready via `publishNotReadyAddresses: true` +* Added better HTTP/HTTPS scheme support to http probes +* Added configurable node port for Vault service +* `server.authDelegator` is now enabled by default + +Bugs: + +* Fixed upgrade bug by removing chart label which contained the version +* Fixed typo on `serviceAccount` (was `serviceaccount`) +* Fixed readiness/liveliness HTTP probe default to accept standbys + +## 0.2.1 (November 12th, 2019) + +Bugs: + +* Removed `readOnlyRootFilesystem` causing issues when validating deployments + +## 0.2.0 (October 29th, 2019) + +Features: + +* Added load balancer support +* Added ingress support +* Added configurable for service types (ClusterIP, NodePort, LoadBalancer, etc) +* Removed root requirements, now runs as Vault user + +Improvements: + +* Added namespace value to all rendered objects +* Made ports configurable in services +* Added the ability to add custom annotations to services +* Added docker image for running bats test in CircleCI +* Removed restrictions around `dev` mode such as annotations +* `readOnlyRootFilesystem` is now configurable +* Image Pull Policy is now configurable + +Bugs: + +* Fixed selector bugs related to Helm label updates (services, affinities, and pod disruption) +* Fixed bug where audit storage was not being mounted in HA mode +* Fixed bug where Vault pod wasn't receiving SIGTERM signals + + +## 0.1.2 (August 22nd, 2019) + +Features: + +* Added `extraSecretEnvironmentVars` to allow users to mount secrets as + environment variables +* Added `tlsDisable` configurable to change HTTP protocols from HTTP/HTTPS + depending on the value +* Added `serviceNodePort` to configure a NodePort value when setting `serviceType` + to "NodePort" + +Improvements: + +* Changed UI port to 8200 for better HTTP protocol support +* Added `path` to `extraVolumes` to define where the volume should be + mounted. Defaults to `/vault/userconfig` +* Upgraded Vault to 1.2.2 + +Bugs: + +* Fixed bug where upgrade would fail because immutable labels were being + changed (Helm Version label) +* Fixed bug where UI service used wrong selector after updating helm labels +* Added `VAULT_API_ADDR` env to Vault pod to fixed bug where Vault thinks + Consul is the active node +* Removed `step-down` preStop since it requires authentication. Shutdown signal + sent by Kube acts similar to `step-down` + + +## 0.1.1 (August 7th, 2019) + +Features: + +* Added `authDelegator` Cluster Role Binding to Vault service account for + bootstrapping Kube auth method + +Improvements: + +* Added `server.service.clusterIP` to `values.yml` so users can toggle + the Vault service to headless by using the value `None`. +* Upgraded Vault to 1.2.1 + +## 0.1.0 (August 6th, 2019) + +Initial release diff --git a/charts/partners/hashicorp/vault/0.28.0/src/CODEOWNERS b/charts/partners/hashicorp/vault/0.28.0/src/CODEOWNERS new file mode 100644 index 000000000..a765f7ea9 --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/CODEOWNERS @@ -0,0 +1 @@ +* @hashicorp/vault-ecosystem diff --git a/charts/partners/hashicorp/vault/0.28.0/src/CONTRIBUTING.md b/charts/partners/hashicorp/vault/0.28.0/src/CONTRIBUTING.md new file mode 100644 index 000000000..ad31ac92d --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/CONTRIBUTING.md @@ -0,0 +1,247 @@ +# Contributing to Vault Helm + +**Please note:** We take Vault's security and our users' trust very seriously. +If you believe you have found a security issue in Vault, please responsibly +disclose by contacting us at security@hashicorp.com. + +**First:** if you're unsure or afraid of _anything_, just ask or submit the +issue or pull request anyways. You won't be yelled at for giving it your best +effort. The worst that can happen is that you'll be politely asked to change +something. We appreciate any sort of contributions, and don't want a wall of +rules to get in the way of that. + +That said, if you want to ensure that a pull request is likely to be merged, +talk to us! You can find out our thoughts and ensure that your contribution +won't clash or be obviated by Vault's normal direction. A great way to do this +is via the [Vault Discussion Forum][1]. + +This document will cover what we're looking for in terms of reporting issues. +By addressing all the points we're looking for, it raises the chances we can +quickly merge or address your contributions. + +[1]: https://discuss.hashicorp.com/c/vault + +## Issues + +### Reporting an Issue + +* Make sure you test against the latest released version. It is possible + we already fixed the bug you're experiencing. Even better is if you can test + against `main`, as bugs are fixed regularly but new versions are only + released every few months. + +* Provide steps to reproduce the issue, and if possible include the expected + results as well as the actual results. Please provide text, not screen shots! + +* Respond as promptly as possible to any questions made by the Vault + team to your issue. Stale issues will be closed periodically. + +### Issue Lifecycle + +1. The issue is reported. + +2. The issue is verified and categorized by a Vault Helm collaborator. + Categorization is done via tags. For example, bugs are marked as "bugs". + +3. Unless it is critical, the issue may be left for a period of time (sometimes + many weeks), giving outside contributors -- maybe you!? -- a chance to + address the issue. + +4. The issue is addressed in a pull request or commit. The issue will be + referenced in the commit message so that the code that fixes it is clearly + linked. + +5. The issue is closed. Sometimes, valid issues will be closed to keep + the issue tracker clean. The issue is still indexed and available for + future viewers, or can be re-opened if necessary. + +## Testing + +The Helm chart ships with both unit and acceptance tests. + +The unit tests don't require any active Kubernetes cluster and complete +very quickly. These should be used for fast feedback during development. +The acceptance tests require a Kubernetes cluster with a configured `kubectl`. + +### Test Using Docker Container + +The following are the instructions for running bats tests using a Docker container. + +#### Prerequisites + +* Docker installed +* `vault-helm` checked out locally + +#### Test + +**Note:** the following commands should be run from the `vault-helm` directory. + +First, build the Docker image for running the tests: + +```shell +docker build -f ${PWD}/test/docker/Test.dockerfile ${PWD}/test/docker/ -t vault-helm-test +``` +Next, execute the tests with the following commands: +```shell +docker run -it --rm -v "${PWD}:/test" vault-helm-test bats /test/test/unit +``` +It's possible to only run specific bats tests using regular expressions. +For example, the following will run only tests with "injector" in the name: +```shell +docker run -it --rm -v "${PWD}:/test" vault-helm-test bats /test/test/unit -f "injector" +``` + +### Test Manually +The following are the instructions for running bats tests on your workstation. +#### Prerequisites +* [Bats](https://github.com/bats-core/bats-core) + ```bash + brew install bats-core + ``` +* [yq](https://pypi.org/project/yq/) + ```bash + brew install python-yq + ``` +* [helm](https://helm.sh) + ```bash + brew install kubernetes-helm + ``` + +#### Test + +To run the unit tests: + + bats ./test/unit + +To run the acceptance tests: + + bats ./test/acceptance + +If the acceptance tests fail, deployed resources in the Kubernetes cluster +may not be properly cleaned up. We recommend recycling the Kubernetes cluster to +start from a clean slate. + +**Note:** There is a Terraform configuration in the +[`test/terraform/`](https://github.com/hashicorp/vault-helm/tree/main/test/terraform) directory +that can be used to quickly bring up a GKE cluster and configure +`kubectl` and `helm` locally. This can be used to quickly spin up a test +cluster for acceptance tests. Unit tests _do not_ require a running Kubernetes +cluster. + +### Writing Unit Tests + +Changes to the Helm chart should be accompanied by appropriate unit tests. + +#### Formatting + +- Put tests in the test file in the same order as the variables appear in the `values.yaml`. +- Start tests for a chart value with a header that says what is being tested, like this: + ``` + #-------------------------------------------------------------------- + # annotations + ``` + +- Name the test based on what it's testing in the following format (this will be its first line): + ``` + @test "
: " { + ``` + + When adding tests to an existing file, the first section will be the same as the other tests in the file. + +#### Test Details + +[Bats](https://github.com/bats-core/bats-core) provides a way to run commands in a shell and inspect the output in an automated way. +In all of the tests in this repo, the base command being run is [helm template](https://docs.helm.sh/helm/#helm-template) which turns the templated files into straight yaml output. +In this way, we're able to test that the various conditionals in the templates render as we would expect. + +Each test defines the files that should be rendered using the `--show-only` flag, then it might adjust chart values by adding `--set` flags as well. +The output from this `helm template` command is then piped to [yq](https://pypi.org/project/yq/). +`yq` allows us to pull out just the information we're interested in, either by referencing its position in the yaml file directly or giving information about it (like its length). +The `-r` flag can be used with `yq` to return a raw string instead of a quoted one which is especially useful when looking for an exact match. + +The test passes or fails based on the conditional at the end that is in square brackets, which is a comparison of our expected value and the output of `helm template` piped to `yq`. + +The `| tee /dev/stderr ` pieces direct any terminal output of the `helm template` and `yq` commands to stderr so that it doesn't interfere with `bats`. + +#### Test Examples + +Here are some examples of common test patterns: + +- Check that a value is disabled by default + + ``` + @test "ui/Service: no type by default" { + cd `chart_dir` + local actual=$(helm template \ + --show-only templates/ui-service.yaml \ + . | tee /dev/stderr | + yq -r '.spec.type' | tee /dev/stderr) + [ "${actual}" = "null" ] + } + ``` + + In this example, nothing is changed from the default templates (no `--set` flags), then we use `yq` to retrieve the value we're checking, `.spec.type`. + This output is then compared against our expected value (`null` in this case) in the assertion `[ "${actual}" = "null" ]`. + + +- Check that a template value is rendered to a specific value + ``` + @test "ui/Service: specified type" { + cd `chart_dir` + local actual=$(helm template \ + --show-only templates/ui-service.yaml \ + --set 'ui.serviceType=LoadBalancer' \ + . | tee /dev/stderr | + yq -r '.spec.type' | tee /dev/stderr) + [ "${actual}" = "LoadBalancer" ] + } + ``` + + This is very similar to the last example, except we've changed a default value with the `--set` flag and correspondingly changed the expected value. + +- Check that a template value contains several values + ``` + @test "server/standalone-StatefulSet: custom resources" { + cd `chart_dir` + local actual=$(helm template \ + --show-only templates/server-statefulset.yaml \ + --set 'server.standalone.enabled=true' \ + --set 'server.resources.requests.memory=256Mi' \ + --set 'server.resources.requests.cpu=250m' \ + . | tee /dev/stderr | + yq -r '.spec.template.spec.containers[0].resources.requests.memory' | tee /dev/stderr) + [ "${actual}" = "256Mi" ] + + local actual=$(helm template \ + --show-only templates/server-statefulset.yaml \ + --set 'server.standalone.enabled=true' \ + --set 'server.resources.limits.memory=256Mi' \ + --set 'server.resources.limits.cpu=250m' \ + . | tee /dev/stderr | + yq -r '.spec.template.spec.containers[0].resources.limits.memory' | tee /dev/stderr) + [ "${actual}" = "256Mi" ] + ``` + + *Note:* If testing more than two conditions, it would be good to separate the `helm template` part of the command from the `yq` sections to reduce redundant work. + +- Check that an entire template file is not rendered + ``` + @test "syncCatalog/Deployment: disabled by default" { + cd `chart_dir` + local actual=$( (helm template \ + --show-only templates/server-statefulset.yaml \ + --set 'global.enabled=false' \ + . || echo "---") | tee /dev/stderr | + yq 'length > 0' | tee /dev/stderr) + [ "${actual}" = "false" ] + } + ``` + Here we are check the length of the command output to see if the anything is rendered. + This style can easily be switched to check that a file is rendered instead. + +## Contributor License Agreement + +We require that all contributors sign our Contributor License Agreement ("CLA") +before we can accept the contribution. + +[Learn more about why HashiCorp requires a CLA and what the CLA includes](https://www.hashicorp.com/cla) diff --git a/charts/partners/hashicorp/vault/0.28.0/src/Chart.yaml b/charts/partners/hashicorp/vault/0.28.0/src/Chart.yaml new file mode 100644 index 000000000..e6a72edff --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/Chart.yaml @@ -0,0 +1,23 @@ +annotations: + charts.openshift.io/name: HashiCorp Vault +apiVersion: v2 +appVersion: 1.16.1 +description: Official HashiCorp Vault Chart +home: https://www.vaultproject.io +icon: https://github.com/hashicorp/vault/raw/f22d202cde2018f9455dec755118a9b84586e082/Vault_PrimaryLogo_Black.png +keywords: +- vault +- security +- encryption +- secrets +- management +- automation +- infrastructure +kubeVersion: '>= 1.20.0-0' +name: vault +sources: +- https://github.com/hashicorp/vault +- https://github.com/hashicorp/vault-helm +- https://github.com/hashicorp/vault-k8s +- https://github.com/hashicorp/vault-csi-provider +version: 0.28.0 diff --git a/charts/partners/hashicorp/vault/0.28.0/src/LICENSE b/charts/partners/hashicorp/vault/0.28.0/src/LICENSE new file mode 100644 index 000000000..74f38c010 --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/LICENSE @@ -0,0 +1,355 @@ +Copyright (c) 2018 HashiCorp, Inc. + +Mozilla Public License, version 2.0 + +1. Definitions + +1.1. “Contributor” + + means each individual or legal entity that creates, contributes to the + creation of, or owns Covered Software. + +1.2. “Contributor Version” + + means the combination of the Contributions of others (if any) used by a + Contributor and that particular Contributor’s Contribution. + +1.3. “Contribution” + + means Covered Software of a particular Contributor. + +1.4. “Covered Software” + + means Source Code Form to which the initial Contributor has attached the + notice in Exhibit A, the Executable Form of such Source Code Form, and + Modifications of such Source Code Form, in each case including portions + thereof. + +1.5. “Incompatible With Secondary Licenses” + means + + a. that the initial Contributor has attached the notice described in + Exhibit B to the Covered Software; or + + b. that the Covered Software was made available under the terms of version + 1.1 or earlier of the License, but not also under the terms of a + Secondary License. + +1.6. “Executable Form” + + means any form of the work other than Source Code Form. + +1.7. “Larger Work” + + means a work that combines Covered Software with other material, in a separate + file or files, that is not Covered Software. + +1.8. “License” + + means this document. + +1.9. “Licensable” + + means having the right to grant, to the maximum extent possible, whether at the + time of the initial grant or subsequently, any and all of the rights conveyed by + this License. + +1.10. “Modifications” + + means any of the following: + + a. any file in Source Code Form that results from an addition to, deletion + from, or modification of the contents of Covered Software; or + + b. any new file in Source Code Form that contains any Covered Software. + +1.11. “Patent Claims” of a Contributor + + means any patent claim(s), including without limitation, method, process, + and apparatus claims, in any patent Licensable by such Contributor that + would be infringed, but for the grant of the License, by the making, + using, selling, offering for sale, having made, import, or transfer of + either its Contributions or its Contributor Version. + +1.12. “Secondary License” + + means either the GNU General Public License, Version 2.0, the GNU Lesser + General Public License, Version 2.1, the GNU Affero General Public + License, Version 3.0, or any later versions of those licenses. + +1.13. “Source Code Form” + + means the form of the work preferred for making modifications. + +1.14. “You” (or “Your”) + + means an individual or a legal entity exercising rights under this + License. For legal entities, “You” includes any entity that controls, is + controlled by, or is under common control with You. For purposes of this + definition, “control” means (a) the power, direct or indirect, to cause + the direction or management of such entity, whether by contract or + otherwise, or (b) ownership of more than fifty percent (50%) of the + outstanding shares or beneficial ownership of such entity. + + +2. License Grants and Conditions + +2.1. Grants + + Each Contributor hereby grants You a world-wide, royalty-free, + non-exclusive license: + + a. under intellectual property rights (other than patent or trademark) + Licensable by such Contributor to use, reproduce, make available, + modify, display, perform, distribute, and otherwise exploit its + Contributions, either on an unmodified basis, with Modifications, or as + part of a Larger Work; and + + b. under Patent Claims of such Contributor to make, use, sell, offer for + sale, have made, import, and otherwise transfer either its Contributions + or its Contributor Version. + +2.2. Effective Date + + The licenses granted in Section 2.1 with respect to any Contribution become + effective for each Contribution on the date the Contributor first distributes + such Contribution. + +2.3. Limitations on Grant Scope + + The licenses granted in this Section 2 are the only rights granted under this + License. No additional rights or licenses will be implied from the distribution + or licensing of Covered Software under this License. Notwithstanding Section + 2.1(b) above, no patent license is granted by a Contributor: + + a. for any code that a Contributor has removed from Covered Software; or + + b. for infringements caused by: (i) Your and any other third party’s + modifications of Covered Software, or (ii) the combination of its + Contributions with other software (except as part of its Contributor + Version); or + + c. under Patent Claims infringed by Covered Software in the absence of its + Contributions. + + This License does not grant any rights in the trademarks, service marks, or + logos of any Contributor (except as may be necessary to comply with the + notice requirements in Section 3.4). + +2.4. Subsequent Licenses + + No Contributor makes additional grants as a result of Your choice to + distribute the Covered Software under a subsequent version of this License + (see Section 10.2) or under the terms of a Secondary License (if permitted + under the terms of Section 3.3). + +2.5. Representation + + Each Contributor represents that the Contributor believes its Contributions + are its original creation(s) or it has sufficient rights to grant the + rights to its Contributions conveyed by this License. + +2.6. Fair Use + + This License is not intended to limit any rights You have under applicable + copyright doctrines of fair use, fair dealing, or other equivalents. + +2.7. Conditions + + Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in + Section 2.1. + + +3. Responsibilities + +3.1. Distribution of Source Form + + All distribution of Covered Software in Source Code Form, including any + Modifications that You create or to which You contribute, must be under the + terms of this License. You must inform recipients that the Source Code Form + of the Covered Software is governed by the terms of this License, and how + they can obtain a copy of this License. You may not attempt to alter or + restrict the recipients’ rights in the Source Code Form. + +3.2. Distribution of Executable Form + + If You distribute Covered Software in Executable Form then: + + a. such Covered Software must also be made available in Source Code Form, + as described in Section 3.1, and You must inform recipients of the + Executable Form how they can obtain a copy of such Source Code Form by + reasonable means in a timely manner, at a charge no more than the cost + of distribution to the recipient; and + + b. You may distribute such Executable Form under the terms of this License, + or sublicense it under different terms, provided that the license for + the Executable Form does not attempt to limit or alter the recipients’ + rights in the Source Code Form under this License. + +3.3. Distribution of a Larger Work + + You may create and distribute a Larger Work under terms of Your choice, + provided that You also comply with the requirements of this License for the + Covered Software. If the Larger Work is a combination of Covered Software + with a work governed by one or more Secondary Licenses, and the Covered + Software is not Incompatible With Secondary Licenses, this License permits + You to additionally distribute such Covered Software under the terms of + such Secondary License(s), so that the recipient of the Larger Work may, at + their option, further distribute the Covered Software under the terms of + either this License or such Secondary License(s). + +3.4. Notices + + You may not remove or alter the substance of any license notices (including + copyright notices, patent notices, disclaimers of warranty, or limitations + of liability) contained within the Source Code Form of the Covered + Software, except that You may alter any license notices to the extent + required to remedy known factual inaccuracies. + +3.5. Application of Additional Terms + + You may choose to offer, and to charge a fee for, warranty, support, + indemnity or liability obligations to one or more recipients of Covered + Software. However, You may do so only on Your own behalf, and not on behalf + of any Contributor. You must make it absolutely clear that any such + warranty, support, indemnity, or liability obligation is offered by You + alone, and You hereby agree to indemnify every Contributor for any + liability incurred by such Contributor as a result of warranty, support, + indemnity or liability terms You offer. You may include additional + disclaimers of warranty and limitations of liability specific to any + jurisdiction. + +4. Inability to Comply Due to Statute or Regulation + + If it is impossible for You to comply with any of the terms of this License + with respect to some or all of the Covered Software due to statute, judicial + order, or regulation then You must: (a) comply with the terms of this License + to the maximum extent possible; and (b) describe the limitations and the code + they affect. Such description must be placed in a text file included with all + distributions of the Covered Software under this License. Except to the + extent prohibited by statute or regulation, such description must be + sufficiently detailed for a recipient of ordinary skill to be able to + understand it. + +5. Termination + +5.1. The rights granted under this License will terminate automatically if You + fail to comply with any of its terms. However, if You become compliant, + then the rights granted under this License from a particular Contributor + are reinstated (a) provisionally, unless and until such Contributor + explicitly and finally terminates Your grants, and (b) on an ongoing basis, + if such Contributor fails to notify You of the non-compliance by some + reasonable means prior to 60 days after You have come back into compliance. + Moreover, Your grants from a particular Contributor are reinstated on an + ongoing basis if such Contributor notifies You of the non-compliance by + some reasonable means, this is the first time You have received notice of + non-compliance with this License from such Contributor, and You become + compliant prior to 30 days after Your receipt of the notice. + +5.2. If You initiate litigation against any entity by asserting a patent + infringement claim (excluding declaratory judgment actions, counter-claims, + and cross-claims) alleging that a Contributor Version directly or + indirectly infringes any patent, then the rights granted to You by any and + all Contributors for the Covered Software under Section 2.1 of this License + shall terminate. + +5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user + license agreements (excluding distributors and resellers) which have been + validly granted by You or Your distributors under this License prior to + termination shall survive termination. + +6. Disclaimer of Warranty + + Covered Software is provided under this License on an “as is” basis, without + warranty of any kind, either expressed, implied, or statutory, including, + without limitation, warranties that the Covered Software is free of defects, + merchantable, fit for a particular purpose or non-infringing. The entire + risk as to the quality and performance of the Covered Software is with You. + Should any Covered Software prove defective in any respect, You (not any + Contributor) assume the cost of any necessary servicing, repair, or + correction. This disclaimer of warranty constitutes an essential part of this + License. No use of any Covered Software is authorized under this License + except under this disclaimer. + +7. Limitation of Liability + + Under no circumstances and under no legal theory, whether tort (including + negligence), contract, or otherwise, shall any Contributor, or anyone who + distributes Covered Software as permitted above, be liable to You for any + direct, indirect, special, incidental, or consequential damages of any + character including, without limitation, damages for lost profits, loss of + goodwill, work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses, even if such party shall have been + informed of the possibility of such damages. This limitation of liability + shall not apply to liability for death or personal injury resulting from such + party’s negligence to the extent applicable law prohibits such limitation. + Some jurisdictions do not allow the exclusion or limitation of incidental or + consequential damages, so this exclusion and limitation may not apply to You. + +8. Litigation + + Any litigation relating to this License may be brought only in the courts of + a jurisdiction where the defendant maintains its principal place of business + and such litigation shall be governed by laws of that jurisdiction, without + reference to its conflict-of-law provisions. Nothing in this Section shall + prevent a party’s ability to bring cross-claims or counter-claims. + +9. Miscellaneous + + This License represents the complete agreement concerning the subject matter + hereof. If any provision of this License is held to be unenforceable, such + provision shall be reformed only to the extent necessary to make it + enforceable. Any law or regulation which provides that the language of a + contract shall be construed against the drafter shall not be used to construe + this License against a Contributor. + + +10. Versions of the License + +10.1. New Versions + + Mozilla Foundation is the license steward. Except as provided in Section + 10.3, no one other than the license steward has the right to modify or + publish new versions of this License. Each version will be given a + distinguishing version number. + +10.2. Effect of New Versions + + You may distribute the Covered Software under the terms of the version of + the License under which You originally received the Covered Software, or + under the terms of any subsequent version published by the license + steward. + +10.3. Modified Versions + + If you create software not governed by this License, and you want to + create a new license for such software, you may create and use a modified + version of this License if you rename the license and remove any + references to the name of the license steward (except to note that such + modified license differs from this License). + +10.4. Distributing Source Code Form that is Incompatible With Secondary Licenses + If You choose to distribute Source Code Form that is Incompatible With + Secondary Licenses under the terms of this version of the License, the + notice described in Exhibit B of this License must be attached. + +Exhibit A - Source Code Form License Notice + + This Source Code Form is subject to the + terms of the Mozilla Public License, v. + 2.0. If a copy of the MPL was not + distributed with this file, You can + obtain one at + http://mozilla.org/MPL/2.0/. + +If it is not possible or desirable to put the notice in a particular file, then +You may include the notice in a location (such as a LICENSE file in a relevant +directory) where a recipient would be likely to look for such a notice. + +You may add additional accurate notices of copyright ownership. + +Exhibit B - “Incompatible With Secondary Licenses” Notice + + This Source Code Form is “Incompatible + With Secondary Licenses”, as defined by + the Mozilla Public License, v. 2.0. diff --git a/charts/partners/hashicorp/vault/0.28.0/src/Makefile b/charts/partners/hashicorp/vault/0.28.0/src/Makefile new file mode 100644 index 000000000..96503eb69 --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/Makefile @@ -0,0 +1,101 @@ +TEST_IMAGE?=vault-helm-test +GOOGLE_CREDENTIALS?=vault-helm-test.json +CLOUDSDK_CORE_PROJECT?=vault-helm-dev-246514 +# set to run a single test - e.g acceptance/server-ha-enterprise-dr.bats +ACCEPTANCE_TESTS?=acceptance + +# filter bats unit tests to run. +UNIT_TESTS_FILTER?='.*' + +# set to 'true' to run acceptance tests locally in a kind cluster +LOCAL_ACCEPTANCE_TESTS?=false + +# kind cluster name +KIND_CLUSTER_NAME?=vault-helm + +# kind k8s version +KIND_K8S_VERSION?=v1.29.2 + +# Generate json schema for chart values. See test/README.md for more details. +values-schema: + helm schema-gen values.yaml > values.schema.json + +test-image: + @docker build --rm -t $(TEST_IMAGE) -f $(CURDIR)/test/docker/Test.dockerfile $(CURDIR) + +test-unit: + @docker run --rm -it -v ${PWD}:/helm-test $(TEST_IMAGE) bats -f $(UNIT_TESTS_FILTER) /helm-test/test/unit + +test-bats: test-unit test-acceptance + +test: test-image test-bats + +# run acceptance tests on GKE +# set google project/credential vars above +test-acceptance: +ifeq ($(LOCAL_ACCEPTANCE_TESTS),true) + make setup-kind acceptance +else + @docker run -it -v ${PWD}:/helm-test \ + -e GOOGLE_CREDENTIALS=${GOOGLE_CREDENTIALS} \ + -e CLOUDSDK_CORE_PROJECT=${CLOUDSDK_CORE_PROJECT} \ + -e KUBECONFIG=/helm-test/.kube/config \ + -e VAULT_LICENSE_CI=${VAULT_LICENSE_CI} \ + -w /helm-test \ + $(TEST_IMAGE) \ + make acceptance +endif + +# destroy GKE cluster using terraform +test-destroy: + @docker run -it -v ${PWD}:/helm-test \ + -e GOOGLE_CREDENTIALS=${GOOGLE_CREDENTIALS} \ + -e CLOUDSDK_CORE_PROJECT=${CLOUDSDK_CORE_PROJECT} \ + -w /helm-test \ + $(TEST_IMAGE) \ + make destroy-cluster + +# provision GKE cluster using terraform +test-provision: + @docker run -it -v ${PWD}:/helm-test \ + -e GOOGLE_CREDENTIALS=${GOOGLE_CREDENTIALS} \ + -e CLOUDSDK_CORE_PROJECT=${CLOUDSDK_CORE_PROJECT} \ + -e KUBECONFIG=/helm-test/.kube/config \ + -w /helm-test \ + $(TEST_IMAGE) \ + make provision-cluster + +# this target is for running the acceptance tests +# it is run in the docker container above when the test-acceptance target is invoked +acceptance: +ifneq ($(LOCAL_ACCEPTANCE_TESTS),true) + gcloud auth activate-service-account --key-file=${GOOGLE_CREDENTIALS} +endif + bats --tap --timing test/${ACCEPTANCE_TESTS} + +# this target is for provisioning the GKE cluster +# it is run in the docker container above when the test-provision target is invoked +provision-cluster: + gcloud auth activate-service-account --key-file=${GOOGLE_CREDENTIALS} + terraform init test/terraform + terraform apply -var project=${CLOUDSDK_CORE_PROJECT} -var init_cli=true -auto-approve test/terraform + +# this target is for removing the GKE cluster +# it is run in the docker container above when the test-destroy target is invoked +destroy-cluster: + terraform destroy -auto-approve + +# create a kind cluster for running the acceptance tests locally +setup-kind: + kind get clusters | grep -q "^${KIND_CLUSTER_NAME}$$" || \ + kind create cluster \ + --image kindest/node:${KIND_K8S_VERSION} \ + --name ${KIND_CLUSTER_NAME} \ + --config $(CURDIR)/test/kind/config.yaml + kubectl config use-context kind-${KIND_CLUSTER_NAME} + +# delete the kind cluster +delete-kind: + kind delete cluster --name ${KIND_CLUSTER_NAME} || : + +.PHONY: values-schema test-image test-unit test-bats test test-acceptance test-destroy test-provision acceptance provision-cluster destroy-cluster diff --git a/charts/partners/hashicorp/vault/0.28.0/src/README.md b/charts/partners/hashicorp/vault/0.28.0/src/README.md new file mode 100644 index 000000000..256bd8b91 --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/README.md @@ -0,0 +1,43 @@ +# Vault Helm Chart + +> :warning: **Please note**: We take Vault's security and our users' trust very seriously. If +you believe you have found a security issue in Vault Helm, _please responsibly disclose_ +by contacting us at [security@hashicorp.com](mailto:security@hashicorp.com). + +This repository contains the official HashiCorp Helm chart for installing +and configuring Vault on Kubernetes. This chart supports multiple use +cases of Vault on Kubernetes depending on the values provided. + +For full documentation on this Helm chart along with all the ways you can +use Vault with Kubernetes, please see the +[Vault and Kubernetes documentation](https://developer.hashicorp.com/vault/docs/platform/k8s). + +## Prerequisites + +To use the charts here, [Helm](https://helm.sh/) must be configured for your +Kubernetes cluster. Setting up Kubernetes and Helm is outside the scope of +this README. Please refer to the Kubernetes and Helm documentation. + +The versions required are: + + * **Helm 3.6+** + * **Kubernetes 1.22+** - This is the earliest version of Kubernetes tested. + It is possible that this chart works with earlier versions but it is + untested. + +## Usage + +To install the latest version of this chart, add the Hashicorp helm repository +and run `helm install`: + +```console +$ helm repo add hashicorp https://helm.releases.hashicorp.com +"hashicorp" has been added to your repositories + +$ helm install vault hashicorp/vault +``` + +Please see the many options supported in the `values.yaml` file. These are also +fully documented directly on the [Vault +website](https://developer.hashicorp.com/vault/docs/platform/k8s/helm) along with more +detailed installation instructions. diff --git a/charts/partners/hashicorp/vault/0.28.0/src/templates/NOTES.txt b/charts/partners/hashicorp/vault/0.28.0/src/templates/NOTES.txt new file mode 100644 index 000000000..60d99a4e5 --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/templates/NOTES.txt @@ -0,0 +1,14 @@ + +Thank you for installing HashiCorp Vault! + +Now that you have deployed Vault, you should look over the docs on using +Vault with Kubernetes available here: + +https://developer.hashicorp.com/vault/docs + + +Your release is named {{ .Release.Name }}. To learn more about the release, try: + + $ helm status {{ .Release.Name }} + $ helm get manifest {{ .Release.Name }} + diff --git a/charts/partners/hashicorp/vault/0.28.0/src/templates/_helpers.tpl b/charts/partners/hashicorp/vault/0.28.0/src/templates/_helpers.tpl new file mode 100644 index 000000000..7a22d04cc --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/templates/_helpers.tpl @@ -0,0 +1,1105 @@ +{{/* +Copyright (c) HashiCorp, Inc. +SPDX-License-Identifier: MPL-2.0 +*/}} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to +this (by the DNS naming spec). If release name contains chart name it will +be used as a full name. +*/}} +{{- define "vault.fullname" -}} +{{- if .Values.fullnameOverride -}} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- $name := default .Chart.Name .Values.nameOverride -}} +{{- if contains $name .Release.Name -}} +{{- .Release.Name | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} +{{- end -}} +{{- end -}} +{{- end -}} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "vault.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Expand the name of the chart. +*/}} +{{- define "vault.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Allow the release namespace to be overridden +*/}} +{{- define "vault.namespace" -}} +{{- default .Release.Namespace .Values.global.namespace -}} +{{- end -}} + +{{/* +Compute if the csi driver is enabled. +*/}} +{{- define "vault.csiEnabled" -}} +{{- $_ := set . "csiEnabled" (or + (eq (.Values.csi.enabled | toString) "true") + (and (eq (.Values.csi.enabled | toString) "-") (eq (.Values.global.enabled | toString) "true"))) -}} +{{- end -}} + +{{/* +Compute if the injector is enabled. +*/}} +{{- define "vault.injectorEnabled" -}} +{{- $_ := set . "injectorEnabled" (or + (eq (.Values.injector.enabled | toString) "true") + (and (eq (.Values.injector.enabled | toString) "-") (eq (.Values.global.enabled | toString) "true"))) -}} +{{- end -}} + +{{/* +Compute if the server is enabled. +*/}} +{{- define "vault.serverEnabled" -}} +{{- $_ := set . "serverEnabled" (or + (eq (.Values.server.enabled | toString) "true") + (and (eq (.Values.server.enabled | toString) "-") (eq (.Values.global.enabled | toString) "true"))) -}} +{{- end -}} + +{{/* +Compute if the server serviceaccount is enabled. +*/}} +{{- define "vault.serverServiceAccountEnabled" -}} +{{- $_ := set . "serverServiceAccountEnabled" + (and + (eq (.Values.server.serviceAccount.create | toString) "true" ) + (or + (eq (.Values.server.enabled | toString) "true") + (eq (.Values.global.enabled | toString) "true"))) -}} +{{- end -}} + +{{/* +Compute if the server serviceaccount should have a token created and mounted to the serviceaccount. +*/}} +{{- define "vault.serverServiceAccountSecretCreationEnabled" -}} +{{- $_ := set . "serverServiceAccountSecretCreationEnabled" + (and + (eq (.Values.server.serviceAccount.create | toString) "true") + (eq (.Values.server.serviceAccount.createSecret | toString) "true")) -}} +{{- end -}} + + +{{/* +Compute if the server auth delegator serviceaccount is enabled. +*/}} +{{- define "vault.serverAuthDelegator" -}} +{{- $_ := set . "serverAuthDelegator" + (and + (eq (.Values.server.authDelegator.enabled | toString) "true" ) + (or (eq (.Values.server.serviceAccount.create | toString) "true") + (not (eq .Values.server.serviceAccount.name ""))) + (or + (eq (.Values.server.enabled | toString) "true") + (eq (.Values.global.enabled | toString) "true"))) -}} +{{- end -}} + +{{/* +Compute if the server service is enabled. +*/}} +{{- define "vault.serverServiceEnabled" -}} +{{- template "vault.serverEnabled" . -}} +{{- $_ := set . "serverServiceEnabled" (and .serverEnabled (eq (.Values.server.service.enabled | toString) "true")) -}} +{{- end -}} + +{{/* +Compute if the ui is enabled. +*/}} +{{- define "vault.uiEnabled" -}} +{{- $_ := set . "uiEnabled" (or + (eq (.Values.ui.enabled | toString) "true") + (and (eq (.Values.ui.enabled | toString) "-") (eq (.Values.global.enabled | toString) "true"))) -}} +{{- end -}} + +{{/* +Compute the maximum number of unavailable replicas for the PodDisruptionBudget. +This defaults to (n/2)-1 where n is the number of members of the server cluster. +Add a special case for replicas=1, where it should default to 0 as well. +*/}} +{{- define "vault.pdb.maxUnavailable" -}} +{{- if eq (int .Values.server.ha.replicas) 1 -}} +{{ 0 }} +{{- else if .Values.server.ha.disruptionBudget.maxUnavailable -}} +{{ .Values.server.ha.disruptionBudget.maxUnavailable -}} +{{- else -}} +{{- div (sub (div (mul (int .Values.server.ha.replicas) 10) 2) 1) 10 -}} +{{- end -}} +{{- end -}} + +{{/* +Set the variable 'mode' to the server mode requested by the user to simplify +template logic. +*/}} +{{- define "vault.mode" -}} + {{- template "vault.serverEnabled" . -}} + {{- if or (.Values.injector.externalVaultAddr) (.Values.global.externalVaultAddr) -}} + {{- $_ := set . "mode" "external" -}} + {{- else if not .serverEnabled -}} + {{- $_ := set . "mode" "external" -}} + {{- else if eq (.Values.server.dev.enabled | toString) "true" -}} + {{- $_ := set . "mode" "dev" -}} + {{- else if eq (.Values.server.ha.enabled | toString) "true" -}} + {{- $_ := set . "mode" "ha" -}} + {{- else if or (eq (.Values.server.standalone.enabled | toString) "true") (eq (.Values.server.standalone.enabled | toString) "-") -}} + {{- $_ := set . "mode" "standalone" -}} + {{- else -}} + {{- $_ := set . "mode" "" -}} + {{- end -}} +{{- end -}} + +{{/* +Set's the replica count based on the different modes configured by user +*/}} +{{- define "vault.replicas" -}} + {{ if eq .mode "standalone" }} + {{- default 1 -}} + {{ else if eq .mode "ha" }} + {{- if or (kindIs "int64" .Values.server.ha.replicas) (kindIs "float64" .Values.server.ha.replicas) -}} + {{- .Values.server.ha.replicas -}} + {{ else }} + {{- 3 -}} + {{- end -}} + {{ else }} + {{- default 1 -}} + {{ end }} +{{- end -}} + +{{/* +Set's up configmap mounts if this isn't a dev deployment and the user +defined a custom configuration. Additionally iterates over any +extra volumes the user may have specified (such as a secret with TLS). +*/}} +{{- define "vault.volumes" -}} + {{- if and (ne .mode "dev") (or (.Values.server.standalone.config) (.Values.server.ha.config)) }} + - name: config + configMap: + name: {{ template "vault.fullname" . }}-config + {{ end }} + {{- range .Values.server.extraVolumes }} + - name: userconfig-{{ .name }} + {{ .type }}: + {{- if (eq .type "configMap") }} + name: {{ .name }} + {{- else if (eq .type "secret") }} + secretName: {{ .name }} + {{- end }} + defaultMode: {{ .defaultMode | default 420 }} + {{- end }} + {{- if .Values.server.volumes }} + {{- toYaml .Values.server.volumes | nindent 8}} + {{- end }} + {{- if (and .Values.server.enterpriseLicense.secretName .Values.server.enterpriseLicense.secretKey) }} + - name: vault-license + secret: + secretName: {{ .Values.server.enterpriseLicense.secretName }} + defaultMode: 0440 + {{- end }} +{{- end -}} + +{{/* +Set's the args for custom command to render the Vault configuration +file with IP addresses to make the out of box experience easier +for users looking to use this chart with Consul Helm. +*/}} +{{- define "vault.args" -}} + {{ if or (eq .mode "standalone") (eq .mode "ha") }} + - | + cp /vault/config/extraconfig-from-values.hcl /tmp/storageconfig.hcl; + [ -n "${HOST_IP}" ] && sed -Ei "s|HOST_IP|${HOST_IP?}|g" /tmp/storageconfig.hcl; + [ -n "${POD_IP}" ] && sed -Ei "s|POD_IP|${POD_IP?}|g" /tmp/storageconfig.hcl; + [ -n "${HOSTNAME}" ] && sed -Ei "s|HOSTNAME|${HOSTNAME?}|g" /tmp/storageconfig.hcl; + [ -n "${API_ADDR}" ] && sed -Ei "s|API_ADDR|${API_ADDR?}|g" /tmp/storageconfig.hcl; + [ -n "${TRANSIT_ADDR}" ] && sed -Ei "s|TRANSIT_ADDR|${TRANSIT_ADDR?}|g" /tmp/storageconfig.hcl; + [ -n "${RAFT_ADDR}" ] && sed -Ei "s|RAFT_ADDR|${RAFT_ADDR?}|g" /tmp/storageconfig.hcl; + /usr/local/bin/docker-entrypoint.sh vault server -config=/tmp/storageconfig.hcl {{ .Values.server.extraArgs }} + {{ else if eq .mode "dev" }} + - | + /usr/local/bin/docker-entrypoint.sh vault server -dev {{ .Values.server.extraArgs }} + {{ end }} +{{- end -}} + +{{/* +Set's additional environment variables based on the mode. +*/}} +{{- define "vault.envs" -}} + {{ if eq .mode "dev" }} + - name: VAULT_DEV_ROOT_TOKEN_ID + value: {{ .Values.server.dev.devRootToken }} + - name: VAULT_DEV_LISTEN_ADDRESS + value: "[::]:8200" + {{ end }} +{{- end -}} + +{{/* +Set's which additional volumes should be mounted to the container +based on the mode configured. +*/}} +{{- define "vault.mounts" -}} + {{ if eq (.Values.server.auditStorage.enabled | toString) "true" }} + - name: audit + mountPath: {{ .Values.server.auditStorage.mountPath }} + {{ end }} + {{ if or (eq .mode "standalone") (and (eq .mode "ha") (eq (.Values.server.ha.raft.enabled | toString) "true")) }} + {{ if eq (.Values.server.dataStorage.enabled | toString) "true" }} + - name: data + mountPath: {{ .Values.server.dataStorage.mountPath }} + {{ end }} + {{ end }} + {{ if and (ne .mode "dev") (or (.Values.server.standalone.config) (.Values.server.ha.config)) }} + - name: config + mountPath: /vault/config + {{ end }} + {{- range .Values.server.extraVolumes }} + - name: userconfig-{{ .name }} + readOnly: true + mountPath: {{ .path | default "/vault/userconfig" }}/{{ .name }} + {{- end }} + {{- if .Values.server.volumeMounts }} + {{- toYaml .Values.server.volumeMounts | nindent 12}} + {{- end }} + {{- if (and .Values.server.enterpriseLicense.secretName .Values.server.enterpriseLicense.secretKey) }} + - name: vault-license + mountPath: /vault/license + readOnly: true + {{- end }} +{{- end -}} + +{{/* +Set's up the volumeClaimTemplates when data or audit storage is required. HA +might not use data storage since Consul is likely it's backend, however, audit +storage might be desired by the user. +*/}} +{{- define "vault.volumeclaims" -}} + {{- if and (ne .mode "dev") (or .Values.server.dataStorage.enabled .Values.server.auditStorage.enabled) }} + volumeClaimTemplates: + {{- if and (eq (.Values.server.dataStorage.enabled | toString) "true") (or (eq .mode "standalone") (eq (.Values.server.ha.raft.enabled | toString ) "true" )) }} + - metadata: + name: data + {{- include "vault.dataVolumeClaim.annotations" . | nindent 6 }} + {{- include "vault.dataVolumeClaim.labels" . | nindent 6 }} + spec: + accessModes: + - {{ .Values.server.dataStorage.accessMode | default "ReadWriteOnce" }} + resources: + requests: + storage: {{ .Values.server.dataStorage.size }} + {{- if .Values.server.dataStorage.storageClass }} + storageClassName: {{ .Values.server.dataStorage.storageClass }} + {{- end }} + {{ end }} + {{- if eq (.Values.server.auditStorage.enabled | toString) "true" }} + - metadata: + name: audit + {{- include "vault.auditVolumeClaim.annotations" . | nindent 6 }} + {{- include "vault.auditVolumeClaim.labels" . | nindent 6 }} + spec: + accessModes: + - {{ .Values.server.auditStorage.accessMode | default "ReadWriteOnce" }} + resources: + requests: + storage: {{ .Values.server.auditStorage.size }} + {{- if .Values.server.auditStorage.storageClass }} + storageClassName: {{ .Values.server.auditStorage.storageClass }} + {{- end }} + {{ end }} + {{ end }} +{{- end -}} + +{{/* +Set's the affinity for pod placement when running in standalone and HA modes. +*/}} +{{- define "vault.affinity" -}} + {{- if and (ne .mode "dev") .Values.server.affinity }} + affinity: + {{ $tp := typeOf .Values.server.affinity }} + {{- if eq $tp "string" }} + {{- tpl .Values.server.affinity . | nindent 8 | trim }} + {{- else }} + {{- toYaml .Values.server.affinity | nindent 8 }} + {{- end }} + {{ end }} +{{- end -}} + +{{/* +Sets the injector affinity for pod placement +*/}} +{{- define "injector.affinity" -}} + {{- if .Values.injector.affinity }} + affinity: + {{ $tp := typeOf .Values.injector.affinity }} + {{- if eq $tp "string" }} + {{- tpl .Values.injector.affinity . | nindent 8 | trim }} + {{- else }} + {{- toYaml .Values.injector.affinity | nindent 8 }} + {{- end }} + {{ end }} +{{- end -}} + +{{/* +Sets the topologySpreadConstraints when running in standalone and HA modes. +*/}} +{{- define "vault.topologySpreadConstraints" -}} + {{- if and (ne .mode "dev") .Values.server.topologySpreadConstraints }} + topologySpreadConstraints: + {{ $tp := typeOf .Values.server.topologySpreadConstraints }} + {{- if eq $tp "string" }} + {{- tpl .Values.server.topologySpreadConstraints . | nindent 8 | trim }} + {{- else }} + {{- toYaml .Values.server.topologySpreadConstraints | nindent 8 }} + {{- end }} + {{ end }} +{{- end -}} + + +{{/* +Sets the injector topologySpreadConstraints for pod placement +*/}} +{{- define "injector.topologySpreadConstraints" -}} + {{- if .Values.injector.topologySpreadConstraints }} + topologySpreadConstraints: + {{ $tp := typeOf .Values.injector.topologySpreadConstraints }} + {{- if eq $tp "string" }} + {{- tpl .Values.injector.topologySpreadConstraints . | nindent 8 | trim }} + {{- else }} + {{- toYaml .Values.injector.topologySpreadConstraints | nindent 8 }} + {{- end }} + {{ end }} +{{- end -}} + +{{/* +Sets the toleration for pod placement when running in standalone and HA modes. +*/}} +{{- define "vault.tolerations" -}} + {{- if and (ne .mode "dev") .Values.server.tolerations }} + tolerations: + {{- $tp := typeOf .Values.server.tolerations }} + {{- if eq $tp "string" }} + {{ tpl .Values.server.tolerations . | nindent 8 | trim }} + {{- else }} + {{- toYaml .Values.server.tolerations | nindent 8 }} + {{- end }} + {{- end }} +{{- end -}} + +{{/* +Sets the injector toleration for pod placement +*/}} +{{- define "injector.tolerations" -}} + {{- if .Values.injector.tolerations }} + tolerations: + {{- $tp := typeOf .Values.injector.tolerations }} + {{- if eq $tp "string" }} + {{ tpl .Values.injector.tolerations . | nindent 8 | trim }} + {{- else }} + {{- toYaml .Values.injector.tolerations | nindent 8 }} + {{- end }} + {{- end }} +{{- end -}} + +{{/* +Set's the node selector for pod placement when running in standalone and HA modes. +*/}} +{{- define "vault.nodeselector" -}} + {{- if and (ne .mode "dev") .Values.server.nodeSelector }} + nodeSelector: + {{- $tp := typeOf .Values.server.nodeSelector }} + {{- if eq $tp "string" }} + {{ tpl .Values.server.nodeSelector . | nindent 8 | trim }} + {{- else }} + {{- toYaml .Values.server.nodeSelector | nindent 8 }} + {{- end }} + {{- end }} +{{- end -}} + +{{/* +Sets the injector node selector for pod placement +*/}} +{{- define "injector.nodeselector" -}} + {{- if .Values.injector.nodeSelector }} + nodeSelector: + {{- $tp := typeOf .Values.injector.nodeSelector }} + {{- if eq $tp "string" }} + {{ tpl .Values.injector.nodeSelector . | nindent 8 | trim }} + {{- else }} + {{- toYaml .Values.injector.nodeSelector | nindent 8 }} + {{- end }} + {{- end }} +{{- end -}} + +{{/* +Sets the injector deployment update strategy +*/}} +{{- define "injector.strategy" -}} + {{- if .Values.injector.strategy }} + strategy: + {{- $tp := typeOf .Values.injector.strategy }} + {{- if eq $tp "string" }} + {{ tpl .Values.injector.strategy . | nindent 4 | trim }} + {{- else }} + {{- toYaml .Values.injector.strategy | nindent 4 }} + {{- end }} + {{- end }} +{{- end -}} + +{{/* +Sets extra pod annotations +*/}} +{{- define "vault.annotations" }} + annotations: + {{- if .Values.server.includeConfigAnnotation }} + vault.hashicorp.com/config-checksum: {{ include "vault.config" . | sha256sum }} + {{- end }} + {{- if .Values.server.annotations }} + {{- $tp := typeOf .Values.server.annotations }} + {{- if eq $tp "string" }} + {{- tpl .Values.server.annotations . | nindent 8 }} + {{- else }} + {{- toYaml .Values.server.annotations | nindent 8 }} + {{- end }} + {{- end }} +{{- end -}} + +{{/* +Sets extra injector pod annotations +*/}} +{{- define "injector.annotations" -}} + {{- if .Values.injector.annotations }} + annotations: + {{- $tp := typeOf .Values.injector.annotations }} + {{- if eq $tp "string" }} + {{- tpl .Values.injector.annotations . | nindent 8 }} + {{- else }} + {{- toYaml .Values.injector.annotations | nindent 8 }} + {{- end }} + {{- end }} +{{- end -}} + +{{/* +Sets extra injector service annotations +*/}} +{{- define "injector.service.annotations" -}} + {{- if .Values.injector.service.annotations }} + annotations: + {{- $tp := typeOf .Values.injector.service.annotations }} + {{- if eq $tp "string" }} + {{- tpl .Values.injector.service.annotations . | nindent 4 }} + {{- else }} + {{- toYaml .Values.injector.service.annotations | nindent 4 }} + {{- end }} + {{- end }} +{{- end -}} + +{{/* +securityContext for the injector pod level. +*/}} +{{- define "injector.securityContext.pod" -}} + {{- if .Values.injector.securityContext.pod }} + securityContext: + {{- $tp := typeOf .Values.injector.securityContext.pod }} + {{- if eq $tp "string" }} + {{- tpl .Values.injector.securityContext.pod . | nindent 8 }} + {{- else }} + {{- toYaml .Values.injector.securityContext.pod | nindent 8 }} + {{- end }} + {{- else if not .Values.global.openshift }} + securityContext: + runAsNonRoot: true + runAsGroup: {{ .Values.injector.gid | default 1000 }} + runAsUser: {{ .Values.injector.uid | default 100 }} + fsGroup: {{ .Values.injector.gid | default 1000 }} + {{- end }} +{{- end -}} + +{{/* +securityContext for the injector container level. +*/}} +{{- define "injector.securityContext.container" -}} + {{- if .Values.injector.securityContext.container}} + securityContext: + {{- $tp := typeOf .Values.injector.securityContext.container }} + {{- if eq $tp "string" }} + {{- tpl .Values.injector.securityContext.container . | nindent 12 }} + {{- else }} + {{- toYaml .Values.injector.securityContext.container | nindent 12 }} + {{- end }} + {{- else if not .Values.global.openshift }} + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + {{- end }} +{{- end -}} + +{{/* +securityContext for the statefulset pod template. +*/}} +{{- define "server.statefulSet.securityContext.pod" -}} + {{- if .Values.server.statefulSet.securityContext.pod }} + securityContext: + {{- $tp := typeOf .Values.server.statefulSet.securityContext.pod }} + {{- if eq $tp "string" }} + {{- tpl .Values.server.statefulSet.securityContext.pod . | nindent 8 }} + {{- else }} + {{- toYaml .Values.server.statefulSet.securityContext.pod | nindent 8 }} + {{- end }} + {{- else if not .Values.global.openshift }} + securityContext: + runAsNonRoot: true + runAsGroup: {{ .Values.server.gid | default 1000 }} + runAsUser: {{ .Values.server.uid | default 100 }} + fsGroup: {{ .Values.server.gid | default 1000 }} + {{- end }} +{{- end -}} + +{{/* +securityContext for the statefulset vault container +*/}} +{{- define "server.statefulSet.securityContext.container" -}} + {{- if .Values.server.statefulSet.securityContext.container }} + securityContext: + {{- $tp := typeOf .Values.server.statefulSet.securityContext.container }} + {{- if eq $tp "string" }} + {{- tpl .Values.server.statefulSet.securityContext.container . | nindent 12 }} + {{- else }} + {{- toYaml .Values.server.statefulSet.securityContext.container | nindent 12 }} + {{- end }} + {{- else if not .Values.global.openshift }} + securityContext: + allowPrivilegeEscalation: false + {{- end }} +{{- end -}} + + +{{/* +Sets extra injector service account annotations +*/}} +{{- define "injector.serviceAccount.annotations" -}} + {{- if and (ne .mode "dev") .Values.injector.serviceAccount.annotations }} + annotations: + {{- $tp := typeOf .Values.injector.serviceAccount.annotations }} + {{- if eq $tp "string" }} + {{- tpl .Values.injector.serviceAccount.annotations . | nindent 4 }} + {{- else }} + {{- toYaml .Values.injector.serviceAccount.annotations | nindent 4 }} + {{- end }} + {{- end }} +{{- end -}} + +{{/* +Sets extra injector webhook annotations +*/}} +{{- define "injector.webhookAnnotations" -}} + {{- if or (((.Values.injector.webhook)).annotations) (.Values.injector.webhookAnnotations) }} + annotations: + {{- $tp := typeOf (or (((.Values.injector.webhook)).annotations) (.Values.injector.webhookAnnotations)) }} + {{- if eq $tp "string" }} + {{- tpl (((.Values.injector.webhook)).annotations | default .Values.injector.webhookAnnotations) . | nindent 4 }} + {{- else }} + {{- toYaml (((.Values.injector.webhook)).annotations | default .Values.injector.webhookAnnotations) | nindent 4 }} + {{- end }} + {{- end }} +{{- end -}} + +{{/* +Set's the injector webhook objectSelector +*/}} +{{- define "injector.objectSelector" -}} + {{- $v := or (((.Values.injector.webhook)).objectSelector) (.Values.injector.objectSelector) -}} + {{ if $v }} + objectSelector: + {{- $tp := typeOf $v -}} + {{ if eq $tp "string" }} + {{ tpl $v . | indent 6 | trim }} + {{ else }} + {{ toYaml $v | indent 6 | trim }} + {{ end }} + {{ end }} +{{ end }} + +{{/* +Sets extra ui service annotations +*/}} +{{- define "vault.ui.annotations" -}} + {{- if .Values.ui.annotations }} + annotations: + {{- $tp := typeOf .Values.ui.annotations }} + {{- if eq $tp "string" }} + {{- tpl .Values.ui.annotations . | nindent 4 }} + {{- else }} + {{- toYaml .Values.ui.annotations | nindent 4 }} + {{- end }} + {{- end }} +{{- end -}} + +{{/* +Create the name of the service account to use +*/}} +{{- define "vault.serviceAccount.name" -}} +{{- if .Values.server.serviceAccount.create -}} + {{ default (include "vault.fullname" .) .Values.server.serviceAccount.name }} +{{- else -}} + {{ default "default" .Values.server.serviceAccount.name }} +{{- end -}} +{{- end -}} + +{{/* +Sets extra service account annotations +*/}} +{{- define "vault.serviceAccount.annotations" -}} + {{- if and (ne .mode "dev") .Values.server.serviceAccount.annotations }} + annotations: + {{- $tp := typeOf .Values.server.serviceAccount.annotations }} + {{- if eq $tp "string" }} + {{- tpl .Values.server.serviceAccount.annotations . | nindent 4 }} + {{- else }} + {{- toYaml .Values.server.serviceAccount.annotations | nindent 4 }} + {{- end }} + {{- end }} +{{- end -}} + +{{/* +Sets extra ingress annotations +*/}} +{{- define "vault.ingress.annotations" -}} + {{- if .Values.server.ingress.annotations }} + annotations: + {{- $tp := typeOf .Values.server.ingress.annotations }} + {{- if eq $tp "string" }} + {{- tpl .Values.server.ingress.annotations . | nindent 4 }} + {{- else }} + {{- toYaml .Values.server.ingress.annotations | nindent 4 }} + {{- end }} + {{- end }} +{{- end -}} + +{{/* +Sets extra route annotations +*/}} +{{- define "vault.route.annotations" -}} + {{- if .Values.server.route.annotations }} + annotations: + {{- $tp := typeOf .Values.server.route.annotations }} + {{- if eq $tp "string" }} + {{- tpl .Values.server.route.annotations . | nindent 4 }} + {{- else }} + {{- toYaml .Values.server.route.annotations | nindent 4 }} + {{- end }} + {{- end }} +{{- end -}} + +{{/* +Sets extra vault server Service annotations +*/}} +{{- define "vault.service.annotations" -}} + {{- if .Values.server.service.annotations }} + {{- $tp := typeOf .Values.server.service.annotations }} + {{- if eq $tp "string" }} + {{- tpl .Values.server.service.annotations . | nindent 4 }} + {{- else }} + {{- toYaml .Values.server.service.annotations | nindent 4 }} + {{- end }} + {{- end }} +{{- end -}} + +{{/* +Sets extra vault server Service (active) annotations +*/}} +{{- define "vault.service.active.annotations" -}} + {{- if .Values.server.service.active.annotations }} + {{- $tp := typeOf .Values.server.service.active.annotations }} + {{- if eq $tp "string" }} + {{- tpl .Values.server.service.active.annotations . | nindent 4 }} + {{- else }} + {{- toYaml .Values.server.service.active.annotations | nindent 4 }} + {{- end }} + {{- end }} +{{- end -}} +{{/* +Sets extra vault server Service annotations +*/}} +{{- define "vault.service.standby.annotations" -}} + {{- if .Values.server.service.standby.annotations }} + {{- $tp := typeOf .Values.server.service.standby.annotations }} + {{- if eq $tp "string" }} + {{- tpl .Values.server.service.standby.annotations . | nindent 4 }} + {{- else }} + {{- toYaml .Values.server.service.standby.annotations | nindent 4 }} + {{- end }} + {{- end }} +{{- end -}} + +{{/* +Sets PodSecurityPolicy annotations +*/}} +{{- define "vault.psp.annotations" -}} + {{- if .Values.global.psp.annotations }} + annotations: + {{- $tp := typeOf .Values.global.psp.annotations }} + {{- if eq $tp "string" }} + {{- tpl .Values.global.psp.annotations . | nindent 4 }} + {{- else }} + {{- toYaml .Values.global.psp.annotations | nindent 4 }} + {{- end }} + {{- end }} +{{- end -}} + +{{/* +Sets extra statefulset annotations +*/}} +{{- define "vault.statefulSet.annotations" -}} + {{- if .Values.server.statefulSet.annotations }} + annotations: + {{- $tp := typeOf .Values.server.statefulSet.annotations }} + {{- if eq $tp "string" }} + {{- tpl .Values.server.statefulSet.annotations . | nindent 4 }} + {{- else }} + {{- toYaml .Values.server.statefulSet.annotations | nindent 4 }} + {{- end }} + {{- end }} +{{- end -}} + +{{/* +Sets VolumeClaim annotations for data volume +*/}} +{{- define "vault.dataVolumeClaim.annotations" -}} + {{- if and (ne .mode "dev") (.Values.server.dataStorage.enabled) (.Values.server.dataStorage.annotations) }} + annotations: + {{- $tp := typeOf .Values.server.dataStorage.annotations }} + {{- if eq $tp "string" }} + {{- tpl .Values.server.dataStorage.annotations . | nindent 4 }} + {{- else }} + {{- toYaml .Values.server.dataStorage.annotations | nindent 4 }} + {{- end }} + {{- end }} +{{- end -}} + +{{/* +Sets VolumeClaim labels for data volume +*/}} +{{- define "vault.dataVolumeClaim.labels" -}} + {{- if and (ne .mode "dev") (.Values.server.dataStorage.enabled) (.Values.server.dataStorage.labels) }} + labels: + {{- $tp := typeOf .Values.server.dataStorage.labels }} + {{- if eq $tp "string" }} + {{- tpl .Values.server.dataStorage.labels . | nindent 4 }} + {{- else }} + {{- toYaml .Values.server.dataStorage.labels | nindent 4 }} + {{- end }} + {{- end }} +{{- end -}} + +{{/* +Sets VolumeClaim annotations for audit volume +*/}} +{{- define "vault.auditVolumeClaim.annotations" -}} + {{- if and (ne .mode "dev") (.Values.server.auditStorage.enabled) (.Values.server.auditStorage.annotations) }} + annotations: + {{- $tp := typeOf .Values.server.auditStorage.annotations }} + {{- if eq $tp "string" }} + {{- tpl .Values.server.auditStorage.annotations . | nindent 4 }} + {{- else }} + {{- toYaml .Values.server.auditStorage.annotations | nindent 4 }} + {{- end }} + {{- end }} +{{- end -}} + +{{/* +Sets VolumeClaim labels for audit volume +*/}} +{{- define "vault.auditVolumeClaim.labels" -}} + {{- if and (ne .mode "dev") (.Values.server.auditStorage.enabled) (.Values.server.auditStorage.labels) }} + labels: + {{- $tp := typeOf .Values.server.auditStorage.labels }} + {{- if eq $tp "string" }} + {{- tpl .Values.server.auditStorage.labels . | nindent 4 }} + {{- else }} + {{- toYaml .Values.server.auditStorage.labels | nindent 4 }} + {{- end }} + {{- end }} +{{- end -}} + +{{/* +Set's the container resources if the user has set any. +*/}} +{{- define "vault.resources" -}} + {{- if .Values.server.resources -}} + resources: +{{ toYaml .Values.server.resources | indent 12}} + {{ end }} +{{- end -}} + +{{/* +Sets the container resources if the user has set any. +*/}} +{{- define "injector.resources" -}} + {{- if .Values.injector.resources -}} + resources: +{{ toYaml .Values.injector.resources | indent 12}} + {{ end }} +{{- end -}} + +{{/* +Sets the container resources if the user has set any. +*/}} +{{- define "csi.resources" -}} + {{- if .Values.csi.resources -}} + resources: +{{ toYaml .Values.csi.resources | indent 12}} + {{ end }} +{{- end -}} + +{{/* +Sets the container resources for CSI's Agent sidecar if the user has set any. +*/}} +{{- define "csi.agent.resources" -}} + {{- if .Values.csi.agent.resources -}} + resources: +{{ toYaml .Values.csi.agent.resources | indent 12}} + {{ end }} +{{- end -}} + +{{/* +Sets extra CSI daemonset annotations +*/}} +{{- define "csi.daemonSet.annotations" -}} + {{- if .Values.csi.daemonSet.annotations }} + annotations: + {{- $tp := typeOf .Values.csi.daemonSet.annotations }} + {{- if eq $tp "string" }} + {{- tpl .Values.csi.daemonSet.annotations . | nindent 4 }} + {{- else }} + {{- toYaml .Values.csi.daemonSet.annotations | nindent 4 }} + {{- end }} + {{- end }} +{{- end -}} + +{{/* +Sets CSI daemonset securityContext for pod template +*/}} +{{- define "csi.daemonSet.securityContext.pod" -}} + {{- if .Values.csi.daemonSet.securityContext.pod }} + securityContext: + {{- $tp := typeOf .Values.csi.daemonSet.securityContext.pod }} + {{- if eq $tp "string" }} + {{- tpl .Values.csi.daemonSet.securityContext.pod . | nindent 8 }} + {{- else }} + {{- toYaml .Values.csi.daemonSet.securityContext.pod | nindent 8 }} + {{- end }} + {{- end }} +{{- end -}} + +{{/* +Sets CSI daemonset securityContext for container +*/}} +{{- define "csi.daemonSet.securityContext.container" -}} + {{- if .Values.csi.daemonSet.securityContext.container }} + securityContext: + {{- $tp := typeOf .Values.csi.daemonSet.securityContext.container }} + {{- if eq $tp "string" }} + {{- tpl .Values.csi.daemonSet.securityContext.container . | nindent 12 }} + {{- else }} + {{- toYaml .Values.csi.daemonSet.securityContext.container | nindent 12 }} + {{- end }} + {{- end }} +{{- end -}} + + +{{/* +Sets the injector toleration for pod placement +*/}} +{{- define "csi.pod.tolerations" -}} + {{- if .Values.csi.pod.tolerations }} + tolerations: + {{- $tp := typeOf .Values.csi.pod.tolerations }} + {{- if eq $tp "string" }} + {{ tpl .Values.csi.pod.tolerations . | nindent 8 | trim }} + {{- else }} + {{- toYaml .Values.csi.pod.tolerations | nindent 8 }} + {{- end }} + {{- end }} +{{- end -}} + +{{/* +Sets the CSI provider nodeSelector for pod placement +*/}} +{{- define "csi.pod.nodeselector" -}} + {{- if .Values.csi.pod.nodeSelector }} + nodeSelector: + {{- $tp := typeOf .Values.csi.pod.nodeSelector }} + {{- if eq $tp "string" }} + {{ tpl .Values.csi.pod.nodeSelector . | nindent 8 | trim }} + {{- else }} + {{- toYaml .Values.csi.pod.nodeSelector | nindent 8 }} + {{- end }} + {{- end }} +{{- end -}} +{{/* +Sets the CSI provider affinity for pod placement. +*/}} +{{- define "csi.pod.affinity" -}} + {{- if .Values.csi.pod.affinity }} + affinity: + {{ $tp := typeOf .Values.csi.pod.affinity }} + {{- if eq $tp "string" }} + {{- tpl .Values.csi.pod.affinity . | nindent 8 | trim }} + {{- else }} + {{- toYaml .Values.csi.pod.affinity | nindent 8 }} + {{- end }} + {{ end }} +{{- end -}} +{{/* +Sets extra CSI provider pod annotations +*/}} +{{- define "csi.pod.annotations" -}} + {{- if .Values.csi.pod.annotations }} + annotations: + {{- $tp := typeOf .Values.csi.pod.annotations }} + {{- if eq $tp "string" }} + {{- tpl .Values.csi.pod.annotations . | nindent 8 }} + {{- else }} + {{- toYaml .Values.csi.pod.annotations | nindent 8 }} + {{- end }} + {{- end }} +{{- end -}} + +{{/* +Sets extra CSI service account annotations +*/}} +{{- define "csi.serviceAccount.annotations" -}} + {{- if .Values.csi.serviceAccount.annotations }} + annotations: + {{- $tp := typeOf .Values.csi.serviceAccount.annotations }} + {{- if eq $tp "string" }} + {{- tpl .Values.csi.serviceAccount.annotations . | nindent 4 }} + {{- else }} + {{- toYaml .Values.csi.serviceAccount.annotations | nindent 4 }} + {{- end }} + {{- end }} +{{- end -}} + +{{/* +Inject extra environment vars in the format key:value, if populated +*/}} +{{- define "vault.extraEnvironmentVars" -}} +{{- if .extraEnvironmentVars -}} +{{- range $key, $value := .extraEnvironmentVars }} +- name: {{ printf "%s" $key | replace "." "_" | upper | quote }} + value: {{ $value | quote }} +{{- end }} +{{- end -}} +{{- end -}} + +{{/* +Inject extra environment populated by secrets, if populated +*/}} +{{- define "vault.extraSecretEnvironmentVars" -}} +{{- if .extraSecretEnvironmentVars -}} +{{- range .extraSecretEnvironmentVars }} +- name: {{ .envName }} + valueFrom: + secretKeyRef: + name: {{ .secretName }} + key: {{ .secretKey }} +{{- end -}} +{{- end -}} +{{- end -}} + +{{/* Scheme for health check and local endpoint */}} +{{- define "vault.scheme" -}} +{{- if .Values.global.tlsDisable -}} +{{ "http" }} +{{- else -}} +{{ "https" }} +{{- end -}} +{{- end -}} + +{{/* +imagePullSecrets generates pull secrets from either string or map values. +A map value must be indexable by the key 'name'. +*/}} +{{- define "imagePullSecrets" -}} +{{- with .Values.global.imagePullSecrets -}} +imagePullSecrets: +{{- range . -}} +{{- if typeIs "string" . }} + - name: {{ . }} +{{- else if index . "name" }} + - name: {{ .name }} +{{- end }} +{{- end -}} +{{- end -}} +{{- end -}} + +{{/* +externalTrafficPolicy sets a Service's externalTrafficPolicy if applicable. +Supported inputs are Values.server.service and Values.ui +*/}} +{{- define "service.externalTrafficPolicy" -}} +{{- $type := "" -}} +{{- if .serviceType -}} +{{- $type = .serviceType -}} +{{- else if .type -}} +{{- $type = .type -}} +{{- end -}} +{{- if and .externalTrafficPolicy (or (eq $type "LoadBalancer") (eq $type "NodePort")) }} + externalTrafficPolicy: {{ .externalTrafficPolicy }} +{{- else }} +{{- end }} +{{- end -}} + +{{/* +loadBalancer configuration for the the UI service. +Supported inputs are Values.ui +*/}} +{{- define "service.loadBalancer" -}} +{{- if eq (.serviceType | toString) "LoadBalancer" }} +{{- if .loadBalancerIP }} + loadBalancerIP: {{ .loadBalancerIP }} +{{- end }} +{{- with .loadBalancerSourceRanges }} + loadBalancerSourceRanges: +{{- range . }} + - {{ . }} +{{- end }} +{{- end -}} +{{- end }} +{{- end -}} + +{{/* +config file from values +*/}} +{{- define "vault.config" -}} + {{- if or (eq .mode "ha") (eq .mode "standalone") }} + {{- $type := typeOf (index .Values.server .mode).config }} + {{- if eq $type "string" }} + disable_mlock = true + {{- if eq .mode "standalone" }} + {{ tpl .Values.server.standalone.config . | nindent 4 | trim }} + {{- else if and (eq .mode "ha") (eq (.Values.server.ha.raft.enabled | toString) "false") }} + {{ tpl .Values.server.ha.config . | nindent 4 | trim }} + {{- else if and (eq .mode "ha") (eq (.Values.server.ha.raft.enabled | toString) "true") }} + {{ tpl .Values.server.ha.raft.config . | nindent 4 | trim }} + {{ end }} + {{- else }} + {{- if and (eq .mode "ha") (eq (.Values.server.ha.raft.enabled | toString) "true") }} +{{ merge (dict "disable_mlock" true) (index .Values.server .mode).raft.config | toPrettyJson | indent 4 }} + {{- else }} +{{ merge (dict "disable_mlock" true) (index .Values.server .mode).config | toPrettyJson | indent 4 }} + {{- end }} + {{- end }} + {{- end }} +{{- end -}} \ No newline at end of file diff --git a/charts/partners/hashicorp/vault/0.28.0/src/templates/csi-agent-configmap.yaml b/charts/partners/hashicorp/vault/0.28.0/src/templates/csi-agent-configmap.yaml new file mode 100644 index 000000000..18cdb04ac --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/templates/csi-agent-configmap.yaml @@ -0,0 +1,34 @@ +{{/* +Copyright (c) HashiCorp, Inc. +SPDX-License-Identifier: MPL-2.0 +*/}} + +{{- template "vault.csiEnabled" . -}} +{{- if and (.csiEnabled) (eq (.Values.csi.agent.enabled | toString) "true") -}} +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ template "vault.fullname" . }}-csi-provider-agent-config + namespace: {{ include "vault.namespace" . }} + labels: + helm.sh/chart: {{ include "vault.chart" . }} + app.kubernetes.io/name: {{ include "vault.name" . }}-csi-provider + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} +data: + config.hcl: | + vault { + {{- if .Values.global.externalVaultAddr }} + "address" = "{{ .Values.global.externalVaultAddr }}" + {{- else }} + "address" = "{{ include "vault.scheme" . }}://{{ template "vault.fullname" . }}.{{ include "vault.namespace" . }}.svc:{{ .Values.server.service.port }}" + {{- end }} + } + + cache {} + + listener "unix" { + address = "/var/run/vault/agent.sock" + tls_disable = true + } +{{- end }} diff --git a/charts/partners/hashicorp/vault/0.28.0/src/templates/csi-clusterrole.yaml b/charts/partners/hashicorp/vault/0.28.0/src/templates/csi-clusterrole.yaml new file mode 100644 index 000000000..6d979ea40 --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/templates/csi-clusterrole.yaml @@ -0,0 +1,23 @@ +{{/* +Copyright (c) HashiCorp, Inc. +SPDX-License-Identifier: MPL-2.0 +*/}} + +{{- template "vault.csiEnabled" . -}} +{{- if .csiEnabled -}} +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: {{ template "vault.fullname" . }}-csi-provider-clusterrole + labels: + app.kubernetes.io/name: {{ include "vault.name" . }}-csi-provider + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} +rules: +- apiGroups: + - "" + resources: + - serviceaccounts/token + verbs: + - create +{{- end }} diff --git a/charts/partners/hashicorp/vault/0.28.0/src/templates/csi-clusterrolebinding.yaml b/charts/partners/hashicorp/vault/0.28.0/src/templates/csi-clusterrolebinding.yaml new file mode 100644 index 000000000..506ec944a --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/templates/csi-clusterrolebinding.yaml @@ -0,0 +1,24 @@ +{{/* +Copyright (c) HashiCorp, Inc. +SPDX-License-Identifier: MPL-2.0 +*/}} + +{{- template "vault.csiEnabled" . -}} +{{- if .csiEnabled -}} +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: {{ template "vault.fullname" . }}-csi-provider-clusterrolebinding + labels: + app.kubernetes.io/name: {{ include "vault.name" . }}-csi-provider + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: {{ template "vault.fullname" . }}-csi-provider-clusterrole +subjects: +- kind: ServiceAccount + name: {{ template "vault.fullname" . }}-csi-provider + namespace: {{ include "vault.namespace" . }} +{{- end }} diff --git a/charts/partners/hashicorp/vault/0.28.0/src/templates/csi-daemonset.yaml b/charts/partners/hashicorp/vault/0.28.0/src/templates/csi-daemonset.yaml new file mode 100644 index 000000000..1436ff905 --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/templates/csi-daemonset.yaml @@ -0,0 +1,157 @@ +{{/* +Copyright (c) HashiCorp, Inc. +SPDX-License-Identifier: MPL-2.0 +*/}} + +{{- template "vault.csiEnabled" . -}} +{{- if .csiEnabled -}} +apiVersion: apps/v1 +kind: DaemonSet +metadata: + name: {{ template "vault.fullname" . }}-csi-provider + namespace: {{ include "vault.namespace" . }} + labels: + app.kubernetes.io/name: {{ include "vault.name" . }}-csi-provider + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + {{- if .Values.csi.daemonSet.extraLabels -}} + {{- toYaml .Values.csi.daemonSet.extraLabels | nindent 4 -}} + {{- end -}} + {{ template "csi.daemonSet.annotations" . }} +spec: + updateStrategy: + type: {{ .Values.csi.daemonSet.updateStrategy.type }} + {{- if .Values.csi.daemonSet.updateStrategy.maxUnavailable }} + rollingUpdate: + maxUnavailable: {{ .Values.csi.daemonSet.updateStrategy.maxUnavailable }} + {{- end }} + selector: + matchLabels: + app.kubernetes.io/name: {{ include "vault.name" . }}-csi-provider + app.kubernetes.io/instance: {{ .Release.Name }} + template: + metadata: + labels: + app.kubernetes.io/name: {{ template "vault.name" . }}-csi-provider + app.kubernetes.io/instance: {{ .Release.Name }} + {{- if .Values.csi.pod.extraLabels -}} + {{- toYaml .Values.csi.pod.extraLabels | nindent 8 -}} + {{- end -}} + {{ template "csi.pod.annotations" . }} + spec: + {{ template "csi.daemonSet.securityContext.pod" . }} + {{- if .Values.csi.priorityClassName }} + priorityClassName: {{ .Values.csi.priorityClassName }} + {{- end }} + serviceAccountName: {{ template "vault.fullname" . }}-csi-provider + {{- template "csi.pod.tolerations" . }} + {{- template "csi.pod.nodeselector" . }} + {{- template "csi.pod.affinity" . }} + containers: + - name: {{ include "vault.name" . }}-csi-provider + {{ template "csi.resources" . }} + {{ template "csi.daemonSet.securityContext.container" . }} + image: "{{ .Values.csi.image.repository }}:{{ .Values.csi.image.tag }}" + imagePullPolicy: {{ .Values.csi.image.pullPolicy }} + args: + - --endpoint=/provider/vault.sock + - --debug={{ .Values.csi.debug }} + {{- if .Values.csi.hmacSecretName }} + - --hmac-secret-name={{ .Values.csi.hmacSecretName }} + {{- else }} + - --hmac-secret-name={{- include "vault.name" . }}-csi-provider-hmac-key + {{- end }} + {{- if .Values.csi.extraArgs }} + {{- toYaml .Values.csi.extraArgs | nindent 12 }} + {{- end }} + env: + - name: VAULT_ADDR + {{- if eq (.Values.csi.agent.enabled | toString) "true" }} + value: "unix:///var/run/vault/agent.sock" + {{- else if .Values.global.externalVaultAddr }} + value: "{{ .Values.global.externalVaultAddr }}" + {{- else }} + value: {{ include "vault.scheme" . }}://{{ template "vault.fullname" . }}.{{ include "vault.namespace" . }}.svc:{{ .Values.server.service.port }} + {{- end }} + volumeMounts: + - name: providervol + mountPath: "/provider" + {{- if eq (.Values.csi.agent.enabled | toString) "true" }} + - name: agent-unix-socket + mountPath: /var/run/vault + {{- end }} + {{- if .Values.csi.volumeMounts }} + {{- toYaml .Values.csi.volumeMounts | nindent 12}} + {{- end }} + livenessProbe: + httpGet: + path: /health/ready + port: 8080 + failureThreshold: {{ .Values.csi.livenessProbe.failureThreshold }} + initialDelaySeconds: {{ .Values.csi.livenessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.csi.livenessProbe.periodSeconds }} + successThreshold: {{ .Values.csi.livenessProbe.successThreshold }} + timeoutSeconds: {{ .Values.csi.livenessProbe.timeoutSeconds }} + readinessProbe: + httpGet: + path: /health/ready + port: 8080 + failureThreshold: {{ .Values.csi.readinessProbe.failureThreshold }} + initialDelaySeconds: {{ .Values.csi.readinessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.csi.readinessProbe.periodSeconds }} + successThreshold: {{ .Values.csi.readinessProbe.successThreshold }} + timeoutSeconds: {{ .Values.csi.readinessProbe.timeoutSeconds }} + {{- if eq (.Values.csi.agent.enabled | toString) "true" }} + - name: {{ include "vault.name" . }}-agent + image: "{{ .Values.csi.agent.image.repository }}:{{ .Values.csi.agent.image.tag }}" + imagePullPolicy: {{ .Values.csi.agent.image.pullPolicy }} + {{ template "csi.agent.resources" . }} + command: + - vault + args: + - agent + - -config=/etc/vault/config.hcl + {{- if .Values.csi.agent.extraArgs }} + {{- toYaml .Values.csi.agent.extraArgs | nindent 12 }} + {{- end }} + ports: + - containerPort: 8200 + env: + - name: VAULT_LOG_LEVEL + value: "{{ .Values.csi.agent.logLevel }}" + - name: VAULT_LOG_FORMAT + value: "{{ .Values.csi.agent.logFormat }}" + securityContext: + runAsNonRoot: true + allowPrivilegeEscalation: false + readOnlyRootFilesystem: true + runAsUser: 100 + runAsGroup: 1000 + volumeMounts: + - name: agent-config + mountPath: /etc/vault/config.hcl + subPath: config.hcl + readOnly: true + - name: agent-unix-socket + mountPath: /var/run/vault + {{- if .Values.csi.volumeMounts }} + {{- toYaml .Values.csi.volumeMounts | nindent 12 }} + {{- end }} + {{- end }} + volumes: + - name: providervol + hostPath: + path: {{ .Values.csi.daemonSet.providersDir }} + {{- if eq (.Values.csi.agent.enabled | toString) "true" }} + - name: agent-config + configMap: + name: {{ template "vault.fullname" . }}-csi-provider-agent-config + - name: agent-unix-socket + emptyDir: + medium: Memory + {{- end }} + {{- if .Values.csi.volumes }} + {{- toYaml .Values.csi.volumes | nindent 8}} + {{- end }} + {{- include "imagePullSecrets" . | nindent 6 }} +{{- end }} diff --git a/charts/partners/hashicorp/vault/0.28.0/src/templates/csi-role.yaml b/charts/partners/hashicorp/vault/0.28.0/src/templates/csi-role.yaml new file mode 100644 index 000000000..17e1918b4 --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/templates/csi-role.yaml @@ -0,0 +1,32 @@ +{{/* +Copyright (c) HashiCorp, Inc. +SPDX-License-Identifier: MPL-2.0 +*/}} + +{{- template "vault.csiEnabled" . -}} +{{- if .csiEnabled -}} +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: {{ template "vault.fullname" . }}-csi-provider-role + namespace: {{ include "vault.namespace" . }} + labels: + app.kubernetes.io/name: {{ include "vault.name" . }}-csi-provider + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} +rules: +- apiGroups: [""] + resources: ["secrets"] + verbs: ["get"] + resourceNames: + {{- if .Values.csi.hmacSecretName }} + - {{ .Values.csi.hmacSecretName }} + {{- else }} + - {{ include "vault.name" . }}-csi-provider-hmac-key + {{- end }} +# 'create' permissions cannot be restricted by resource name: +# https://kubernetes.io/docs/reference/access-authn-authz/rbac/#referring-to-resources +- apiGroups: [""] + resources: ["secrets"] + verbs: ["create"] +{{- end }} diff --git a/charts/partners/hashicorp/vault/0.28.0/src/templates/csi-rolebinding.yaml b/charts/partners/hashicorp/vault/0.28.0/src/templates/csi-rolebinding.yaml new file mode 100644 index 000000000..3d3b981b8 --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/templates/csi-rolebinding.yaml @@ -0,0 +1,25 @@ +{{/* +Copyright (c) HashiCorp, Inc. +SPDX-License-Identifier: MPL-2.0 +*/}} + +{{- template "vault.csiEnabled" . -}} +{{- if .csiEnabled -}} +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: {{ template "vault.fullname" . }}-csi-provider-rolebinding + namespace: {{ include "vault.namespace" . }} + labels: + app.kubernetes.io/name: {{ include "vault.name" . }}-csi-provider + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: {{ template "vault.fullname" . }}-csi-provider-role +subjects: +- kind: ServiceAccount + name: {{ template "vault.fullname" . }}-csi-provider + namespace: {{ include "vault.namespace" . }} +{{- end }} diff --git a/charts/partners/hashicorp/vault/0.28.0/src/templates/csi-serviceaccount.yaml b/charts/partners/hashicorp/vault/0.28.0/src/templates/csi-serviceaccount.yaml new file mode 100644 index 000000000..6327a7b2f --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/templates/csi-serviceaccount.yaml @@ -0,0 +1,21 @@ +{{/* +Copyright (c) HashiCorp, Inc. +SPDX-License-Identifier: MPL-2.0 +*/}} + +{{- template "vault.csiEnabled" . -}} +{{- if .csiEnabled -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ template "vault.fullname" . }}-csi-provider + namespace: {{ include "vault.namespace" . }} + labels: + app.kubernetes.io/name: {{ include "vault.name" . }}-csi-provider + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + {{- if .Values.csi.serviceAccount.extraLabels -}} + {{- toYaml .Values.csi.serviceAccount.extraLabels | nindent 4 -}} + {{- end -}} + {{ template "csi.serviceAccount.annotations" . }} +{{- end }} diff --git a/charts/partners/hashicorp/vault/0.28.0/src/templates/injector-certs-secret.yaml b/charts/partners/hashicorp/vault/0.28.0/src/templates/injector-certs-secret.yaml new file mode 100644 index 000000000..f6995af10 --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/templates/injector-certs-secret.yaml @@ -0,0 +1,19 @@ +{{/* +Copyright (c) HashiCorp, Inc. +SPDX-License-Identifier: MPL-2.0 +*/}} + +{{- template "vault.injectorEnabled" . -}} +{{- if .injectorEnabled -}} +{{- if and (eq (.Values.injector.leaderElector.enabled | toString) "true") (gt (.Values.injector.replicas | int) 1) }} +apiVersion: v1 +kind: Secret +metadata: + name: vault-injector-certs + namespace: {{ include "vault.namespace" . }} + labels: + app.kubernetes.io/name: {{ include "vault.name" . }}-agent-injector + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} +{{- end }} \ No newline at end of file diff --git a/charts/partners/hashicorp/vault/0.28.0/src/templates/injector-clusterrole.yaml b/charts/partners/hashicorp/vault/0.28.0/src/templates/injector-clusterrole.yaml new file mode 100644 index 000000000..df603f250 --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/templates/injector-clusterrole.yaml @@ -0,0 +1,30 @@ +{{/* +Copyright (c) HashiCorp, Inc. +SPDX-License-Identifier: MPL-2.0 +*/}} + +{{- template "vault.injectorEnabled" . -}} +{{- if .injectorEnabled -}} +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: {{ template "vault.fullname" . }}-agent-injector-clusterrole + labels: + app.kubernetes.io/name: {{ include "vault.name" . }}-agent-injector + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} +rules: +- apiGroups: ["admissionregistration.k8s.io"] + resources: ["mutatingwebhookconfigurations"] + verbs: + - "get" + - "list" + - "watch" + - "patch" +{{- if and (eq (.Values.injector.leaderElector.enabled | toString) "true") (gt (.Values.injector.replicas | int) 1) }} +- apiGroups: [""] + resources: ["nodes"] + verbs: + - "get" +{{ end }} +{{ end }} diff --git a/charts/partners/hashicorp/vault/0.28.0/src/templates/injector-clusterrolebinding.yaml b/charts/partners/hashicorp/vault/0.28.0/src/templates/injector-clusterrolebinding.yaml new file mode 100644 index 000000000..82cbce0ce --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/templates/injector-clusterrolebinding.yaml @@ -0,0 +1,24 @@ +{{/* +Copyright (c) HashiCorp, Inc. +SPDX-License-Identifier: MPL-2.0 +*/}} + +{{- template "vault.injectorEnabled" . -}} +{{- if .injectorEnabled -}} +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: {{ template "vault.fullname" . }}-agent-injector-binding + labels: + app.kubernetes.io/name: {{ include "vault.name" . }}-agent-injector + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: {{ template "vault.fullname" . }}-agent-injector-clusterrole +subjects: +- kind: ServiceAccount + name: {{ template "vault.fullname" . }}-agent-injector + namespace: {{ include "vault.namespace" . }} +{{ end }} diff --git a/charts/partners/hashicorp/vault/0.28.0/src/templates/injector-deployment.yaml b/charts/partners/hashicorp/vault/0.28.0/src/templates/injector-deployment.yaml new file mode 100644 index 000000000..822e8e41d --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/templates/injector-deployment.yaml @@ -0,0 +1,179 @@ +{{/* +Copyright (c) HashiCorp, Inc. +SPDX-License-Identifier: MPL-2.0 +*/}} + +{{- template "vault.injectorEnabled" . -}} +{{- if .injectorEnabled -}} +# Deployment for the injector +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ template "vault.fullname" . }}-agent-injector + namespace: {{ include "vault.namespace" . }} + labels: + app.kubernetes.io/name: {{ include "vault.name" . }}-agent-injector + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + component: webhook +spec: + replicas: {{ .Values.injector.replicas }} + selector: + matchLabels: + app.kubernetes.io/name: {{ template "vault.name" . }}-agent-injector + app.kubernetes.io/instance: {{ .Release.Name }} + component: webhook + {{ template "injector.strategy" . }} + template: + metadata: + labels: + app.kubernetes.io/name: {{ template "vault.name" . }}-agent-injector + app.kubernetes.io/instance: {{ .Release.Name }} + component: webhook + {{- if .Values.injector.extraLabels -}} + {{- toYaml .Values.injector.extraLabels | nindent 8 -}} + {{- end -}} + {{ template "injector.annotations" . }} + spec: + {{ template "injector.affinity" . }} + {{ template "injector.topologySpreadConstraints" . }} + {{ template "injector.tolerations" . }} + {{ template "injector.nodeselector" . }} + {{- if .Values.injector.priorityClassName }} + priorityClassName: {{ .Values.injector.priorityClassName }} + {{- end }} + serviceAccountName: "{{ template "vault.fullname" . }}-agent-injector" + {{ template "injector.securityContext.pod" . -}} + {{- if not .Values.global.openshift }} + hostNetwork: {{ .Values.injector.hostNetwork }} + {{- end }} + containers: + - name: sidecar-injector + {{ template "injector.resources" . }} + image: "{{ .Values.injector.image.repository }}:{{ .Values.injector.image.tag }}" + imagePullPolicy: "{{ .Values.injector.image.pullPolicy }}" + {{- template "injector.securityContext.container" . }} + env: + - name: AGENT_INJECT_LISTEN + value: {{ printf ":%v" .Values.injector.port }} + - name: AGENT_INJECT_LOG_LEVEL + value: {{ .Values.injector.logLevel | default "info" }} + - name: AGENT_INJECT_VAULT_ADDR + {{- if .Values.global.externalVaultAddr }} + value: "{{ .Values.global.externalVaultAddr }}" + {{- else if .Values.injector.externalVaultAddr }} + value: "{{ .Values.injector.externalVaultAddr }}" + {{- else }} + value: {{ include "vault.scheme" . }}://{{ template "vault.fullname" . }}.{{ include "vault.namespace" . }}.svc:{{ .Values.server.service.port }} + {{- end }} + - name: AGENT_INJECT_VAULT_AUTH_PATH + value: {{ .Values.injector.authPath }} + - name: AGENT_INJECT_VAULT_IMAGE + value: "{{ .Values.injector.agentImage.repository }}:{{ .Values.injector.agentImage.tag }}" + {{- if .Values.injector.certs.secretName }} + - name: AGENT_INJECT_TLS_CERT_FILE + value: "/etc/webhook/certs/{{ .Values.injector.certs.certName }}" + - name: AGENT_INJECT_TLS_KEY_FILE + value: "/etc/webhook/certs/{{ .Values.injector.certs.keyName }}" + {{- else }} + - name: AGENT_INJECT_TLS_AUTO + value: {{ template "vault.fullname" . }}-agent-injector-cfg + - name: AGENT_INJECT_TLS_AUTO_HOSTS + value: {{ template "vault.fullname" . }}-agent-injector-svc,{{ template "vault.fullname" . }}-agent-injector-svc.{{ include "vault.namespace" . }},{{ template "vault.fullname" . }}-agent-injector-svc.{{ include "vault.namespace" . }}.svc + {{- end }} + - name: AGENT_INJECT_LOG_FORMAT + value: {{ .Values.injector.logFormat | default "standard" }} + - name: AGENT_INJECT_REVOKE_ON_SHUTDOWN + value: "{{ .Values.injector.revokeOnShutdown | default false }}" + {{- if .Values.global.openshift }} + - name: AGENT_INJECT_SET_SECURITY_CONTEXT + value: "false" + {{- end }} + {{- if .Values.injector.metrics.enabled }} + - name: AGENT_INJECT_TELEMETRY_PATH + value: "/metrics" + {{- end }} + {{- if and (eq (.Values.injector.leaderElector.enabled | toString) "true") (gt (.Values.injector.replicas | int) 1) }} + - name: AGENT_INJECT_USE_LEADER_ELECTOR + value: "true" + - name: NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + {{- end }} + - name: AGENT_INJECT_CPU_REQUEST + value: "{{ .Values.injector.agentDefaults.cpuRequest }}" + - name: AGENT_INJECT_CPU_LIMIT + value: "{{ .Values.injector.agentDefaults.cpuLimit }}" + - name: AGENT_INJECT_MEM_REQUEST + value: "{{ .Values.injector.agentDefaults.memRequest }}" + - name: AGENT_INJECT_MEM_LIMIT + value: "{{ .Values.injector.agentDefaults.memLimit }}" + {{- if .Values.injector.agentDefaults.ephemeralRequest }} + - name: AGENT_INJECT_EPHEMERAL_REQUEST + value: "{{ .Values.injector.agentDefaults.ephemeralRequest }}" + {{- end }} + {{- if .Values.injector.agentDefaults.ephemeralLimit }} + - name: AGENT_INJECT_EPHEMERAL_LIMIT + value: "{{ .Values.injector.agentDefaults.ephemeralLimit }}" + {{- end }} + - name: AGENT_INJECT_DEFAULT_TEMPLATE + value: "{{ .Values.injector.agentDefaults.template }}" + - name: AGENT_INJECT_TEMPLATE_CONFIG_EXIT_ON_RETRY_FAILURE + value: "{{ .Values.injector.agentDefaults.templateConfig.exitOnRetryFailure }}" + {{- if .Values.injector.agentDefaults.templateConfig.staticSecretRenderInterval }} + - name: AGENT_INJECT_TEMPLATE_STATIC_SECRET_RENDER_INTERVAL + value: "{{ .Values.injector.agentDefaults.templateConfig.staticSecretRenderInterval }}" + {{- end }} + {{- include "vault.extraEnvironmentVars" .Values.injector | nindent 12 }} + - name: POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + args: + - agent-inject + - 2>&1 + livenessProbe: + httpGet: + path: /health/ready + port: {{ .Values.injector.port }} + scheme: HTTPS + failureThreshold: {{ .Values.injector.livenessProbe.failureThreshold }} + initialDelaySeconds: {{ .Values.injector.livenessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.injector.livenessProbe.periodSeconds }} + successThreshold: {{ .Values.injector.livenessProbe.successThreshold }} + timeoutSeconds: {{ .Values.injector.livenessProbe.timeoutSeconds }} + readinessProbe: + httpGet: + path: /health/ready + port: {{ .Values.injector.port }} + scheme: HTTPS + failureThreshold: {{ .Values.injector.readinessProbe.failureThreshold }} + initialDelaySeconds: {{ .Values.injector.readinessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.injector.readinessProbe.periodSeconds }} + successThreshold: {{ .Values.injector.readinessProbe.successThreshold }} + timeoutSeconds: {{ .Values.injector.readinessProbe.timeoutSeconds }} + startupProbe: + httpGet: + path: /health/ready + port: {{ .Values.injector.port }} + scheme: HTTPS + failureThreshold: {{ .Values.injector.startupProbe.failureThreshold }} + initialDelaySeconds: {{ .Values.injector.startupProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.injector.startupProbe.periodSeconds }} + successThreshold: {{ .Values.injector.startupProbe.successThreshold }} + timeoutSeconds: {{ .Values.injector.startupProbe.timeoutSeconds }} +{{- if .Values.injector.certs.secretName }} + volumeMounts: + - name: webhook-certs + mountPath: /etc/webhook/certs + readOnly: true +{{- end }} +{{- if .Values.injector.certs.secretName }} + volumes: + - name: webhook-certs + secret: + secretName: "{{ .Values.injector.certs.secretName }}" +{{- end }} + {{- include "imagePullSecrets" . | nindent 6 }} +{{ end }} diff --git a/charts/partners/hashicorp/vault/0.28.0/src/templates/injector-disruptionbudget.yaml b/charts/partners/hashicorp/vault/0.28.0/src/templates/injector-disruptionbudget.yaml new file mode 100644 index 000000000..2b2a61c6f --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/templates/injector-disruptionbudget.yaml @@ -0,0 +1,25 @@ +{{/* +Copyright (c) HashiCorp, Inc. +SPDX-License-Identifier: MPL-2.0 +*/}} + +{{- if .Values.injector.podDisruptionBudget }} +apiVersion: policy/v1 +kind: PodDisruptionBudget +metadata: + name: {{ template "vault.fullname" . }}-agent-injector + namespace: {{ include "vault.namespace" . }} + labels: + helm.sh/chart: {{ include "vault.chart" . }} + app.kubernetes.io/name: {{ include "vault.name" . }}-agent-injector + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + component: webhook +spec: + selector: + matchLabels: + app.kubernetes.io/name: {{ template "vault.name" . }}-agent-injector + app.kubernetes.io/instance: {{ .Release.Name }} + component: webhook + {{- toYaml .Values.injector.podDisruptionBudget | nindent 2 }} +{{- end -}} diff --git a/charts/partners/hashicorp/vault/0.28.0/src/templates/injector-mutating-webhook.yaml b/charts/partners/hashicorp/vault/0.28.0/src/templates/injector-mutating-webhook.yaml new file mode 100644 index 000000000..b1de1ee3f --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/templates/injector-mutating-webhook.yaml @@ -0,0 +1,44 @@ +{{/* +Copyright (c) HashiCorp, Inc. +SPDX-License-Identifier: MPL-2.0 +*/}} + +{{- template "vault.injectorEnabled" . -}} +{{- if .injectorEnabled -}} +{{- if .Capabilities.APIVersions.Has "admissionregistration.k8s.io/v1" }} +apiVersion: admissionregistration.k8s.io/v1 +{{- else }} +apiVersion: admissionregistration.k8s.io/v1beta1 +{{- end }} +kind: MutatingWebhookConfiguration +metadata: + name: {{ template "vault.fullname" . }}-agent-injector-cfg + labels: + app.kubernetes.io/name: {{ include "vault.name" . }}-agent-injector + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + {{- template "injector.webhookAnnotations" . }} +webhooks: + - name: vault.hashicorp.com + failurePolicy: {{ ((.Values.injector.webhook)).failurePolicy | default .Values.injector.failurePolicy }} + matchPolicy: {{ ((.Values.injector.webhook)).matchPolicy | default "Exact" }} + sideEffects: None + timeoutSeconds: {{ ((.Values.injector.webhook)).timeoutSeconds | default "30" }} + admissionReviewVersions: ["v1", "v1beta1"] + clientConfig: + service: + name: {{ template "vault.fullname" . }}-agent-injector-svc + namespace: {{ include "vault.namespace" . }} + path: "/mutate" + caBundle: {{ .Values.injector.certs.caBundle | quote }} + rules: + - operations: ["CREATE", "UPDATE"] + apiGroups: [""] + apiVersions: ["v1"] + resources: ["pods"] +{{- if or (.Values.injector.namespaceSelector) (((.Values.injector.webhook)).namespaceSelector) }} + namespaceSelector: +{{ toYaml (((.Values.injector.webhook)).namespaceSelector | default .Values.injector.namespaceSelector) | indent 6}} +{{ end }} +{{- template "injector.objectSelector" . -}} +{{ end }} diff --git a/charts/partners/hashicorp/vault/0.28.0/src/templates/injector-network-policy.yaml b/charts/partners/hashicorp/vault/0.28.0/src/templates/injector-network-policy.yaml new file mode 100644 index 000000000..4c3b08782 --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/templates/injector-network-policy.yaml @@ -0,0 +1,29 @@ +{{/* +Copyright (c) HashiCorp, Inc. +SPDX-License-Identifier: MPL-2.0 +*/}} + +{{- template "vault.injectorEnabled" . -}} +{{- if .injectorEnabled -}} +{{- if eq (.Values.global.openshift | toString) "true" }} +apiVersion: networking.k8s.io/v1 +kind: NetworkPolicy +metadata: + name: {{ template "vault.fullname" . }}-agent-injector + labels: + app.kubernetes.io/name: {{ template "vault.name" . }}-agent-injector + app.kubernetes.io/instance: {{ .Release.Name }} +spec: + podSelector: + matchLabels: + app.kubernetes.io/name: {{ template "vault.name" . }}-agent-injector + app.kubernetes.io/instance: {{ .Release.Name }} + component: webhook + ingress: + - from: + - namespaceSelector: {} + ports: + - port: 8080 + protocol: TCP +{{ end }} +{{ end }} diff --git a/charts/partners/hashicorp/vault/0.28.0/src/templates/injector-psp-role.yaml b/charts/partners/hashicorp/vault/0.28.0/src/templates/injector-psp-role.yaml new file mode 100644 index 000000000..a07f8f6c0 --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/templates/injector-psp-role.yaml @@ -0,0 +1,25 @@ +{{/* +Copyright (c) HashiCorp, Inc. +SPDX-License-Identifier: MPL-2.0 +*/}} + +{{- template "vault.injectorEnabled" . -}} +{{- if .injectorEnabled -}} +{{- if eq (.Values.global.psp.enable | toString) "true" }} +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: {{ template "vault.fullname" . }}-agent-injector-psp + namespace: {{ include "vault.namespace" . }} + labels: + app.kubernetes.io/name: {{ include "vault.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} +rules: +- apiGroups: ['policy'] + resources: ['podsecuritypolicies'] + verbs: ['use'] + resourceNames: + - {{ template "vault.fullname" . }}-agent-injector +{{- end }} +{{- end }} diff --git a/charts/partners/hashicorp/vault/0.28.0/src/templates/injector-psp-rolebinding.yaml b/charts/partners/hashicorp/vault/0.28.0/src/templates/injector-psp-rolebinding.yaml new file mode 100644 index 000000000..3c97e8dad --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/templates/injector-psp-rolebinding.yaml @@ -0,0 +1,26 @@ +{{/* +Copyright (c) HashiCorp, Inc. +SPDX-License-Identifier: MPL-2.0 +*/}} + +{{- template "vault.injectorEnabled" . -}} +{{- if .injectorEnabled -}} +{{- if eq (.Values.global.psp.enable | toString) "true" }} +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: {{ template "vault.fullname" . }}-agent-injector-psp + namespace: {{ include "vault.namespace" . }} + labels: + app.kubernetes.io/name: {{ include "vault.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} +roleRef: + kind: Role + name: {{ template "vault.fullname" . }}-agent-injector-psp + apiGroup: rbac.authorization.k8s.io +subjects: + - kind: ServiceAccount + name: {{ template "vault.fullname" . }}-agent-injector +{{- end }} +{{- end }} \ No newline at end of file diff --git a/charts/partners/hashicorp/vault/0.28.0/src/templates/injector-psp.yaml b/charts/partners/hashicorp/vault/0.28.0/src/templates/injector-psp.yaml new file mode 100644 index 000000000..0eca9a87c --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/templates/injector-psp.yaml @@ -0,0 +1,51 @@ +{{/* +Copyright (c) HashiCorp, Inc. +SPDX-License-Identifier: MPL-2.0 +*/}} + +{{- template "vault.injectorEnabled" . -}} +{{- if .injectorEnabled -}} +{{- if eq (.Values.global.psp.enable | toString) "true" }} +apiVersion: policy/v1beta1 +kind: PodSecurityPolicy +metadata: + name: {{ template "vault.fullname" . }}-agent-injector + labels: + app.kubernetes.io/name: {{ include "vault.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- template "vault.psp.annotations" . }} +spec: + privileged: false + # Required to prevent escalations to root. + allowPrivilegeEscalation: false + volumes: + - configMap + - emptyDir + - projected + - secret + - downwardAPI + hostNetwork: false + hostIPC: false + hostPID: false + runAsUser: + # Require the container to run without root privileges. + rule: MustRunAsNonRoot + seLinux: + # This policy assumes the nodes are using AppArmor rather than SELinux. + rule: RunAsAny + supplementalGroups: + rule: MustRunAs + ranges: + # Forbid adding the root group. + - min: 1 + max: 65535 + fsGroup: + rule: MustRunAs + ranges: + # Forbid adding the root group. + - min: 1 + max: 65535 + readOnlyRootFilesystem: false +{{- end }} +{{- end }} \ No newline at end of file diff --git a/charts/partners/hashicorp/vault/0.28.0/src/templates/injector-role.yaml b/charts/partners/hashicorp/vault/0.28.0/src/templates/injector-role.yaml new file mode 100644 index 000000000..b2ad0c7b9 --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/templates/injector-role.yaml @@ -0,0 +1,34 @@ +{{/* +Copyright (c) HashiCorp, Inc. +SPDX-License-Identifier: MPL-2.0 +*/}} + +{{- template "vault.injectorEnabled" . -}} +{{- if .injectorEnabled -}} +{{- if and (eq (.Values.injector.leaderElector.enabled | toString) "true") (gt (.Values.injector.replicas | int) 1) }} +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: {{ template "vault.fullname" . }}-agent-injector-leader-elector-role + namespace: {{ include "vault.namespace" . }} + labels: + app.kubernetes.io/name: {{ include "vault.name" . }}-agent-injector + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} +rules: + - apiGroups: [""] + resources: ["secrets", "configmaps"] + verbs: + - "create" + - "get" + - "watch" + - "list" + - "update" + - apiGroups: [""] + resources: ["pods"] + verbs: + - "get" + - "patch" + - "delete" +{{- end }} +{{- end }} \ No newline at end of file diff --git a/charts/partners/hashicorp/vault/0.28.0/src/templates/injector-rolebinding.yaml b/charts/partners/hashicorp/vault/0.28.0/src/templates/injector-rolebinding.yaml new file mode 100644 index 000000000..6ad25ca69 --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/templates/injector-rolebinding.yaml @@ -0,0 +1,27 @@ +{{/* +Copyright (c) HashiCorp, Inc. +SPDX-License-Identifier: MPL-2.0 +*/}} + +{{- template "vault.injectorEnabled" . -}} +{{- if .injectorEnabled -}} +{{- if and (eq (.Values.injector.leaderElector.enabled | toString) "true") (gt (.Values.injector.replicas | int) 1) }} +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: {{ template "vault.fullname" . }}-agent-injector-leader-elector-binding + namespace: {{ include "vault.namespace" . }} + labels: + app.kubernetes.io/name: {{ include "vault.name" . }}-agent-injector + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: {{ template "vault.fullname" . }}-agent-injector-leader-elector-role +subjects: + - kind: ServiceAccount + name: {{ template "vault.fullname" . }}-agent-injector + namespace: {{ include "vault.namespace" . }} +{{- end }} +{{- end }} \ No newline at end of file diff --git a/charts/partners/hashicorp/vault/0.28.0/src/templates/injector-service.yaml b/charts/partners/hashicorp/vault/0.28.0/src/templates/injector-service.yaml new file mode 100644 index 000000000..1479cd1ab --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/templates/injector-service.yaml @@ -0,0 +1,27 @@ +{{/* +Copyright (c) HashiCorp, Inc. +SPDX-License-Identifier: MPL-2.0 +*/}} + +{{- template "vault.injectorEnabled" . -}} +{{- if .injectorEnabled -}} +apiVersion: v1 +kind: Service +metadata: + name: {{ template "vault.fullname" . }}-agent-injector-svc + namespace: {{ include "vault.namespace" . }} + labels: + app.kubernetes.io/name: {{ include "vault.name" . }}-agent-injector + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + {{ template "injector.service.annotations" . }} +spec: + ports: + - name: https + port: 443 + targetPort: {{ .Values.injector.port }} + selector: + app.kubernetes.io/name: {{ include "vault.name" . }}-agent-injector + app.kubernetes.io/instance: {{ .Release.Name }} + component: webhook +{{- end }} diff --git a/charts/partners/hashicorp/vault/0.28.0/src/templates/injector-serviceaccount.yaml b/charts/partners/hashicorp/vault/0.28.0/src/templates/injector-serviceaccount.yaml new file mode 100644 index 000000000..2f91c3d4a --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/templates/injector-serviceaccount.yaml @@ -0,0 +1,18 @@ +{{/* +Copyright (c) HashiCorp, Inc. +SPDX-License-Identifier: MPL-2.0 +*/}} + +{{- template "vault.injectorEnabled" . -}} +{{- if .injectorEnabled -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ template "vault.fullname" . }}-agent-injector + namespace: {{ include "vault.namespace" . }} + labels: + app.kubernetes.io/name: {{ include "vault.name" . }}-agent-injector + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + {{ template "injector.serviceAccount.annotations" . }} +{{ end }} diff --git a/charts/partners/hashicorp/vault/0.28.0/src/templates/prometheus-prometheusrules.yaml b/charts/partners/hashicorp/vault/0.28.0/src/templates/prometheus-prometheusrules.yaml new file mode 100644 index 000000000..7e58a0e52 --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/templates/prometheus-prometheusrules.yaml @@ -0,0 +1,31 @@ +{{/* +Copyright (c) HashiCorp, Inc. +SPDX-License-Identifier: MPL-2.0 +*/}} + +{{ if and (.Values.serverTelemetry.prometheusRules.rules) + (or (.Values.global.serverTelemetry.prometheusOperator) (.Values.serverTelemetry.prometheusRules.enabled) ) +}} +--- +apiVersion: monitoring.coreos.com/v1 +kind: PrometheusRule +metadata: + name: {{ template "vault.fullname" . }} + labels: + helm.sh/chart: {{ include "vault.chart" . }} + app.kubernetes.io/name: {{ include "vault.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + {{- /* update the selectors docs in values.yaml whenever the defaults below change. */ -}} + {{- $selectors := .Values.serverTelemetry.prometheusRules.selectors }} + {{- if $selectors }} + {{- toYaml $selectors | nindent 4 }} + {{- else }} + release: prometheus + {{- end }} +spec: + groups: + - name: {{ include "vault.fullname" . }} + rules: + {{- toYaml .Values.serverTelemetry.prometheusRules.rules | nindent 6 }} +{{- end }} diff --git a/charts/partners/hashicorp/vault/0.28.0/src/templates/prometheus-servicemonitor.yaml b/charts/partners/hashicorp/vault/0.28.0/src/templates/prometheus-servicemonitor.yaml new file mode 100644 index 000000000..25d30a468 --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/templates/prometheus-servicemonitor.yaml @@ -0,0 +1,49 @@ +{{/* +Copyright (c) HashiCorp, Inc. +SPDX-License-Identifier: MPL-2.0 +*/}} + +{{ template "vault.mode" . }} +{{ if or (.Values.global.serverTelemetry.prometheusOperator) (.Values.serverTelemetry.serviceMonitor.enabled) }} +--- +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ template "vault.fullname" . }} + labels: + helm.sh/chart: {{ include "vault.chart" . }} + app.kubernetes.io/name: {{ include "vault.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + {{- /* update the selectors docs in values.yaml whenever the defaults below change. */ -}} + {{- $selectors := .Values.serverTelemetry.serviceMonitor.selectors }} + {{- if $selectors }} + {{- toYaml $selectors | nindent 4 }} + {{- else }} + release: prometheus + {{- end }} +spec: + selector: + matchLabels: + app.kubernetes.io/name: {{ template "vault.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + {{- if eq .mode "ha" }} + vault-active: "true" + {{- else }} + vault-internal: "true" + {{- end }} + endpoints: + - port: {{ include "vault.scheme" . }} + interval: {{ .Values.serverTelemetry.serviceMonitor.interval }} + scrapeTimeout: {{ .Values.serverTelemetry.serviceMonitor.scrapeTimeout }} + scheme: {{ include "vault.scheme" . | lower }} + path: /v1/sys/metrics + params: + format: + - prometheus + tlsConfig: + insecureSkipVerify: true + namespaceSelector: + matchNames: + - {{ include "vault.namespace" . }} +{{ end }} diff --git a/charts/partners/hashicorp/vault/0.28.0/src/templates/server-clusterrolebinding.yaml b/charts/partners/hashicorp/vault/0.28.0/src/templates/server-clusterrolebinding.yaml new file mode 100644 index 000000000..14ec838a0 --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/templates/server-clusterrolebinding.yaml @@ -0,0 +1,29 @@ +{{/* +Copyright (c) HashiCorp, Inc. +SPDX-License-Identifier: MPL-2.0 +*/}} + +{{ template "vault.serverAuthDelegator" . }} +{{- if .serverAuthDelegator -}} +{{- if .Capabilities.APIVersions.Has "rbac.authorization.k8s.io/v1" -}} +apiVersion: rbac.authorization.k8s.io/v1 +{{- else }} +apiVersion: rbac.authorization.k8s.io/v1beta1 +{{- end }} +kind: ClusterRoleBinding +metadata: + name: {{ template "vault.fullname" . }}-server-binding + labels: + helm.sh/chart: {{ include "vault.chart" . }} + app.kubernetes.io/name: {{ include "vault.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: system:auth-delegator +subjects: +- kind: ServiceAccount + name: {{ template "vault.serviceAccount.name" . }} + namespace: {{ include "vault.namespace" . }} +{{ end }} \ No newline at end of file diff --git a/charts/partners/hashicorp/vault/0.28.0/src/templates/server-config-configmap.yaml b/charts/partners/hashicorp/vault/0.28.0/src/templates/server-config-configmap.yaml new file mode 100644 index 000000000..1fed2e690 --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/templates/server-config-configmap.yaml @@ -0,0 +1,31 @@ +{{/* +Copyright (c) HashiCorp, Inc. +SPDX-License-Identifier: MPL-2.0 +*/}} + +{{ template "vault.mode" . }} +{{- if ne .mode "external" }} +{{- if .serverEnabled -}} +{{- if ne .mode "dev" -}} +{{ if or (.Values.server.standalone.config) (.Values.server.ha.config) -}} +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ template "vault.fullname" . }}-config + namespace: {{ include "vault.namespace" . }} + labels: + helm.sh/chart: {{ include "vault.chart" . }} + app.kubernetes.io/name: {{ include "vault.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- if .Values.server.includeConfigAnnotation }} + annotations: + vault.hashicorp.com/config-checksum: {{ include "vault.config" . | sha256sum }} +{{- end }} +data: + extraconfig-from-values.hcl: |- + {{ template "vault.config" . }} +{{- end }} +{{- end }} +{{- end }} +{{- end }} diff --git a/charts/partners/hashicorp/vault/0.28.0/src/templates/server-discovery-role.yaml b/charts/partners/hashicorp/vault/0.28.0/src/templates/server-discovery-role.yaml new file mode 100644 index 000000000..0cbdefaff --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/templates/server-discovery-role.yaml @@ -0,0 +1,26 @@ +{{/* +Copyright (c) HashiCorp, Inc. +SPDX-License-Identifier: MPL-2.0 +*/}} + +{{ template "vault.mode" . }} +{{- if .serverEnabled -}} +{{- if eq .mode "ha" }} +{{- if eq (.Values.server.serviceAccount.serviceDiscovery.enabled | toString) "true" }} +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + namespace: {{ include "vault.namespace" . }} + name: {{ template "vault.fullname" . }}-discovery-role + labels: + helm.sh/chart: {{ include "vault.chart" . }} + app.kubernetes.io/name: {{ include "vault.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} +rules: +- apiGroups: [""] + resources: ["pods"] + verbs: ["get", "watch", "list", "update", "patch"] +{{ end }} +{{ end }} +{{ end }} diff --git a/charts/partners/hashicorp/vault/0.28.0/src/templates/server-discovery-rolebinding.yaml b/charts/partners/hashicorp/vault/0.28.0/src/templates/server-discovery-rolebinding.yaml new file mode 100644 index 000000000..87b0f6170 --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/templates/server-discovery-rolebinding.yaml @@ -0,0 +1,34 @@ +{{/* +Copyright (c) HashiCorp, Inc. +SPDX-License-Identifier: MPL-2.0 +*/}} + +{{ template "vault.mode" . }} +{{- if .serverEnabled -}} +{{- if eq .mode "ha" }} +{{- if eq (.Values.server.serviceAccount.serviceDiscovery.enabled | toString) "true" }} +{{- if .Capabilities.APIVersions.Has "rbac.authorization.k8s.io/v1" -}} +apiVersion: rbac.authorization.k8s.io/v1 +{{- else }} +apiVersion: rbac.authorization.k8s.io/v1beta1 +{{- end }} +kind: RoleBinding +metadata: + name: {{ template "vault.fullname" . }}-discovery-rolebinding + namespace: {{ include "vault.namespace" . }} + labels: + helm.sh/chart: {{ include "vault.chart" . }} + app.kubernetes.io/name: {{ include "vault.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: {{ template "vault.fullname" . }}-discovery-role +subjects: +- kind: ServiceAccount + name: {{ template "vault.serviceAccount.name" . }} + namespace: {{ include "vault.namespace" . }} +{{ end }} +{{ end }} +{{ end }} diff --git a/charts/partners/hashicorp/vault/0.28.0/src/templates/server-disruptionbudget.yaml b/charts/partners/hashicorp/vault/0.28.0/src/templates/server-disruptionbudget.yaml new file mode 100644 index 000000000..bbe9eb299 --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/templates/server-disruptionbudget.yaml @@ -0,0 +1,31 @@ +{{/* +Copyright (c) HashiCorp, Inc. +SPDX-License-Identifier: MPL-2.0 +*/}} + +{{ template "vault.mode" . }} +{{- if ne .mode "external" -}} +{{- if .serverEnabled -}} +{{- if and (eq .mode "ha") (eq (.Values.server.ha.disruptionBudget.enabled | toString) "true") -}} +# PodDisruptionBudget to prevent degrading the server cluster through +# voluntary cluster changes. +apiVersion: policy/v1 +kind: PodDisruptionBudget +metadata: + name: {{ template "vault.fullname" . }} + namespace: {{ include "vault.namespace" . }} + labels: + helm.sh/chart: {{ include "vault.chart" . }} + app.kubernetes.io/name: {{ include "vault.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} +spec: + maxUnavailable: {{ template "vault.pdb.maxUnavailable" . }} + selector: + matchLabels: + app.kubernetes.io/name: {{ include "vault.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + component: server +{{- end -}} +{{- end -}} +{{- end -}} diff --git a/charts/partners/hashicorp/vault/0.28.0/src/templates/server-ha-active-service.yaml b/charts/partners/hashicorp/vault/0.28.0/src/templates/server-ha-active-service.yaml new file mode 100644 index 000000000..9d2abfbb1 --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/templates/server-ha-active-service.yaml @@ -0,0 +1,64 @@ +{{/* +Copyright (c) HashiCorp, Inc. +SPDX-License-Identifier: MPL-2.0 +*/}} + +{{ template "vault.mode" . }} +{{- if ne .mode "external" }} +{{- template "vault.serverServiceEnabled" . -}} +{{- if .serverServiceEnabled -}} +{{- if eq .mode "ha" }} +{{- if eq (.Values.server.service.active.enabled | toString) "true" }} +# Service for active Vault pod +apiVersion: v1 +kind: Service +metadata: + name: {{ template "vault.fullname" . }}-active + namespace: {{ include "vault.namespace" . }} + labels: + helm.sh/chart: {{ include "vault.chart" . }} + app.kubernetes.io/name: {{ include "vault.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + vault-active: "true" + annotations: +{{- template "vault.service.active.annotations" . }} +{{- template "vault.service.annotations" . }} +spec: + {{- if .Values.server.service.type}} + type: {{ .Values.server.service.type }} + {{- end}} + {{- if (semverCompare ">= 1.23-0" .Capabilities.KubeVersion.Version) }} + {{- if .Values.server.service.ipFamilyPolicy }} + ipFamilyPolicy: {{ .Values.server.service.ipFamilyPolicy }} + {{- end }} + {{- if .Values.server.service.ipFamilies }} + ipFamilies: {{ .Values.server.service.ipFamilies | toYaml | nindent 2 }} + {{- end }} + {{- end }} + {{- if .Values.server.service.clusterIP }} + clusterIP: {{ .Values.server.service.clusterIP }} + {{- end }} + {{- include "service.externalTrafficPolicy" .Values.server.service }} + publishNotReadyAddresses: {{ .Values.server.service.publishNotReadyAddresses }} + ports: + - name: {{ include "vault.scheme" . }} + port: {{ .Values.server.service.port }} + targetPort: {{ .Values.server.service.targetPort }} + {{- if and (.Values.server.service.activeNodePort) (eq (.Values.server.service.type | toString) "NodePort") }} + nodePort: {{ .Values.server.service.activeNodePort }} + {{- end }} + - name: https-internal + port: 8201 + targetPort: 8201 + selector: + app.kubernetes.io/name: {{ include "vault.name" . }} + {{- if eq (.Values.server.service.instanceSelector.enabled | toString) "true" }} + app.kubernetes.io/instance: {{ .Release.Name }} + {{- end }} + component: server + vault-active: "true" +{{- end }} +{{- end }} +{{- end }} +{{- end }} diff --git a/charts/partners/hashicorp/vault/0.28.0/src/templates/server-ha-standby-service.yaml b/charts/partners/hashicorp/vault/0.28.0/src/templates/server-ha-standby-service.yaml new file mode 100644 index 000000000..bae1e2834 --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/templates/server-ha-standby-service.yaml @@ -0,0 +1,63 @@ +{{/* +Copyright (c) HashiCorp, Inc. +SPDX-License-Identifier: MPL-2.0 +*/}} + +{{ template "vault.mode" . }} +{{- if ne .mode "external" }} +{{- template "vault.serverServiceEnabled" . -}} +{{- if .serverServiceEnabled -}} +{{- if eq .mode "ha" }} +{{- if eq (.Values.server.service.standby.enabled | toString) "true" }} +# Service for standby Vault pod +apiVersion: v1 +kind: Service +metadata: + name: {{ template "vault.fullname" . }}-standby + namespace: {{ include "vault.namespace" . }} + labels: + helm.sh/chart: {{ include "vault.chart" . }} + app.kubernetes.io/name: {{ include "vault.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + annotations: +{{- template "vault.service.standby.annotations" . }} +{{- template "vault.service.annotations" . }} +spec: + {{- if .Values.server.service.type}} + type: {{ .Values.server.service.type }} + {{- end}} + {{- if (semverCompare ">= 1.23-0" .Capabilities.KubeVersion.Version) }} + {{- if .Values.server.service.ipFamilyPolicy }} + ipFamilyPolicy: {{ .Values.server.service.ipFamilyPolicy }} + {{- end }} + {{- if .Values.server.service.ipFamilies }} + ipFamilies: {{ .Values.server.service.ipFamilies | toYaml | nindent 2 }} + {{- end }} + {{- end }} + {{- if .Values.server.service.clusterIP }} + clusterIP: {{ .Values.server.service.clusterIP }} + {{- end }} + {{- include "service.externalTrafficPolicy" .Values.server.service }} + publishNotReadyAddresses: {{ .Values.server.service.publishNotReadyAddresses }} + ports: + - name: {{ include "vault.scheme" . }} + port: {{ .Values.server.service.port }} + targetPort: {{ .Values.server.service.targetPort }} + {{- if and (.Values.server.service.standbyNodePort) (eq (.Values.server.service.type | toString) "NodePort") }} + nodePort: {{ .Values.server.service.standbyNodePort }} + {{- end }} + - name: https-internal + port: 8201 + targetPort: 8201 + selector: + app.kubernetes.io/name: {{ include "vault.name" . }} + {{- if eq (.Values.server.service.instanceSelector.enabled | toString) "true" }} + app.kubernetes.io/instance: {{ .Release.Name }} + {{- end }} + component: server + vault-active: "false" +{{- end }} +{{- end }} +{{- end }} +{{- end }} diff --git a/charts/partners/hashicorp/vault/0.28.0/src/templates/server-headless-service.yaml b/charts/partners/hashicorp/vault/0.28.0/src/templates/server-headless-service.yaml new file mode 100644 index 000000000..c0f4d3460 --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/templates/server-headless-service.yaml @@ -0,0 +1,47 @@ +{{/* +Copyright (c) HashiCorp, Inc. +SPDX-License-Identifier: MPL-2.0 +*/}} + +{{ template "vault.mode" . }} +{{- if ne .mode "external" }} +{{- template "vault.serverServiceEnabled" . -}} +{{- if .serverServiceEnabled -}} +# Service for Vault cluster +apiVersion: v1 +kind: Service +metadata: + name: {{ template "vault.fullname" . }}-internal + namespace: {{ include "vault.namespace" . }} + labels: + helm.sh/chart: {{ include "vault.chart" . }} + app.kubernetes.io/name: {{ include "vault.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + vault-internal: "true" + annotations: +{{ template "vault.service.annotations" .}} +spec: + {{- if (semverCompare ">= 1.23-0" .Capabilities.KubeVersion.Version) }} + {{- if .Values.server.service.ipFamilyPolicy }} + ipFamilyPolicy: {{ .Values.server.service.ipFamilyPolicy }} + {{- end }} + {{- if .Values.server.service.ipFamilies }} + ipFamilies: {{ .Values.server.service.ipFamilies | toYaml | nindent 2 }} + {{- end }} + {{- end }} + clusterIP: None + publishNotReadyAddresses: true + ports: + - name: "{{ include "vault.scheme" . }}" + port: {{ .Values.server.service.port }} + targetPort: {{ .Values.server.service.targetPort }} + - name: https-internal + port: 8201 + targetPort: 8201 + selector: + app.kubernetes.io/name: {{ include "vault.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + component: server +{{- end }} +{{- end }} diff --git a/charts/partners/hashicorp/vault/0.28.0/src/templates/server-ingress.yaml b/charts/partners/hashicorp/vault/0.28.0/src/templates/server-ingress.yaml new file mode 100644 index 000000000..d796bae41 --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/templates/server-ingress.yaml @@ -0,0 +1,69 @@ +{{/* +Copyright (c) HashiCorp, Inc. +SPDX-License-Identifier: MPL-2.0 +*/}} + +{{- if not .Values.global.openshift }} +{{ template "vault.mode" . }} +{{- if ne .mode "external" }} +{{- if .Values.server.ingress.enabled -}} +{{- $extraPaths := .Values.server.ingress.extraPaths -}} +{{- $serviceName := include "vault.fullname" . -}} +{{- template "vault.serverServiceEnabled" . -}} +{{- if .serverServiceEnabled -}} +{{- if and (eq .mode "ha" ) (eq (.Values.server.ingress.activeService | toString) "true") }} +{{- $serviceName = printf "%s-%s" $serviceName "active" -}} +{{- end }} +{{- $servicePort := .Values.server.service.port -}} +{{- $pathType := .Values.server.ingress.pathType -}} +{{- $kubeVersion := .Capabilities.KubeVersion.Version }} +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: {{ template "vault.fullname" . }} + namespace: {{ include "vault.namespace" . }} + labels: + helm.sh/chart: {{ include "vault.chart" . }} + app.kubernetes.io/name: {{ include "vault.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + {{- with .Values.server.ingress.labels }} + {{- toYaml . | nindent 4 }} + {{- end }} + {{- template "vault.ingress.annotations" . }} +spec: +{{- if .Values.server.ingress.tls }} + tls: + {{- range .Values.server.ingress.tls }} + - hosts: + {{- range .hosts }} + - {{ . | quote }} + {{- end }} + secretName: {{ .secretName }} + {{- end }} +{{- end }} +{{- if .Values.server.ingress.ingressClassName }} + ingressClassName: {{ .Values.server.ingress.ingressClassName }} +{{- end }} + rules: + {{- range .Values.server.ingress.hosts }} + - host: {{ .host | quote }} + http: + paths: +{{ if $extraPaths }} +{{ toYaml $extraPaths | indent 10 }} +{{- end }} + {{- range (.paths | default (list "/")) }} + - path: {{ . }} + pathType: {{ $pathType }} + backend: + service: + name: {{ $serviceName }} + port: + number: {{ $servicePort }} + {{- end }} + {{- end }} +{{- end }} +{{- end }} +{{- end }} +{{- end }} diff --git a/charts/partners/hashicorp/vault/0.28.0/src/templates/server-network-policy.yaml b/charts/partners/hashicorp/vault/0.28.0/src/templates/server-network-policy.yaml new file mode 100644 index 000000000..43dcdb16f --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/templates/server-network-policy.yaml @@ -0,0 +1,24 @@ +{{/* +Copyright (c) HashiCorp, Inc. +SPDX-License-Identifier: MPL-2.0 +*/}} + +{{- if eq (.Values.server.networkPolicy.enabled | toString) "true" }} +apiVersion: networking.k8s.io/v1 +kind: NetworkPolicy +metadata: + name: {{ template "vault.fullname" . }} + labels: + app.kubernetes.io/name: {{ template "vault.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} +spec: + podSelector: + matchLabels: + app.kubernetes.io/name: {{ template "vault.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + ingress: {{- toYaml .Values.server.networkPolicy.ingress | nindent 4 }} + {{- if .Values.server.networkPolicy.egress }} + egress: + {{- toYaml .Values.server.networkPolicy.egress | nindent 4 }} + {{ end }} +{{ end }} diff --git a/charts/partners/hashicorp/vault/0.28.0/src/templates/server-psp-role.yaml b/charts/partners/hashicorp/vault/0.28.0/src/templates/server-psp-role.yaml new file mode 100644 index 000000000..64cd6c507 --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/templates/server-psp-role.yaml @@ -0,0 +1,25 @@ +{{/* +Copyright (c) HashiCorp, Inc. +SPDX-License-Identifier: MPL-2.0 +*/}} + +{{ template "vault.mode" . }} +{{- if .serverEnabled -}} +{{- if and (ne .mode "") (eq (.Values.global.psp.enable | toString) "true") }} +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: {{ template "vault.fullname" . }}-psp + namespace: {{ include "vault.namespace" . }} + labels: + app.kubernetes.io/name: {{ include "vault.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} +rules: +- apiGroups: ['policy'] + resources: ['podsecuritypolicies'] + verbs: ['use'] + resourceNames: + - {{ template "vault.fullname" . }} +{{- end }} +{{- end }} diff --git a/charts/partners/hashicorp/vault/0.28.0/src/templates/server-psp-rolebinding.yaml b/charts/partners/hashicorp/vault/0.28.0/src/templates/server-psp-rolebinding.yaml new file mode 100644 index 000000000..342f55379 --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/templates/server-psp-rolebinding.yaml @@ -0,0 +1,26 @@ +{{/* +Copyright (c) HashiCorp, Inc. +SPDX-License-Identifier: MPL-2.0 +*/}} + +{{ template "vault.mode" . }} +{{- if .serverEnabled -}} +{{- if and (ne .mode "") (eq (.Values.global.psp.enable | toString) "true") }} +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: {{ template "vault.fullname" . }}-psp + namespace: {{ include "vault.namespace" . }} + labels: + app.kubernetes.io/name: {{ include "vault.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} +roleRef: + kind: Role + name: {{ template "vault.fullname" . }}-psp + apiGroup: rbac.authorization.k8s.io +subjects: + - kind: ServiceAccount + name: {{ template "vault.fullname" . }} +{{- end }} +{{- end }} diff --git a/charts/partners/hashicorp/vault/0.28.0/src/templates/server-psp.yaml b/charts/partners/hashicorp/vault/0.28.0/src/templates/server-psp.yaml new file mode 100644 index 000000000..567e66245 --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/templates/server-psp.yaml @@ -0,0 +1,54 @@ +{{/* +Copyright (c) HashiCorp, Inc. +SPDX-License-Identifier: MPL-2.0 +*/}} + +{{ template "vault.mode" . }} +{{- if .serverEnabled -}} +{{- if and (ne .mode "") (eq (.Values.global.psp.enable | toString) "true") }} +apiVersion: policy/v1beta1 +kind: PodSecurityPolicy +metadata: + name: {{ template "vault.fullname" . }} + labels: + app.kubernetes.io/name: {{ include "vault.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- template "vault.psp.annotations" . }} +spec: + privileged: false + # Required to prevent escalations to root. + allowPrivilegeEscalation: false + volumes: + - configMap + - emptyDir + - projected + - secret + - downwardAPI + {{- if eq (.Values.server.dataStorage.enabled | toString) "true" }} + - persistentVolumeClaim + {{- end }} + hostNetwork: false + hostIPC: false + hostPID: false + runAsUser: + # Require the container to run without root privileges. + rule: MustRunAsNonRoot + seLinux: + # This policy assumes the nodes are using AppArmor rather than SELinux. + rule: RunAsAny + supplementalGroups: + rule: MustRunAs + ranges: + # Forbid adding the root group. + - min: 1 + max: 65535 + fsGroup: + rule: MustRunAs + ranges: + # Forbid adding the root group. + - min: 1 + max: 65535 + readOnlyRootFilesystem: false +{{- end }} +{{- end }} diff --git a/charts/partners/hashicorp/vault/0.28.0/src/templates/server-route.yaml b/charts/partners/hashicorp/vault/0.28.0/src/templates/server-route.yaml new file mode 100644 index 000000000..4e955555a --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/templates/server-route.yaml @@ -0,0 +1,39 @@ +{{/* +Copyright (c) HashiCorp, Inc. +SPDX-License-Identifier: MPL-2.0 +*/}} + +{{- if .Values.global.openshift }} +{{- if ne .mode "external" }} +{{- if .Values.server.route.enabled -}} +{{- $serviceName := include "vault.fullname" . -}} +{{- if and (eq .mode "ha" ) (eq (.Values.server.route.activeService | toString) "true") }} +{{- $serviceName = printf "%s-%s" $serviceName "active" -}} +{{- end }} +kind: Route +apiVersion: route.openshift.io/v1 +metadata: + name: {{ template "vault.fullname" . }} + namespace: {{ include "vault.namespace" . }} + labels: + helm.sh/chart: {{ include "vault.chart" . }} + app.kubernetes.io/name: {{ include "vault.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + {{- with .Values.server.route.labels }} + {{- toYaml . | nindent 4 }} + {{- end }} + {{- template "vault.route.annotations" . }} +spec: + host: {{ .Values.server.route.host }} + to: + kind: Service + name: {{ $serviceName }} + weight: 100 + port: + targetPort: 8200 + tls: + {{- toYaml .Values.server.route.tls | nindent 4 }} +{{- end }} +{{- end }} +{{- end }} diff --git a/charts/partners/hashicorp/vault/0.28.0/src/templates/server-service.yaml b/charts/partners/hashicorp/vault/0.28.0/src/templates/server-service.yaml new file mode 100644 index 000000000..c12e190cb --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/templates/server-service.yaml @@ -0,0 +1,59 @@ +{{/* +Copyright (c) HashiCorp, Inc. +SPDX-License-Identifier: MPL-2.0 +*/}} + +{{ template "vault.mode" . }} +{{- if ne .mode "external" }} +{{- template "vault.serverServiceEnabled" . -}} +{{- if .serverServiceEnabled -}} +# Service for Vault cluster +apiVersion: v1 +kind: Service +metadata: + name: {{ template "vault.fullname" . }} + namespace: {{ include "vault.namespace" . }} + labels: + helm.sh/chart: {{ include "vault.chart" . }} + app.kubernetes.io/name: {{ include "vault.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + annotations: +{{ template "vault.service.annotations" .}} +spec: + {{- if .Values.server.service.type}} + type: {{ .Values.server.service.type }} + {{- end}} + {{- if (semverCompare ">= 1.23-0" .Capabilities.KubeVersion.Version) }} + {{- if .Values.server.service.ipFamilyPolicy }} + ipFamilyPolicy: {{ .Values.server.service.ipFamilyPolicy }} + {{- end }} + {{- if .Values.server.service.ipFamilies }} + ipFamilies: {{ .Values.server.service.ipFamilies | toYaml | nindent 2 }} + {{- end }} + {{- end }} + {{- if .Values.server.service.clusterIP }} + clusterIP: {{ .Values.server.service.clusterIP }} + {{- end }} + {{- include "service.externalTrafficPolicy" .Values.server.service }} + # We want the servers to become available even if they're not ready + # since this DNS is also used for join operations. + publishNotReadyAddresses: {{ .Values.server.service.publishNotReadyAddresses }} + ports: + - name: {{ include "vault.scheme" . }} + port: {{ .Values.server.service.port }} + targetPort: {{ .Values.server.service.targetPort }} + {{- if and (.Values.server.service.nodePort) (eq (.Values.server.service.type | toString) "NodePort") }} + nodePort: {{ .Values.server.service.nodePort }} + {{- end }} + - name: https-internal + port: 8201 + targetPort: 8201 + selector: + app.kubernetes.io/name: {{ include "vault.name" . }} + {{- if eq (.Values.server.service.instanceSelector.enabled | toString) "true" }} + app.kubernetes.io/instance: {{ .Release.Name }} + {{- end }} + component: server +{{- end }} +{{- end }} diff --git a/charts/partners/hashicorp/vault/0.28.0/src/templates/server-serviceaccount-secret.yaml b/charts/partners/hashicorp/vault/0.28.0/src/templates/server-serviceaccount-secret.yaml new file mode 100644 index 000000000..74d70f900 --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/templates/server-serviceaccount-secret.yaml @@ -0,0 +1,21 @@ +{{/* +Copyright (c) HashiCorp, Inc. +SPDX-License-Identifier: MPL-2.0 +*/}} + +{{ template "vault.serverServiceAccountSecretCreationEnabled" . }} +{{- if .serverServiceAccountSecretCreationEnabled -}} +apiVersion: v1 +kind: Secret +metadata: + name: {{ template "vault.serviceAccount.name" . }}-token + namespace: {{ include "vault.namespace" . }} + annotations: + kubernetes.io/service-account.name: {{ template "vault.serviceAccount.name" . }} + labels: + helm.sh/chart: {{ include "vault.chart" . }} + app.kubernetes.io/name: {{ include "vault.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} +type: kubernetes.io/service-account-token +{{ end }} \ No newline at end of file diff --git a/charts/partners/hashicorp/vault/0.28.0/src/templates/server-serviceaccount.yaml b/charts/partners/hashicorp/vault/0.28.0/src/templates/server-serviceaccount.yaml new file mode 100644 index 000000000..216ea6178 --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/templates/server-serviceaccount.yaml @@ -0,0 +1,22 @@ +{{/* +Copyright (c) HashiCorp, Inc. +SPDX-License-Identifier: MPL-2.0 +*/}} + +{{ template "vault.serverServiceAccountEnabled" . }} +{{- if .serverServiceAccountEnabled -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ template "vault.serviceAccount.name" . }} + namespace: {{ include "vault.namespace" . }} + labels: + helm.sh/chart: {{ include "vault.chart" . }} + app.kubernetes.io/name: {{ include "vault.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + {{- if .Values.server.serviceAccount.extraLabels -}} + {{- toYaml .Values.server.serviceAccount.extraLabels | nindent 4 -}} + {{- end -}} + {{ template "vault.serviceAccount.annotations" . }} +{{ end }} diff --git a/charts/partners/hashicorp/vault/0.28.0/src/templates/server-statefulset.yaml b/charts/partners/hashicorp/vault/0.28.0/src/templates/server-statefulset.yaml new file mode 100644 index 000000000..0d8e604d0 --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/templates/server-statefulset.yaml @@ -0,0 +1,232 @@ +{{/* +Copyright (c) HashiCorp, Inc. +SPDX-License-Identifier: MPL-2.0 +*/}} + +{{ template "vault.mode" . }} +{{- if ne .mode "external" }} +{{- if ne .mode "" }} +{{- if .serverEnabled -}} +# StatefulSet to run the actual vault server cluster. +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: {{ template "vault.fullname" . }} + namespace: {{ include "vault.namespace" . }} + labels: + app.kubernetes.io/name: {{ include "vault.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + {{- template "vault.statefulSet.annotations" . }} +spec: + serviceName: {{ template "vault.fullname" . }}-internal + podManagementPolicy: Parallel + replicas: {{ template "vault.replicas" . }} + updateStrategy: + type: {{ .Values.server.updateStrategyType }} + {{- if and (semverCompare ">= 1.23-0" .Capabilities.KubeVersion.Version) (.Values.server.persistentVolumeClaimRetentionPolicy) }} + persistentVolumeClaimRetentionPolicy: {{ toYaml .Values.server.persistentVolumeClaimRetentionPolicy | nindent 4 }} + {{- end }} + selector: + matchLabels: + app.kubernetes.io/name: {{ template "vault.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + component: server + template: + metadata: + labels: + helm.sh/chart: {{ template "vault.chart" . }} + app.kubernetes.io/name: {{ template "vault.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + component: server + {{- if .Values.server.extraLabels -}} + {{- toYaml .Values.server.extraLabels | nindent 8 -}} + {{- end -}} + {{ template "vault.annotations" . }} + spec: + {{ template "vault.affinity" . }} + {{ template "vault.topologySpreadConstraints" . }} + {{ template "vault.tolerations" . }} + {{ template "vault.nodeselector" . }} + {{- if .Values.server.priorityClassName }} + priorityClassName: {{ .Values.server.priorityClassName }} + {{- end }} + terminationGracePeriodSeconds: {{ .Values.server.terminationGracePeriodSeconds }} + serviceAccountName: {{ template "vault.serviceAccount.name" . }} + {{ if .Values.server.shareProcessNamespace }} + shareProcessNamespace: true + {{ end }} + {{- template "server.statefulSet.securityContext.pod" . }} + {{- if not .Values.global.openshift }} + hostNetwork: {{ .Values.server.hostNetwork }} + {{- end }} + volumes: + {{ template "vault.volumes" . }} + - name: home + emptyDir: {} + {{- if .Values.server.hostAliases }} + hostAliases: + {{ toYaml .Values.server.hostAliases | nindent 8}} + {{- end }} + {{- if .Values.server.extraInitContainers }} + initContainers: + {{ toYaml .Values.server.extraInitContainers | nindent 8}} + {{- end }} + containers: + - name: vault + {{ template "vault.resources" . }} + image: {{ .Values.server.image.repository }}:{{ .Values.server.image.tag | default "latest" }} + imagePullPolicy: {{ .Values.server.image.pullPolicy }} + command: + - "/bin/sh" + - "-ec" + args: {{ template "vault.args" . }} + {{- template "server.statefulSet.securityContext.container" . }} + env: + - name: HOST_IP + valueFrom: + fieldRef: + fieldPath: status.hostIP + - name: POD_IP + valueFrom: + fieldRef: + fieldPath: status.podIP + - name: VAULT_K8S_POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: VAULT_K8S_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + - name: VAULT_ADDR + value: "{{ include "vault.scheme" . }}://127.0.0.1:8200" + - name: VAULT_API_ADDR + {{- if .Values.server.ha.apiAddr }} + value: {{ .Values.server.ha.apiAddr }} + {{- else }} + value: "{{ include "vault.scheme" . }}://$(POD_IP):8200" + {{- end }} + - name: SKIP_CHOWN + value: "true" + - name: SKIP_SETCAP + value: "true" + - name: HOSTNAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: VAULT_CLUSTER_ADDR + {{- if .Values.server.ha.clusterAddr }} + value: {{ .Values.server.ha.clusterAddr | quote }} + {{- else }} + value: "https://$(HOSTNAME).{{ template "vault.fullname" . }}-internal:8201" + {{- end }} + {{- if and (eq (.Values.server.ha.raft.enabled | toString) "true") (eq (.Values.server.ha.raft.setNodeId | toString) "true") }} + - name: VAULT_RAFT_NODE_ID + valueFrom: + fieldRef: + fieldPath: metadata.name + {{- end }} + - name: HOME + value: "/home/vault" + {{- if .Values.server.logLevel }} + - name: VAULT_LOG_LEVEL + value: "{{ .Values.server.logLevel }}" + {{- end }} + {{- if .Values.server.logFormat }} + - name: VAULT_LOG_FORMAT + value: "{{ .Values.server.logFormat }}" + {{- end }} + {{- if (and .Values.server.enterpriseLicense.secretName .Values.server.enterpriseLicense.secretKey) }} + - name: VAULT_LICENSE_PATH + value: /vault/license/{{ .Values.server.enterpriseLicense.secretKey }} + {{- end }} + {{ template "vault.envs" . }} + {{- include "vault.extraEnvironmentVars" .Values.server | nindent 12 }} + {{- include "vault.extraSecretEnvironmentVars" .Values.server | nindent 12 }} + volumeMounts: + {{ template "vault.mounts" . }} + - name: home + mountPath: /home/vault + ports: + - containerPort: 8200 + name: {{ include "vault.scheme" . }} + - containerPort: 8201 + name: https-internal + - containerPort: 8202 + name: {{ include "vault.scheme" . }}-rep + {{- if .Values.server.extraPorts -}} + {{ toYaml .Values.server.extraPorts | nindent 12}} + {{- end }} + {{- if .Values.server.readinessProbe.enabled }} + readinessProbe: + {{- if .Values.server.readinessProbe.path }} + httpGet: + path: {{ .Values.server.readinessProbe.path | quote }} + port: {{ .Values.server.readinessProbe.port }} + scheme: {{ include "vault.scheme" . | upper }} + {{- else }} + # Check status; unsealed vault servers return 0 + # The exit code reflects the seal status: + # 0 - unsealed + # 1 - error + # 2 - sealed + exec: + command: ["/bin/sh", "-ec", "vault status -tls-skip-verify"] + {{- end }} + failureThreshold: {{ .Values.server.readinessProbe.failureThreshold }} + initialDelaySeconds: {{ .Values.server.readinessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.server.readinessProbe.periodSeconds }} + successThreshold: {{ .Values.server.readinessProbe.successThreshold }} + timeoutSeconds: {{ .Values.server.readinessProbe.timeoutSeconds }} + {{- end }} + {{- if .Values.server.livenessProbe.enabled }} + livenessProbe: + {{- if .Values.server.livenessProbe.execCommand }} + exec: + command: + {{- range (.Values.server.livenessProbe.execCommand) }} + - {{ . | quote }} + {{- end }} + {{- else }} + httpGet: + path: {{ .Values.server.livenessProbe.path | quote }} + port: {{ .Values.server.livenessProbe.port }} + scheme: {{ include "vault.scheme" . | upper }} + {{- end }} + failureThreshold: {{ .Values.server.livenessProbe.failureThreshold }} + initialDelaySeconds: {{ .Values.server.livenessProbe.initialDelaySeconds }} + periodSeconds: {{ .Values.server.livenessProbe.periodSeconds }} + successThreshold: {{ .Values.server.livenessProbe.successThreshold }} + timeoutSeconds: {{ .Values.server.livenessProbe.timeoutSeconds }} + {{- end }} + lifecycle: + # Vault container doesn't receive SIGTERM from Kubernetes + # and after the grace period ends, Kube sends SIGKILL. This + # causes issues with graceful shutdowns such as deregistering itself + # from Consul (zombie services). + preStop: + exec: + command: [ + "/bin/sh", "-c", + # Adding a sleep here to give the pod eviction a + # chance to propagate, so requests will not be made + # to this pod while it's terminating + "sleep {{ .Values.server.preStopSleepSeconds }} && kill -SIGTERM $(pidof vault)", + ] + {{- if .Values.server.postStart }} + postStart: + exec: + command: + {{- range (.Values.server.postStart) }} + - {{ . | quote }} + {{- end }} + {{- end }} + {{- if .Values.server.extraContainers }} + {{ toYaml .Values.server.extraContainers | nindent 8}} + {{- end }} + {{- include "imagePullSecrets" . | nindent 6 }} + {{ template "vault.volumeclaims" . }} +{{ end }} +{{ end }} +{{ end }} diff --git a/charts/partners/hashicorp/vault/0.28.0/src/templates/tests/server-test.yaml b/charts/partners/hashicorp/vault/0.28.0/src/templates/tests/server-test.yaml new file mode 100644 index 000000000..20e2e5a5a --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/templates/tests/server-test.yaml @@ -0,0 +1,56 @@ +{{/* +Copyright (c) HashiCorp, Inc. +SPDX-License-Identifier: MPL-2.0 +*/}} + +{{ template "vault.mode" . }} +{{- if ne .mode "external" }} +{{- if .serverEnabled -}} +apiVersion: v1 +kind: Pod +metadata: + name: {{ template "vault.fullname" . }}-server-test + namespace: {{ include "vault.namespace" . }} + annotations: + "helm.sh/hook": test +spec: + {{- include "imagePullSecrets" . | nindent 2 }} + containers: + - name: {{ .Release.Name }}-server-test + image: {{ .Values.server.image.repository }}:{{ .Values.server.image.tag | default "latest" }} + imagePullPolicy: {{ .Values.server.image.pullPolicy }} + env: + - name: VAULT_ADDR + value: {{ include "vault.scheme" . }}://{{ template "vault.fullname" . }}.{{ include "vault.namespace" . }}.svc:{{ .Values.server.service.port }} + {{- include "vault.extraEnvironmentVars" .Values.server | nindent 8 }} + command: + - /bin/sh + - -c + - | + echo "Checking for sealed info in 'vault status' output" + ATTEMPTS=10 + n=0 + until [ "$n" -ge $ATTEMPTS ] + do + echo "Attempt" $n... + vault status -format yaml | grep -E '^sealed: (true|false)' && break + n=$((n+1)) + sleep 5 + done + if [ $n -ge $ATTEMPTS ]; then + echo "timed out looking for sealed info in 'vault status' output" + exit 1 + fi + + exit 0 + volumeMounts: + {{- if .Values.server.volumeMounts }} + {{- toYaml .Values.server.volumeMounts | nindent 8}} + {{- end }} + volumes: + {{- if .Values.server.volumes }} + {{- toYaml .Values.server.volumes | nindent 4}} + {{- end }} + restartPolicy: Never +{{- end }} +{{- end }} diff --git a/charts/partners/hashicorp/vault/0.28.0/src/templates/ui-service.yaml b/charts/partners/hashicorp/vault/0.28.0/src/templates/ui-service.yaml new file mode 100644 index 000000000..95370842e --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/templates/ui-service.yaml @@ -0,0 +1,50 @@ +{{/* +Copyright (c) HashiCorp, Inc. +SPDX-License-Identifier: MPL-2.0 +*/}} + +{{ template "vault.mode" . }} +{{- if ne .mode "external" }} +{{- template "vault.uiEnabled" . -}} +{{- if .uiEnabled -}} + +apiVersion: v1 +kind: Service +metadata: + name: {{ template "vault.fullname" . }}-ui + namespace: {{ include "vault.namespace" . }} + labels: + helm.sh/chart: {{ include "vault.chart" . }} + app.kubernetes.io/name: {{ include "vault.name" . }}-ui + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + {{- template "vault.ui.annotations" . }} +spec: + {{- if (semverCompare ">= 1.23-0" .Capabilities.KubeVersion.Version) }} + {{- if .Values.ui.serviceIPFamilyPolicy }} + ipFamilyPolicy: {{ .Values.ui.serviceIPFamilyPolicy }} + {{- end }} + {{- if .Values.ui.serviceIPFamilies }} + ipFamilies: {{ .Values.ui.serviceIPFamilies | toYaml | nindent 2 }} + {{- end }} + {{- end }} + selector: + app.kubernetes.io/name: {{ include "vault.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + component: server + {{- if and (.Values.ui.activeVaultPodOnly) (eq .mode "ha") }} + vault-active: "true" + {{- end }} + publishNotReadyAddresses: {{ .Values.ui.publishNotReadyAddresses }} + ports: + - name: {{ include "vault.scheme" . }} + port: {{ .Values.ui.externalPort }} + targetPort: {{ .Values.ui.targetPort }} + {{- if .Values.ui.serviceNodePort }} + nodePort: {{ .Values.ui.serviceNodePort }} + {{- end }} + type: {{ .Values.ui.serviceType }} + {{- include "service.externalTrafficPolicy" .Values.ui }} + {{- include "service.loadBalancer" .Values.ui }} +{{- end -}} +{{- end }} diff --git a/charts/partners/hashicorp/vault/0.28.0/src/values.openshift.yaml b/charts/partners/hashicorp/vault/0.28.0/src/values.openshift.yaml new file mode 100644 index 000000000..62a85a6d5 --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/values.openshift.yaml @@ -0,0 +1,24 @@ +# Copyright (c) HashiCorp, Inc. +# SPDX-License-Identifier: MPL-2.0 + +# These overrides are appropriate defaults for deploying this chart on OpenShift + +global: + openshift: true + +injector: + image: + repository: "registry.connect.redhat.com/hashicorp/vault-k8s" + tag: "1.4.1-ubi" + + agentImage: + repository: "registry.connect.redhat.com/hashicorp/vault" + tag: "1.16.1-ubi" + +server: + image: + repository: "registry.connect.redhat.com/hashicorp/vault" + tag: "1.16.1-ubi" + + readinessProbe: + path: "/v1/sys/health?uninitcode=204" diff --git a/charts/partners/hashicorp/vault/0.28.0/src/values.schema.json b/charts/partners/hashicorp/vault/0.28.0/src/values.schema.json new file mode 100644 index 000000000..3f0871f2c --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/values.schema.json @@ -0,0 +1,1303 @@ +{ + "$schema": "http://json-schema.org/schema#", + "type": "object", + "properties": { + "csi": { + "type": "object", + "properties": { + "agent": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "extraArgs": { + "type": "array" + }, + "image": { + "type": "object", + "properties": { + "pullPolicy": { + "type": "string" + }, + "repository": { + "type": "string" + }, + "tag": { + "type": "string" + } + } + }, + "logFormat": { + "type": "string" + }, + "logLevel": { + "type": "string" + }, + "resources": { + "type": "object" + } + } + }, + "daemonSet": { + "type": "object", + "properties": { + "annotations": { + "type": [ + "object", + "string" + ] + }, + "extraLabels": { + "type": "object" + }, + "kubeletRootDir": { + "type": "string" + }, + "providersDir": { + "type": "string" + }, + "securityContext": { + "type": "object", + "properties": { + "container": { + "type": [ + "object", + "string" + ] + }, + "pod": { + "type": [ + "object", + "string" + ] + } + } + }, + "updateStrategy": { + "type": "object", + "properties": { + "maxUnavailable": { + "type": "string" + }, + "type": { + "type": "string" + } + } + } + } + }, + "debug": { + "type": "boolean" + }, + "enabled": { + "type": [ + "boolean", + "string" + ] + }, + "extraArgs": { + "type": "array" + }, + "hmacSecretName": { + "type": "string" + }, + "image": { + "type": "object", + "properties": { + "pullPolicy": { + "type": "string" + }, + "repository": { + "type": "string" + }, + "tag": { + "type": "string" + } + } + }, + "livenessProbe": { + "type": "object", + "properties": { + "failureThreshold": { + "type": "integer" + }, + "initialDelaySeconds": { + "type": "integer" + }, + "periodSeconds": { + "type": "integer" + }, + "successThreshold": { + "type": "integer" + }, + "timeoutSeconds": { + "type": "integer" + } + } + }, + "pod": { + "type": "object", + "properties": { + "affinity": { + "type": [ + "null", + "object", + "string" + ] + }, + "annotations": { + "type": [ + "object", + "string" + ] + }, + "extraLabels": { + "type": "object" + }, + "nodeSelector": { + "type": [ + "null", + "object", + "string" + ] + }, + "tolerations": { + "type": [ + "null", + "array", + "string" + ] + } + } + }, + "priorityClassName": { + "type": "string" + }, + "readinessProbe": { + "type": "object", + "properties": { + "failureThreshold": { + "type": "integer" + }, + "initialDelaySeconds": { + "type": "integer" + }, + "periodSeconds": { + "type": "integer" + }, + "successThreshold": { + "type": "integer" + }, + "timeoutSeconds": { + "type": "integer" + } + } + }, + "resources": { + "type": "object" + }, + "serviceAccount": { + "type": "object", + "properties": { + "annotations": { + "type": [ + "object", + "string" + ] + }, + "extraLabels": { + "type": "object" + } + } + }, + "volumeMounts": { + "type": [ + "null", + "array" + ] + }, + "volumes": { + "type": [ + "null", + "array" + ] + } + } + }, + "global": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "externalVaultAddr": { + "type": "string" + }, + "imagePullSecrets": { + "type": "array" + }, + "namespace": { + "type": "string" + }, + "openshift": { + "type": "boolean" + }, + "psp": { + "type": "object", + "properties": { + "annotations": { + "type": [ + "object", + "string" + ] + }, + "enable": { + "type": "boolean" + } + } + }, + "serverTelemetry": { + "type": "object", + "properties": { + "prometheusOperator": { + "type": "boolean" + } + } + }, + "tlsDisable": { + "type": "boolean" + } + } + }, + "injector": { + "type": "object", + "properties": { + "affinity": { + "type": [ + "object", + "string" + ] + }, + "agentDefaults": { + "type": "object", + "properties": { + "cpuLimit": { + "type": "string" + }, + "cpuRequest": { + "type": "string" + }, + "memLimit": { + "type": "string" + }, + "memRequest": { + "type": "string" + }, + "ephemeralLimit": { + "type": "string" + }, + "ephemeralRequest": { + "type": "string" + }, + "template": { + "type": "string" + }, + "templateConfig": { + "type": "object", + "properties": { + "exitOnRetryFailure": { + "type": "boolean" + }, + "staticSecretRenderInterval": { + "type": "string" + } + } + } + } + }, + "agentImage": { + "type": "object", + "properties": { + "repository": { + "type": "string" + }, + "tag": { + "type": "string" + } + } + }, + "annotations": { + "type": [ + "object", + "string" + ] + }, + "authPath": { + "type": "string" + }, + "certs": { + "type": "object", + "properties": { + "caBundle": { + "type": "string" + }, + "certName": { + "type": "string" + }, + "keyName": { + "type": "string" + }, + "secretName": { + "type": [ + "null", + "string" + ] + } + } + }, + "enabled": { + "type": [ + "boolean", + "string" + ] + }, + "externalVaultAddr": { + "type": "string" + }, + "extraEnvironmentVars": { + "type": "object" + }, + "extraLabels": { + "type": "object" + }, + "failurePolicy": { + "type": "string" + }, + "hostNetwork": { + "type": "boolean" + }, + "image": { + "type": "object", + "properties": { + "pullPolicy": { + "type": "string" + }, + "repository": { + "type": "string" + }, + "tag": { + "type": "string" + } + } + }, + "leaderElector": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + } + } + }, + "livenessProbe": { + "type": "object", + "properties": { + "failureThreshold": { + "type": "integer" + }, + "initialDelaySeconds": { + "type": "integer" + }, + "periodSeconds": { + "type": "integer" + }, + "successThreshold": { + "type": "integer" + }, + "timeoutSeconds": { + "type": "integer" + } + } + }, + "logFormat": { + "type": "string" + }, + "logLevel": { + "type": "string" + }, + "metrics": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + } + } + }, + "namespaceSelector": { + "type": "object" + }, + "nodeSelector": { + "type": [ + "null", + "object", + "string" + ] + }, + "objectSelector": { + "type": [ + "object", + "string" + ] + }, + "podDisruptionBudget": { + "type": "object" + }, + "port": { + "type": "integer" + }, + "priorityClassName": { + "type": "string" + }, + "readinessProbe": { + "type": "object", + "properties": { + "failureThreshold": { + "type": "integer" + }, + "initialDelaySeconds": { + "type": "integer" + }, + "periodSeconds": { + "type": "integer" + }, + "successThreshold": { + "type": "integer" + }, + "timeoutSeconds": { + "type": "integer" + } + } + }, + "replicas": { + "type": "integer" + }, + "resources": { + "type": "object" + }, + "revokeOnShutdown": { + "type": "boolean" + }, + "securityContext": { + "type": "object", + "properties": { + "container": { + "type": [ + "object", + "string" + ] + }, + "pod": { + "type": [ + "object", + "string" + ] + } + } + }, + "service": { + "type": "object", + "properties": { + "annotations": { + "type": [ + "object", + "string" + ] + } + } + }, + "serviceAccount": { + "type": "object", + "properties": { + "annotations": { + "type": [ + "object", + "string" + ] + } + } + }, + "startupProbe": { + "type": "object", + "properties": { + "failureThreshold": { + "type": "integer" + }, + "initialDelaySeconds": { + "type": "integer" + }, + "periodSeconds": { + "type": "integer" + }, + "successThreshold": { + "type": "integer" + }, + "timeoutSeconds": { + "type": "integer" + } + } + }, + "strategy": { + "type": [ + "object", + "string" + ] + }, + "tolerations": { + "type": [ + "null", + "array", + "string" + ] + }, + "topologySpreadConstraints": { + "type": [ + "null", + "array", + "string" + ] + }, + "webhook": { + "type": "object", + "properties": { + "annotations": { + "type": [ + "object", + "string" + ] + }, + "failurePolicy": { + "type": "string" + }, + "matchPolicy": { + "type": "string" + }, + "namespaceSelector": { + "type": "object" + }, + "objectSelector": { + "type": [ + "object", + "string" + ] + }, + "timeoutSeconds": { + "type": "integer" + } + } + }, + "webhookAnnotations": { + "type": [ + "object", + "string" + ] + } + } + }, + "server": { + "type": "object", + "properties": { + "affinity": { + "type": [ + "object", + "string" + ] + }, + "annotations": { + "type": [ + "object", + "string" + ] + }, + "auditStorage": { + "type": "object", + "properties": { + "accessMode": { + "type": "string" + }, + "annotations": { + "type": [ + "object", + "string" + ] + }, + "enabled": { + "type": [ + "boolean", + "string" + ] + }, + "labels": { + "type": [ + "object", + "string" + ] + }, + "mountPath": { + "type": "string" + }, + "size": { + "type": "string" + }, + "storageClass": { + "type": [ + "null", + "string" + ] + } + } + }, + "authDelegator": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + } + } + }, + "configAnnotation": { + "type": "boolean" + }, + "dataStorage": { + "type": "object", + "properties": { + "accessMode": { + "type": "string" + }, + "annotations": { + "type": [ + "object", + "string" + ] + }, + "enabled": { + "type": [ + "boolean", + "string" + ] + }, + "labels": { + "type": [ + "object", + "string" + ] + }, + "mountPath": { + "type": "string" + }, + "size": { + "type": "string" + }, + "storageClass": { + "type": [ + "null", + "string" + ] + } + } + }, + "dev": { + "type": "object", + "properties": { + "devRootToken": { + "type": "string" + }, + "enabled": { + "type": "boolean" + } + } + }, + "enabled": { + "type": [ + "boolean", + "string" + ] + }, + "enterpriseLicense": { + "type": "object", + "properties": { + "secretKey": { + "type": "string" + }, + "secretName": { + "type": "string" + } + } + }, + "extraArgs": { + "type": "string" + }, + "extraContainers": { + "type": [ + "null", + "array" + ] + }, + "extraEnvironmentVars": { + "type": "object" + }, + "extraInitContainers": { + "type": [ + "null", + "array" + ] + }, + "extraLabels": { + "type": "object" + }, + "extraPorts": { + "type": [ + "null", + "array" + ] + }, + "extraSecretEnvironmentVars": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "ha": { + "type": "object", + "properties": { + "apiAddr": { + "type": [ + "null", + "string" + ] + }, + "clusterAddr": { + "type": [ + "null", + "string" + ] + }, + "config": { + "type": [ + "string", + "object" + ] + }, + "disruptionBudget": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "maxUnavailable": { + "type": [ + "null", + "integer" + ] + } + } + }, + "enabled": { + "type": "boolean" + }, + "raft": { + "type": "object", + "properties": { + "config": { + "type": [ + "string", + "object" + ] + }, + "enabled": { + "type": "boolean" + }, + "setNodeId": { + "type": "boolean" + } + } + }, + "replicas": { + "type": "integer" + } + } + }, + "hostAliases": { + "type": "array" + }, + "hostNetwork": { + "type": "boolean" + }, + "image": { + "type": "object", + "properties": { + "pullPolicy": { + "type": "string" + }, + "repository": { + "type": "string" + }, + "tag": { + "type": "string" + } + } + }, + "ingress": { + "type": "object", + "properties": { + "activeService": { + "type": "boolean" + }, + "annotations": { + "type": [ + "object", + "string" + ] + }, + "enabled": { + "type": "boolean" + }, + "extraPaths": { + "type": "array" + }, + "hosts": { + "type": "array", + "items": { + "type": "object", + "properties": { + "host": { + "type": "string" + }, + "paths": { + "type": "array" + } + } + } + }, + "ingressClassName": { + "type": "string" + }, + "labels": { + "type": "object" + }, + "pathType": { + "type": "string" + }, + "tls": { + "type": "array" + } + } + }, + "livenessProbe": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "execCommand": { + "type": "array" + }, + "failureThreshold": { + "type": "integer" + }, + "initialDelaySeconds": { + "type": "integer" + }, + "path": { + "type": "string" + }, + "periodSeconds": { + "type": "integer" + }, + "port": { + "type": "integer" + }, + "successThreshold": { + "type": "integer" + }, + "timeoutSeconds": { + "type": "integer" + } + } + }, + "logFormat": { + "type": "string" + }, + "logLevel": { + "type": "string" + }, + "networkPolicy": { + "type": "object", + "properties": { + "egress": { + "type": "array" + }, + "enabled": { + "type": "boolean" + }, + "ingress": { + "type": "array" + } + } + }, + "nodeSelector": { + "type": [ + "null", + "object", + "string" + ] + }, + "persistentVolumeClaimRetentionPolicy": { + "type": "object", + "properties": { + "whenDeleted": { + "type": "string" + }, + "whenScaled": { + "type": "string" + } + } + }, + "postStart": { + "type": "array" + }, + "preStopSleepSeconds": { + "type": "integer" + }, + "priorityClassName": { + "type": "string" + }, + "readinessProbe": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "failureThreshold": { + "type": "integer" + }, + "initialDelaySeconds": { + "type": "integer" + }, + "periodSeconds": { + "type": "integer" + }, + "port": { + "type": "integer" + }, + "successThreshold": { + "type": "integer" + }, + "timeoutSeconds": { + "type": "integer" + } + } + }, + "resources": { + "type": "object" + }, + "route": { + "type": "object", + "properties": { + "activeService": { + "type": "boolean" + }, + "annotations": { + "type": [ + "object", + "string" + ] + }, + "enabled": { + "type": "boolean" + }, + "host": { + "type": "string" + }, + "labels": { + "type": "object" + }, + "tls": { + "type": "object" + } + } + }, + "service": { + "type": "object", + "properties": { + "active": { + "type": "object", + "properties": { + "annotations": { + "type": [ + "object", + "string" + ] + }, + "enabled": { + "type": "boolean" + } + } + }, + "activeNodePort": { + "type": "integer" + }, + "annotations": { + "type": [ + "object", + "string" + ] + }, + "enabled": { + "type": "boolean" + }, + "externalTrafficPolicy": { + "type": "string" + }, + "instanceSelector": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + } + } + }, + "ipFamilies": { + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + }, + "nodePort": { + "type": "integer" + }, + "port": { + "type": "integer" + }, + "publishNotReadyAddresses": { + "type": "boolean" + }, + "standby": { + "type": "object", + "properties": { + "annotations": { + "type": [ + "object", + "string" + ] + }, + "enabled": { + "type": "boolean" + } + } + }, + "standbyNodePort": { + "type": "integer" + }, + "targetPort": { + "type": "integer" + } + } + }, + "serviceAccount": { + "type": "object", + "properties": { + "annotations": { + "type": [ + "object", + "string" + ] + }, + "create": { + "type": "boolean" + }, + "createSecret": { + "type": "boolean" + }, + "extraLabels": { + "type": "object" + }, + "name": { + "type": "string" + }, + "serviceDiscovery": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + } + } + } + } + }, + "shareProcessNamespace": { + "type": "boolean" + }, + "standalone": { + "type": "object", + "properties": { + "config": { + "type": [ + "string", + "object" + ] + }, + "enabled": { + "type": [ + "string", + "boolean" + ] + } + } + }, + "statefulSet": { + "type": "object", + "properties": { + "annotations": { + "type": [ + "object", + "string" + ] + }, + "securityContext": { + "type": "object", + "properties": { + "container": { + "type": [ + "object", + "string" + ] + }, + "pod": { + "type": [ + "object", + "string" + ] + } + } + } + } + }, + "terminationGracePeriodSeconds": { + "type": "integer" + }, + "tolerations": { + "type": [ + "null", + "array", + "string" + ] + }, + "topologySpreadConstraints": { + "type": [ + "null", + "array", + "string" + ] + }, + "updateStrategyType": { + "type": "string" + }, + "volumeMounts": { + "type": [ + "null", + "array" + ] + }, + "volumes": { + "type": [ + "null", + "array" + ] + } + } + }, + "serverTelemetry": { + "type": "object", + "properties": { + "prometheusRules": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "rules": { + "type": "array" + }, + "selectors": { + "type": "object" + } + } + }, + "serviceMonitor": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "interval": { + "type": "string" + }, + "scrapeTimeout": { + "type": "string" + }, + "selectors": { + "type": "object" + } + } + } + } + }, + "ui": { + "type": "object", + "properties": { + "activeVaultPodOnly": { + "type": "boolean" + }, + "annotations": { + "type": [ + "object", + "string" + ] + }, + "enabled": { + "type": [ + "boolean", + "string" + ] + }, + "externalPort": { + "type": "integer" + }, + "externalTrafficPolicy": { + "type": "string" + }, + "publishNotReadyAddresses": { + "type": "boolean" + }, + "serviceIPFamilies": { + "type": "array" + }, + "serviceIPFamilyPolicy": { + "type": "string" + }, + "serviceNodePort": { + "type": [ + "null", + "integer" + ] + }, + "serviceType": { + "type": "string" + }, + "targetPort": { + "type": "integer" + } + } + } + } +} diff --git a/charts/partners/hashicorp/vault/0.28.0/src/values.yaml b/charts/partners/hashicorp/vault/0.28.0/src/values.yaml new file mode 100644 index 000000000..7fab7b545 --- /dev/null +++ b/charts/partners/hashicorp/vault/0.28.0/src/values.yaml @@ -0,0 +1,1186 @@ +# Copyright (c) HashiCorp, Inc. +# SPDX-License-Identifier: MPL-2.0 + +# Available parameters and their default values for the Vault chart. + +global: + # enabled is the master enabled switch. Setting this to true or false + # will enable or disable all the components within this chart by default. + enabled: true + # The namespace to deploy to. Defaults to the `helm` installation namespace. + namespace: "" + # Image pull secret to use for registry authentication. + # Alternatively, the value may be specified as an array of strings. + imagePullSecrets: [] + # imagePullSecrets: + # - name: image-pull-secret + + # TLS for end-to-end encrypted transport + tlsDisable: true + # External vault server address for the injector and CSI provider to use. + # Setting this will disable deployment of a vault server. + externalVaultAddr: "" + # If deploying to OpenShift + openshift: true + # Create PodSecurityPolicy for pods + psp: + enable: false + # Annotation for PodSecurityPolicy. + # This is a multi-line templated string map, and can also be set as YAML. + annotations: | + seccomp.security.alpha.kubernetes.io/allowedProfileNames: docker/default,runtime/default + apparmor.security.beta.kubernetes.io/allowedProfileNames: runtime/default + seccomp.security.alpha.kubernetes.io/defaultProfileName: runtime/default + apparmor.security.beta.kubernetes.io/defaultProfileName: runtime/default + serverTelemetry: + # Enable integration with the Prometheus Operator + # See the top level serverTelemetry section below before enabling this feature. + prometheusOperator: false +injector: + # True if you want to enable vault agent injection. + # @default: global.enabled + enabled: "-" + replicas: 1 + # Configures the port the injector should listen on + port: 8080 + # If multiple replicas are specified, by default a leader will be determined + # so that only one injector attempts to create TLS certificates. + leaderElector: + enabled: true + # If true, will enable a node exporter metrics endpoint at /metrics. + metrics: + enabled: false + # Deprecated: Please use global.externalVaultAddr instead. + externalVaultAddr: "" + # image sets the repo and tag of the vault-k8s image to use for the injector. + image: + repository: "registry.connect.redhat.com/hashicorp/vault-k8s" + tag: "1.4.1-ubi" + pullPolicy: IfNotPresent + # agentImage sets the repo and tag of the Vault image to use for the Vault Agent + # containers. This should be set to the official Vault image. Vault 1.3.1+ is + # required. + agentImage: + repository: "registry.connect.redhat.com/hashicorp/vault" + tag: "1.16.1-ubi" + # The default values for the injected Vault Agent containers. + agentDefaults: + # For more information on configuring resources, see the K8s documentation: + # https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + cpuLimit: "500m" + cpuRequest: "250m" + memLimit: "128Mi" + memRequest: "64Mi" + # ephemeralLimit: "128Mi" + # ephemeralRequest: "64Mi" + + # Default template type for secrets when no custom template is specified. + # Possible values include: "json" and "map". + template: "map" + # Default values within Agent's template_config stanza. + templateConfig: + exitOnRetryFailure: true + staticSecretRenderInterval: "" + # Used to define custom livenessProbe settings + livenessProbe: + # When a probe fails, Kubernetes will try failureThreshold times before giving up + failureThreshold: 2 + # Number of seconds after the container has started before probe initiates + initialDelaySeconds: 5 + # How often (in seconds) to perform the probe + periodSeconds: 2 + # Minimum consecutive successes for the probe to be considered successful after having failed + successThreshold: 1 + # Number of seconds after which the probe times out. + timeoutSeconds: 5 + # Used to define custom readinessProbe settings + readinessProbe: + # When a probe fails, Kubernetes will try failureThreshold times before giving up + failureThreshold: 2 + # Number of seconds after the container has started before probe initiates + initialDelaySeconds: 5 + # How often (in seconds) to perform the probe + periodSeconds: 2 + # Minimum consecutive successes for the probe to be considered successful after having failed + successThreshold: 1 + # Number of seconds after which the probe times out. + timeoutSeconds: 5 + # Used to define custom startupProbe settings + startupProbe: + # When a probe fails, Kubernetes will try failureThreshold times before giving up + failureThreshold: 12 + # Number of seconds after the container has started before probe initiates + initialDelaySeconds: 5 + # How often (in seconds) to perform the probe + periodSeconds: 5 + # Minimum consecutive successes for the probe to be considered successful after having failed + successThreshold: 1 + # Number of seconds after which the probe times out. + timeoutSeconds: 5 + # Mount Path of the Vault Kubernetes Auth Method. + authPath: "auth/kubernetes" + # Configures the log verbosity of the injector. + # Supported log levels include: trace, debug, info, warn, error + logLevel: "info" + # Configures the log format of the injector. Supported log formats: "standard", "json". + logFormat: "standard" + # Configures all Vault Agent sidecars to revoke their token when shutting down + revokeOnShutdown: false + webhook: + # Configures failurePolicy of the webhook. The "unspecified" default behaviour depends on the + # API Version of the WebHook. + # To block pod creation while the webhook is unavailable, set the policy to `Fail` below. + # See https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/#failure-policy + # + failurePolicy: Ignore + # matchPolicy specifies the approach to accepting changes based on the rules of + # the MutatingWebhookConfiguration. + # See https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/#matching-requests-matchpolicy + # for more details. + # + matchPolicy: Exact + # timeoutSeconds is the amount of seconds before the webhook request will be ignored + # or fails. + # If it is ignored or fails depends on the failurePolicy + # See https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/#timeouts + # for more details. + # + timeoutSeconds: 30 + # namespaceSelector is the selector for restricting the webhook to only + # specific namespaces. + # See https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/#matching-requests-namespaceselector + # for more details. + # Example: + # namespaceSelector: + # matchLabels: + # sidecar-injector: enabled + namespaceSelector: {} + # objectSelector is the selector for restricting the webhook to only + # specific labels. + # See https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/#matching-requests-objectselector + # for more details. + # Example: + # objectSelector: + # matchLabels: + # vault-sidecar-injector: enabled + objectSelector: | + matchExpressions: + - key: app.kubernetes.io/name + operator: NotIn + values: + - {{ template "vault.name" . }}-agent-injector + # Extra annotations to attach to the webhook + annotations: {} + # Deprecated: please use 'webhook.failurePolicy' instead + # Configures failurePolicy of the webhook. The "unspecified" default behaviour depends on the + # API Version of the WebHook. + # To block pod creation while webhook is unavailable, set the policy to `Fail` below. + # See https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/#failure-policy + # + failurePolicy: Ignore + # Deprecated: please use 'webhook.namespaceSelector' instead + # namespaceSelector is the selector for restricting the webhook to only + # specific namespaces. + # See https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/#matching-requests-namespaceselector + # for more details. + # Example: + # namespaceSelector: + # matchLabels: + # sidecar-injector: enabled + namespaceSelector: {} + # Deprecated: please use 'webhook.objectSelector' instead + # objectSelector is the selector for restricting the webhook to only + # specific labels. + # See https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/#matching-requests-objectselector + # for more details. + # Example: + # objectSelector: + # matchLabels: + # vault-sidecar-injector: enabled + objectSelector: {} + # Deprecated: please use 'webhook.annotations' instead + # Extra annotations to attach to the webhook + webhookAnnotations: {} + certs: + # secretName is the name of the secret that has the TLS certificate and + # private key to serve the injector webhook. If this is null, then the + # injector will default to its automatic management mode that will assign + # a service account to the injector to generate its own certificates. + secretName: null + # caBundle is a base64-encoded PEM-encoded certificate bundle for the CA + # that signed the TLS certificate that the webhook serves. This must be set + # if secretName is non-null unless an external service like cert-manager is + # keeping the caBundle updated. + caBundle: "" + # certName and keyName are the names of the files within the secret for + # the TLS cert and private key, respectively. These have reasonable + # defaults but can be customized if necessary. + certName: tls.crt + keyName: tls.key + # Security context for the pod template and the injector container + # The default pod securityContext is: + # runAsNonRoot: true + # runAsGroup: {{ .Values.injector.gid | default 1000 }} + # runAsUser: {{ .Values.injector.uid | default 100 }} + # fsGroup: {{ .Values.injector.gid | default 1000 }} + # and for container is + # allowPrivilegeEscalation: false + # capabilities: + # drop: + # - ALL + securityContext: + pod: {} + container: {} + resources: {} + # resources: + # requests: + # memory: 256Mi + # cpu: 250m + # limits: + # memory: 256Mi + # cpu: 250m + + # extraEnvironmentVars is a list of extra environment variables to set in the + # injector deployment. + extraEnvironmentVars: {} + # KUBERNETES_SERVICE_HOST: kubernetes.default.svc + + # Affinity Settings for injector pods + # This can either be a multi-line string or YAML matching the PodSpec's affinity field. + # Commenting out or setting as empty the affinity variable, will allow + # deployment of multiple replicas to single node services such as Minikube. + affinity: | + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - labelSelector: + matchLabels: + app.kubernetes.io/name: {{ template "vault.name" . }}-agent-injector + app.kubernetes.io/instance: "{{ .Release.Name }}" + component: webhook + topologyKey: kubernetes.io/hostname + # Topology settings for injector pods + # ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/ + # This should be either a multi-line string or YAML matching the topologySpreadConstraints array + # in a PodSpec. + topologySpreadConstraints: [] + # Toleration Settings for injector pods + # This should be either a multi-line string or YAML matching the Toleration array + # in a PodSpec. + tolerations: [] + # nodeSelector labels for server pod assignment, formatted as a multi-line string or YAML map. + # ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector + # Example: + # nodeSelector: + # beta.kubernetes.io/arch: amd64 + nodeSelector: {} + # Priority class for injector pods + priorityClassName: "" + # Extra annotations to attach to the injector pods + # This can either be YAML or a YAML-formatted multi-line templated string map + # of the annotations to apply to the injector pods + annotations: {} + # Extra labels to attach to the agent-injector + # This should be a YAML map of the labels to apply to the injector + extraLabels: {} + # Should the injector pods run on the host network (useful when using + # an alternate CNI in EKS) + hostNetwork: false + # Injector service specific config + service: + # Extra annotations to attach to the injector service + annotations: {} + # Injector serviceAccount specific config + serviceAccount: + # Extra annotations to attach to the injector serviceAccount + annotations: {} + # A disruption budget limits the number of pods of a replicated application + # that are down simultaneously from voluntary disruptions + podDisruptionBudget: {} + # podDisruptionBudget: + # maxUnavailable: 1 + + # strategy for updating the deployment. This can be a multi-line string or a + # YAML map. + strategy: {} + # strategy: | + # rollingUpdate: + # maxSurge: 25% + # maxUnavailable: 25% + # type: RollingUpdate +server: + # If true, or "-" with global.enabled true, Vault server will be installed. + # See vault.mode in _helpers.tpl for implementation details. + enabled: "-" + # [Enterprise Only] This value refers to a Kubernetes secret that you have + # created that contains your enterprise license. If you are not using an + # enterprise image or if you plan to introduce the license key via another + # route, then leave secretName blank ("") or set it to null. + # Requires Vault Enterprise 1.8 or later. + enterpriseLicense: + # The name of the Kubernetes secret that holds the enterprise license. The + # secret must be in the same namespace that Vault is installed into. + secretName: "" + # The key within the Kubernetes secret that holds the enterprise license. + secretKey: "license" + # Resource requests, limits, etc. for the server cluster placement. This + # should map directly to the value of the resources field for a PodSpec. + # By default no direct resource request is made. + image: + repository: "registry.connect.redhat.com/hashicorp/vault" + tag: "1.16.1-ubi" + # Overrides the default Image Pull Policy + pullPolicy: IfNotPresent + # Configure the Update Strategy Type for the StatefulSet + # See https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies + updateStrategyType: "OnDelete" + # Configure the logging verbosity for the Vault server. + # Supported log levels include: trace, debug, info, warn, error + logLevel: "" + # Configure the logging format for the Vault server. + # Supported log formats include: standard, json + logFormat: "" + resources: {} + # resources: + # requests: + # memory: 256Mi + # cpu: 250m + # limits: + # memory: 256Mi + # cpu: 250m + + # Ingress allows ingress services to be created to allow external access + # from Kubernetes to access Vault pods. + # If deployment is on OpenShift, the following block is ignored. + # In order to expose the service, use the route section below + ingress: + enabled: false + labels: {} + # traffic: external + annotations: {} + # | + # kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + # or + # kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + + # Optionally use ingressClassName instead of deprecated annotation. + # See: https://kubernetes.io/docs/concepts/services-networking/ingress/#deprecated-annotation + ingressClassName: "" + # As of Kubernetes 1.19, all Ingress Paths must have a pathType configured. The default value below should be sufficient in most cases. + # See: https://kubernetes.io/docs/concepts/services-networking/ingress/#path-types for other possible values. + pathType: Prefix + # When HA mode is enabled and K8s service registration is being used, + # configure the ingress to point to the Vault active service. + activeService: true + hosts: + - host: chart-example.local + paths: [] + ## Extra paths to prepend to the host configuration. This is useful when working with annotation based services. + extraPaths: [] + # - path: /* + # backend: + # service: + # name: ssl-redirect + # port: + # number: use-annotation + tls: [] + # - secretName: chart-example-tls + # hosts: + # - chart-example.local + # hostAliases is a list of aliases to be added to /etc/hosts. Specified as a YAML list. + hostAliases: [] + # - ip: 127.0.0.1 + # hostnames: + # - chart-example.local + + # OpenShift only - create a route to expose the service + # By default the created route will be of type passthrough + route: + enabled: false + # When HA mode is enabled and K8s service registration is being used, + # configure the route to point to the Vault active service. + activeService: true + labels: {} + annotations: {} + host: chart-example.local + # tls will be passed directly to the route's TLS config, which + # can be used to configure other termination methods that terminate + # TLS at the router + tls: + termination: passthrough + # authDelegator enables a cluster role binding to be attached to the service + # account. This cluster role binding can be used to setup Kubernetes auth + # method. See https://developer.hashicorp.com/vault/docs/auth/kubernetes + authDelegator: + enabled: true + # extraInitContainers is a list of init containers. Specified as a YAML list. + # This is useful if you need to run a script to provision TLS certificates or + # write out configuration files in a dynamic way. + extraInitContainers: null + # # This example installs a plugin pulled from github into the /usr/local/libexec/vault/oauthapp folder, + # # which is defined in the volumes value. + # - name: oauthapp + # image: "alpine" + # command: [sh, -c] + # args: + # - cd /tmp && + # wget https://github.com/puppetlabs/vault-plugin-secrets-oauthapp/releases/download/v1.2.0/vault-plugin-secrets-oauthapp-v1.2.0-linux-amd64.tar.xz -O oauthapp.xz && + # tar -xf oauthapp.xz && + # mv vault-plugin-secrets-oauthapp-v1.2.0-linux-amd64 /usr/local/libexec/vault/oauthapp && + # chmod +x /usr/local/libexec/vault/oauthapp + # volumeMounts: + # - name: plugins + # mountPath: /usr/local/libexec/vault + + # extraContainers is a list of sidecar containers. Specified as a YAML list. + extraContainers: null + # shareProcessNamespace enables process namespace sharing between Vault and the extraContainers + # This is useful if Vault must be signaled, e.g. to send a SIGHUP for a log rotation + shareProcessNamespace: false + # extraArgs is a string containing additional Vault server arguments. + extraArgs: "" + # extraPorts is a list of extra ports. Specified as a YAML list. + # This is useful if you need to add additional ports to the statefulset in dynamic way. + extraPorts: null + # - containerPort: 8300 + # name: http-monitoring + + # Used to define custom readinessProbe settings + readinessProbe: + enabled: true + # If you need to use a http path instead of the default exec + # path: /v1/sys/health?standbyok=true + + # Port number on which readinessProbe will be checked. + port: 8200 + # When a probe fails, Kubernetes will try failureThreshold times before giving up + failureThreshold: 2 + # Number of seconds after the container has started before probe initiates + initialDelaySeconds: 5 + # How often (in seconds) to perform the probe + periodSeconds: 5 + # Minimum consecutive successes for the probe to be considered successful after having failed + successThreshold: 1 + # Number of seconds after which the probe times out. + timeoutSeconds: 3 + path: "/v1/sys/health?uninitcode=204" + # Used to enable a livenessProbe for the pods + livenessProbe: + enabled: false + # Used to define a liveness exec command. If provided, exec is preferred to httpGet (path) as the livenessProbe handler. + execCommand: [] + # - /bin/sh + # - -c + # - /vault/userconfig/mylivenessscript/run.sh + # Path for the livenessProbe to use httpGet as the livenessProbe handler + path: "/v1/sys/health?standbyok=true" + # Port number on which livenessProbe will be checked if httpGet is used as the livenessProbe handler + port: 8200 + # When a probe fails, Kubernetes will try failureThreshold times before giving up + failureThreshold: 2 + # Number of seconds after the container has started before probe initiates + initialDelaySeconds: 60 + # How often (in seconds) to perform the probe + periodSeconds: 5 + # Minimum consecutive successes for the probe to be considered successful after having failed + successThreshold: 1 + # Number of seconds after which the probe times out. + timeoutSeconds: 3 + # Optional duration in seconds the pod needs to terminate gracefully. + # See: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/ + terminationGracePeriodSeconds: 10 + # Used to set the sleep time during the preStop step + preStopSleepSeconds: 5 + # Used to define commands to run after the pod is ready. + # This can be used to automate processes such as initialization + # or boostrapping auth methods. + postStart: [] + # - /bin/sh + # - -c + # - /vault/userconfig/myscript/run.sh + + # extraEnvironmentVars is a list of extra environment variables to set with the stateful set. These could be + # used to include variables required for auto-unseal. + extraEnvironmentVars: {} + # GOOGLE_REGION: global + # GOOGLE_PROJECT: myproject + # GOOGLE_APPLICATION_CREDENTIALS: /vault/userconfig/myproject/myproject-creds.json + + # extraSecretEnvironmentVars is a list of extra environment variables to set with the stateful set. + # These variables take value from existing Secret objects. + extraSecretEnvironmentVars: [] + # - envName: AWS_SECRET_ACCESS_KEY + # secretName: vault + # secretKey: AWS_SECRET_ACCESS_KEY + + # Deprecated: please use 'volumes' instead. + # extraVolumes is a list of extra volumes to mount. These will be exposed + # to Vault in the path `/vault/userconfig//`. The value below is + # an array of objects, examples are shown below. + extraVolumes: [] + # - type: secret (or "configMap") + # name: my-secret + # path: null # default is `/vault/userconfig` + + # volumes is a list of volumes made available to all containers. These are rendered + # via toYaml rather than pre-processed like the extraVolumes value. + # The purpose is to make it easy to share volumes between containers. + volumes: null + # - name: plugins + # emptyDir: {} + + # volumeMounts is a list of volumeMounts for the main server container. These are rendered + # via toYaml rather than pre-processed like the extraVolumes value. + # The purpose is to make it easy to share volumes between containers. + volumeMounts: null + # - mountPath: /usr/local/libexec/vault + # name: plugins + # readOnly: true + + # Affinity Settings + # Commenting out or setting as empty the affinity variable, will allow + # deployment to single node services such as Minikube + # This should be either a multi-line string or YAML matching the PodSpec's affinity field. + affinity: | + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - labelSelector: + matchLabels: + app.kubernetes.io/name: {{ template "vault.name" . }} + app.kubernetes.io/instance: "{{ .Release.Name }}" + component: server + topologyKey: kubernetes.io/hostname + # Topology settings for server pods + # ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/ + # This should be either a multi-line string or YAML matching the topologySpreadConstraints array + # in a PodSpec. + topologySpreadConstraints: [] + # Toleration Settings for server pods + # This should be either a multi-line string or YAML matching the Toleration array + # in a PodSpec. + tolerations: [] + # nodeSelector labels for server pod assignment, formatted as a multi-line string or YAML map. + # ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector + # Example: + # nodeSelector: + # beta.kubernetes.io/arch: amd64 + nodeSelector: {} + # Enables network policy for server pods + networkPolicy: + enabled: false + egress: [] + # egress: + # - to: + # - ipBlock: + # cidr: 10.0.0.0/24 + # ports: + # - protocol: TCP + # port: 443 + ingress: + - from: + - namespaceSelector: {} + ports: + - port: 8200 + protocol: TCP + - port: 8201 + protocol: TCP + # Priority class for server pods + priorityClassName: "" + # Extra labels to attach to the server pods + # This should be a YAML map of the labels to apply to the server pods + extraLabels: {} + # Extra annotations to attach to the server pods + # This can either be YAML or a YAML-formatted multi-line templated string map + # of the annotations to apply to the server pods + annotations: {} + # Add an annotation to the server configmap and the statefulset pods, + # vaultproject.io/config-checksum, that is a hash of the Vault configuration. + # This can be used together with an OnDelete deployment strategy to help + # identify which pods still need to be deleted during a deployment to pick up + # any configuration changes. + configAnnotation: false + # Enables a headless service to be used by the Vault Statefulset + service: + enabled: true + # Enable or disable the vault-active service, which selects Vault pods that + # have labeled themselves as the cluster leader with `vault-active: "true"`. + active: + enabled: true + # Extra annotations for the service definition. This can either be YAML or a + # YAML-formatted multi-line templated string map of the annotations to apply + # to the active service. + annotations: {} + # Enable or disable the vault-standby service, which selects Vault pods that + # have labeled themselves as a cluster follower with `vault-active: "false"`. + standby: + enabled: true + # Extra annotations for the service definition. This can either be YAML or a + # YAML-formatted multi-line templated string map of the annotations to apply + # to the standby service. + annotations: {} + # If enabled, the service selectors will include `app.kubernetes.io/instance: {{ .Release.Name }}` + # When disabled, services may select Vault pods not deployed from the chart. + # Does not affect the headless vault-internal service with `ClusterIP: None` + instanceSelector: + enabled: true + # clusterIP controls whether a Cluster IP address is attached to the + # Vault service within Kubernetes. By default, the Vault service will + # be given a Cluster IP address, set to None to disable. When disabled + # Kubernetes will create a "headless" service. Headless services can be + # used to communicate with pods directly through DNS instead of a round-robin + # load balancer. + # clusterIP: None + + # Configures the service type for the main Vault service. Can be ClusterIP + # or NodePort. + #type: ClusterIP + + # The IP family and IP families options are to set the behaviour in a dual-stack environment. + # Omitting these values will let the service fall back to whatever the CNI dictates the defaults + # should be. + # These are only supported for kubernetes versions >=1.23.0 + # + # Configures the service's supported IP family policy, can be either: + # SingleStack: Single-stack service. The control plane allocates a cluster IP for the Service, using the first configured service cluster IP range. + # PreferDualStack: Allocates IPv4 and IPv6 cluster IPs for the Service. + # RequireDualStack: Allocates Service .spec.ClusterIPs from both IPv4 and IPv6 address ranges. + ipFamilyPolicy: "" + # Sets the families that should be supported and the order in which they should be applied to ClusterIP as well. + # Can be IPv4 and/or IPv6. + ipFamilies: [] + # Do not wait for pods to be ready before including them in the services' + # targets. Does not apply to the headless service, which is used for + # cluster-internal communication. + publishNotReadyAddresses: true + # The externalTrafficPolicy can be set to either Cluster or Local + # and is only valid for LoadBalancer and NodePort service types. + # The default value is Cluster. + # ref: https://kubernetes.io/docs/concepts/services-networking/service/#external-traffic-policy + externalTrafficPolicy: Cluster + # If type is set to "NodePort", a specific nodePort value can be configured, + # will be random if left blank. + #nodePort: 30000 + + # When HA mode is enabled + # If type is set to "NodePort", a specific nodePort value can be configured, + # will be random if left blank. + #activeNodePort: 30001 + + # When HA mode is enabled + # If type is set to "NodePort", a specific nodePort value can be configured, + # will be random if left blank. + #standbyNodePort: 30002 + + # Port on which Vault server is listening + port: 8200 + # Target port to which the service should be mapped to + targetPort: 8200 + # Extra annotations for the service definition. This can either be YAML or a + # YAML-formatted multi-line templated string map of the annotations to apply + # to the service. + annotations: {} + # This configures the Vault Statefulset to create a PVC for data + # storage when using the file or raft backend storage engines. + # See https://developer.hashicorp.com/vault/docs/configuration/storage to know more + dataStorage: + enabled: true + # Size of the PVC created + size: 10Gi + # Location where the PVC will be mounted. + mountPath: "/vault/data" + # Name of the storage class to use. If null it will use the + # configured default Storage Class. + storageClass: null + # Access Mode of the storage device being used for the PVC + accessMode: ReadWriteOnce + # Annotations to apply to the PVC + annotations: {} + # Labels to apply to the PVC + labels: {} + # Persistent Volume Claim (PVC) retention policy + # ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#persistentvolumeclaim-retention + # Example: + # persistentVolumeClaimRetentionPolicy: + # whenDeleted: Retain + # whenScaled: Retain + persistentVolumeClaimRetentionPolicy: {} + # This configures the Vault Statefulset to create a PVC for audit + # logs. Once Vault is deployed, initialized, and unsealed, Vault must + # be configured to use this for audit logs. This will be mounted to + # /vault/audit + # See https://developer.hashicorp.com/vault/docs/audit to know more + auditStorage: + enabled: false + # Size of the PVC created + size: 10Gi + # Location where the PVC will be mounted. + mountPath: "/vault/audit" + # Name of the storage class to use. If null it will use the + # configured default Storage Class. + storageClass: null + # Access Mode of the storage device being used for the PVC + accessMode: ReadWriteOnce + # Annotations to apply to the PVC + annotations: {} + # Labels to apply to the PVC + labels: {} + # Run Vault in "dev" mode. This requires no further setup, no state management, + # and no initialization. This is useful for experimenting with Vault without + # needing to unseal, store keys, et. al. All data is lost on restart - do not + # use dev mode for anything other than experimenting. + # See https://developer.hashicorp.com/vault/docs/concepts/dev-server to know more + dev: + enabled: false + # Set VAULT_DEV_ROOT_TOKEN_ID value + devRootToken: "root" + # Run Vault in "standalone" mode. This is the default mode that will deploy if + # no arguments are given to helm. This requires a PVC for data storage to use + # the "file" backend. This mode is not highly available and should not be scaled + # past a single replica. + standalone: + enabled: "-" + # config is a raw string of default configuration when using a Stateful + # deployment. Default is to use a PersistentVolumeClaim mounted at /vault/data + # and store data there. This is only used when using a Replica count of 1, and + # using a stateful set. This should be HCL. + + # Note: Configuration files are stored in ConfigMaps so sensitive data + # such as passwords should be either mounted through extraSecretEnvironmentVars + # or through a Kube secret. For more information see: + # https://developer.hashicorp.com/vault/docs/platform/k8s/helm/run#protecting-sensitive-vault-configurations + config: | + ui = true + + listener "tcp" { + tls_disable = 1 + address = "[::]:8200" + cluster_address = "[::]:8201" + # Enable unauthenticated metrics access (necessary for Prometheus Operator) + #telemetry { + # unauthenticated_metrics_access = "true" + #} + } + storage "file" { + path = "/vault/data" + } + + # Example configuration for using auto-unseal, using Google Cloud KMS. The + # GKMS keys must already exist, and the cluster must have a service account + # that is authorized to access GCP KMS. + #seal "gcpckms" { + # project = "vault-helm-dev" + # region = "global" + # key_ring = "vault-helm-unseal-kr" + # crypto_key = "vault-helm-unseal-key" + #} + + # Example configuration for enabling Prometheus metrics in your config. + #telemetry { + # prometheus_retention_time = "30s" + # disable_hostname = true + #} + # Run Vault in "HA" mode. There are no storage requirements unless the audit log + # persistence is required. In HA mode Vault will configure itself to use Consul + # for its storage backend. The default configuration provided will work the Consul + # Helm project by default. It is possible to manually configure Vault to use a + # different HA backend. + ha: + enabled: false + replicas: 3 + # Set the api_addr configuration for Vault HA + # See https://developer.hashicorp.com/vault/docs/configuration#api_addr + # If set to null, this will be set to the Pod IP Address + apiAddr: null + # Set the cluster_addr confuguration for Vault HA + # See https://developer.hashicorp.com/vault/docs/configuration#cluster_addr + # If set to null, this will be set to https://$(HOSTNAME).{{ template "vault.fullname" . }}-internal:8201 + clusterAddr: null + # Enables Vault's integrated Raft storage. Unlike the typical HA modes where + # Vault's persistence is external (such as Consul), enabling Raft mode will create + # persistent volumes for Vault to store data according to the configuration under server.dataStorage. + # The Vault cluster will coordinate leader elections and failovers internally. + raft: + # Enables Raft integrated storage + enabled: false + # Set the Node Raft ID to the name of the pod + setNodeId: false + # Note: Configuration files are stored in ConfigMaps so sensitive data + # such as passwords should be either mounted through extraSecretEnvironmentVars + # or through a Kube secret. For more information see: + # https://developer.hashicorp.com/vault/docs/platform/k8s/helm/run#protecting-sensitive-vault-configurations + config: | + ui = true + + listener "tcp" { + tls_disable = 1 + address = "[::]:8200" + cluster_address = "[::]:8201" + # Enable unauthenticated metrics access (necessary for Prometheus Operator) + #telemetry { + # unauthenticated_metrics_access = "true" + #} + } + + storage "raft" { + path = "/vault/data" + } + + service_registration "kubernetes" {} + # config is a raw string of default configuration when using a Stateful + # deployment. Default is to use a Consul for its HA storage backend. + # This should be HCL. + + # Note: Configuration files are stored in ConfigMaps so sensitive data + # such as passwords should be either mounted through extraSecretEnvironmentVars + # or through a Kube secret. For more information see: + # https://developer.hashicorp.com/vault/docs/platform/k8s/helm/run#protecting-sensitive-vault-configurations + config: | + ui = true + + listener "tcp" { + tls_disable = 1 + address = "[::]:8200" + cluster_address = "[::]:8201" + } + storage "consul" { + path = "vault" + address = "HOST_IP:8500" + } + + service_registration "kubernetes" {} + + # Example configuration for using auto-unseal, using Google Cloud KMS. The + # GKMS keys must already exist, and the cluster must have a service account + # that is authorized to access GCP KMS. + #seal "gcpckms" { + # project = "vault-helm-dev-246514" + # region = "global" + # key_ring = "vault-helm-unseal-kr" + # crypto_key = "vault-helm-unseal-key" + #} + + # Example configuration for enabling Prometheus metrics. + # If you are using Prometheus Operator you can enable a ServiceMonitor resource below. + # You may wish to enable unauthenticated metrics in the listener block above. + #telemetry { + # prometheus_retention_time = "30s" + # disable_hostname = true + #} + # A disruption budget limits the number of pods of a replicated application + # that are down simultaneously from voluntary disruptions + disruptionBudget: + enabled: true + # maxUnavailable will default to (n/2)-1 where n is the number of + # replicas. If you'd like a custom value, you can specify an override here. + maxUnavailable: null + # Definition of the serviceAccount used to run Vault. + # These options are also used when using an external Vault server to validate + # Kubernetes tokens. + serviceAccount: + # Specifies whether a service account should be created + create: true + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + # Create a Secret API object to store a non-expiring token for the service account. + # Prior to v1.24.0, Kubernetes used to generate this secret for each service account by default. + # Kubernetes now recommends using short-lived tokens from the TokenRequest API or projected volumes instead if possible. + # For more details, see https://kubernetes.io/docs/concepts/configuration/secret/#service-account-token-secrets + # serviceAccount.create must be equal to 'true' in order to use this feature. + createSecret: false + # Extra annotations for the serviceAccount definition. This can either be + # YAML or a YAML-formatted multi-line templated string map of the + # annotations to apply to the serviceAccount. + annotations: {} + # Extra labels to attach to the serviceAccount + # This should be a YAML map of the labels to apply to the serviceAccount + extraLabels: {} + # Enable or disable a service account role binding with the permissions required for + # Vault's Kubernetes service_registration config option. + # See https://developer.hashicorp.com/vault/docs/configuration/service-registration/kubernetes + serviceDiscovery: + enabled: true + # Settings for the statefulSet used to run Vault. + statefulSet: + # Extra annotations for the statefulSet. This can either be YAML or a + # YAML-formatted multi-line templated string map of the annotations to apply + # to the statefulSet. + annotations: {} + # Set the pod and container security contexts. + # If not set, these will default to, and for *not* OpenShift: + # pod: + # runAsNonRoot: true + # runAsGroup: {{ .Values.server.gid | default 1000 }} + # runAsUser: {{ .Values.server.uid | default 100 }} + # fsGroup: {{ .Values.server.gid | default 1000 }} + # container: + # allowPrivilegeEscalation: false + # + # If not set, these will default to, and for OpenShift: + # pod: {} + # container: {} + securityContext: + pod: {} + container: {} + # Should the server pods run on the host network + hostNetwork: false +# Vault UI +ui: + # True if you want to create a Service entry for the Vault UI. + # + # serviceType can be used to control the type of service created. For + # example, setting this to "LoadBalancer" will create an external load + # balancer (for supported K8S installations) to access the UI. + enabled: false + publishNotReadyAddresses: true + # The service should only contain selectors for active Vault pod + activeVaultPodOnly: false + serviceType: "ClusterIP" + serviceNodePort: null + externalPort: 8200 + targetPort: 8200 + # The IP family and IP families options are to set the behaviour in a dual-stack environment. + # Omitting these values will let the service fall back to whatever the CNI dictates the defaults + # should be. + # These are only supported for kubernetes versions >=1.23.0 + # + # Configures the service's supported IP family, can be either: + # SingleStack: Single-stack service. The control plane allocates a cluster IP for the Service, using the first configured service cluster IP range. + # PreferDualStack: Allocates IPv4 and IPv6 cluster IPs for the Service. + # RequireDualStack: Allocates Service .spec.ClusterIPs from both IPv4 and IPv6 address ranges. + serviceIPFamilyPolicy: "" + # Sets the families that should be supported and the order in which they should be applied to ClusterIP as well + # Can be IPv4 and/or IPv6. + serviceIPFamilies: [] + # The externalTrafficPolicy can be set to either Cluster or Local + # and is only valid for LoadBalancer and NodePort service types. + # The default value is Cluster. + # ref: https://kubernetes.io/docs/concepts/services-networking/service/#external-traffic-policy + externalTrafficPolicy: Cluster + #loadBalancerSourceRanges: + # - 10.0.0.0/16 + # - 1.78.23.3/32 + + # loadBalancerIP: + + # Extra annotations to attach to the ui service + # This can either be YAML or a YAML-formatted multi-line templated string map + # of the annotations to apply to the ui service + annotations: {} +# secrets-store-csi-driver-provider-vault +csi: + # True if you want to install a secrets-store-csi-driver-provider-vault daemonset. + # + # Requires installing the secrets-store-csi-driver separately, see: + # https://github.com/kubernetes-sigs/secrets-store-csi-driver#install-the-secrets-store-csi-driver + # + # With the driver and provider installed, you can mount Vault secrets into volumes + # similar to the Vault Agent injector, and you can also sync those secrets into + # Kubernetes secrets. + enabled: false + image: + repository: "hashicorp/vault-csi-provider" + tag: "1.4.2" + pullPolicy: IfNotPresent + # volumes is a list of volumes made available to all containers. These are rendered + # via toYaml rather than pre-processed like the extraVolumes value. + # The purpose is to make it easy to share volumes between containers. + volumes: null + # - name: tls + # secret: + # secretName: vault-tls + + # volumeMounts is a list of volumeMounts for the main server container. These are rendered + # via toYaml rather than pre-processed like the extraVolumes value. + # The purpose is to make it easy to share volumes between containers. + volumeMounts: null + # - name: tls + # mountPath: "/vault/tls" + # readOnly: true + + resources: {} + # resources: + # requests: + # cpu: 50m + # memory: 128Mi + # limits: + # cpu: 50m + # memory: 128Mi + + # Override the default secret name for the CSI Provider's HMAC key used for + # generating secret versions. + hmacSecretName: "" + # Settings for the daemonSet used to run the provider. + daemonSet: + updateStrategy: + type: RollingUpdate + maxUnavailable: "" + # Extra annotations for the daemonSet. This can either be YAML or a + # YAML-formatted multi-line templated string map of the annotations to apply + # to the daemonSet. + annotations: {} + # Provider host path (must match the CSI provider's path) + providersDir: "/etc/kubernetes/secrets-store-csi-providers" + # Kubelet host path + kubeletRootDir: "/var/lib/kubelet" + # Extra labels to attach to the vault-csi-provider daemonSet + # This should be a YAML map of the labels to apply to the csi provider daemonSet + extraLabels: {} + # security context for the pod template and container in the csi provider daemonSet + securityContext: + pod: {} + container: {} + pod: + # Extra annotations for the provider pods. This can either be YAML or a + # YAML-formatted multi-line templated string map of the annotations to apply + # to the pod. + annotations: {} + # Toleration Settings for provider pods + # This should be either a multi-line string or YAML matching the Toleration array + # in a PodSpec. + tolerations: [] + # nodeSelector labels for csi pod assignment, formatted as a multi-line string or YAML map. + # ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector + # Example: + # nodeSelector: + # beta.kubernetes.io/arch: amd64 + nodeSelector: {} + # Affinity Settings + # This should be either a multi-line string or YAML matching the PodSpec's affinity field. + affinity: {} + # Extra labels to attach to the vault-csi-provider pod + # This should be a YAML map of the labels to apply to the csi provider pod + extraLabels: {} + agent: + enabled: true + extraArgs: [] + image: + repository: "hashicorp/vault" + tag: "1.16.1" + pullPolicy: IfNotPresent + logFormat: standard + logLevel: info + resources: {} + # resources: + # requests: + # memory: 256Mi + # cpu: 250m + # limits: + # memory: 256Mi + # cpu: 250m + # Priority class for csi pods + priorityClassName: "" + serviceAccount: + # Extra annotations for the serviceAccount definition. This can either be + # YAML or a YAML-formatted multi-line templated string map of the + # annotations to apply to the serviceAccount. + annotations: {} + # Extra labels to attach to the vault-csi-provider serviceAccount + # This should be a YAML map of the labels to apply to the csi provider serviceAccount + extraLabels: {} + # Used to configure readinessProbe for the pods. + readinessProbe: + # When a probe fails, Kubernetes will try failureThreshold times before giving up + failureThreshold: 2 + # Number of seconds after the container has started before probe initiates + initialDelaySeconds: 5 + # How often (in seconds) to perform the probe + periodSeconds: 5 + # Minimum consecutive successes for the probe to be considered successful after having failed + successThreshold: 1 + # Number of seconds after which the probe times out. + timeoutSeconds: 3 + # Used to configure livenessProbe for the pods. + livenessProbe: + # When a probe fails, Kubernetes will try failureThreshold times before giving up + failureThreshold: 2 + # Number of seconds after the container has started before probe initiates + initialDelaySeconds: 5 + # How often (in seconds) to perform the probe + periodSeconds: 5 + # Minimum consecutive successes for the probe to be considered successful after having failed + successThreshold: 1 + # Number of seconds after which the probe times out. + timeoutSeconds: 3 + # Enables debug logging. + debug: false + # Pass arbitrary additional arguments to vault-csi-provider. + # See https://developer.hashicorp.com/vault/docs/platform/k8s/csi/configurations#command-line-arguments + # for the available command line flags. + extraArgs: [] +# Vault is able to collect and publish various runtime metrics. +# Enabling this feature requires setting adding `telemetry{}` stanza to +# the Vault configuration. There are a few examples included in the `config` sections above. +# +# For more information see: +# https://developer.hashicorp.com/vault/docs/configuration/telemetry +# https://developer.hashicorp.com/vault/docs/internals/telemetry +serverTelemetry: + # Enable support for the Prometheus Operator. Currently, this chart does not support + # authenticating to Vault's metrics endpoint, so the following `telemetry{}` must be included + # in the `listener "tcp"{}` stanza + # telemetry { + # unauthenticated_metrics_access = "true" + # } + # + # See the `standalone.config` for a more complete example of this. + # + # In addition, a top level `telemetry{}` stanza must also be included in the Vault configuration: + # + # example: + # telemetry { + # prometheus_retention_time = "30s" + # disable_hostname = true + # } + # + # Configuration for monitoring the Vault server. + serviceMonitor: + # The Prometheus operator *must* be installed before enabling this feature, + # if not the chart will fail to install due to missing CustomResourceDefinitions + # provided by the operator. + # + # Instructions on how to install the Helm chart can be found here: + # https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack + # More information can be found here: + # https://github.com/prometheus-operator/prometheus-operator + # https://github.com/prometheus-operator/kube-prometheus + + # Enable deployment of the Vault Server ServiceMonitor CustomResource. + enabled: false + # Selector labels to add to the ServiceMonitor. + # When empty, defaults to: + # release: prometheus + selectors: {} + # Interval at which Prometheus scrapes metrics + interval: 30s + # Timeout for Prometheus scrapes + scrapeTimeout: 10s + prometheusRules: + # The Prometheus operator *must* be installed before enabling this feature, + # if not the chart will fail to install due to missing CustomResourceDefinitions + # provided by the operator. + + # Deploy the PrometheusRule custom resource for AlertManager based alerts. + # Requires that AlertManager is properly deployed. + enabled: false + # Selector labels to add to the PrometheusRules. + # When empty, defaults to: + # release: prometheus + selectors: {} + # Some example rules. + rules: [] + # - alert: vault-HighResponseTime + # annotations: + # message: The response time of Vault is over 500ms on average over the last 5 minutes. + # expr: vault_core_handle_request{quantile="0.5", namespace="mynamespace"} > 500 + # for: 5m + # labels: + # severity: warning + # - alert: vault-HighResponseTime + # annotations: + # message: The response time of Vault is over 1s on average over the last 5 minutes. + # expr: vault_core_handle_request{quantile="0.5", namespace="mynamespace"} > 1000 + # for: 5m + # labels: + # severity: critical diff --git a/charts/partners/intracom-telecom/nfvri/5.1.0/report.yaml b/charts/partners/intracom-telecom/nfvri/5.1.0/report.yaml new file mode 100644 index 000000000..912638c73 --- /dev/null +++ b/charts/partners/intracom-telecom/nfvri/5.1.0/report.yaml @@ -0,0 +1,122 @@ +apiversion: v1 +kind: verify-report +metadata: + tool: + verifier-version: 1.13.3 + profile: + VendorType: partner + version: v1.2 + reportDigest: uint64:3527924603390235143 + chart-uri: N/A + digests: + chart: sha256:8b73bea424da935fb8b2d4f3c85689d3f92cf49bd1bb28d3b148632e3694c20f + package: be3180e0c26ba5cd58c6d074d474b9e1dfa1e5acf1c42d88189bd2723bf4e622 + lastCertifiedTimestamp: "2024-04-05T13:14:07.330485+00:00" + testedOpenShiftVersion: "4.13" + supportedOpenShiftVersions: '>=4.9' + webCatalogOnly: true + chart: + name: nfvri + home: "" + sources: [] + version: 5.1.0 + description: A Helm chart for Kubernetes to deploy the NFV-RI stack + keywords: [] + maintainers: [] + icon: "" + apiversion: v2 + condition: "" + tags: "" + appversion: v5.1.0 + deprecated: false + annotations: + charts.openshift.io/name: nfvri + kubeversion: '>= 1.22.0' + dependencies: + - name: nfvri-agent + version: 5.1.0 + repository: file://../nfvri-agent + condition: "" + tags: [] + enabled: false + importvalues: [] + alias: "" + - name: nfvri-apiserver + version: 5.1.0 + repository: file://../nfvri-apiserver + condition: "" + tags: [] + enabled: false + importvalues: [] + alias: "" + - name: nfvri-orchestrator + version: 5.1.0 + repository: file://../nfvri-orchestrator + condition: "" + tags: [] + enabled: false + importvalues: [] + alias: "" + - name: nfvri-dashboard + version: 5.1.0 + repository: file://../nfvri-dashboard + condition: "" + tags: [] + enabled: false + importvalues: [] + alias: "" + type: application + chart-overrides: "" +results: + - check: v1.0/signature-is-valid + type: Mandatory + outcome: SKIPPED + reason: 'Chart is not signed : Signature verification not required' + - check: v1.0/contains-values-schema + type: Mandatory + outcome: PASS + reason: Values schema file exist + - check: v1.0/not-contains-crds + type: Mandatory + outcome: PASS + reason: Chart does not contain CRDs + - check: v1.0/contains-test + type: Mandatory + outcome: PASS + reason: Chart test files exist + - check: v1.0/is-helm-v3 + type: Mandatory + outcome: PASS + reason: API version is V2, used in Helm 3 + - check: v1.1/images-are-certified + type: Mandatory + outcome: PASS + reason: No images to certify + - check: v1.0/required-annotations-present + type: Mandatory + outcome: PASS + reason: All required annotations present + - check: v1.0/contains-values + type: Mandatory + outcome: PASS + reason: Values file exist + - check: v1.0/has-readme + type: Mandatory + outcome: PASS + reason: Chart has a README + - check: v1.0/helm-lint + type: Mandatory + outcome: PASS + reason: Helm lint successful + - check: v1.0/not-contain-csi-objects + type: Mandatory + outcome: PASS + reason: CSI objects do not exist + - check: v1.0/chart-testing + type: Mandatory + outcome: PASS + reason: Chart tests have passed + - check: v1.1/has-kubeversion + type: Mandatory + outcome: PASS + reason: Kubernetes version specified \ No newline at end of file diff --git a/charts/partners/intracom-telecom/nfvri/OWNERS b/charts/partners/intracom-telecom/nfvri/OWNERS index 2e24652a3..64a638543 100644 --- a/charts/partners/intracom-telecom/nfvri/OWNERS +++ b/charts/partners/intracom-telecom/nfvri/OWNERS @@ -1,11 +1,11 @@ chart: name: nfvri shortDescription: NFV-RI (TM) Helm Chart Repository +providerDelivery: true publicPgpKey: null -providerDelivery: True users: - githubUsername: angelouev -- githubUsername: danielchristod +- githubUsername: vaspapts vendor: label: intracom-telecom name: Intracom S A Telecom Solutions diff --git a/charts/partners/jjf-fake-registry/jjf-uat-helm-francini-web-only/OWNERS b/charts/partners/jjf-fake-registry/jjf-uat-helm-francini-web-only/OWNERS new file mode 100644 index 000000000..0089d946d --- /dev/null +++ b/charts/partners/jjf-fake-registry/jjf-uat-helm-francini-web-only/OWNERS @@ -0,0 +1,11 @@ +chart: + name: jjf-uat-helm-francini-web-only + shortDescription: A test repository. +providerDelivery: true +publicPgpKey: unknown +users: +- githubUsername: jfrancin +- githubUsername: francini +vendor: + label: jjf-fake-registry + name: John Francini's Fake Company diff --git a/charts/partners/jjf-fake-registry/uat-helm-francini/OWNERS b/charts/partners/jjf-fake-registry/uat-helm-francini/OWNERS new file mode 100644 index 000000000..d1fb6813f --- /dev/null +++ b/charts/partners/jjf-fake-registry/uat-helm-francini/OWNERS @@ -0,0 +1,9 @@ +chart: + name: uat-helm-francini + shortDescription: unknown +providerDelivery: false +publicPgpKey: unknown +users: [] +vendor: + label: jjf-fake-registry + name: John Francini's Fake Company diff --git a/charts/partners/nextevolution/nedb-classic/0.3.1/report.yaml b/charts/partners/nextevolution/nedb-classic/0.3.1/report.yaml new file mode 100644 index 000000000..c1b00327a --- /dev/null +++ b/charts/partners/nextevolution/nedb-classic/0.3.1/report.yaml @@ -0,0 +1,129 @@ +apiversion: v1 +kind: verify-report +metadata: + tool: + verifier-version: 1.13.3 + profile: + VendorType: partner + version: v1.3 + reportDigest: uint64:14129642774981500172 + chart-uri: https://redhat-charts:strahc-tahder@chart-proxy.nextevolution.de/repository/helm-releases/nedb-classic-0.3.1.tgz + digests: + chart: sha256:75b9ca6dcffee5d99afe55bb494e01047d85457a7f14d0e0e5b5c8ffdd372931 + package: f6bec217d5b768f0089d97dad0b1eccdbe803964845e131c82057b1b95d362a2 + publicKey: d332377b98736a0e4da010d866dcc6ee9ce891dbd7729b07e071f3a8a16f1e22 + lastCertifiedTimestamp: "2024-05-21T09:24:54.284812+00:00" + testedOpenShiftVersion: "4.15" + supportedOpenShiftVersions: '>=4.11' + webCatalogOnly: false + chart: + name: nedb-classic + home: "" + sources: [] + version: 0.3.1 + description: A Helm chart for NE.Databridge Classic Deployments + keywords: [] + maintainers: [] + icon: https://www.nextevolution.de/user/themes/nextevolution/images/logo.png + apiversion: v2 + condition: "" + tags: "" + appversion: "1.0" + deprecated: false + annotations: + category: Integration + charts.openshift.io/name: NE.Databridge Classic Standalone + kubeversion: '>= 1.23.15 < 1.30.0' + dependencies: + - name: common + version: 2.x.x + repository: https://charts.bitnami.com/bitnami + condition: "" + tags: + - bitnami-common + enabled: false + importvalues: [] + alias: "" + - name: postgresql + version: 15.x + repository: https://charts.bitnami.com/bitnami + condition: postgresql.enabled + tags: [] + enabled: false + importvalues: [] + alias: "" + - name: prometheus + version: 25.x.x + repository: https://prometheus-community.github.io/helm-charts + condition: prometheus.enabled + tags: [] + enabled: false + importvalues: [] + alias: "" + - name: grafana + version: 7.x.x + repository: https://grafana.github.io/helm-charts + condition: grafana.enabled + tags: [] + enabled: false + importvalues: [] + alias: "" + type: application + chart-overrides: "" +results: + - check: v1.0/has-readme + type: Mandatory + outcome: PASS + reason: Chart has a README + - check: v1.0/contains-values + type: Mandatory + outcome: PASS + reason: Values file exist + - check: v1.1/has-kubeversion + type: Mandatory + outcome: PASS + reason: Kubernetes version specified + - check: v1.0/not-contains-crds + type: Mandatory + outcome: PASS + reason: Chart does not contain CRDs + - check: v1.0/helm-lint + type: Mandatory + outcome: PASS + reason: Helm lint successful + - check: v1.0/signature-is-valid + type: Mandatory + outcome: PASS + reason: 'Chart is signed : Signature verification passed' + - check: v1.0/chart-testing + type: Mandatory + outcome: PASS + reason: Chart tests have passed + - check: v1.0/is-helm-v3 + type: Mandatory + outcome: PASS + reason: API version is V2, used in Helm 3 + - check: v1.0/required-annotations-present + type: Mandatory + outcome: PASS + reason: All required annotations present + - check: v1.0/contains-test + type: Mandatory + outcome: PASS + reason: Chart test files exist + - check: v1.0/has-notes + type: Optional + outcome: PASS + reason: Chart does contain NOTES.txt + - check: v1.0/contains-values-schema + type: Mandatory + outcome: PASS + reason: Values schema file exist + - check: v1.1/images-are-certified + type: Mandatory + outcome: PASS + reason: No images to certify + - check: v1.0/not-contain-csi-objects + type: Mandatory + outcome: PASS + reason: CSI objects do not exist diff --git a/charts/partners/nokia/cmm-operator-k8s/24.0.0-p1/report.yaml b/charts/partners/nokia/cmm-operator-k8s/24.0.0-p1/report.yaml new file mode 100644 index 000000000..6252f1178 --- /dev/null +++ b/charts/partners/nokia/cmm-operator-k8s/24.0.0-p1/report.yaml @@ -0,0 +1,93 @@ +apiversion: v1 +kind: verify-report +metadata: + tool: + verifier-version: 1.13.3 + profile: + VendorType: partner + version: v1.2 + reportDigest: uint64:9296354270783190721 + chart-uri: N/A + digests: + chart: sha256:a33f36f5355d38e71ed3195d03a712c6cc1dc3c13812969eb62c40e466fcc3cc + package: a15e300d113b1018a91a16ee6fc6bc4c3fc7c9b5eb9fd3d7953c5920eed5e402 + lastCertifiedTimestamp: "2024-04-23T06:29:54.282758+00:00" + testedOpenShiftVersion: "4.14" + supportedOpenShiftVersions: '>=4.7' + webCatalogOnly: true + chart: + name: cmm-operator-k8s + home: "" + sources: [] + version: 24.0.0-p1 + description: A Helm chart for CMM in Kubernetes using operators + keywords: [] + maintainers: [] + icon: https://www.nokia.com/chart-icon.png + apiversion: v2 + condition: "" + tags: "" + appversion: "" + deprecated: false + annotations: + charts.openshift.io/archs: x86_64 + charts.openshift.io/name: Nokia CMM + charts.openshift.io/provider: Nokia + charts.openshift.io/supportURL: https://github.com/nokiacmm/helm-chart + kubeversion: '>= 1.20.0-0' + dependencies: [] + type: application + chart-overrides: "" +results: + - check: v1.0/helm-lint + type: Mandatory + outcome: PASS + reason: Helm lint successful + - check: v1.0/signature-is-valid + type: Mandatory + outcome: SKIPPED + reason: 'Chart is not signed : Signature verification not required' + - check: v1.1/has-kubeversion + type: Mandatory + outcome: PASS + reason: Kubernetes version specified + - check: v1.0/required-annotations-present + type: Mandatory + outcome: PASS + reason: All required annotations present + - check: v1.0/not-contain-csi-objects + type: Mandatory + outcome: PASS + reason: CSI objects do not exist + - check: v1.0/chart-testing + type: Mandatory + outcome: PASS + reason: Chart tests have passed + - check: v1.0/contains-test + type: Mandatory + outcome: PASS + reason: Chart test files exist + - check: v1.0/contains-values-schema + type: Mandatory + outcome: PASS + reason: Values schema file exist + - check: v1.1/images-are-certified + type: Mandatory + outcome: PASS + reason: 'Image is Red Hat certified : quay.io/nepravee/cmm-operator:CMM24.0.0.0' + - check: v1.0/is-helm-v3 + type: Mandatory + outcome: PASS + reason: API version is V2, used in Helm 3 + - check: v1.0/contains-values + type: Mandatory + outcome: PASS + reason: Values file exist + - check: v1.0/has-readme + type: Mandatory + outcome: PASS + reason: Chart has a README + - check: v1.0/not-contains-crds + type: Mandatory + outcome: PASS + reason: Chart does not contain CRDs diff --git a/charts/partners/redhat-arkady-test/oneshotchart/OWNERS b/charts/partners/redhat-arkady-test/oneshotchart/OWNERS new file mode 100644 index 000000000..e9e48025c --- /dev/null +++ b/charts/partners/redhat-arkady-test/oneshotchart/OWNERS @@ -0,0 +1,9 @@ +chart: + name: oneshotchart + shortDescription: unknown +providerDelivery: true +publicPgpKey: unknown +users: [] +vendor: + label: redhat-arkady-test + name: Red Hat, Inc. diff --git a/charts/partners/redhat-arkady-test/yingchart/OWNERS b/charts/partners/redhat-arkady-test/yingchart/OWNERS new file mode 100644 index 000000000..1f4350cb0 --- /dev/null +++ b/charts/partners/redhat-arkady-test/yingchart/OWNERS @@ -0,0 +1,9 @@ +chart: + name: yingchart + shortDescription: unknown +providerDelivery: true +publicPgpKey: unknown +users: [] +vendor: + label: redhat-arkady-test + name: Red Hat, Inc. diff --git a/charts/partners/redhat-arkady-test/yingchart0522/OWNERS b/charts/partners/redhat-arkady-test/yingchart0522/OWNERS new file mode 100644 index 000000000..4a019829b --- /dev/null +++ b/charts/partners/redhat-arkady-test/yingchart0522/OWNERS @@ -0,0 +1,10 @@ +chart: + name: yingchart0522 + shortDescription: This is a short description testchartprrrrrrrrrrrrrrrr +providerDelivery: true +publicPgpKey: unknown +users: +- githubUsername: ansvu +vendor: + label: redhat-arkady-test + name: Red Hat, Inc. diff --git a/charts/partners/redhat-arkady-test/yingoneshotchart/0.1.5/report.yaml b/charts/partners/redhat-arkady-test/yingoneshotchart/0.1.5/report.yaml new file mode 100755 index 000000000..6d7d5539a --- /dev/null +++ b/charts/partners/redhat-arkady-test/yingoneshotchart/0.1.5/report.yaml @@ -0,0 +1,93 @@ +apiversion: v1 +kind: verify-report +metadata: + tool: + verifier-version: 1.12.2 + profile: + VendorType: partner + version: v1.2 + reportDigest: uint64:977328129456603662 + chart-uri: N/A + digests: + chart: sha256:962f472f51fcd531a42d4e169f6df4520b8b6843c84c652eca5128cc83411c3e + package: b47ca815fa36132eacca0c893962c0b236bcc77d6b0802cc57ef89314f8ba89b + lastCertifiedTimestamp: "2024-04-10T22:23:40.160527+00:00" + testedOpenShiftVersion: 4.14.12 + supportedOpenShiftVersions: '>=4.7' + webCatalogOnly: true + chart: + name: yingoneshotchart + home: "" + sources: [] + version: 0.1.5 + description: A Helm chart for Kubernetes + keywords: [] + maintainers: [] + icon: https://www.example.com/chart-icon.png + apiversion: v2 + condition: "" + tags: "" + appversion: 1-22 + deprecated: false + annotations: + charts.openshift.io/archs: x86_64 + charts.openshift.io/name: RedHat Test + charts.openshift.io/provider: RedHat + charts.openshift.io/supportURL: https://github.com/ansvu/yingoneshotchart + kubeversion: '>=1.20.0' + dependencies: [] + type: application + chart-overrides: "" +results: + - check: v1.0/chart-testing + type: Mandatory + outcome: PASS + reason: Chart tests have passed + - check: v1.0/has-readme + type: Mandatory + outcome: PASS + reason: Chart has a README + - check: v1.0/not-contains-crds + type: Mandatory + outcome: PASS + reason: Chart does not contain CRDs + - check: v1.0/signature-is-valid + type: Mandatory + outcome: SKIPPED + reason: 'Chart is not signed : Signature verification not required' + - check: v1.0/helm-lint + type: Mandatory + outcome: PASS + reason: Helm lint successful + - check: v1.1/images-are-certified + type: Mandatory + outcome: PASS + reason: 'Image is Red Hat certified : quay.io/avu0/oneshot-demo2-nginx-ubi9:1-22' + - check: v1.0/not-contain-csi-objects + type: Mandatory + outcome: PASS + reason: CSI objects do not exist + - check: v1.0/required-annotations-present + type: Mandatory + outcome: PASS + reason: All required annotations present + - check: v1.0/contains-test + type: Mandatory + outcome: PASS + reason: Chart test files exist + - check: v1.0/contains-values-schema + type: Mandatory + outcome: PASS + reason: Values schema file exist + - check: v1.0/is-helm-v3 + type: Mandatory + outcome: PASS + reason: API version is V2, used in Helm 3 + - check: v1.0/contains-values + type: Mandatory + outcome: PASS + reason: Values file exist + - check: v1.1/has-kubeversion + type: Mandatory + outcome: PASS + reason: Kubernetes version specified diff --git a/charts/partners/redhat-arkady-test/yingoneshotchart/OWNERS b/charts/partners/redhat-arkady-test/yingoneshotchart/OWNERS new file mode 100644 index 000000000..175c77fb2 --- /dev/null +++ b/charts/partners/redhat-arkady-test/yingoneshotchart/OWNERS @@ -0,0 +1,10 @@ +chart: + name: yingoneshotchart + shortDescription: This is a test for one shot automation together with container+chart+helmchart-pr +providerDelivery: true +publicPgpKey: unknown +users: +- githubUsername: ansvu +vendor: + label: redhat-arkady-test + name: Red Hat, Inc. diff --git a/charts/partners/redhat-test/helm/OWNERS b/charts/partners/redhat-test/helm/OWNERS index 21c488d00..7d547f9ae 100644 --- a/charts/partners/redhat-test/helm/OWNERS +++ b/charts/partners/redhat-test/helm/OWNERS @@ -1,10 +1,9 @@ chart: name: helm shortDescription: unknown -providerDelivery: false +providerDelivery: true publicPgpKey: unknown -users: -- githubUsername: khatare +users: [] vendor: label: redhat-test name: Red Hat, Inc. diff --git a/charts/partners/rh-nfv-int/finalchart/OWNERS b/charts/partners/rh-nfv-int/finalchart/OWNERS new file mode 100644 index 000000000..cd5f63627 --- /dev/null +++ b/charts/partners/rh-nfv-int/finalchart/OWNERS @@ -0,0 +1,10 @@ +chart: + name: finalchart + shortDescription: Here is the default 50+ characters image description +providerDelivery: true +publicPgpKey: unknown +users: +- githubUsername: xusername +vendor: + label: rh-nfv-int + name: Fredco diff --git a/charts/partners/rh-nfv-int/samplechart/0.1.2/report.yaml b/charts/partners/rh-nfv-int/samplechart/0.1.2/report.yaml new file mode 100755 index 000000000..811774661 --- /dev/null +++ b/charts/partners/rh-nfv-int/samplechart/0.1.2/report.yaml @@ -0,0 +1,93 @@ +apiversion: v1 +kind: verify-report +metadata: + tool: + verifier-version: 1.13.2 + profile: + VendorType: partner + version: v1.2 + reportDigest: uint64:13681004518266077457 + chart-uri: /app/chartverifier/samplechart-0.1.2.tgz + digests: + chart: sha256:4abe3a57dcc5865e006b8165507a06b4f165b282a53afb3060a1ff0733c4f2dd + package: 83770ebbecceabdfe413e37692c89344f8e1c9951fb4be68f083834815c864f2 + lastCertifiedTimestamp: "2024-05-23T12:11:01.492121+00:00" + testedOpenShiftVersion: 4.15.14 + supportedOpenShiftVersions: '>=4.7' + webCatalogOnly: false + chart: + name: samplechart + home: "" + sources: [] + version: 0.1.2 + description: A Helm chart for Kubernetes + keywords: [] + maintainers: [] + icon: https://www.example.com/chart-icon.png + apiversion: v2 + condition: "" + tags: "" + appversion: 1-42 + deprecated: false + annotations: + charts.openshift.io/archs: x86_64 + charts.openshift.io/name: RedHat Test + charts.openshift.io/provider: RedHat + charts.openshift.io/supportURL: https://github.com/dperaza4dustbit/helm-chart + kubeversion: '>=1.20.0' + dependencies: [] + type: application + chart-overrides: "" +results: + - check: v1.1/has-kubeversion + type: Mandatory + outcome: PASS + reason: Kubernetes version specified + - check: v1.0/is-helm-v3 + type: Mandatory + outcome: PASS + reason: API version is V2, used in Helm 3 + - check: v1.0/required-annotations-present + type: Mandatory + outcome: PASS + reason: All required annotations present + - check: v1.0/helm-lint + type: Mandatory + outcome: PASS + reason: Helm lint successful + - check: v1.0/has-readme + type: Mandatory + outcome: PASS + reason: Chart has a README + - check: v1.0/contains-test + type: Mandatory + outcome: PASS + reason: Chart test files exist + - check: v1.0/contains-values-schema + type: Mandatory + outcome: PASS + reason: Values schema file exist + - check: v1.1/images-are-certified + type: Mandatory + outcome: PASS + reason: 'Image is Red Hat certified : registry.access.redhat.com/ubi8/nginx-118:1-42' + - check: v1.0/not-contain-csi-objects + type: Mandatory + outcome: PASS + reason: CSI objects do not exist + - check: v1.0/not-contains-crds + type: Mandatory + outcome: PASS + reason: Chart does not contain CRDs + - check: v1.0/signature-is-valid + type: Mandatory + outcome: SKIPPED + reason: 'Chart is not signed : Signature verification not required' + - check: v1.0/contains-values + type: Mandatory + outcome: PASS + reason: Values file exist + - check: v1.0/chart-testing + type: Mandatory + outcome: PASS + reason: Chart tests have passed diff --git a/charts/partners/rh-nfv-int/samplechart/0.1.2/samplechart-0.1.2.tgz b/charts/partners/rh-nfv-int/samplechart/0.1.2/samplechart-0.1.2.tgz new file mode 100755 index 000000000..899b1221a Binary files /dev/null and b/charts/partners/rh-nfv-int/samplechart/0.1.2/samplechart-0.1.2.tgz differ diff --git a/charts/partners/rh-nfv-int/tania-test-chart/OWNERS b/charts/partners/rh-nfv-int/tania-test-chart/OWNERS index 734e50f8c..a55025bf7 100644 --- a/charts/partners/rh-nfv-int/tania-test-chart/OWNERS +++ b/charts/partners/rh-nfv-int/tania-test-chart/OWNERS @@ -1,9 +1,10 @@ chart: name: tania-test-chart - shortDescription: unknown + shortDescription: Here is the default 50+ characters image description providerDelivery: true publicPgpKey: unknown -users: [] +users: +- githubUsername: xusername vendor: label: rh-nfv-int name: Fredco diff --git a/charts/partners/samsung/5g-amfmme-global-24a/1.240125.8468882/report.yaml b/charts/partners/samsung/5g-amfmme-global-24a/1.240125.8468882/report.yaml new file mode 100644 index 000000000..8fb5f4ee4 --- /dev/null +++ b/charts/partners/samsung/5g-amfmme-global-24a/1.240125.8468882/report.yaml @@ -0,0 +1,95 @@ +apiversion: v1 +kind: verify-report +metadata: + tool: + verifier-version: 1.13.2 + profile: + VendorType: partner + version: v1.2 + reportDigest: uint64:9380936884148085241 + chart-uri: 5g-amfmme-global-24a-1.240125.8468882.tgz + digests: + chart: sha256:a16dc9241185b9aa75d364e9ef28309e6a4a7eaef6a7239ea84196aee97c6f9b + package: a8f5cd044c18c504117ae4d3e47d88a3d63e0a61ba8278c213c5818139b5fece + lastCertifiedTimestamp: "2024-02-02T11:16:18.918226-05:00" + testedOpenShiftVersion: "4.12" + supportedOpenShiftVersions: '>=4.8' + webCatalogOnly: true + chart: + name: 5g-amfmme-global-24a + home: "" + sources: [] + version: 1.240125.8468882 + description: A Helm chart for 5G Core cAMFMME(24/01/25) + keywords: [] + maintainers: [] + icon: "" + apiversion: v2 + condition: "" + tags: "" + appversion: 24.A.0 + deprecated: false + annotations: + charts.openshift.io/archs: x86_64 + charts.openshift.io/name: 5g-amfmme-global-24a + charts.openshift.io/provider: Samsung Electronics + charts.openshift.io/releaseDate: 24/01/25 + charts.openshift.io/supportURL: https://www.samsung.com/global/business/networks/contact-us/ + kubeversion: '>= 1.21.0-0' + dependencies: [] + type: "" + chart-overrides: "" +results: + - check: v1.0/contains-test + type: Mandatory + outcome: PASS + reason: Chart test files exist + - check: v1.0/signature-is-valid + type: Mandatory + outcome: SKIPPED + reason: 'Chart is not signed : Signature verification not required' + - check: v1.0/contains-values + type: Mandatory + outcome: PASS + reason: Values file exist + - check: v1.0/chart-testing + type: Mandatory + outcome: PASS + reason: Chart tests have passed + - check: v1.0/required-annotations-present + type: Mandatory + outcome: PASS + reason: All required annotations present + - check: v1.0/not-contain-csi-objects + type: Mandatory + outcome: PASS + reason: CSI objects do not exist + - check: v1.0/is-helm-v3 + type: Mandatory + outcome: PASS + reason: API version is V2, used in Helm 3 + - check: v1.1/has-kubeversion + type: Mandatory + outcome: PASS + reason: Kubernetes version specified + - check: v1.0/helm-lint + type: Mandatory + outcome: PASS + reason: Helm lint successful + - check: v1.0/not-contains-crds + type: Mandatory + outcome: PASS + reason: Chart does not contain CRDs + - check: v1.0/contains-values-schema + type: Mandatory + outcome: PASS + reason: Values schema file exist + - check: v1.1/images-are-certified + type: Mandatory + outcome: PASS + reason: |- + - check: v1.0/has-readme + type: Mandatory + outcome: PASS + reason: Chart has a README + diff --git a/charts/partners/samsung/5g-csdb-global-24a/1.240125.8468882/report.yaml b/charts/partners/samsung/5g-csdb-global-24a/1.240125.8468882/report.yaml new file mode 100644 index 000000000..cb8a00b94 --- /dev/null +++ b/charts/partners/samsung/5g-csdb-global-24a/1.240125.8468882/report.yaml @@ -0,0 +1,95 @@ +apiversion: v1 +kind: verify-report +metadata: + tool: + verifier-version: 1.13.2 + profile: + VendorType: partner + version: v1.2 + reportDigest: uint64:4458861361787535109 + chart-uri: 5g-csdb-global-24a-1.240125.8468882.tgz + digests: + chart: sha256:231259a7a3b51586a27fab10f2aa1fa1998576239d77a685776fb2920a00ddfc + package: 53fc5e832e1b9df67d8e9c5fc01d44902f234ddf491eb9ce17e8a9fb76256e8c + lastCertifiedTimestamp: "2024-02-02T10:40:48.314707-05:00" + testedOpenShiftVersion: "4.12" + supportedOpenShiftVersions: '>=4.8' + webCatalogOnly: true + chart: + name: 5g-csdb-global-24a + home: "" + sources: [] + version: 1.240125.8468882 + description: A Helm chart for 5G Core cCSDB(24/01/25) + keywords: [] + maintainers: [] + icon: "" + apiversion: v2 + condition: "" + tags: "" + appversion: 24.A.0 + deprecated: false + annotations: + charts.openshift.io/archs: x86_64 + charts.openshift.io/name: 5g-csdb-global-24a + charts.openshift.io/provider: Samsung Electronics + charts.openshift.io/releaseDate: 24/01/25 + charts.openshift.io/supportURL: https://www.samsung.com/global/business/networks/contact-us/ + kubeversion: '>= 1.21.0-0' + dependencies: [] + type: "" + chart-overrides: "" +results: + - check: v1.1/images-are-certified + type: Mandatory + outcome: PASS + reason: |- + - check: v1.0/not-contains-crds + type: Mandatory + outcome: PASS + reason: Chart does not contain CRDs + - check: v1.0/chart-testing + type: Mandatory + outcome: PASS + reason: Chart tests have passed + - check: v1.0/required-annotations-present + type: Mandatory + outcome: PASS + reason: All required annotations present + - check: v1.0/contains-test + type: Mandatory + outcome: PASS + reason: Chart test files exist + - check: v1.0/contains-values + type: Mandatory + outcome: PASS + reason: Values file exist + - check: v1.0/contains-values-schema + type: Mandatory + outcome: PASS + reason: Values schema file exist + - check: v1.0/is-helm-v3 + type: Mandatory + outcome: PASS + reason: API version is V2, used in Helm 3 + - check: v1.0/signature-is-valid + type: Mandatory + outcome: SKIPPED + reason: 'Chart is not signed : Signature verification not required' + - check: v1.0/has-readme + type: Mandatory + outcome: PASS + reason: Chart has a README + - check: v1.0/not-contain-csi-objects + type: Mandatory + outcome: PASS + reason: CSI objects do not exist + - check: v1.0/helm-lint + type: Mandatory + outcome: PASS + reason: Helm lint successful + - check: v1.1/has-kubeversion + type: Mandatory + outcome: PASS + reason: Kubernetes version specified + diff --git a/charts/partners/samsung/5g-nrf-global-24a/1.240125.8468882/report.yaml b/charts/partners/samsung/5g-nrf-global-24a/1.240125.8468882/report.yaml new file mode 100644 index 000000000..769c15b8b --- /dev/null +++ b/charts/partners/samsung/5g-nrf-global-24a/1.240125.8468882/report.yaml @@ -0,0 +1,95 @@ +apiversion: v1 +kind: verify-report +metadata: + tool: + verifier-version: 1.13.2 + profile: + VendorType: partner + version: v1.2 + reportDigest: uint64:5061008907234907546 + chart-uri: 5g-nrf-global-24a-1.240125.8468882.tgz + digests: + chart: sha256:dd1547957fbd5d7e88ec07617241b29ec7923b21f5f7cd2d6d9d47df5db4c312 + package: 02f75d0bb092c0ff239b134e2b459210dcfe4a46a0c0f1e7c5805eb9620cdc54 + lastCertifiedTimestamp: "2024-02-01T20:51:59.539619-05:00" + testedOpenShiftVersion: "4.12" + supportedOpenShiftVersions: '>=4.8' + webCatalogOnly: true + chart: + name: 5g-nrf-global-24a + home: "" + sources: [] + version: 1.240125.8468882 + description: A Helm chart for 5G Core cNRF(24/01/25) + keywords: [] + maintainers: [] + icon: "" + apiversion: v2 + condition: "" + tags: "" + appversion: 24.A.0 + deprecated: false + annotations: + charts.openshift.io/archs: x86_64 + charts.openshift.io/name: 5g-nrf-global-24a + charts.openshift.io/provider: Samsung Electronics + charts.openshift.io/releaseDate: 24/01/25 + charts.openshift.io/supportURL: https://www.samsung.com/global/business/networks/contact-us/ + kubeversion: '>= 1.21.0-0' + dependencies: [] + type: "" + chart-overrides: "" +results: + - check: v1.0/signature-is-valid + type: Mandatory + outcome: SKIPPED + reason: 'Chart is not signed : Signature verification not required' + - check: v1.0/is-helm-v3 + type: Mandatory + outcome: PASS + reason: API version is V2, used in Helm 3 + - check: v1.0/contains-test + type: Mandatory + outcome: PASS + reason: Chart test files exist + - check: v1.0/contains-values + type: Mandatory + outcome: PASS + reason: Values file exist + - check: v1.1/images-are-certified + type: Mandatory + outcome: PASS + reason: |- + - check: v1.0/has-readme + type: Mandatory + outcome: PASS + reason: Chart has a README + - check: v1.0/not-contains-crds + type: Mandatory + outcome: PASS + reason: Chart does not contain CRDs + - check: v1.0/chart-testing + type: Mandatory + outcome: PASS + reason: Chart tests have passed + - check: v1.0/contains-values-schema + type: Mandatory + outcome: PASS + reason: Values schema file exist + - check: v1.0/required-annotations-present + type: Mandatory + outcome: PASS + reason: All required annotations present + - check: v1.0/not-contain-csi-objects + type: Mandatory + outcome: PASS + reason: CSI objects do not exist + - check: v1.1/has-kubeversion + type: Mandatory + outcome: PASS + reason: Kubernetes version specified + - check: v1.0/helm-lint + type: Mandatory + outcome: PASS + reason: Helm lint successful + diff --git a/charts/partners/samsung/5g-nssf-global-24a/1.240125.8468882/report.yaml b/charts/partners/samsung/5g-nssf-global-24a/1.240125.8468882/report.yaml new file mode 100644 index 000000000..2b4ab2eab --- /dev/null +++ b/charts/partners/samsung/5g-nssf-global-24a/1.240125.8468882/report.yaml @@ -0,0 +1,95 @@ +apiversion: v1 +kind: verify-report +metadata: + tool: + verifier-version: 1.13.2 + profile: + VendorType: partner + version: v1.2 + reportDigest: uint64:5315493893621393161 + chart-uri: 5g-nssf-global-24a-1.240125.8468882.tgz + digests: + chart: sha256:6789fcaa91dcd255760443560c0999deaffdef48f7ec8dd267de98595d72b335 + package: a9cf16cdfc7003833d81bac6c89cd129edae7d0840e0ff4505037b3b654b2d54 + lastCertifiedTimestamp: "2024-02-02T10:50:01.259546-05:00" + testedOpenShiftVersion: "4.12" + supportedOpenShiftVersions: '>=4.8' + webCatalogOnly: true + chart: + name: 5g-nssf-global-24a + home: "" + sources: [] + version: 1.240125.8468882 + description: A Helm chart for 5G Core cNSSF(24/01/25) + keywords: [] + maintainers: [] + icon: "" + apiversion: v2 + condition: "" + tags: "" + appversion: 24.A.0 + deprecated: false + annotations: + charts.openshift.io/archs: x86_64 + charts.openshift.io/name: 5g-nssf-global-24a + charts.openshift.io/provider: Samsung Electronics + charts.openshift.io/releaseDate: 24/01/25 + charts.openshift.io/supportURL: https://www.samsung.com/global/business/networks/contact-us/ + kubeversion: '>= 1.21.0-0' + dependencies: [] + type: "" + chart-overrides: "" +results: + - check: v1.0/is-helm-v3 + type: Mandatory + outcome: PASS + reason: API version is V2, used in Helm 3 + - check: v1.0/not-contains-crds + type: Mandatory + outcome: PASS + reason: Chart does not contain CRDs + - check: v1.1/images-are-certified + type: Mandatory + outcome: PASS + reason: |- + - check: v1.0/contains-test + type: Mandatory + outcome: PASS + reason: Chart test files exist + - check: v1.0/chart-testing + type: Mandatory + outcome: PASS + reason: Chart tests have passed + - check: v1.0/contains-values-schema + type: Mandatory + outcome: PASS + reason: Values schema file exist + - check: v1.0/contains-values + type: Mandatory + outcome: PASS + reason: Values file exist + - check: v1.1/has-kubeversion + type: Mandatory + outcome: PASS + reason: Kubernetes version specified + - check: v1.0/not-contain-csi-objects + type: Mandatory + outcome: PASS + reason: CSI objects do not exist + - check: v1.0/helm-lint + type: Mandatory + outcome: PASS + reason: Helm lint successful + - check: v1.0/required-annotations-present + type: Mandatory + outcome: PASS + reason: All required annotations present + - check: v1.0/has-readme + type: Mandatory + outcome: PASS + reason: Chart has a README + - check: v1.0/signature-is-valid + type: Mandatory + outcome: SKIPPED + reason: 'Chart is not signed : Signature verification not required' + diff --git a/charts/partners/samsung/5g-smf-global-24a/1.240125.8468882/report.yaml b/charts/partners/samsung/5g-smf-global-24a/1.240125.8468882/report.yaml new file mode 100644 index 000000000..5249b4166 --- /dev/null +++ b/charts/partners/samsung/5g-smf-global-24a/1.240125.8468882/report.yaml @@ -0,0 +1,95 @@ +apiversion: v1 +kind: verify-report +metadata: + tool: + verifier-version: 1.13.2 + profile: + VendorType: partner + version: v1.2 + reportDigest: uint64:917938279537205169 + chart-uri: 5g-smf-global-24a-1.240125.8468882.tgz + digests: + chart: sha256:7956aa89a35a9b8db2c8398b63acbfe6c2284d1761f7a6761fd6e57ef10b338c + package: fb277ddf9b6fb84b47cae40cd6d12071666847ab9bb627d329836948c9bebb12 + lastCertifiedTimestamp: "2024-02-02T11:00:33.225278-05:00" + testedOpenShiftVersion: "4.12" + supportedOpenShiftVersions: '>=4.8' + webCatalogOnly: true + chart: + name: 5g-smf-global-24a + home: "" + sources: [] + version: 1.240125.8468882 + description: A Helm chart for 5G Core cSMF(24/01/25) + keywords: [] + maintainers: [] + icon: "" + apiversion: v2 + condition: "" + tags: "" + appversion: 24.A.0 + deprecated: false + annotations: + charts.openshift.io/archs: x86_64 + charts.openshift.io/name: 5g-smf-global-24a + charts.openshift.io/provider: Samsung Electronics + charts.openshift.io/releaseDate: 24/01/25 + charts.openshift.io/supportURL: https://www.samsung.com/global/business/networks/contact-us/ + kubeversion: '>= 1.21.0-0' + dependencies: [] + type: "" + chart-overrides: "" +results: + - check: v1.1/has-kubeversion + type: Mandatory + outcome: PASS + reason: Kubernetes version specified + - check: v1.0/contains-values-schema + type: Mandatory + outcome: PASS + reason: Values schema file exist + - check: v1.0/is-helm-v3 + type: Mandatory + outcome: PASS + reason: API version is V2, used in Helm 3 + - check: v1.0/has-readme + type: Mandatory + outcome: PASS + reason: Chart has a README + - check: v1.0/helm-lint + type: Mandatory + outcome: PASS + reason: Helm lint successful + - check: v1.0/contains-values + type: Mandatory + outcome: PASS + reason: Values file exist + - check: v1.1/images-are-certified + type: Mandatory + outcome: PASS + reason: |- + - check: v1.0/required-annotations-present + type: Mandatory + outcome: PASS + reason: All required annotations present + - check: v1.0/signature-is-valid + type: Mandatory + outcome: SKIPPED + reason: 'Chart is not signed : Signature verification not required' + - check: v1.0/chart-testing + type: Mandatory + outcome: PASS + reason: Chart tests have passed + - check: v1.0/contains-test + type: Mandatory + outcome: PASS + reason: Chart test files exist + - check: v1.0/not-contain-csi-objects + type: Mandatory + outcome: PASS + reason: CSI objects do not exist + - check: v1.0/not-contains-crds + type: Mandatory + outcome: PASS + reason: Chart does not contain CRDs + diff --git a/charts/partners/samsung/5g-upf-global-24a/1.240125.8468882/report.yaml b/charts/partners/samsung/5g-upf-global-24a/1.240125.8468882/report.yaml new file mode 100644 index 000000000..8b4d9da0b --- /dev/null +++ b/charts/partners/samsung/5g-upf-global-24a/1.240125.8468882/report.yaml @@ -0,0 +1,95 @@ +apiversion: v1 +kind: verify-report +metadata: + tool: + verifier-version: 1.13.2 + profile: + VendorType: partner + version: v1.2 + reportDigest: uint64:4275818183782878915 + chart-uri: 5g-upf-global-24a-1.240125.8468882.tgz + digests: + chart: sha256:c1ac9649f72e6f437cb39632565c3730a3899e6f919b3e6ab832f44689bc8f51 + package: c841ce21ae880a42c98035ea39e20ea9cef277976e982993bf5a2c7f889fc3b8 + lastCertifiedTimestamp: "2024-02-02T11:08:26.55427-05:00" + testedOpenShiftVersion: "4.12" + supportedOpenShiftVersions: '>=4.8' + webCatalogOnly: true + chart: + name: 5g-upf-global-24a + home: "" + sources: [] + version: 1.240125.8468882 + description: A Helm chart for 5G Core cUPF(24/01/25) + keywords: [] + maintainers: [] + icon: "" + apiversion: v2 + condition: "" + tags: "" + appversion: 24.A.0 + deprecated: false + annotations: + charts.openshift.io/archs: x86_64 + charts.openshift.io/name: 5g-upf-global-24a + charts.openshift.io/provider: Samsung Electronics + charts.openshift.io/releaseDate: 24/01/25 + charts.openshift.io/supportURL: https://www.samsung.com/global/business/networks/contact-us/ + kubeversion: '>= 1.21.0-0' + dependencies: [] + type: "" + chart-overrides: "" +results: + - check: v1.0/contains-test + type: Mandatory + outcome: PASS + reason: Chart test files exist + - check: v1.0/not-contain-csi-objects + type: Mandatory + outcome: PASS + reason: CSI objects do not exist + - check: v1.0/chart-testing + type: Mandatory + outcome: PASS + reason: Chart tests have passed + - check: v1.1/has-kubeversion + type: Mandatory + outcome: PASS + reason: Kubernetes version specified + - check: v1.0/helm-lint + type: Mandatory + outcome: PASS + reason: Helm lint successful + - check: v1.1/images-are-certified + type: Mandatory + outcome: PASS + reason: |- + - check: v1.0/contains-values-schema + type: Mandatory + outcome: PASS + reason: Values schema file exist + - check: v1.0/is-helm-v3 + type: Mandatory + outcome: PASS + reason: API version is V2, used in Helm 3 + - check: v1.0/contains-values + type: Mandatory + outcome: PASS + reason: Values file exist + - check: v1.0/not-contains-crds + type: Mandatory + outcome: PASS + reason: Chart does not contain CRDs + - check: v1.0/signature-is-valid + type: Mandatory + outcome: SKIPPED + reason: 'Chart is not signed : Signature verification not required' + - check: v1.0/has-readme + type: Mandatory + outcome: PASS + reason: Chart has a README + - check: v1.0/required-annotations-present + type: Mandatory + outcome: PASS + reason: All required annotations present + diff --git a/charts/partners/telenity/smsf-configuration/1.0.4/report.yaml b/charts/partners/telenity/smsf-configuration/1.0.4/report.yaml new file mode 100644 index 000000000..ed0e1fafb --- /dev/null +++ b/charts/partners/telenity/smsf-configuration/1.0.4/report.yaml @@ -0,0 +1,95 @@ +apiversion: v1 +kind: verify-report +metadata: + tool: + verifier-version: 1.13.3 + profile: + VendorType: partner + version: v1.2 + reportDigest: uint64:7988341189612524013 + chart-uri: smsf-configuration-1.0.4.tgz + digests: + chart: sha256:ce5cc09b428dc1ad70481e71843c4b367243fba77cde4900d6671c597d227e38 + package: 2e3e3c0aee3abae230d3ddc08bbaa17da72406c6d2dad3d3c765f416187818c3 + lastCertifiedTimestamp: "2024-04-01T11:24:18.878562-04:00" + testedOpenShiftVersion: "4.8" + supportedOpenShiftVersions: '>=4.8' + webCatalogOnly: false + chart: + name: smsf-configuration + home: "" + sources: [] + version: 1.0.4 + description: smsf-configuration + keywords: [] + maintainers: + - name: Telenity + email: info@telenity.com + url: https://www.telenity.com + icon: "" + apiversion: v2 + condition: "" + tags: "" + appversion: 0.0.1 + deprecated: false + annotations: + charts.openshift.io/name: SMSF Configuration Helm Chart + charts.openshift.io/provider: Telenity INC. + kubeversion: '>=v1.21.0' + dependencies: [] + type: "" + chart-overrides: "" +results: + - check: v1.0/chart-testing + type: Mandatory + outcome: PASS + reason: Chart tests have passed + - check: v1.0/has-readme + type: Mandatory + outcome: PASS + reason: Chart has a README + - check: v1.0/helm-lint + type: Mandatory + outcome: PASS + reason: Helm lint successful + - check: v1.0/not-contains-crds + type: Mandatory + outcome: PASS + reason: Chart does not contain CRDs + - check: v1.1/images-are-certified + type: Mandatory + outcome: PASS + reason: No images to certify + - check: v1.0/not-contain-csi-objects + type: Mandatory + outcome: PASS + reason: CSI objects do not exist + - check: v1.0/contains-values-schema + type: Mandatory + outcome: PASS + reason: Values schema file exist + - check: v1.0/required-annotations-present + type: Mandatory + outcome: PASS + reason: All required annotations present + - check: v1.0/signature-is-valid + type: Mandatory + outcome: SKIPPED + reason: 'Chart is not signed : Signature verification not required' + - check: v1.0/contains-values + type: Mandatory + outcome: PASS + reason: Values file exist + - check: v1.1/has-kubeversion + type: Mandatory + outcome: PASS + reason: Kubernetes version specified + - check: v1.0/contains-test + type: Mandatory + outcome: PASS + reason: Chart test files exist + - check: v1.0/is-helm-v3 + type: Mandatory + outcome: PASS + reason: API version is V2, used in Helm 3 + diff --git a/charts/partners/telenity/smsf-configuration/1.0.4/smsf-configuration-1.0.4.tgz b/charts/partners/telenity/smsf-configuration/1.0.4/smsf-configuration-1.0.4.tgz new file mode 100644 index 000000000..221288cc2 Binary files /dev/null and b/charts/partners/telenity/smsf-configuration/1.0.4/smsf-configuration-1.0.4.tgz differ diff --git a/charts/partners/telenity/smsf-configuration/OWNERS b/charts/partners/telenity/smsf-configuration/OWNERS index b69d42653..b1ecc9fdb 100644 --- a/charts/partners/telenity/smsf-configuration/OWNERS +++ b/charts/partners/telenity/smsf-configuration/OWNERS @@ -3,7 +3,8 @@ chart: shortDescription: unknown providerDelivery: false publicPgpKey: unknown -users: [] +users: +- githubUsername: gurolakman vendor: label: telenity name: Telenity Iletisim Sistemleri Sa diff --git a/charts/partners/telenity/smsf-dispatcher/1.0.4-pvc/report.yaml b/charts/partners/telenity/smsf-dispatcher/1.0.4-pvc/report.yaml new file mode 100644 index 000000000..935a8e617 --- /dev/null +++ b/charts/partners/telenity/smsf-dispatcher/1.0.4-pvc/report.yaml @@ -0,0 +1,94 @@ +apiversion: v1 +kind: verify-report +metadata: + tool: + verifier-version: 1.13.3 + profile: + VendorType: partner + version: v1.2 + reportDigest: uint64:15566445069239504633 + chart-uri: smsf-dispatcher + digests: + chart: sha256:eb6d666021a4d8bdc5a7495928bdbe0f9fa01357590e9735ff0671863726368b + lastCertifiedTimestamp: "2024-04-22T17:43:19.132344-04:00" + testedOpenShiftVersion: "4.8" + supportedOpenShiftVersions: '>=4.8' + webCatalogOnly: false + chart: + name: smsf-dispatcher + home: "" + sources: [] + version: 1.0.4-pvc + description: smsf-dispatcher + keywords: [] + maintainers: + - name: Telenity + email: info@telenity.com + url: https://www.telenity.com + icon: "" + apiversion: v2 + condition: "" + tags: "" + appversion: 0.0.1 + deprecated: false + annotations: + charts.openshift.io/name: SMSF Dispatcher Helm Chart + charts.openshift.io/provider: Telenity INC. + kubeversion: '>=v1.21.0' + dependencies: [] + type: "" + chart-overrides: "" +results: + - check: v1.0/helm-lint + type: Mandatory + outcome: PASS + reason: Helm lint successful + - check: v1.0/required-annotations-present + type: Mandatory + outcome: PASS + reason: All required annotations present + - check: v1.1/has-kubeversion + type: Mandatory + outcome: PASS + reason: Kubernetes version specified + - check: v1.0/contains-values-schema + type: Mandatory + outcome: PASS + reason: Values schema file exist + - check: v1.0/contains-values + type: Mandatory + outcome: PASS + reason: Values file exist + - check: v1.0/is-helm-v3 + type: Mandatory + outcome: PASS + reason: API version is V2, used in Helm 3 + - check: v1.1/images-are-certified + type: Mandatory + outcome: PASS + reason: No images to certify + - check: v1.0/signature-is-valid + type: Mandatory + outcome: SKIPPED + reason: 'Chart is not signed : Signature verification not required' + - check: v1.0/not-contain-csi-objects + type: Mandatory + outcome: PASS + reason: CSI objects do not exist + - check: v1.0/chart-testing + type: Mandatory + outcome: PASS + reason: Chart tests have passed + - check: v1.0/contains-test + type: Mandatory + outcome: PASS + reason: Chart test files exist + - check: v1.0/not-contains-crds + type: Mandatory + outcome: PASS + reason: Chart does not contain CRDs + - check: v1.0/has-readme + type: Mandatory + outcome: PASS + reason: Chart has a README + diff --git a/charts/partners/telenity/smsf-dispatcher/1.0.4-pvc/smsf-dispatcher-1.0.4-pvc.tgz b/charts/partners/telenity/smsf-dispatcher/1.0.4-pvc/smsf-dispatcher-1.0.4-pvc.tgz new file mode 100644 index 000000000..b4ba7f053 Binary files /dev/null and b/charts/partners/telenity/smsf-dispatcher/1.0.4-pvc/smsf-dispatcher-1.0.4-pvc.tgz differ diff --git a/charts/partners/telenity/smsf-dispatcher/1.0.4/report.yaml b/charts/partners/telenity/smsf-dispatcher/1.0.4/report.yaml new file mode 100644 index 000000000..39da5c287 --- /dev/null +++ b/charts/partners/telenity/smsf-dispatcher/1.0.4/report.yaml @@ -0,0 +1,95 @@ +apiversion: v1 +kind: verify-report +metadata: + tool: + verifier-version: 1.13.3 + profile: + VendorType: partner + version: v1.2 + reportDigest: uint64:5346114745912277378 + chart-uri: smsf-dispatcher-1.0.4.tgz + digests: + chart: sha256:d9f0dda6fd6cfb488c52dc2bc55ae27dcf41dbb30fdca6b5a1edbf06169da25d + package: ea118dbee4637915fc531fbbb15a215918a0d983bf1b2794e75712f8ecb74a41 + lastCertifiedTimestamp: "2024-04-01T11:23:23.410525-04:00" + testedOpenShiftVersion: "4.8" + supportedOpenShiftVersions: '>=4.8' + webCatalogOnly: false + chart: + name: smsf-dispatcher + home: "" + sources: [] + version: 1.0.4 + description: smsf-dispatcher + keywords: [] + maintainers: + - name: Telenity + email: info@telenity.com + url: https://www.telenity.com + icon: "" + apiversion: v2 + condition: "" + tags: "" + appversion: 0.0.1 + deprecated: false + annotations: + charts.openshift.io/name: SMSF Dispatcher Helm Chart + charts.openshift.io/provider: Telenity INC. + kubeversion: '>=v1.21.0' + dependencies: [] + type: "" + chart-overrides: "" +results: + - check: v1.0/has-readme + type: Mandatory + outcome: PASS + reason: Chart has a README + - check: v1.0/contains-values + type: Mandatory + outcome: PASS + reason: Values file exist + - check: v1.0/required-annotations-present + type: Mandatory + outcome: PASS + reason: All required annotations present + - check: v1.0/signature-is-valid + type: Mandatory + outcome: SKIPPED + reason: 'Chart is not signed : Signature verification not required' + - check: v1.1/images-are-certified + type: Mandatory + outcome: PASS + reason: No images to certify + - check: v1.0/helm-lint + type: Mandatory + outcome: PASS + reason: Helm lint successful + - check: v1.0/chart-testing + type: Mandatory + outcome: PASS + reason: Chart tests have passed + - check: v1.0/not-contains-crds + type: Mandatory + outcome: PASS + reason: Chart does not contain CRDs + - check: v1.0/is-helm-v3 + type: Mandatory + outcome: PASS + reason: API version is V2, used in Helm 3 + - check: v1.1/has-kubeversion + type: Mandatory + outcome: PASS + reason: Kubernetes version specified + - check: v1.0/contains-test + type: Mandatory + outcome: PASS + reason: Chart test files exist + - check: v1.0/contains-values-schema + type: Mandatory + outcome: PASS + reason: Values schema file exist + - check: v1.0/not-contain-csi-objects + type: Mandatory + outcome: PASS + reason: CSI objects do not exist + diff --git a/charts/partners/telenity/smsf-dispatcher/1.0.4/smsf-dispatcher-1.0.4.tgz b/charts/partners/telenity/smsf-dispatcher/1.0.4/smsf-dispatcher-1.0.4.tgz new file mode 100644 index 000000000..880e218f0 Binary files /dev/null and b/charts/partners/telenity/smsf-dispatcher/1.0.4/smsf-dispatcher-1.0.4.tgz differ diff --git a/charts/partners/telenity/smsf-dispatcher/OWNERS b/charts/partners/telenity/smsf-dispatcher/OWNERS index 39605b8f6..3dd85afb0 100644 --- a/charts/partners/telenity/smsf-dispatcher/OWNERS +++ b/charts/partners/telenity/smsf-dispatcher/OWNERS @@ -3,7 +3,8 @@ chart: shortDescription: unknown providerDelivery: false publicPgpKey: unknown -users: [] +users: +- githubUsername: gurolakman vendor: label: telenity name: Telenity Iletisim Sistemleri Sa diff --git a/charts/partners/telenity/smsf-momt/1.0.4/report.yaml b/charts/partners/telenity/smsf-momt/1.0.4/report.yaml new file mode 100644 index 000000000..f65575aef --- /dev/null +++ b/charts/partners/telenity/smsf-momt/1.0.4/report.yaml @@ -0,0 +1,95 @@ +apiversion: v1 +kind: verify-report +metadata: + tool: + verifier-version: 1.13.3 + profile: + VendorType: partner + version: v1.2 + reportDigest: uint64:13169900798225072287 + chart-uri: smsf-momt-1.0.4.tgz + digests: + chart: sha256:5b2de726b547d3ea639ee07895e026403752f47c1cf2038cc8b94084a88829b1 + package: 89748d99f004f0a8dff835602ca50819df0e30fb0688e919206faa71db2548dd + lastCertifiedTimestamp: "2024-04-01T11:22:08.16511-04:00" + testedOpenShiftVersion: "4.8" + supportedOpenShiftVersions: '>=4.8' + webCatalogOnly: false + chart: + name: smsf-momt + home: "" + sources: [] + version: 1.0.4 + description: smsf-momt + keywords: [] + maintainers: + - name: Telenity + email: info@telenity.com + url: https://www.telenity.com + icon: "" + apiversion: v2 + condition: "" + tags: "" + appversion: 0.0.1 + deprecated: false + annotations: + charts.openshift.io/name: SMSF MOMT Helm Chart + charts.openshift.io/provider: Telenity INC. + kubeversion: '>=v1.21.0' + dependencies: [] + type: "" + chart-overrides: "" +results: + - check: v1.0/not-contain-csi-objects + type: Mandatory + outcome: PASS + reason: CSI objects do not exist + - check: v1.0/required-annotations-present + type: Mandatory + outcome: PASS + reason: All required annotations present + - check: v1.0/contains-values-schema + type: Mandatory + outcome: PASS + reason: Values schema file exist + - check: v1.0/is-helm-v3 + type: Mandatory + outcome: PASS + reason: API version is V2, used in Helm 3 + - check: v1.0/not-contains-crds + type: Mandatory + outcome: PASS + reason: Chart does not contain CRDs + - check: v1.0/contains-test + type: Mandatory + outcome: PASS + reason: Chart test files exist + - check: v1.1/images-are-certified + type: Mandatory + outcome: PASS + reason: No images to certify + - check: v1.1/has-kubeversion + type: Mandatory + outcome: PASS + reason: Kubernetes version specified + - check: v1.0/contains-values + type: Mandatory + outcome: PASS + reason: Values file exist + - check: v1.0/helm-lint + type: Mandatory + outcome: PASS + reason: Helm lint successful + - check: v1.0/chart-testing + type: Mandatory + outcome: PASS + reason: Chart tests have passed + - check: v1.0/has-readme + type: Mandatory + outcome: PASS + reason: Chart has a README + - check: v1.0/signature-is-valid + type: Mandatory + outcome: SKIPPED + reason: 'Chart is not signed : Signature verification not required' + diff --git a/charts/partners/telenity/smsf-momt/1.0.4/smsf-momt-1.0.4.tgz b/charts/partners/telenity/smsf-momt/1.0.4/smsf-momt-1.0.4.tgz new file mode 100644 index 000000000..6d8c27fd1 Binary files /dev/null and b/charts/partners/telenity/smsf-momt/1.0.4/smsf-momt-1.0.4.tgz differ diff --git a/charts/partners/telenity/smsf-momt/OWNERS b/charts/partners/telenity/smsf-momt/OWNERS index 341298023..b6fc09824 100644 --- a/charts/partners/telenity/smsf-momt/OWNERS +++ b/charts/partners/telenity/smsf-momt/OWNERS @@ -3,7 +3,8 @@ chart: shortDescription: unknown providerDelivery: false publicPgpKey: unknown -users: [] +users: +- githubUsername: gurolakman vendor: label: telenity name: Telenity Iletisim Sistemleri Sa diff --git a/charts/partners/telenity/smsf-registration/1.0.4/report.yaml b/charts/partners/telenity/smsf-registration/1.0.4/report.yaml new file mode 100644 index 000000000..ae7e693ff --- /dev/null +++ b/charts/partners/telenity/smsf-registration/1.0.4/report.yaml @@ -0,0 +1,95 @@ +apiversion: v1 +kind: verify-report +metadata: + tool: + verifier-version: 1.13.3 + profile: + VendorType: partner + version: v1.2 + reportDigest: uint64:3866945671264159511 + chart-uri: smsf-registration-1.0.4.tgz + digests: + chart: sha256:c8845cbc2ccc788bb78d0d459e3ad39b6573b2b3f9ee769417597da56b8fb608 + package: 856b13a4e2f9f6d4be3b984f9b95eda04285fdddf50ea184f30509d1af1c1e6d + lastCertifiedTimestamp: "2024-04-01T11:20:49.673984-04:00" + testedOpenShiftVersion: "4.8" + supportedOpenShiftVersions: '>=4.8' + webCatalogOnly: false + chart: + name: smsf-registration + home: "" + sources: [] + version: 1.0.4 + description: smsf-registration + keywords: [] + maintainers: + - name: Telenity + email: info@telenity.com + url: https://www.telenity.com + icon: "" + apiversion: v2 + condition: "" + tags: "" + appversion: 0.0.1 + deprecated: false + annotations: + charts.openshift.io/name: SMSF Registration Helm Chart + charts.openshift.io/provider: Telenity INC. + kubeversion: '>=v1.21.0' + dependencies: [] + type: "" + chart-overrides: "" +results: + - check: v1.0/has-readme + type: Mandatory + outcome: PASS + reason: Chart has a README + - check: v1.0/is-helm-v3 + type: Mandatory + outcome: PASS + reason: API version is V2, used in Helm 3 + - check: v1.0/not-contains-crds + type: Mandatory + outcome: PASS + reason: Chart does not contain CRDs + - check: v1.1/has-kubeversion + type: Mandatory + outcome: PASS + reason: Kubernetes version specified + - check: v1.0/contains-values-schema + type: Mandatory + outcome: PASS + reason: Values schema file exist + - check: v1.0/contains-values + type: Mandatory + outcome: PASS + reason: Values file exist + - check: v1.0/helm-lint + type: Mandatory + outcome: PASS + reason: Helm lint successful + - check: v1.0/signature-is-valid + type: Mandatory + outcome: SKIPPED + reason: 'Chart is not signed : Signature verification not required' + - check: v1.0/contains-test + type: Mandatory + outcome: PASS + reason: Chart test files exist + - check: v1.0/not-contain-csi-objects + type: Mandatory + outcome: PASS + reason: CSI objects do not exist + - check: v1.0/required-annotations-present + type: Mandatory + outcome: PASS + reason: All required annotations present + - check: v1.0/chart-testing + type: Mandatory + outcome: PASS + reason: Chart tests have passed + - check: v1.1/images-are-certified + type: Mandatory + outcome: PASS + reason: No images to certify + diff --git a/charts/partners/telenity/smsf-registration/1.0.4/smsf-registration-1.0.4.tgz b/charts/partners/telenity/smsf-registration/1.0.4/smsf-registration-1.0.4.tgz new file mode 100644 index 000000000..c7744f53f Binary files /dev/null and b/charts/partners/telenity/smsf-registration/1.0.4/smsf-registration-1.0.4.tgz differ diff --git a/charts/partners/telenity/smsf-registration/OWNERS b/charts/partners/telenity/smsf-registration/OWNERS index 69e5f2512..5cd9bb960 100644 --- a/charts/partners/telenity/smsf-registration/OWNERS +++ b/charts/partners/telenity/smsf-registration/OWNERS @@ -3,7 +3,8 @@ chart: shortDescription: unknown providerDelivery: false publicPgpKey: unknown -users: [] +users: +- githubUsername: gurolakman vendor: label: telenity name: Telenity Iletisim Sistemleri Sa diff --git a/charts/partners/telenity/ussigw-configuration/1.0.4/report.yaml b/charts/partners/telenity/ussigw-configuration/1.0.4/report.yaml new file mode 100644 index 000000000..0cca41d70 --- /dev/null +++ b/charts/partners/telenity/ussigw-configuration/1.0.4/report.yaml @@ -0,0 +1,95 @@ +apiversion: v1 +kind: verify-report +metadata: + tool: + verifier-version: 1.13.3 + profile: + VendorType: partner + version: v1.2 + reportDigest: uint64:12116168620221359586 + chart-uri: ussigw-configuration-1.0.4.tgz + digests: + chart: sha256:e4bd2265c6b318edbbc8d98b1fde2e974d15b4b5077f12b84a885aa099b7c8fc + package: 7c1847813ce1849d2a848e9662bace3ac59d57940e3f6d4e2ac4297efc401c94 + lastCertifiedTimestamp: "2024-03-29T16:15:40.102251-04:00" + testedOpenShiftVersion: "4.8" + supportedOpenShiftVersions: '>=4.8' + webCatalogOnly: false + chart: + name: ussigw-configuration + home: "" + sources: [] + version: 1.0.4 + description: ussigw-configuration + keywords: [] + maintainers: + - name: Telenity + email: info@telenity.com + url: https://www.telenity.com + icon: "" + apiversion: v2 + condition: "" + tags: "" + appversion: 1.0.1 + deprecated: false + annotations: + charts.openshift.io/name: USSI Gateway Configuration Helm Chart + charts.openshift.io/provider: Telenity INC. + kubeversion: '>=v1.21.0' + dependencies: [] + type: "" + chart-overrides: "" +results: + - check: v1.0/contains-test + type: Mandatory + outcome: PASS + reason: Chart test files exist + - check: v1.0/contains-values + type: Mandatory + outcome: PASS + reason: Values file exist + - check: v1.0/not-contains-crds + type: Mandatory + outcome: PASS + reason: Chart does not contain CRDs + - check: v1.1/images-are-certified + type: Mandatory + outcome: PASS + reason: No images to certify + - check: v1.1/has-kubeversion + type: Mandatory + outcome: PASS + reason: Kubernetes version specified + - check: v1.0/signature-is-valid + type: Mandatory + outcome: SKIPPED + reason: 'Chart is not signed : Signature verification not required' + - check: v1.0/chart-testing + type: Mandatory + outcome: PASS + reason: Chart tests have passed + - check: v1.0/has-readme + type: Mandatory + outcome: PASS + reason: Chart has a README + - check: v1.0/is-helm-v3 + type: Mandatory + outcome: PASS + reason: API version is V2, used in Helm 3 + - check: v1.0/not-contain-csi-objects + type: Mandatory + outcome: PASS + reason: CSI objects do not exist + - check: v1.0/required-annotations-present + type: Mandatory + outcome: PASS + reason: All required annotations present + - check: v1.0/helm-lint + type: Mandatory + outcome: PASS + reason: Helm lint successful + - check: v1.0/contains-values-schema + type: Mandatory + outcome: PASS + reason: Values schema file exist + diff --git a/charts/partners/telenity/ussigw-configuration/1.0.4/ussigw-configuration-1.0.4.tgz b/charts/partners/telenity/ussigw-configuration/1.0.4/ussigw-configuration-1.0.4.tgz new file mode 100644 index 000000000..62fa38133 Binary files /dev/null and b/charts/partners/telenity/ussigw-configuration/1.0.4/ussigw-configuration-1.0.4.tgz differ diff --git a/charts/partners/telenity/ussigw-configuration/OWNERS b/charts/partners/telenity/ussigw-configuration/OWNERS index 50682de45..c068a1f58 100644 --- a/charts/partners/telenity/ussigw-configuration/OWNERS +++ b/charts/partners/telenity/ussigw-configuration/OWNERS @@ -3,7 +3,8 @@ chart: shortDescription: unknown providerDelivery: false publicPgpKey: unknown -users: [] +users: +- githubUsername: gurolakman vendor: label: telenity name: Telenity Iletisim Sistemleri Sa diff --git a/charts/partners/telenity/ussigw-core/1.0.4/report.yaml b/charts/partners/telenity/ussigw-core/1.0.4/report.yaml new file mode 100644 index 000000000..98ea2447a --- /dev/null +++ b/charts/partners/telenity/ussigw-core/1.0.4/report.yaml @@ -0,0 +1,95 @@ +apiversion: v1 +kind: verify-report +metadata: + tool: + verifier-version: 1.13.3 + profile: + VendorType: partner + version: v1.2 + reportDigest: uint64:14921408161299272910 + chart-uri: ussigw-core-1.0.4.tgz + digests: + chart: sha256:384bb3691d0ea7a68efedc8bc410d39019ed759fe76ae6e15a6a2203f3e6e3e7 + package: 8aafc065f9f9d49ee889238031c0e6ffd2b90fe2d0fabc71896f40af4dfa093a + lastCertifiedTimestamp: "2024-03-29T16:14:15.599133-04:00" + testedOpenShiftVersion: "4.8" + supportedOpenShiftVersions: '>=4.8' + webCatalogOnly: false + chart: + name: ussigw-core + home: "" + sources: [] + version: 1.0.4 + description: ussigw-core + keywords: [] + maintainers: + - name: Telenity + email: info@telenity.com + url: https://www.telenity.com + icon: "" + apiversion: v2 + condition: "" + tags: "" + appversion: 1.0.1 + deprecated: false + annotations: + charts.openshift.io/name: USSI Gateway Core Helm Chart + charts.openshift.io/provider: Telenity INC. + kubeversion: '>=v1.21.0' + dependencies: [] + type: "" + chart-overrides: "" +results: + - check: v1.0/helm-lint + type: Mandatory + outcome: PASS + reason: Helm lint successful + - check: v1.0/not-contains-crds + type: Mandatory + outcome: PASS + reason: Chart does not contain CRDs + - check: v1.0/not-contain-csi-objects + type: Mandatory + outcome: PASS + reason: CSI objects do not exist + - check: v1.0/has-readme + type: Mandatory + outcome: PASS + reason: Chart has a README + - check: v1.0/contains-values-schema + type: Mandatory + outcome: PASS + reason: Values schema file exist + - check: v1.1/images-are-certified + type: Mandatory + outcome: PASS + reason: No images to certify + - check: v1.0/is-helm-v3 + type: Mandatory + outcome: PASS + reason: API version is V2, used in Helm 3 + - check: v1.0/chart-testing + type: Mandatory + outcome: PASS + reason: Chart tests have passed + - check: v1.0/contains-values + type: Mandatory + outcome: PASS + reason: Values file exist + - check: v1.0/signature-is-valid + type: Mandatory + outcome: SKIPPED + reason: 'Chart is not signed : Signature verification not required' + - check: v1.0/contains-test + type: Mandatory + outcome: PASS + reason: Chart test files exist + - check: v1.1/has-kubeversion + type: Mandatory + outcome: PASS + reason: Kubernetes version specified + - check: v1.0/required-annotations-present + type: Mandatory + outcome: PASS + reason: All required annotations present + diff --git a/charts/partners/telenity/ussigw-core/1.0.4/ussigw-core-1.0.4.tgz b/charts/partners/telenity/ussigw-core/1.0.4/ussigw-core-1.0.4.tgz new file mode 100644 index 000000000..d5df1c98e Binary files /dev/null and b/charts/partners/telenity/ussigw-core/1.0.4/ussigw-core-1.0.4.tgz differ diff --git a/charts/partners/telenity/ussigw-core/OWNERS b/charts/partners/telenity/ussigw-core/OWNERS index 036e63a0d..7d5a31aeb 100644 --- a/charts/partners/telenity/ussigw-core/OWNERS +++ b/charts/partners/telenity/ussigw-core/OWNERS @@ -3,7 +3,8 @@ chart: shortDescription: unknown providerDelivery: false publicPgpKey: unknown -users: [] +users: +- githubUsername: gurolakman vendor: label: telenity name: Telenity Iletisim Sistemleri Sa diff --git a/charts/partners/venafi/venafi-tlspk/OWNERS b/charts/partners/venafi/venafi-tlspk/OWNERS new file mode 100644 index 000000000..9644490c2 --- /dev/null +++ b/charts/partners/venafi/venafi-tlspk/OWNERS @@ -0,0 +1,9 @@ +chart: + name: venafi-tlspk + shortDescription: unknown +providerDelivery: false +publicPgpKey: unknown +users: [] +vendor: + label: venafi + name: Venafi diff --git a/charts/partners/yugabytedb/yugaware-openshift/2.20.3/report.yaml b/charts/partners/yugabytedb/yugaware-openshift/2.20.3/report.yaml new file mode 100644 index 000000000..3684f16ee --- /dev/null +++ b/charts/partners/yugabytedb/yugaware-openshift/2.20.3/report.yaml @@ -0,0 +1,99 @@ +apiversion: v1 +kind: verify-report +metadata: + tool: + verifier-version: 1.12.2 + profile: + VendorType: partner + version: v1.2 + reportDigest: uint64:8205317229832736531 + chart-uri: https://charts.yugabyte.com/yugaware-openshift-2.20.3.tgz + digests: + chart: sha256:3f87657cc6c0417ae5c79863879e63d01279a6ebed73305e2b9637ed46b66fc7 + package: 8ad660a9c4fc0f11747175ec74c8c857c39c09d9a4e6d6aa6e489286613c4622 + lastCertifiedTimestamp: "2024-05-14T17:48:35.472489+00:00" + testedOpenShiftVersion: "4.11" + supportedOpenShiftVersions: '>=4.4' + webCatalogOnly: false + chart: + name: yugaware-openshift + home: https://www.yugabyte.com + sources: [] + version: 2.20.3 + description: YugabyteDB Anywhere provides deployment, orchestration, and monitoring for managing YugabyteDB clusters. YugabyteDB Anywhere can create a YugabyteDB cluster with multiple pods provided by Kubernetes or OpenShift and logically grouped together to form one logical distributed database. + keywords: [] + maintainers: + - name: Sanketh Indarapu + email: sanketh@yugabyte.com + url: "" + - name: Govardhan Reddy Jalla + email: gjalla@yugabyte.com + url: "" + icon: https://avatars0.githubusercontent.com/u/17074854?s=200&v=4 + apiversion: v2 + condition: "" + tags: "" + appversion: 2.20.3.1-b2 + deprecated: false + annotations: + charts.openshift.io/name: yugaware-openshift + kubeversion: '>=1.17.0-0' + dependencies: [] + type: "" + chart-overrides: "" +results: + - check: v1.1/has-kubeversion + type: Mandatory + outcome: PASS + reason: Kubernetes version specified + - check: v1.0/contains-values-schema + type: Mandatory + outcome: PASS + reason: Values schema file exist + - check: v1.0/contains-values + type: Mandatory + outcome: PASS + reason: Values file exist + - check: v1.0/has-readme + type: Mandatory + outcome: PASS + reason: Chart has a README + - check: v1.0/is-helm-v3 + type: Mandatory + outcome: PASS + reason: API version is V2, used in Helm 3 + - check: v1.0/not-contain-csi-objects + type: Mandatory + outcome: PASS + reason: CSI objects do not exist + - check: v1.0/required-annotations-present + type: Mandatory + outcome: PASS + reason: All required annotations present + - check: v1.0/signature-is-valid + type: Mandatory + outcome: SKIPPED + reason: 'Chart is not signed : Signature verification not required' + - check: v1.0/helm-lint + type: Mandatory + outcome: PASS + reason: Helm lint successful + - check: v1.0/chart-testing + type: Mandatory + outcome: PASS + reason: Chart tests have passed + - check: v1.0/contains-test + type: Mandatory + outcome: PASS + reason: Chart test files exist + - check: v1.1/images-are-certified + type: Mandatory + outcome: PASS + reason: |- + Image certification skipped : registry.redhat.io/rhscl/postgresql-13-rhel7:1-88.1661531722 + Image certification skipped : registry.redhat.io/openshift4/ose-prometheus:v4.11.0 + Image is Red Hat certified : quay.io/yugabyte/yugaware-ubi:2.20.3.1-b2 + - check: v1.0/not-contains-crds + type: Mandatory + outcome: PASS + reason: Chart does not contain CRDs diff --git a/charts/partners/yugabytedb/yugaware-openshift/2.20.3/yugaware-openshift-2.20.3.tgz b/charts/partners/yugabytedb/yugaware-openshift/2.20.3/yugaware-openshift-2.20.3.tgz new file mode 100644 index 000000000..effdbbae6 Binary files /dev/null and b/charts/partners/yugabytedb/yugaware-openshift/2.20.3/yugaware-openshift-2.20.3.tgz differ diff --git a/charts/partners/yugabytedb/yugaware-openshift/2.20.4/report.yaml b/charts/partners/yugabytedb/yugaware-openshift/2.20.4/report.yaml new file mode 100644 index 000000000..eda9a661f --- /dev/null +++ b/charts/partners/yugabytedb/yugaware-openshift/2.20.4/report.yaml @@ -0,0 +1,99 @@ +apiversion: v1 +kind: verify-report +metadata: + tool: + verifier-version: 1.12.2 + profile: + VendorType: partner + version: v1.2 + reportDigest: uint64:3720229060344227153 + chart-uri: https://charts.yugabyte.com/yugaware-openshift-2.20.4.tgz + digests: + chart: sha256:82aa420d0b43777c4735923be3466817b280af3d91606d2edc07583ea97f584b + package: a1a63bc6ad3140778c04eaba7a18d1827e19b45c2a5d36d53abbfe523531c514 + lastCertifiedTimestamp: "2024-05-23T19:59:20.960456+00:00" + testedOpenShiftVersion: "4.11" + supportedOpenShiftVersions: '>=4.4' + webCatalogOnly: false + chart: + name: yugaware-openshift + home: https://www.yugabyte.com + sources: [] + version: 2.20.4 + description: YugabyteDB Anywhere provides deployment, orchestration, and monitoring for managing YugabyteDB clusters. YugabyteDB Anywhere can create a YugabyteDB cluster with multiple pods provided by Kubernetes or OpenShift and logically grouped together to form one logical distributed database. + keywords: [] + maintainers: + - name: Sanketh Indarapu + email: sanketh@yugabyte.com + url: "" + - name: Govardhan Reddy Jalla + email: gjalla@yugabyte.com + url: "" + icon: https://avatars0.githubusercontent.com/u/17074854?s=200&v=4 + apiversion: v2 + condition: "" + tags: "" + appversion: 2.20.4.0-b50 + deprecated: false + annotations: + charts.openshift.io/name: yugaware-openshift + kubeversion: '>=1.17.0-0' + dependencies: [] + type: "" + chart-overrides: "" +results: + - check: v1.0/helm-lint + type: Mandatory + outcome: PASS + reason: Helm lint successful + - check: v1.0/required-annotations-present + type: Mandatory + outcome: PASS + reason: All required annotations present + - check: v1.0/signature-is-valid + type: Mandatory + outcome: SKIPPED + reason: 'Chart is not signed : Signature verification not required' + - check: v1.0/contains-values-schema + type: Mandatory + outcome: PASS + reason: Values schema file exist + - check: v1.0/contains-test + type: Mandatory + outcome: PASS + reason: Chart test files exist + - check: v1.0/has-readme + type: Mandatory + outcome: PASS + reason: Chart has a README + - check: v1.1/images-are-certified + type: Mandatory + outcome: PASS + reason: |- + Image certification skipped : registry.redhat.io/rhscl/postgresql-13-rhel7:1-88.1661531722 + Image certification skipped : registry.redhat.io/openshift4/ose-prometheus:v4.11.0 + Image is Red Hat certified : quay.io/yugabyte/yugaware-ubi:2.20.4.0-b50 + - check: v1.1/has-kubeversion + type: Mandatory + outcome: PASS + reason: Kubernetes version specified + - check: v1.0/not-contain-csi-objects + type: Mandatory + outcome: PASS + reason: CSI objects do not exist + - check: v1.0/chart-testing + type: Mandatory + outcome: PASS + reason: Chart tests have passed + - check: v1.0/contains-values + type: Mandatory + outcome: PASS + reason: Values file exist + - check: v1.0/is-helm-v3 + type: Mandatory + outcome: PASS + reason: API version is V2, used in Helm 3 + - check: v1.0/not-contains-crds + type: Mandatory + outcome: PASS + reason: Chart does not contain CRDs diff --git a/charts/partners/yugabytedb/yugaware-openshift/2.20.4/yugaware-openshift-2.20.4.tgz b/charts/partners/yugabytedb/yugaware-openshift/2.20.4/yugaware-openshift-2.20.4.tgz new file mode 100644 index 000000000..9a44b1776 Binary files /dev/null and b/charts/partners/yugabytedb/yugaware-openshift/2.20.4/yugaware-openshift-2.20.4.tgz differ diff --git a/charts/partners/yugabytedb/yugaware-openshift/2.21.0/report.yaml b/charts/partners/yugabytedb/yugaware-openshift/2.21.0/report.yaml new file mode 100644 index 000000000..56fa690b5 --- /dev/null +++ b/charts/partners/yugabytedb/yugaware-openshift/2.21.0/report.yaml @@ -0,0 +1,99 @@ +apiversion: v1 +kind: verify-report +metadata: + tool: + verifier-version: 1.12.2 + profile: + VendorType: partner + version: v1.2 + reportDigest: uint64:6554887276793368421 + chart-uri: https://charts.yugabyte.com/yugaware-openshift-2.21.0.tgz + digests: + chart: sha256:1213a9902af34b93f82f5115740c7749ecbe3bf6da203414e437ea574a9f5e34 + package: 66e346411f789254abc5c467e7d6cc23c0db0f9ec5fff649d3f18b88e5e91162 + lastCertifiedTimestamp: "2024-05-22T14:14:47.051424+00:00" + testedOpenShiftVersion: "4.11" + supportedOpenShiftVersions: '>=4.4' + webCatalogOnly: false + chart: + name: yugaware-openshift + home: https://www.yugabyte.com + sources: [] + version: 2.21.0 + description: YugabyteDB Anywhere provides deployment, orchestration, and monitoring for managing YugabyteDB clusters. YugabyteDB Anywhere can create a YugabyteDB cluster with multiple pods provided by Kubernetes or OpenShift and logically grouped together to form one logical distributed database. + keywords: [] + maintainers: + - name: Sanketh Indarapu + email: sanketh@yugabyte.com + url: "" + - name: Govardhan Reddy Jalla + email: gjalla@yugabyte.com + url: "" + icon: https://avatars0.githubusercontent.com/u/17074854?s=200&v=4 + apiversion: v2 + condition: "" + tags: "" + appversion: 2.21.0.0-b545 + deprecated: false + annotations: + charts.openshift.io/name: yugaware-openshift + kubeversion: '>=1.17.0-0' + dependencies: [] + type: "" + chart-overrides: "" +results: + - check: v1.0/required-annotations-present + type: Mandatory + outcome: PASS + reason: All required annotations present + - check: v1.0/chart-testing + type: Mandatory + outcome: PASS + reason: Chart tests have passed + - check: v1.0/signature-is-valid + type: Mandatory + outcome: SKIPPED + reason: 'Chart is not signed : Signature verification not required' + - check: v1.0/contains-test + type: Mandatory + outcome: PASS + reason: Chart test files exist + - check: v1.0/contains-values + type: Mandatory + outcome: PASS + reason: Values file exist + - check: v1.1/images-are-certified + type: Mandatory + outcome: PASS + reason: |- + Image certification skipped : registry.redhat.io/rhscl/postgresql-13-rhel7:1-88.1661531722 + Image certification skipped : registry.redhat.io/openshift4/ose-prometheus:v4.11.0 + Image is Red Hat certified : quay.io/yugabyte/yugaware-ubi:2.21.0.0-b545 + - check: v1.0/is-helm-v3 + type: Mandatory + outcome: PASS + reason: API version is V2, used in Helm 3 + - check: v1.1/has-kubeversion + type: Mandatory + outcome: PASS + reason: Kubernetes version specified + - check: v1.0/has-readme + type: Mandatory + outcome: PASS + reason: Chart has a README + - check: v1.0/not-contain-csi-objects + type: Mandatory + outcome: PASS + reason: CSI objects do not exist + - check: v1.0/contains-values-schema + type: Mandatory + outcome: PASS + reason: Values schema file exist + - check: v1.0/helm-lint + type: Mandatory + outcome: PASS + reason: Helm lint successful + - check: v1.0/not-contains-crds + type: Mandatory + outcome: PASS + reason: Chart does not contain CRDs diff --git a/charts/partners/yugabytedb/yugaware-openshift/2.21.0/yugaware-openshift-2.21.0.tgz b/charts/partners/yugabytedb/yugaware-openshift/2.21.0/yugaware-openshift-2.21.0.tgz new file mode 100644 index 000000000..57197f134 Binary files /dev/null and b/charts/partners/yugabytedb/yugaware-openshift/2.21.0/yugaware-openshift-2.21.0.tgz differ diff --git a/charts/redhat/redhat/redhat-cakephp-application-template/0.0.1/src/Chart.yaml b/charts/redhat/redhat/redhat-cakephp-application-template/0.0.1/src/Chart.yaml new file mode 100644 index 000000000..3ae79b2e7 --- /dev/null +++ b/charts/redhat/redhat/redhat-cakephp-application-template/0.0.1/src/Chart.yaml @@ -0,0 +1,14 @@ +description: This content is experimental, do not use it in production. An example CakePHP application with no database. For more information + about using this template, including OpenShift considerations, see https://github.com/sclorg/cakephp-ex/blob/master/README.md. +name: cakephp-application-template +tags: quickstart,php,cakephp +version: 0.0.1 +kubeVersion: '>=1.20.0' +annotations: + charts.openshift.io/name: Red Hat Apache CakePHP application with no database (experimental) + charts.openshift.io/provider: Red Hat + charts.openshift.io/providerType: redhat +apiVersion: v2 +appVersion: 0.0.1 +sources: + - https://github.com/sclorg/helm-charts diff --git a/charts/redhat/redhat/redhat-cakephp-application-template/0.0.1/src/README.md b/charts/redhat/redhat/redhat-cakephp-application-template/0.0.1/src/README.md new file mode 100644 index 000000000..0fd677f46 --- /dev/null +++ b/charts/redhat/redhat/redhat-cakephp-application-template/0.0.1/src/README.md @@ -0,0 +1,26 @@ +# CakePHP application template with no database helm chart + +A Helm chart for building and deploying a [CakePHP-ex](https://github/sclorg/cakephp-ex) application on OpenShift. + +For more information about helm charts see the official [Helm Charts Documentation](https://helm.sh/). + +You need to have access to a cluster for each operation with OpenShift 4, like deploying and testing. + +## Values +Below is a table of each value used to configure this chart. + +| Value | Description | Default | Additional Information | +|--------------------------| ----------- |-|-| +| `name` | The name assigned to all of the frontend objects defined in this helm chart. | `cakephp-example` | | +| `namespace` | The OpenShift Namespace where the ImageStream resides. | `cakephp-example` | | +| `php_version ` | Version of PHP image to be used (8.1-ubi9 by default). | `8.1-ubi9` | | +| `memory_limit` | Maximum amount of memory the container can use. | `521Mi` | | +| `source_repository_url` | The URL of the repository with your application source code. | `https://github.com/sclorg/cakephp-ex.git` | | +| `source_repository_ref` | Set this to a branch name, tag or other ref of your repository if you are not using the default branch. | `master` | | +| `context_dir` | Set this to the relative path to your project if it is not in the root of your repository. | | | +| `application_domain` | The exposed hostname that will route to the httpd service, if left blank a value will be defaulted. | | | +| `github_webhook_secret` | Github trigger secret. A difficult to guess string encoded as part of the webhook URL. Not encrypted. | | | +| `cakephp_secret_token` | Set this to a long random string. | | | +| `cakephp_security_salt` | Security salt for session hash. | | | +| `composer_mirror` | The custom Composer mirror URL. | | | +| `opcache_revalidate_freq` | How often to check script timestamps for updates, in seconds. 0 will result in OPcache checking for updates on every request. | | | diff --git a/charts/redhat/redhat/redhat-cakephp-application-template/0.0.1/src/templates/buildconfig.yaml b/charts/redhat/redhat/redhat-cakephp-application-template/0.0.1/src/templates/buildconfig.yaml new file mode 100644 index 000000000..ec070574f --- /dev/null +++ b/charts/redhat/redhat/redhat-cakephp-application-template/0.0.1/src/templates/buildconfig.yaml @@ -0,0 +1,39 @@ +apiVersion: build.openshift.io/v1 +kind: BuildConfig +metadata: + annotations: + description: Defines how to build the application + template.alpha.openshift.io/wait-for-ready: "true" + labels: + app: cakephp-example + template: cakephp-example + name: {{ .Values.name }} +spec: + output: + to: + kind: ImageStreamTag + name: {{ .Values.name }}:latest + postCommit: + script: ./vendor/bin/phpunit + source: + contextDir: {{ .Values.context_dir }} + git: + ref: {{ .Values.source_repository_ref }} + uri: {{ .Values.source_repository_url }} + type: Git + strategy: + sourceStrategy: + env: + - name: COMPOSER_MIRROR + value: {{ .Values.composer_mirror }} + from: + kind: ImageStreamTag + name: php:{{ .Values.php_version }} + namespace: {{ .Values.namespace }} + type: Source + triggers: + - type: ImageChange + - type: ConfigChange + - github: + secret: {{ .Values.github_webhook_secret }} + type: GitHub diff --git a/charts/redhat/redhat/redhat-cakephp-application-template/0.0.1/src/templates/deployment.yaml b/charts/redhat/redhat/redhat-cakephp-application-template/0.0.1/src/templates/deployment.yaml new file mode 100644 index 000000000..aea433b31 --- /dev/null +++ b/charts/redhat/redhat/redhat-cakephp-application-template/0.0.1/src/templates/deployment.yaml @@ -0,0 +1,70 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + annotations: + description: Defines how to deploy the application server + image.openshift.io/triggers: |- + [ + { + "from": { + "kind": "ImageStreamTag", + "name": "{{ .Values.name }}:latest" + }, + "fieldPath": "spec.template.spec.containers[0].image" + } + ] + template.alpha.openshift.io/wait-for-ready: "true" + labels: + app: cakephp-example + template: cakephp-example + name: {{ .Values.name }} +spec: + replicas: 1 + selector: + matchLabels: + name: {{ .Values.name }} + strategy: + type: RollingUpdate + template: + metadata: + labels: + name: {{ .Values.name }} + name: {{ .Values.name }} + spec: + containers: + - env: + - name: CAKEPHP_SECRET_TOKEN + valueFrom: + secretKeyRef: + key: cakephp-secret-token + name: {{ .Values.name }} + - name: PHP_CLEAR_ENV + value: "OFF" + - name: CAKEPHP_SECURITY_SALT + valueFrom: + secretKeyRef: + key: cakephp-security-salt + name: {{ .Values.name }} + - name: OPCACHE_REVALIDATE_FREQ + value: "{{ .Values.opcache_revalidate_freq }}" + image: " " + livenessProbe: + httpGet: + path: / + port: 8080 + initialDelaySeconds: 30 + periodSeconds: 60 + timeoutSeconds: 3 + name: cakephp-example + ports: + - containerPort: 8080 + readinessProbe: + httpGet: + path: / + port: 8080 + initialDelaySeconds: 3 + periodSeconds: 60 + timeoutSeconds: 3 + resources: + limits: + memory: {{ .Values.memory_limit }} diff --git a/charts/redhat/redhat/redhat-cakephp-application-template/0.0.1/src/templates/imagestream.yaml b/charts/redhat/redhat/redhat-cakephp-application-template/0.0.1/src/templates/imagestream.yaml new file mode 100644 index 000000000..4f8c550ca --- /dev/null +++ b/charts/redhat/redhat/redhat-cakephp-application-template/0.0.1/src/templates/imagestream.yaml @@ -0,0 +1,9 @@ +apiVersion: image.openshift.io/v1 +kind: ImageStream +metadata: + annotations: + description: Keeps track of changes in the application image + labels: + app: cakephp-example + template: cakephp-example + name: {{ .Values.name }} diff --git a/charts/redhat/redhat/redhat-cakephp-application-template/0.0.1/src/templates/route.yaml b/charts/redhat/redhat/redhat-cakephp-application-template/0.0.1/src/templates/route.yaml new file mode 100644 index 000000000..5a552abbd --- /dev/null +++ b/charts/redhat/redhat/redhat-cakephp-application-template/0.0.1/src/templates/route.yaml @@ -0,0 +1,12 @@ +apiVersion: route.openshift.io/v1 +kind: Route +metadata: + labels: + app: cakephp-example + template: cakephp-example + name: {{ .Values.name }} +spec: + host: {{ .Values.application_domain }} + to: + kind: Service + name: {{ .Values.name }} diff --git a/charts/redhat/redhat/redhat-cakephp-application-template/0.0.1/src/templates/secret.yaml b/charts/redhat/redhat/redhat-cakephp-application-template/0.0.1/src/templates/secret.yaml new file mode 100644 index 000000000..6209d58ef --- /dev/null +++ b/charts/redhat/redhat/redhat-cakephp-application-template/0.0.1/src/templates/secret.yaml @@ -0,0 +1,10 @@ +apiVersion: v1 +kind: Secret +metadata: + labels: + app: cakephp-example + template: cakephp-example + name: {{ .Values.name }} +stringData: + cakephp-secret-token: {{ .Values.cakephp_secret_token }} + cakephp-security-salt: {{ .Values.cakephp_security_salt }} diff --git a/charts/redhat/redhat/redhat-cakephp-application-template/0.0.1/src/templates/service.yaml b/charts/redhat/redhat/redhat-cakephp-application-template/0.0.1/src/templates/service.yaml new file mode 100644 index 000000000..2a4864afc --- /dev/null +++ b/charts/redhat/redhat/redhat-cakephp-application-template/0.0.1/src/templates/service.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: Service +metadata: + annotations: + description: Exposes and load balances the application pods + labels: + app: cakephp-example + template: cakephp-example + name: {{ .Values.name }} +spec: + ports: + - name: web + port: 8080 + targetPort: 8080 + selector: + name: {{ .Values.name }} diff --git a/charts/redhat/redhat/redhat-cakephp-application-template/0.0.1/src/templates/tests/test-php-cakephp-connection.yaml b/charts/redhat/redhat/redhat-cakephp-application-template/0.0.1/src/templates/tests/test-php-cakephp-connection.yaml new file mode 100644 index 000000000..13a638565 --- /dev/null +++ b/charts/redhat/redhat/redhat-cakephp-application-template/0.0.1/src/templates/tests/test-php-cakephp-connection.yaml @@ -0,0 +1,20 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ .Release.Name }}-connection-test" + annotations: + "helm.sh/hook": test + labels: + name: {{ .Values.name }} + template: {{ .Values.name }} +spec: + containers: + - name: "{{ .Release.Name }}-connection-test" + image: "registry.redhat.io/ubi8/ubi:latest" + imagePullPolicy: IfNotPresent + command: + - '/bin/bash' + - '-exc' + - > + curl {{ .Values.name }}.{{ .Release.Namespace }}:8080 | grep "Welcome to CakePHP 4.5" + restartPolicy: Never diff --git a/charts/redhat/redhat/redhat-cakephp-application-template/0.0.1/src/values.schema.json b/charts/redhat/redhat/redhat-cakephp-application-template/0.0.1/src/values.schema.json new file mode 100644 index 000000000..4e83fcea3 --- /dev/null +++ b/charts/redhat/redhat/redhat-cakephp-application-template/0.0.1/src/values.schema.json @@ -0,0 +1,62 @@ +{ + "$schema": "http://json-schema.org/schema#", + "type": "object", + "properties": { + "name": { + "type": "string", + "pattern": "^[a-z0-9-_]+$" + }, + "namespace": { + "type": "string", + "title": "The URL of the repository with your application source code." + }, + "php_version": { + "type": "string", + "description": "Version of PHP image to be used (8.1-ubi9 by default).", + "enum": [ "latest", "8.0-ubi8", "8.1-ubi9", "8.0-ubi9" ] + }, + "memory_limit": { + "type": "string", + "title": "Maximum amount of memory the container can use.", + "form": true, + "render": "slider", + "sliderMin": 512, + "sliderMax": 65536, + "sliderUnit": "Mi" + }, + "source_repository_url": { + "type": "string" + }, + "source_repository_ref": { + "type": "string" + }, + "context_dir": { + "type": "string", + "description": "Set this to the relative path to your project if it is not in the root of your repository." + }, + "application_domain": { + "type": "string", + "description": "The exposed hostname that will route to the httpd service, if left blank a value will be defaulted." + }, + "github_webhook_secret": { + "type": "string", + "description": "Github trigger secret. A difficult to guess string encoded as part of the webhook URL. Not encrypted." + }, + "cakephp_secret_token": { + "type": "string", + "description": "Set this to a long random string." + }, + "cakephp_security_salt": { + "type": "string", + "description": "Security salt for session hash." + }, + "composer_mirror": { + "type": "string", + "description": "The custom Composer mirror URL." + }, + "opcache_revalidate_freq": { + "type": "string", + "description": "How often to check script timestamps for updates, in seconds. 0 will result in OPcache checking for updates on every request." + } + } +} diff --git a/charts/redhat/redhat/redhat-cakephp-application-template/0.0.1/src/values.yaml b/charts/redhat/redhat/redhat-cakephp-application-template/0.0.1/src/values.yaml new file mode 100644 index 000000000..c9b6257c9 --- /dev/null +++ b/charts/redhat/redhat/redhat-cakephp-application-template/0.0.1/src/values.yaml @@ -0,0 +1,13 @@ +application_domain: "" # TODO: must define a default value for .application_domain +cakephp_secret_token: "" # TODO: must define a default value for .cakephp_secret_token +cakephp_security_salt: "" # TODO: must define a default value for .cakephp_security_salt +composer_mirror: "" # TODO: must define a default value for .composer_mirror +context_dir: "" # TODO: must define a default value for .context_dir +github_webhook_secret: "SOMETHING" # TODO: must define a default value for .github_webhook_secret +memory_limit: 512Mi +name: cakephp-example +namespace: openshift +opcache_revalidate_freq: "2" +php_version: 8.1-ubi9 +source_repository_ref: "4.X" # TODO: must define a default value for .source_repository_ref +source_repository_url: https://github.com/sclorg/cakephp-ex.git diff --git a/charts/redhat/redhat/redhat-cakephp-application-template/OWNERS b/charts/redhat/redhat/redhat-cakephp-application-template/OWNERS new file mode 100644 index 000000000..d90a8c820 --- /dev/null +++ b/charts/redhat/redhat/redhat-cakephp-application-template/OWNERS @@ -0,0 +1,9 @@ +chart: + name: redhat-cakephp-application-template + description: This is the Red Hat quickstart CakePHP application with no database helm chart +publicPgpKey: null +users: + - githubUsername: phracek +vendor: + label: redhat + name: Red Hat diff --git a/charts/redhat/redhat/redhat-data-grid/8.4.7/redhat-data-grid-8.4.7.tgz b/charts/redhat/redhat/redhat-data-grid/8.4.7/redhat-data-grid-8.4.7.tgz new file mode 100644 index 000000000..2c7156ce8 Binary files /dev/null and b/charts/redhat/redhat/redhat-data-grid/8.4.7/redhat-data-grid-8.4.7.tgz differ diff --git a/charts/redhat/redhat/redhat-developer-hub/0.1.0/developer-hub-0.1.0.tgz b/charts/redhat/redhat/redhat-developer-hub/0.1.0/developer-hub-0.1.0.tgz new file mode 100644 index 000000000..4e3f1fb9b Binary files /dev/null and b/charts/redhat/redhat/redhat-developer-hub/0.1.0/developer-hub-0.1.0.tgz differ diff --git a/charts/redhat/redhat/redhat-developer-hub/0.1.0/report.yaml b/charts/redhat/redhat/redhat-developer-hub/0.1.0/report.yaml new file mode 100644 index 000000000..07b80b2e9 --- /dev/null +++ b/charts/redhat/redhat/redhat-developer-hub/0.1.0/report.yaml @@ -0,0 +1,131 @@ +apiversion: v1 +kind: verify-report +metadata: + tool: + verifier-version: 1.12.0 + profile: + VendorType: redhat + version: v1.2 + reportDigest: uint64:6968490722177852570 + chart-uri: /mnt/chart/developer-hub-0.1.0.tgz + digests: + chart: sha256:ef0a0625e0aa4e4c8dd8e1190175c25dac725303d9ed4f08f2dacab6285c9b7a + package: f47d79b0999e08d0cd880c9e691bdbe35204d4958ad871bb66cf4ab04b4f65b3 + lastCertifiedTimestamp: "2023-06-29T15:48:30.903369+00:00" + testedOpenShiftVersion: N/A + supportedOpenShiftVersions: '>=4.6' + webCatalogOnly: false + chart: + name: developer-hub + home: https://red.ht/rhdh + sources: [] + version: 0.1.0 + description: A Helm chart for deploying Red Hat Developer Hub + keywords: + - backstage + - idp + - janus-idp + - developer-hub + - redhat + maintainers: + - name: Red Hat + email: "" + url: https://redhat.com + icon: data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' id='Layer_1' data-name='Layer 1' viewBox='0 0 192 145'%3E%3Cdefs%3E%3Cstyle%3E.cls-1%7Bfill:%23e00;%7D%3C/style%3E%3C/defs%3E%3Ctitle%3ERedHat-Logo-Hat-Color%3C/title%3E%3Cpath d='M157.77,62.61a14,14,0,0,1,.31,3.42c0,14.88-18.1,17.46-30.61,17.46C78.83,83.49,42.53,53.26,42.53,44a6.43,6.43,0,0,1,.22-1.94l-3.66,9.06a18.45,18.45,0,0,0-1.51,7.33c0,18.11,41,45.48,87.74,45.48,20.69,0,36.43-7.76,36.43-21.77,0-1.08,0-1.94-1.73-10.13Z'/%3E%3Cpath class='cls-1' d='M127.47,83.49c12.51,0,30.61-2.58,30.61-17.46a14,14,0,0,0-.31-3.42l-7.45-32.36c-1.72-7.12-3.23-10.35-15.73-16.6C124.89,8.69,103.76.5,97.51.5,91.69.5,90,8,83.06,8c-6.68,0-11.64-5.6-17.89-5.6-6,0-9.91,4.09-12.93,12.5,0,0-8.41,23.72-9.49,27.16A6.43,6.43,0,0,0,42.53,44c0,9.22,36.3,39.45,84.94,39.45M160,72.07c1.73,8.19,1.73,9.05,1.73,10.13,0,14-15.74,21.77-36.43,21.77C78.54,104,37.58,76.6,37.58,58.49a18.45,18.45,0,0,1,1.51-7.33C22.27,52,.5,55,.5,74.22c0,31.48,74.59,70.28,133.65,70.28,45.28,0,56.7-20.48,56.7-36.65,0-12.72-11-27.16-30.83-35.78'/%3E%3C/svg%3E + apiversion: v2 + condition: "" + tags: "" + appversion: 1.0-8 + deprecated: false + annotations: + artifacthub.io/category: integration-delivery + artifacthub.io/license: Apache-2.0 + artifacthub.io/links: | + - name: support + url: https://github.com/janus-idp/helm-backstage/issues + - name: Chart Source + url: https://github.com/janus-idp/helm-backstage + - name: Default Image Source + url: https://github.com/janus-idp/backstage-showcase + charts.openshift.io/archs: x86_64 + charts.openshift.io/name: Red Hat Developer Hub + charts.openshift.io/provider: Red Hat + charts.openshift.io/supportURL: https://red.ht/rhdh + kubeversion: '>= 1.19.0-0' + dependencies: + - name: common + version: 2.4.0 + repository: https://charts.bitnami.com/bitnami + condition: "" + tags: + - bitnami-common + enabled: false + importvalues: [] + alias: "" + - name: backstage + version: 1.1.2 + repository: https://backstage.github.io/charts + condition: "" + tags: [] + enabled: false + importvalues: [] + alias: upstream + type: application + chart-overrides: "" +results: + - check: v1.0/required-annotations-present + type: Mandatory + outcome: PASS + reason: All required annotations present + - check: v1.0/signature-is-valid + type: Mandatory + outcome: SKIPPED + reason: 'Chart is not signed : Signature verification not required' + - check: v1.0/contains-test + type: Mandatory + outcome: PASS + reason: Chart test files exist + - check: v1.0/contains-values-schema + type: Mandatory + outcome: PASS + reason: Values schema file exist + - check: v1.0/has-readme + type: Mandatory + outcome: PASS + reason: Chart has a README + - check: v1.0/is-helm-v3 + type: Mandatory + outcome: PASS + reason: API version is V2, used in Helm 3 + - check: v1.0/not-contain-csi-objects + type: Mandatory + outcome: PASS + reason: CSI objects do not exist + - check: v1.0/contains-values + type: Mandatory + outcome: PASS + reason: Values file exist + - check: v1.1/has-kubeversion + type: Mandatory + outcome: PASS + reason: Kubernetes version specified + - check: v1.1/images-are-certified + type: Mandatory + outcome: FAIL + reason: |- + Image is not Red Hat certified : quay.io/rhdh/developer-hub-rhel9:1.0-8 + Image certification skipped : registry.redhat.io/rhel9/postgresql-15:latest + Image certification skipped : registry.redhat.io/ubi9:latest + - check: v1.0/not-contains-crds + type: Mandatory + outcome: PASS + reason: Chart does not contain CRDs + - check: v1.0/helm-lint + type: Mandatory + outcome: PASS + reason: Helm lint successful + - check: v1.0/chart-testing + type: Mandatory + outcome: FAIL + reason: 'chart Install failure: rendered manifests contain a resource that already exists. Unable to continue with install: ConfigMap "backstage-app-config" in namespace "tcoufal-dev" exists and cannot be imported into the current release: invalid ownership metadata; annotation validation error: key "meta.helm.sh/release-name" must equal "developer-hub-v25xm9jne4": current value is "developer-hub"' + diff --git a/charts/redhat/redhat/redhat-developer-hub/0.2.0/developer-hub-0.2.0.tgz b/charts/redhat/redhat/redhat-developer-hub/0.2.0/developer-hub-0.2.0.tgz new file mode 100644 index 000000000..40626e6f0 Binary files /dev/null and b/charts/redhat/redhat/redhat-developer-hub/0.2.0/developer-hub-0.2.0.tgz differ diff --git a/charts/redhat/redhat/redhat-developer-hub/1.0.0-1/developer-hub-1.0.0-1.tgz b/charts/redhat/redhat/redhat-developer-hub/1.0.0-1/developer-hub-1.0.0-1.tgz new file mode 100644 index 000000000..23534fdb4 Binary files /dev/null and b/charts/redhat/redhat/redhat-developer-hub/1.0.0-1/developer-hub-1.0.0-1.tgz differ diff --git a/charts/redhat/redhat/redhat-developer-hub/1.0.0/developer-hub-1.0.0.tgz b/charts/redhat/redhat/redhat-developer-hub/1.0.0/developer-hub-1.0.0.tgz new file mode 100644 index 000000000..a2dce9aeb Binary files /dev/null and b/charts/redhat/redhat/redhat-developer-hub/1.0.0/developer-hub-1.0.0.tgz differ diff --git a/charts/redhat/redhat/redhat-developer-hub/1.0.1+1714665450/redhat-developer-hub-1.0.1+1714665450.tgz b/charts/redhat/redhat/redhat-developer-hub/1.0.1+1714665450/redhat-developer-hub-1.0.1+1714665450.tgz new file mode 100644 index 000000000..756f4f410 Binary files /dev/null and b/charts/redhat/redhat/redhat-developer-hub/1.0.1+1714665450/redhat-developer-hub-1.0.1+1714665450.tgz differ diff --git a/charts/redhat/redhat/redhat-developer-hub/1.0.1+1715236475/redhat-developer-hub-1.0.1+1715236475.tgz b/charts/redhat/redhat/redhat-developer-hub/1.0.1+1715236475/redhat-developer-hub-1.0.1+1715236475.tgz new file mode 100644 index 000000000..2e97f7174 Binary files /dev/null and b/charts/redhat/redhat/redhat-developer-hub/1.0.1+1715236475/redhat-developer-hub-1.0.1+1715236475.tgz differ diff --git a/charts/redhat/redhat/redhat-developer-hub/1.0.1/redhat-developer-hub-1.0.1.tgz b/charts/redhat/redhat/redhat-developer-hub/1.0.1/redhat-developer-hub-1.0.1.tgz new file mode 100644 index 000000000..aed236b3a Binary files /dev/null and b/charts/redhat/redhat/redhat-developer-hub/1.0.1/redhat-developer-hub-1.0.1.tgz differ diff --git a/charts/redhat/redhat/redhat-developer-hub/1.0.2/redhat-developer-hub-1.0.2.tgz b/charts/redhat/redhat/redhat-developer-hub/1.0.2/redhat-developer-hub-1.0.2.tgz new file mode 100644 index 000000000..c4c59419c Binary files /dev/null and b/charts/redhat/redhat/redhat-developer-hub/1.0.2/redhat-developer-hub-1.0.2.tgz differ diff --git a/charts/redhat/redhat/redhat-developer-hub/1.1.0/developer-hub-1.1.0.tgz b/charts/redhat/redhat/redhat-developer-hub/1.1.0/developer-hub-1.1.0.tgz new file mode 100644 index 000000000..6b26bb9d8 Binary files /dev/null and b/charts/redhat/redhat/redhat-developer-hub/1.1.0/developer-hub-1.1.0.tgz differ diff --git a/charts/redhat/redhat/redhat-developer-hub/1.1.1/redhat-developer-hub-1.1.1.tgz b/charts/redhat/redhat/redhat-developer-hub/1.1.1/redhat-developer-hub-1.1.1.tgz new file mode 100644 index 000000000..94222f859 Binary files /dev/null and b/charts/redhat/redhat/redhat-developer-hub/1.1.1/redhat-developer-hub-1.1.1.tgz differ diff --git a/charts/redhat/redhat/redhat-developer-hub/1.1.2+1714483424/redhat-developer-hub-1.1.2+1714483424.tgz b/charts/redhat/redhat/redhat-developer-hub/1.1.2+1714483424/redhat-developer-hub-1.1.2+1714483424.tgz new file mode 100644 index 000000000..580607f85 Binary files /dev/null and b/charts/redhat/redhat/redhat-developer-hub/1.1.2+1714483424/redhat-developer-hub-1.1.2+1714483424.tgz differ diff --git a/charts/redhat/redhat/redhat-developer-hub/1.1.2+1714665449/redhat-developer-hub-1.1.2+1714665449.tgz b/charts/redhat/redhat/redhat-developer-hub/1.1.2+1714665449/redhat-developer-hub-1.1.2+1714665449.tgz new file mode 100644 index 000000000..c4c34ca6c Binary files /dev/null and b/charts/redhat/redhat/redhat-developer-hub/1.1.2+1714665449/redhat-developer-hub-1.1.2+1714665449.tgz differ diff --git a/charts/redhat/redhat/redhat-developer-hub/1.1.2+1715236475/redhat-developer-hub-1.1.2+1715236475.tgz b/charts/redhat/redhat/redhat-developer-hub/1.1.2+1715236475/redhat-developer-hub-1.1.2+1715236475.tgz new file mode 100644 index 000000000..c10f4b501 Binary files /dev/null and b/charts/redhat/redhat/redhat-developer-hub/1.1.2+1715236475/redhat-developer-hub-1.1.2+1715236475.tgz differ diff --git a/charts/redhat/redhat/redhat-developer-hub/1.1.2/redhat-developer-hub-1.1.2.tgz b/charts/redhat/redhat/redhat-developer-hub/1.1.2/redhat-developer-hub-1.1.2.tgz new file mode 100644 index 000000000..8f5df4272 Binary files /dev/null and b/charts/redhat/redhat/redhat-developer-hub/1.1.2/redhat-developer-hub-1.1.2.tgz differ diff --git a/charts/redhat/redhat/redhat-developer-hub/1.1.3/redhat-developer-hub-1.1.3.tgz b/charts/redhat/redhat/redhat-developer-hub/1.1.3/redhat-developer-hub-1.1.3.tgz new file mode 100644 index 000000000..434ff0f6b Binary files /dev/null and b/charts/redhat/redhat/redhat-developer-hub/1.1.3/redhat-developer-hub-1.1.3.tgz differ diff --git a/charts/redhat/redhat/redhat-developer-hub/OWNERS b/charts/redhat/redhat/redhat-developer-hub/OWNERS new file mode 100644 index 000000000..2401ced14 --- /dev/null +++ b/charts/redhat/redhat/redhat-developer-hub/OWNERS @@ -0,0 +1,12 @@ +chart: + name: redhat-developer-hub + shortDescription: A Helm chart for deploying Red Hat Developer Hub +publicPgpKey: null +users: + - githubUsername: rhdh-bot + - githubUsername: nickboldt + - githubUsername: schultzp2020 + - githubUsername: kadel +vendor: + label: redhat + name: Red Hat diff --git a/charts/redhat/redhat/redhat-dotnet/0.0.1/dotnet-0.0.1.tgz b/charts/redhat/redhat/redhat-dotnet/0.0.1/dotnet-0.0.1.tgz new file mode 100644 index 000000000..0277cad15 Binary files /dev/null and b/charts/redhat/redhat/redhat-dotnet/0.0.1/dotnet-0.0.1.tgz differ diff --git a/charts/redhat/redhat/redhat-dotnet/0.0.1/report.yaml b/charts/redhat/redhat/redhat-dotnet/0.0.1/report.yaml new file mode 100644 index 000000000..d8d8818b6 --- /dev/null +++ b/charts/redhat/redhat/redhat-dotnet/0.0.1/report.yaml @@ -0,0 +1,82 @@ +apiversion: v1 +kind: verify-report +metadata: + tool: + verifier-version: 1.1.0 + profile: + VendorType: partner + version: v1.0 + chart-uri: https://redhat-developer.github.io/redhat-helm-charts/charts/dotnet-0.0.1.tgz + digest: sha256:483cb0144a3e7838e95da3a04a3df4178dc06b40fb4b3276e7c1c2a3b65555ff + digests: + chart: sha256:483cb0144a3e7838e95da3a04a3df4178dc06b40fb4b3276e7c1c2a3b65555ff + package: cd6f9d75d35e8a4f09695047aec97548a5404a1fb392ac9ad9f7e94194d1db34 + lastCertifiedTimestamp: "2021-07-09T21:58:18.976945+00:00" + certifiedOpenShiftVersions: 4.7.0 + chart: + name: dotnet + home: "" + sources: [] + version: 0.0.1 + description: A Helm chart to build and deploy .NET applications + keywords: + - runtimes + - dotnet + maintainers: [] + icon: "" + apiversion: v2 + condition: "" + tags: "" + appversion: "" + deprecated: false + annotations: {} + kubeversion: "" + dependencies: [] + type: "" + chart-overrides: "" +results: + - check: v1.0/contains-test + type: Mandatory + outcome: FAIL + reason: Chart test files do not exist + - check: v1.0/contains-values-schema + type: Mandatory + outcome: PASS + reason: Values schema file exist + - check: v1.0/has-kubeversion + type: Mandatory + outcome: FAIL + reason: Kubernetes version is not specified + - check: v1.0/not-contains-crds + type: Mandatory + outcome: PASS + reason: Chart does not contain CRDs + - check: v1.0/helm-lint + type: Mandatory + outcome: PASS + reason: Helm lint successful + - check: v1.0/not-contain-csi-objects + type: Mandatory + outcome: PASS + reason: CSI objects do not exist + - check: v1.0/has-readme + type: Mandatory + outcome: PASS + reason: Chart has a README + - check: v1.0/is-helm-v3 + type: Mandatory + outcome: PASS + reason: API version is V2, used in Helm 3 + - check: v1.0/images-are-certified + type: Mandatory + outcome: FAIL + reason: 'Image is not Red Hat certified : testRelease:latest : Respository not + found: testRelease' + - check: v1.0/contains-values + type: Mandatory + outcome: PASS + reason: Values file exist + - check: v1.0/chart-testing + type: Mandatory + outcome: PASS + reason: Chart tests have passed diff --git a/charts/redhat/redhat/redhat-eap-xp3/1.0.0/eap-xp3-1.0.0.tgz b/charts/redhat/redhat/redhat-eap-xp3/1.0.0/eap-xp3-1.0.0.tgz new file mode 100644 index 000000000..3022cf57d Binary files /dev/null and b/charts/redhat/redhat/redhat-eap-xp3/1.0.0/eap-xp3-1.0.0.tgz differ diff --git a/charts/redhat/redhat/redhat-eap-xp3/1.0.0/report.yaml b/charts/redhat/redhat/redhat-eap-xp3/1.0.0/report.yaml new file mode 100644 index 000000000..62bbe42d1 --- /dev/null +++ b/charts/redhat/redhat/redhat-eap-xp3/1.0.0/report.yaml @@ -0,0 +1,93 @@ +apiversion: v1 +kind: verify-report +metadata: + tool: + verifier-version: 1.2.2 + profile: + VendorType: partner + version: v1.0 + chart-uri: /charts/1.0.0/eap-xp3-1.0.0.tgz + digest: sha256:85d0347b6c3377037f8ad5287fc0c4a1baef708a65c26669993d2ed5b5f765bb + digests: + chart: sha256:85d0347b6c3377037f8ad5287fc0c4a1baef708a65c26669993d2ed5b5f765bb + package: 1dca1d8a2314713878a2052d674fddfc47063deb3fb67650d95f9bf51b33500b + lastCertifiedTimestamp: "2021-09-02T11:32:44.405532+00:00" + certifiedOpenShiftVersions: N/A + chart: + name: eap-xp3 + home: "" + sources: [] + version: 1.0.0 + description: Build and Deploy EAP XP3 applications on OpenShift + keywords: [] + maintainers: [] + icon: "" + apiversion: v2 + condition: "" + tags: "" + appversion: "3.0" + deprecated: false + annotations: {} + kubeversion: "" + dependencies: + - name: wildfly-common + version: 1.3.0 + repository: https://docs.wildfly.org/wildfly-charts/ + condition: "" + tags: [] + enabled: false + importvalues: [] + alias: "" + type: application + chart-overrides: "" +results: + - check: v1.0/contains-values + type: Mandatory + outcome: PASS + reason: Values file exist + - check: v1.0/contains-values-schema + type: Mandatory + outcome: PASS + reason: Values schema file exist + - check: v1.0/helm-lint + type: Mandatory + outcome: PASS + reason: Helm lint successful + - check: v1.0/not-contain-csi-objects + type: Mandatory + outcome: PASS + reason: CSI objects do not exist + - check: v1.0/images-are-certified + type: Mandatory + outcome: FAIL + reason: 'Failed to certify images : Failed to get images, error running helm template + : execution error at (eap-xp3/templates/buildconfig-bootable-jar.yaml:2:4): + Git source repository URL is required' + - check: v1.0/chart-testing + type: Mandatory + outcome: FAIL + reason: |- + Error running process: executing helm with args "install eap-xp3-18tj2s0xux /root/.cache/chart-verifier/_charts_1_0_0_eap_xp3_1_0_0_tgz/eap-xp3 --namespace default --wait --values /tmp/chart-testing-094611264/values.yaml": exit status 1 + --- + Error: Kubernetes cluster unreachable: Get "http://localhost:8080/version?timeout=32s": dial tcp 127.0.0.1:8080: connect: connection refused + - check: v1.0/has-readme + type: Mandatory + outcome: PASS + reason: Chart has a README + - check: v1.0/is-helm-v3 + type: Mandatory + outcome: PASS + reason: API version is V2, used in Helm 3 + - check: v1.0/contains-test + type: Mandatory + outcome: FAIL + reason: Chart test files do not exist + - check: v1.0/has-kubeversion + type: Mandatory + outcome: FAIL + reason: Kubernetes version is not specified + - check: v1.0/not-contains-crds + type: Mandatory + outcome: PASS + reason: Chart does not contain CRDs + diff --git a/charts/redhat/redhat/redhat-eap-xp3/OWNERS b/charts/redhat/redhat/redhat-eap-xp3/OWNERS new file mode 100644 index 000000000..f0bdf4462 --- /dev/null +++ b/charts/redhat/redhat/redhat-eap-xp3/OWNERS @@ -0,0 +1,10 @@ +chart: + name: redhat-eap-xp3 + shortDescription: Build and Deploy EAP XP 3 applications on OpenShift +publicPgpKey: null +users: + - githubUsername: bstansberry + - githubUsername: jmesnil +vendor: + label: redhat + name: Red Hat \ No newline at end of file diff --git a/charts/redhat/redhat/redhat-eap-xp4/1.0.0/eap-xp4-1.0.0.tgz b/charts/redhat/redhat/redhat-eap-xp4/1.0.0/eap-xp4-1.0.0.tgz new file mode 100644 index 000000000..22bf18dd9 Binary files /dev/null and b/charts/redhat/redhat/redhat-eap-xp4/1.0.0/eap-xp4-1.0.0.tgz differ diff --git a/charts/redhat/redhat/redhat-eap-xp4/OWNERS b/charts/redhat/redhat/redhat-eap-xp4/OWNERS new file mode 100644 index 000000000..8b439d277 --- /dev/null +++ b/charts/redhat/redhat/redhat-eap-xp4/OWNERS @@ -0,0 +1,10 @@ +chart: + name: redhat-eap-xp4 + shortDescription: Build and Deploy EAP XP 4 applications on OpenShift +publicPgpKey: null +users: + - githubUsername: bstansberry + - githubUsername: jmesnil +vendor: + label: redhat + name: Red Hat \ No newline at end of file diff --git a/charts/redhat/redhat/redhat-eap74/1.1.0/eap74-1.1.0.tgz b/charts/redhat/redhat/redhat-eap74/1.1.0/eap74-1.1.0.tgz new file mode 100644 index 000000000..e3f27c2d2 Binary files /dev/null and b/charts/redhat/redhat/redhat-eap74/1.1.0/eap74-1.1.0.tgz differ diff --git a/charts/redhat/redhat/redhat-eap74/1.1.0/report.yaml b/charts/redhat/redhat/redhat-eap74/1.1.0/report.yaml new file mode 100644 index 000000000..267a5082f --- /dev/null +++ b/charts/redhat/redhat/redhat-eap74/1.1.0/report.yaml @@ -0,0 +1,93 @@ +apiversion: v1 +kind: verify-report +metadata: + tool: + verifier-version: 1.2.2 + profile: + VendorType: partner + version: v1.0 + chart-uri: /charts/1.1.0/eap74-1.1.0.tgz + digest: sha256:c21bfc66510ed4deeb5dda0be56c23179335728bd966edcc5110dd8bf12906e1 + digests: + chart: sha256:c21bfc66510ed4deeb5dda0be56c23179335728bd966edcc5110dd8bf12906e1 + package: 76c75d5d114489b62a05093c0571d9183d6bf4c8907147c015b1eaf04d533864 + lastCertifiedTimestamp: "2021-09-01T14:46:21.647631+00:00" + certifiedOpenShiftVersions: N/A + chart: + name: eap74 + home: "" + sources: [] + version: 1.1.0 + description: Build and Deploy EAP 7.4 applications on OpenShift + keywords: [] + maintainers: [] + icon: "" + apiversion: v2 + condition: "" + tags: "" + appversion: "7.4" + deprecated: false + annotations: {} + kubeversion: "" + dependencies: + - name: wildfly-common + version: 1.3.0 + repository: https://docs.wildfly.org/wildfly-charts/ + condition: "" + tags: [] + enabled: false + importvalues: [] + alias: "" + type: application + chart-overrides: "" +results: + - check: v1.0/contains-values + type: Mandatory + outcome: PASS + reason: Values file exist + - check: v1.0/has-kubeversion + type: Mandatory + outcome: FAIL + reason: Kubernetes version is not specified + - check: v1.0/helm-lint + type: Mandatory + outcome: PASS + reason: Helm lint successful + - check: v1.0/not-contain-csi-objects + type: Mandatory + outcome: PASS + reason: CSI objects do not exist + - check: v1.0/images-are-certified + type: Mandatory + outcome: FAIL + reason: 'Failed to certify images : Failed to get images, error running helm template + : execution error at (eap74/templates/buildconfig-s2i-build-artifacts.yaml:2:4): + Git source repository URL is required' + - check: v1.0/is-helm-v3 + type: Mandatory + outcome: PASS + reason: API version is V2, used in Helm 3 + - check: v1.0/contains-test + type: Mandatory + outcome: FAIL + reason: Chart test files do not exist + - check: v1.0/contains-values-schema + type: Mandatory + outcome: PASS + reason: Values schema file exist + - check: v1.0/not-contains-crds + type: Mandatory + outcome: PASS + reason: Chart does not contain CRDs + - check: v1.0/chart-testing + type: Mandatory + outcome: FAIL + reason: |- + Error running process: executing helm with args "install eap74-rh9g9lumgn /root/.cache/chart-verifier/_charts_1_1_0_eap74_1_1_0_tgz/eap74 --namespace default --wait --values /tmp/chart-testing-668347137/values.yaml": exit status 1 + --- + Error: Kubernetes cluster unreachable: Get "http://localhost:8080/version?timeout=32s": dial tcp 127.0.0.1:8080: connect: connection refused + - check: v1.0/has-readme + type: Mandatory + outcome: PASS + reason: Chart has a README + diff --git a/charts/redhat/redhat/redhat-eap74/1.1.1/eap74-1.1.1.tgz b/charts/redhat/redhat/redhat-eap74/1.1.1/eap74-1.1.1.tgz new file mode 100644 index 000000000..7f3a79444 Binary files /dev/null and b/charts/redhat/redhat/redhat-eap74/1.1.1/eap74-1.1.1.tgz differ diff --git a/charts/redhat/redhat/redhat-eap74/1.1.2/eap74-1.1.2.tgz b/charts/redhat/redhat/redhat-eap74/1.1.2/eap74-1.1.2.tgz new file mode 100644 index 000000000..d3fbc3422 Binary files /dev/null and b/charts/redhat/redhat/redhat-eap74/1.1.2/eap74-1.1.2.tgz differ diff --git a/charts/redhat/redhat/redhat-eap74/OWNERS b/charts/redhat/redhat/redhat-eap74/OWNERS new file mode 100644 index 000000000..1ca833bdd --- /dev/null +++ b/charts/redhat/redhat/redhat-eap74/OWNERS @@ -0,0 +1,10 @@ +chart: + name: redhat-eap74 + shortDescription: Build and Deploy EAP 7.4 applications on OpenShift +publicPgpKey: null +users: + - githubUsername: bstansberry + - githubUsername: jmesnil +vendor: + label: redhat + name: Red Hat \ No newline at end of file diff --git a/charts/redhat/redhat/redhat-eap8/1.0.0/eap8-1.0.0.tgz b/charts/redhat/redhat/redhat-eap8/1.0.0/eap8-1.0.0.tgz new file mode 100644 index 000000000..40dddb6d5 Binary files /dev/null and b/charts/redhat/redhat/redhat-eap8/1.0.0/eap8-1.0.0.tgz differ diff --git a/charts/redhat/redhat/redhat-eap8/1.1.2/eap8-1.1.2.tgz b/charts/redhat/redhat/redhat-eap8/1.1.2/eap8-1.1.2.tgz new file mode 100644 index 000000000..760e0456d Binary files /dev/null and b/charts/redhat/redhat/redhat-eap8/1.1.2/eap8-1.1.2.tgz differ diff --git a/charts/redhat/redhat/redhat-eap8/OWNERS b/charts/redhat/redhat/redhat-eap8/OWNERS new file mode 100644 index 000000000..f74962549 --- /dev/null +++ b/charts/redhat/redhat/redhat-eap8/OWNERS @@ -0,0 +1,11 @@ +chart: + name: redhat-eap8 + shortDescription: Build and Deploy JBoss EAP 8 applications on OpenShift +publicPgpKey: null +users: + - githubUsername: bstansberry + - githubUsername: jmesnil + - githubUsername: jfdenise +vendor: + label: redhat + name: Red Hat \ No newline at end of file diff --git a/charts/redhat/redhat/redhat-httpd-imagestreams/0.0.1/src/Chart.yaml b/charts/redhat/redhat/redhat-httpd-imagestreams/0.0.1/src/Chart.yaml new file mode 100644 index 000000000..4ba5c25b7 --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-imagestreams/0.0.1/src/Chart.yaml @@ -0,0 +1,13 @@ +description: |- + This content is expermental, do not use it in production. Red Hat Apache HTTP Server imagestreams. + For more information about HTTPD container see https://github.com/sclorg/httpd-container/. +annotations: + charts.openshift.io/name: Red Hat Apache HTTP Server imagestreams (experimental). +apiVersion: v2 +appVersion: 0.0.1 +kubeVersion: '>=1.20.0' +name: httpd-imagestreams +tags: builder,httpd +sources: + - https://github.com/sclorg/helm-charts +version: 0.0.1 diff --git a/charts/redhat/redhat/redhat-httpd-imagestreams/0.0.1/src/templates/imagestreams.yaml b/charts/redhat/redhat/redhat-httpd-imagestreams/0.0.1/src/templates/imagestreams.yaml new file mode 100644 index 000000000..f24b6e6fa --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-imagestreams/0.0.1/src/templates/imagestreams.yaml @@ -0,0 +1,126 @@ +apiVersion: image.openshift.io/v1 +kind: ImageStream +metadata: + annotations: + openshift.io/display-name: Apache HTTP Server (httpd) + name: httpd +spec: + tags: + - annotations: + description: >- + Build and serve static content via Apache HTTP Server (httpd) on RHEL. + For more information about using this builder image, including + OpenShift considerations, see + https://github.com/sclorg/httpd-container/blob/master/2.4/README.md. + + + WARNING: By selecting this tag, your application will automatically + update to use the latest version of Httpd available on OpenShift, + including major version updates. + iconClass: icon-apache + openshift.io/display-name: Apache HTTP Server (Latest) + openshift.io/provider-display-name: 'Red Hat, Inc.' + sampleRepo: 'https://github.com/sclorg/httpd-ex.git' + supports: httpd + tags: 'builder,httpd' + from: + kind: ImageStreamTag + name: 2.4-ubi8 + referencePolicy: + type: Local + name: latest + - annotations: + description: >- + Build and serve static content via Apache HTTP Server (httpd) 2.4 on + UBI 9. For more information about using this builder image, including + OpenShift considerations, see + https://github.com/sclorg/httpd-container/blob/master/2.4/README.md. + iconClass: icon-apache + openshift.io/display-name: Apache HTTP Server 2.4 (UBI 9) + openshift.io/provider-display-name: 'Red Hat, Inc.' + sampleRepo: 'https://github.com/sclorg/httpd-ex.git' + supports: httpd + tags: 'builder,httpd' + version: '2.4' + from: + kind: DockerImage + name: 'registry.redhat.io/ubi9/httpd-24:latest' + referencePolicy: + type: Local + name: 2.4-ubi9 + - annotations: + description: >- + Build and serve static content via Apache HTTP Server (httpd) 2.4 on + RHEL 8. For more information about using this builder image, including + OpenShift considerations, see + https://github.com/sclorg/httpd-container/blob/master/2.4/README.md. + iconClass: icon-apache + openshift.io/display-name: Apache HTTP Server 2.4 (UBI 8) + openshift.io/provider-display-name: 'Red Hat, Inc.' + sampleRepo: 'https://github.com/sclorg/httpd-ex.git' + supports: httpd + tags: 'builder,httpd' + version: '2.4' + from: + kind: DockerImage + name: 'registry.redhat.io/ubi8/httpd-24:latest' + referencePolicy: + type: Local + name: 2.4-ubi8 + - annotations: + description: >- + Build and serve static content via Apache HTTP Server (httpd) 2.4 on + RHEL 8. For more information about using this builder image, including + OpenShift considerations, see + https://github.com/sclorg/httpd-container/blob/master/2.4/README.md. + iconClass: icon-apache + openshift.io/display-name: Apache HTTP Server 2.4 (RHEL 8) + openshift.io/provider-display-name: 'Red Hat, Inc.' + sampleRepo: 'https://github.com/sclorg/httpd-ex.git' + supports: httpd + tags: 'builder,httpd,hidden' + version: '2.4' + from: + kind: DockerImage + name: registry.redhat.io/rhel8/httpd-24 + referencePolicy: + type: Local + name: 2.4-el8 + - annotations: + description: >- + Build and serve static content via Apache HTTP Server (httpd) 2.4 on + RHEL 7. For more information about using this builder image, including + OpenShift considerations, see + https://github.com/sclorg/httpd-container/blob/master/2.4/README.md. + iconClass: icon-apache + openshift.io/display-name: Apache HTTP Server 2.4 (RHEL 7) + openshift.io/provider-display-name: 'Red Hat, Inc.' + sampleRepo: 'https://github.com/sclorg/httpd-ex.git' + supports: httpd + tags: 'builder,httpd' + version: '2.4' + from: + kind: DockerImage + name: registry.redhat.io/rhscl/httpd-24-rhel7 + referencePolicy: + type: Local + name: 2.4-el7 + - annotations: + description: >- + Build and serve static content via Apache HTTP Server (httpd) 2.4 on + RHEL 7. For more information about using this builder image, including + OpenShift considerations, see + https://github.com/sclorg/httpd-container/blob/master/2.4/README.md. + iconClass: icon-apache + openshift.io/display-name: Apache HTTP Server 2.4 + openshift.io/provider-display-name: 'Red Hat, Inc.' + sampleRepo: 'https://github.com/sclorg/httpd-ex.git' + supports: httpd + tags: 'builder,httpd,hidden' + version: '2.4' + from: + kind: DockerImage + name: registry.redhat.io/rhscl/httpd-24-rhel7 + referencePolicy: + type: Local + name: '2.4' diff --git a/charts/redhat/redhat/redhat-httpd-imagestreams/OWNERS b/charts/redhat/redhat/redhat-httpd-imagestreams/OWNERS new file mode 100644 index 000000000..99b6e6668 --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-imagestreams/OWNERS @@ -0,0 +1,9 @@ +chart: + name: redhat-httpd-imagestreams + description: This is the Red Hat Apache HTTP Server imagestream chart +publicPgpKey: null +users: + - githubUsername: phracek +vendor: + label: redhat + name: Red Hat diff --git a/charts/redhat/redhat/redhat-httpd-template/0.0.1/src/Chart.yaml b/charts/redhat/redhat/redhat-httpd-template/0.0.1/src/Chart.yaml new file mode 100644 index 000000000..c0c0e1d5e --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-template/0.0.1/src/Chart.yaml @@ -0,0 +1,12 @@ +description: This content is expermental, do not use it in production. An example Apache HTTP Server (httpd) application that serves static + content. For more information about using this template, including OpenShift considerations, + see https://github.com/sclorg/httpd-container/blob/master/README.md. +name: httpd-template +tags: quickstart,httpd +version: 0.0.1 +annotations: + charts.openshift.io/name: Red Hat Apache HTTP Server (httpd) application (experimental). +apiVersion: v2 +appVersion: 0.0.1 +sources: + - https://github.com/sclorg/helm-charts diff --git a/charts/redhat/redhat/redhat-httpd-template/0.0.1/src/README.md b/charts/redhat/redhat/redhat-httpd-template/0.0.1/src/README.md new file mode 100644 index 000000000..7fb893105 --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-template/0.0.1/src/README.md @@ -0,0 +1,23 @@ +# Httpd helm chart + +A Helm chart for building and deploying a [Httpd](https://github/sclorg/httpd-container) application on OpenShift. + +For more information about helm charts see the official [Helm Charts Documentation](https://helm.sh/). + +You need to have access to a cluster for each operation with OpenShift 4, like deploying and testing. + +## Values +Below is a table of each value used to configure this chart. + +| Value | Description | Default | Additional Information | +|---------------------------------------------| ----------- | -- | ---------------------- | +| `name` | The name assigned to all of the frontend objects defined in this helm chart. | `httpd-example` | | +| `namespace` | The OpenShift Namespace where the ImageStream resides. | `httpd-template` | | +| `httpd_version` | Version of Httpd image to be used (2.4-el8, or latest). | `2.4-el8` | | +| `memory_limit` | Maximum amount of memory the container can use. | `521Mi` | | +| `source_repository_url` | The URL of the repository with your application source code. | `https://github.com/sclorg/httpd-ex.git` | | +| `source_repository_ref` | Set this to a branch name, tag or other ref of your repository if you are not using the default branch. | | | +| `context_dir` | Set this to the relative path to your project if it is not in the root of your repository. | | | +| `application_domain` | The exposed hostname that will route to the httpd service, if left blank a value will be defaulted. | | | +| `generic_webhook_secret` | A secret string used to configure the Generic webhook. | | | +| `github_webhook_secret` | Github trigger secret. A difficult to guess string encoded as part of the webhook URL. Not encrypted. | | | diff --git a/charts/redhat/redhat/redhat-httpd-template/0.0.1/src/templates/buildconfig.yaml b/charts/redhat/redhat/redhat-httpd-template/0.0.1/src/templates/buildconfig.yaml new file mode 100644 index 000000000..ccc753639 --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-template/0.0.1/src/templates/buildconfig.yaml @@ -0,0 +1,36 @@ +apiVersion: build.openshift.io/v1 +kind: BuildConfig +metadata: + annotations: + description: Defines how to build the application + template.alpha.openshift.io/wait-for-ready: "true" + labels: + app: httpd-example + template: httpd-example + name: {{ .Values.name }} +spec: + output: + to: + kind: ImageStreamTag + name: {{ .Values.name }}:latest + source: + contextDir: {{ .Values.context_dir }} + git: + ref: {{ .Values.source_repository_ref }} + uri: {{ .Values.source_repository_url }} + type: Git + strategy: + sourceStrategy: + from: + kind: ImageStreamTag + name: httpd:{{ .Values.httpd_version }} + type: Source + triggers: + - type: ImageChange + - type: ConfigChange + - type: GitHub + github: + secret: {{ .Values.github_webhook_secret }} + - type: Generic + generic: + secret: {{ .Values.generic_webhook_secret }} diff --git a/charts/redhat/redhat/redhat-httpd-template/0.0.1/src/templates/deploymentconfig.yaml b/charts/redhat/redhat/redhat-httpd-template/0.0.1/src/templates/deploymentconfig.yaml new file mode 100644 index 000000000..a221a78b2 --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-template/0.0.1/src/templates/deploymentconfig.yaml @@ -0,0 +1,54 @@ +apiVersion: apps.openshift.io/v1 +kind: DeploymentConfig +metadata: + annotations: + description: Defines how to deploy the application server + template.alpha.openshift.io/wait-for-ready: "true" + labels: + app: httpd-example + template: httpd-example + name: {{ .Values.name }} +spec: + replicas: 1 + selector: + name: {{ .Values.name }} + strategy: + type: Rolling + template: + metadata: + labels: + name: {{ .Values.name }} + name: {{ .Values.name }} + spec: + containers: + - env: [] + image: "httpd:{{ .Values.httpd_version }}" + livenessProbe: + httpGet: + path: / + port: 8080 + initialDelaySeconds: 30 + timeoutSeconds: 3 + name: httpd-example + ports: + - containerPort: 8080 + readinessProbe: + httpGet: + path: / + port: 8080 + initialDelaySeconds: 3 + timeoutSeconds: 3 + resources: + limits: + memory: {{ .Values.memory_limit }} + triggers: + - imageChangeParams: + automatic: true + containerNames: + - httpd-example + from: + kind: ImageStreamTag + name: "httpd:{{ .Values.httpd_version }}" + namespace: {{ .Values.namespace }} + type: ImageChange + - type: ConfigChange diff --git a/charts/redhat/redhat/redhat-httpd-template/0.0.1/src/templates/route.yaml b/charts/redhat/redhat/redhat-httpd-template/0.0.1/src/templates/route.yaml new file mode 100644 index 000000000..a9c7d1b9f --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-template/0.0.1/src/templates/route.yaml @@ -0,0 +1,12 @@ +apiVersion: route.openshift.io/v1 +kind: Route +metadata: + labels: + app: httpd-example + template: httpd-example + name: {{ .Values.name }} +spec: + host: {{ .Values.application_domain }} + to: + kind: Service + name: {{ .Values.name }} diff --git a/charts/redhat/redhat/redhat-httpd-template/0.0.1/src/templates/service.yaml b/charts/redhat/redhat/redhat-httpd-template/0.0.1/src/templates/service.yaml new file mode 100644 index 000000000..761024c09 --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-template/0.0.1/src/templates/service.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: Service +metadata: + annotations: + description: Exposes and load balances the application pods + labels: + app: httpd-example + template: httpd-example + name: {{ .Values.name }} +spec: + ports: + - name: web + port: 8080 + targetPort: 8080 + selector: + name: {{ .Values.name }} diff --git a/charts/redhat/redhat/redhat-httpd-template/0.0.1/src/values.schema.json b/charts/redhat/redhat/redhat-httpd-template/0.0.1/src/values.schema.json new file mode 100644 index 000000000..13d717ed8 --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-template/0.0.1/src/values.schema.json @@ -0,0 +1,36 @@ +{ + "$schema": "http://json-schema.org/schema#", + "type": "object", + "properties": { + "namespace": { + "type": "string" + }, + "name": { + "type": "string", + "description": "The name assigned to all of the frontend objects defined in this template." + }, + "memory_limit": { + "type": "string", + "title": "Memory limit", + "form": true, + "render": "slider", + "sliderMin": 512, + "sliderMax": 65536, + "sliderUnit": "Mi" + }, + "httpd_version": { + "type": "string", + "description": "Specify HTTPD imagestream tag", + "enum": [ "latest", "2.4-el9", "2.4-el8", "2.4-el7" ] + }, + "application_domain": { + "type": "string", + "description": "The exposed hostname that will route to the httpd service, if left blank a value will be defaulted." + }, + "context_dir": { + "type": "string", + "description": "Set this to the relative path to your project if it is not in the root of your repository." + } + } +} + diff --git a/charts/redhat/redhat/redhat-httpd-template/0.0.1/src/values.yaml b/charts/redhat/redhat/redhat-httpd-template/0.0.1/src/values.yaml new file mode 100644 index 000000000..cd8ee8dd0 --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-template/0.0.1/src/values.yaml @@ -0,0 +1,11 @@ +application_domain: "" # TODO: must define a default value for .application_domain +context_dir: "" # TODO: must define a default value for .context_dir +generic_webhook_secret: "SOMETHING" # TODO: must define a default value for .generic_webhook_secret +github_webhook_secret: "FOOBAR" # TODO: must define a default value for .github_webhook_secret +httpd_version: 2.4-el8 +memory_limit: 512Mi +name: httpd +namespace: openshift +source_repository_ref: master # TODO: must define a default value for .source_repository_ref +source_repository_url: https://github.com/sclorg/httpd-ex.git +expected_str: Welcome to your static httpd application on OpenShift \ No newline at end of file diff --git a/charts/redhat/redhat/redhat-httpd-template/0.0.2/src/Chart.yaml b/charts/redhat/redhat/redhat-httpd-template/0.0.2/src/Chart.yaml new file mode 100644 index 000000000..575a2ae21 --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-template/0.0.2/src/Chart.yaml @@ -0,0 +1,13 @@ +description: This content is expermental, do not use it in production. An example Apache HTTP Server (httpd) application that serves static + content. For more information about using this template, including OpenShift considerations, + see https://github.com/sclorg/httpd-container/blob/master/README.md. +name: httpd-template +tags: quickstart,httpd +version: 0.0.2 +kubeVersion: '>=1.20.0' +annotations: + charts.openshift.io/name: Red Hat Apache HTTP Server (httpd) application (experimental). +apiVersion: v2 +appVersion: 0.0.2 +sources: + - https://github.com/sclorg/helm-charts diff --git a/charts/redhat/redhat/redhat-httpd-template/0.0.2/src/README.md b/charts/redhat/redhat/redhat-httpd-template/0.0.2/src/README.md new file mode 100644 index 000000000..7fb893105 --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-template/0.0.2/src/README.md @@ -0,0 +1,23 @@ +# Httpd helm chart + +A Helm chart for building and deploying a [Httpd](https://github/sclorg/httpd-container) application on OpenShift. + +For more information about helm charts see the official [Helm Charts Documentation](https://helm.sh/). + +You need to have access to a cluster for each operation with OpenShift 4, like deploying and testing. + +## Values +Below is a table of each value used to configure this chart. + +| Value | Description | Default | Additional Information | +|---------------------------------------------| ----------- | -- | ---------------------- | +| `name` | The name assigned to all of the frontend objects defined in this helm chart. | `httpd-example` | | +| `namespace` | The OpenShift Namespace where the ImageStream resides. | `httpd-template` | | +| `httpd_version` | Version of Httpd image to be used (2.4-el8, or latest). | `2.4-el8` | | +| `memory_limit` | Maximum amount of memory the container can use. | `521Mi` | | +| `source_repository_url` | The URL of the repository with your application source code. | `https://github.com/sclorg/httpd-ex.git` | | +| `source_repository_ref` | Set this to a branch name, tag or other ref of your repository if you are not using the default branch. | | | +| `context_dir` | Set this to the relative path to your project if it is not in the root of your repository. | | | +| `application_domain` | The exposed hostname that will route to the httpd service, if left blank a value will be defaulted. | | | +| `generic_webhook_secret` | A secret string used to configure the Generic webhook. | | | +| `github_webhook_secret` | Github trigger secret. A difficult to guess string encoded as part of the webhook URL. Not encrypted. | | | diff --git a/charts/redhat/redhat/redhat-httpd-template/0.0.2/src/templates/buildconfig.yaml b/charts/redhat/redhat/redhat-httpd-template/0.0.2/src/templates/buildconfig.yaml new file mode 100644 index 000000000..ccc753639 --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-template/0.0.2/src/templates/buildconfig.yaml @@ -0,0 +1,36 @@ +apiVersion: build.openshift.io/v1 +kind: BuildConfig +metadata: + annotations: + description: Defines how to build the application + template.alpha.openshift.io/wait-for-ready: "true" + labels: + app: httpd-example + template: httpd-example + name: {{ .Values.name }} +spec: + output: + to: + kind: ImageStreamTag + name: {{ .Values.name }}:latest + source: + contextDir: {{ .Values.context_dir }} + git: + ref: {{ .Values.source_repository_ref }} + uri: {{ .Values.source_repository_url }} + type: Git + strategy: + sourceStrategy: + from: + kind: ImageStreamTag + name: httpd:{{ .Values.httpd_version }} + type: Source + triggers: + - type: ImageChange + - type: ConfigChange + - type: GitHub + github: + secret: {{ .Values.github_webhook_secret }} + - type: Generic + generic: + secret: {{ .Values.generic_webhook_secret }} diff --git a/charts/redhat/redhat/redhat-httpd-template/0.0.2/src/templates/deploymentconfig.yaml b/charts/redhat/redhat/redhat-httpd-template/0.0.2/src/templates/deploymentconfig.yaml new file mode 100644 index 000000000..a221a78b2 --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-template/0.0.2/src/templates/deploymentconfig.yaml @@ -0,0 +1,54 @@ +apiVersion: apps.openshift.io/v1 +kind: DeploymentConfig +metadata: + annotations: + description: Defines how to deploy the application server + template.alpha.openshift.io/wait-for-ready: "true" + labels: + app: httpd-example + template: httpd-example + name: {{ .Values.name }} +spec: + replicas: 1 + selector: + name: {{ .Values.name }} + strategy: + type: Rolling + template: + metadata: + labels: + name: {{ .Values.name }} + name: {{ .Values.name }} + spec: + containers: + - env: [] + image: "httpd:{{ .Values.httpd_version }}" + livenessProbe: + httpGet: + path: / + port: 8080 + initialDelaySeconds: 30 + timeoutSeconds: 3 + name: httpd-example + ports: + - containerPort: 8080 + readinessProbe: + httpGet: + path: / + port: 8080 + initialDelaySeconds: 3 + timeoutSeconds: 3 + resources: + limits: + memory: {{ .Values.memory_limit }} + triggers: + - imageChangeParams: + automatic: true + containerNames: + - httpd-example + from: + kind: ImageStreamTag + name: "httpd:{{ .Values.httpd_version }}" + namespace: {{ .Values.namespace }} + type: ImageChange + - type: ConfigChange diff --git a/charts/redhat/redhat/redhat-httpd-template/0.0.2/src/templates/route.yaml b/charts/redhat/redhat/redhat-httpd-template/0.0.2/src/templates/route.yaml new file mode 100644 index 000000000..a9c7d1b9f --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-template/0.0.2/src/templates/route.yaml @@ -0,0 +1,12 @@ +apiVersion: route.openshift.io/v1 +kind: Route +metadata: + labels: + app: httpd-example + template: httpd-example + name: {{ .Values.name }} +spec: + host: {{ .Values.application_domain }} + to: + kind: Service + name: {{ .Values.name }} diff --git a/charts/redhat/redhat/redhat-httpd-template/0.0.2/src/templates/service.yaml b/charts/redhat/redhat/redhat-httpd-template/0.0.2/src/templates/service.yaml new file mode 100644 index 000000000..761024c09 --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-template/0.0.2/src/templates/service.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: Service +metadata: + annotations: + description: Exposes and load balances the application pods + labels: + app: httpd-example + template: httpd-example + name: {{ .Values.name }} +spec: + ports: + - name: web + port: 8080 + targetPort: 8080 + selector: + name: {{ .Values.name }} diff --git a/charts/redhat/redhat/redhat-httpd-template/0.0.2/src/templates/tests/test-httpd-connection.yaml b/charts/redhat/redhat/redhat-httpd-template/0.0.2/src/templates/tests/test-httpd-connection.yaml new file mode 100644 index 000000000..437f3f207 --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-template/0.0.2/src/templates/tests/test-httpd-connection.yaml @@ -0,0 +1,22 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ .Release.Name }}-connection-test" + namespace: "{{ .Release.Namespace }}" + annotations: + "helm.sh/hook": test + labels: + name: {{ .Values.database_service_name }} +spec: + #serviceAccount: {{ .Values.serviceAccount }} + containers: + - name: "postgresql-{{ .Values.image.tag }}-connection-test" + image: "registry.redhat.io/rhel8/httpd-24:latest" + imagePullPolicy: IfNotPresent + command: + - /bin/bash + - -ec + - "curl httpd-example | grep \"Welcome to your static httpd application on OpenShift\"" + lookupPolicy: + local: true + restartPolicy: Never diff --git a/charts/redhat/redhat/redhat-httpd-template/0.0.2/src/values.schema.json b/charts/redhat/redhat/redhat-httpd-template/0.0.2/src/values.schema.json new file mode 100644 index 000000000..13d717ed8 --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-template/0.0.2/src/values.schema.json @@ -0,0 +1,36 @@ +{ + "$schema": "http://json-schema.org/schema#", + "type": "object", + "properties": { + "namespace": { + "type": "string" + }, + "name": { + "type": "string", + "description": "The name assigned to all of the frontend objects defined in this template." + }, + "memory_limit": { + "type": "string", + "title": "Memory limit", + "form": true, + "render": "slider", + "sliderMin": 512, + "sliderMax": 65536, + "sliderUnit": "Mi" + }, + "httpd_version": { + "type": "string", + "description": "Specify HTTPD imagestream tag", + "enum": [ "latest", "2.4-el9", "2.4-el8", "2.4-el7" ] + }, + "application_domain": { + "type": "string", + "description": "The exposed hostname that will route to the httpd service, if left blank a value will be defaulted." + }, + "context_dir": { + "type": "string", + "description": "Set this to the relative path to your project if it is not in the root of your repository." + } + } +} + diff --git a/charts/redhat/redhat/redhat-httpd-template/0.0.2/src/values.yaml b/charts/redhat/redhat/redhat-httpd-template/0.0.2/src/values.yaml new file mode 100644 index 000000000..4668c8849 --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-template/0.0.2/src/values.yaml @@ -0,0 +1,11 @@ +application_domain: "" # TODO: must define a default value for .application_domain +context_dir: "" # TODO: must define a default value for .context_dir +generic_webhook_secret: "SOMETHING" # TODO: must define a default value for .generic_webhook_secret +github_webhook_secret: "FOOBAR" # TODO: must define a default value for .github_webhook_secret +httpd_version: 2.4-el8 +memory_limit: 512Mi +name: httpd +namespace: openshift +source_repository_ref: master # TODO: must define a default value for .source_repository_ref +source_repository_url: https://github.com/sclorg/httpd-ex.git +expected_str: Welcome to your static httpd application on OpenShift diff --git a/charts/redhat/redhat/redhat-httpd-template/0.0.3/src/Chart.yaml b/charts/redhat/redhat/redhat-httpd-template/0.0.3/src/Chart.yaml new file mode 100644 index 000000000..f5581838c --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-template/0.0.3/src/Chart.yaml @@ -0,0 +1,13 @@ +description: This content is expermental, do not use it in production. An example Apache HTTP Server (httpd) application that serves static + content. For more information about using this template, including OpenShift considerations, + see https://github.com/sclorg/httpd-container/blob/master/README.md. +name: httpd-template +tags: quickstart,httpd +version: 0.0.3 +kubeVersion: '>=1.20.0' +annotations: + charts.openshift.io/name: Red Hat Apache HTTP Server (httpd) application (experimental). +apiVersion: v2 +appVersion: 0.0.3 +sources: + - https://github.com/sclorg/helm-charts diff --git a/charts/redhat/redhat/redhat-httpd-template/0.0.3/src/README.md b/charts/redhat/redhat/redhat-httpd-template/0.0.3/src/README.md new file mode 100644 index 000000000..7fb893105 --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-template/0.0.3/src/README.md @@ -0,0 +1,23 @@ +# Httpd helm chart + +A Helm chart for building and deploying a [Httpd](https://github/sclorg/httpd-container) application on OpenShift. + +For more information about helm charts see the official [Helm Charts Documentation](https://helm.sh/). + +You need to have access to a cluster for each operation with OpenShift 4, like deploying and testing. + +## Values +Below is a table of each value used to configure this chart. + +| Value | Description | Default | Additional Information | +|---------------------------------------------| ----------- | -- | ---------------------- | +| `name` | The name assigned to all of the frontend objects defined in this helm chart. | `httpd-example` | | +| `namespace` | The OpenShift Namespace where the ImageStream resides. | `httpd-template` | | +| `httpd_version` | Version of Httpd image to be used (2.4-el8, or latest). | `2.4-el8` | | +| `memory_limit` | Maximum amount of memory the container can use. | `521Mi` | | +| `source_repository_url` | The URL of the repository with your application source code. | `https://github.com/sclorg/httpd-ex.git` | | +| `source_repository_ref` | Set this to a branch name, tag or other ref of your repository if you are not using the default branch. | | | +| `context_dir` | Set this to the relative path to your project if it is not in the root of your repository. | | | +| `application_domain` | The exposed hostname that will route to the httpd service, if left blank a value will be defaulted. | | | +| `generic_webhook_secret` | A secret string used to configure the Generic webhook. | | | +| `github_webhook_secret` | Github trigger secret. A difficult to guess string encoded as part of the webhook URL. Not encrypted. | | | diff --git a/charts/redhat/redhat/redhat-httpd-template/0.0.3/src/templates/buildconfig.yaml b/charts/redhat/redhat/redhat-httpd-template/0.0.3/src/templates/buildconfig.yaml new file mode 100644 index 000000000..ccc753639 --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-template/0.0.3/src/templates/buildconfig.yaml @@ -0,0 +1,36 @@ +apiVersion: build.openshift.io/v1 +kind: BuildConfig +metadata: + annotations: + description: Defines how to build the application + template.alpha.openshift.io/wait-for-ready: "true" + labels: + app: httpd-example + template: httpd-example + name: {{ .Values.name }} +spec: + output: + to: + kind: ImageStreamTag + name: {{ .Values.name }}:latest + source: + contextDir: {{ .Values.context_dir }} + git: + ref: {{ .Values.source_repository_ref }} + uri: {{ .Values.source_repository_url }} + type: Git + strategy: + sourceStrategy: + from: + kind: ImageStreamTag + name: httpd:{{ .Values.httpd_version }} + type: Source + triggers: + - type: ImageChange + - type: ConfigChange + - type: GitHub + github: + secret: {{ .Values.github_webhook_secret }} + - type: Generic + generic: + secret: {{ .Values.generic_webhook_secret }} diff --git a/charts/redhat/redhat/redhat-httpd-template/0.0.3/src/templates/deploymentconfig.yaml b/charts/redhat/redhat/redhat-httpd-template/0.0.3/src/templates/deploymentconfig.yaml new file mode 100644 index 000000000..a221a78b2 --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-template/0.0.3/src/templates/deploymentconfig.yaml @@ -0,0 +1,54 @@ +apiVersion: apps.openshift.io/v1 +kind: DeploymentConfig +metadata: + annotations: + description: Defines how to deploy the application server + template.alpha.openshift.io/wait-for-ready: "true" + labels: + app: httpd-example + template: httpd-example + name: {{ .Values.name }} +spec: + replicas: 1 + selector: + name: {{ .Values.name }} + strategy: + type: Rolling + template: + metadata: + labels: + name: {{ .Values.name }} + name: {{ .Values.name }} + spec: + containers: + - env: [] + image: "httpd:{{ .Values.httpd_version }}" + livenessProbe: + httpGet: + path: / + port: 8080 + initialDelaySeconds: 30 + timeoutSeconds: 3 + name: httpd-example + ports: + - containerPort: 8080 + readinessProbe: + httpGet: + path: / + port: 8080 + initialDelaySeconds: 3 + timeoutSeconds: 3 + resources: + limits: + memory: {{ .Values.memory_limit }} + triggers: + - imageChangeParams: + automatic: true + containerNames: + - httpd-example + from: + kind: ImageStreamTag + name: "httpd:{{ .Values.httpd_version }}" + namespace: {{ .Values.namespace }} + type: ImageChange + - type: ConfigChange diff --git a/charts/redhat/redhat/redhat-httpd-template/0.0.3/src/templates/route.yaml b/charts/redhat/redhat/redhat-httpd-template/0.0.3/src/templates/route.yaml new file mode 100644 index 000000000..a9c7d1b9f --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-template/0.0.3/src/templates/route.yaml @@ -0,0 +1,12 @@ +apiVersion: route.openshift.io/v1 +kind: Route +metadata: + labels: + app: httpd-example + template: httpd-example + name: {{ .Values.name }} +spec: + host: {{ .Values.application_domain }} + to: + kind: Service + name: {{ .Values.name }} diff --git a/charts/redhat/redhat/redhat-httpd-template/0.0.3/src/templates/service.yaml b/charts/redhat/redhat/redhat-httpd-template/0.0.3/src/templates/service.yaml new file mode 100644 index 000000000..761024c09 --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-template/0.0.3/src/templates/service.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: Service +metadata: + annotations: + description: Exposes and load balances the application pods + labels: + app: httpd-example + template: httpd-example + name: {{ .Values.name }} +spec: + ports: + - name: web + port: 8080 + targetPort: 8080 + selector: + name: {{ .Values.name }} diff --git a/charts/redhat/redhat/redhat-httpd-template/0.0.3/src/templates/tests/test-httpd-connection.yaml b/charts/redhat/redhat/redhat-httpd-template/0.0.3/src/templates/tests/test-httpd-connection.yaml new file mode 100644 index 000000000..516f0b241 --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-template/0.0.3/src/templates/tests/test-httpd-connection.yaml @@ -0,0 +1,22 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ .Release.Name }}-connection-test" + namespace: "{{ .Release.Namespace }}" + annotations: + "helm.sh/hook": test + labels: + name: {{ .Values.database_service_name }} +spec: + #serviceAccount: {{ .Values.serviceAccount }} + containers: + - name: "httpd-connection-test" + image: "registry.redhat.io/rhel8/httpd-24:latest" + imagePullPolicy: IfNotPresent + command: + - /bin/bash + - -ec + - "curl httpd-example | grep \"Welcome to your static httpd application on OpenShift\"" + lookupPolicy: + local: true + restartPolicy: Never diff --git a/charts/redhat/redhat/redhat-httpd-template/0.0.3/src/values.schema.json b/charts/redhat/redhat/redhat-httpd-template/0.0.3/src/values.schema.json new file mode 100644 index 000000000..13d717ed8 --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-template/0.0.3/src/values.schema.json @@ -0,0 +1,36 @@ +{ + "$schema": "http://json-schema.org/schema#", + "type": "object", + "properties": { + "namespace": { + "type": "string" + }, + "name": { + "type": "string", + "description": "The name assigned to all of the frontend objects defined in this template." + }, + "memory_limit": { + "type": "string", + "title": "Memory limit", + "form": true, + "render": "slider", + "sliderMin": 512, + "sliderMax": 65536, + "sliderUnit": "Mi" + }, + "httpd_version": { + "type": "string", + "description": "Specify HTTPD imagestream tag", + "enum": [ "latest", "2.4-el9", "2.4-el8", "2.4-el7" ] + }, + "application_domain": { + "type": "string", + "description": "The exposed hostname that will route to the httpd service, if left blank a value will be defaulted." + }, + "context_dir": { + "type": "string", + "description": "Set this to the relative path to your project if it is not in the root of your repository." + } + } +} + diff --git a/charts/redhat/redhat/redhat-httpd-template/0.0.3/src/values.yaml b/charts/redhat/redhat/redhat-httpd-template/0.0.3/src/values.yaml new file mode 100644 index 000000000..4668c8849 --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-template/0.0.3/src/values.yaml @@ -0,0 +1,11 @@ +application_domain: "" # TODO: must define a default value for .application_domain +context_dir: "" # TODO: must define a default value for .context_dir +generic_webhook_secret: "SOMETHING" # TODO: must define a default value for .generic_webhook_secret +github_webhook_secret: "FOOBAR" # TODO: must define a default value for .github_webhook_secret +httpd_version: 2.4-el8 +memory_limit: 512Mi +name: httpd +namespace: openshift +source_repository_ref: master # TODO: must define a default value for .source_repository_ref +source_repository_url: https://github.com/sclorg/httpd-ex.git +expected_str: Welcome to your static httpd application on OpenShift diff --git a/charts/redhat/redhat/redhat-httpd-template/0.0.4/src/Chart.yaml b/charts/redhat/redhat/redhat-httpd-template/0.0.4/src/Chart.yaml new file mode 100644 index 000000000..332371a11 --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-template/0.0.4/src/Chart.yaml @@ -0,0 +1,13 @@ +description: This content is expermental, do not use it in production. An example Apache HTTP Server (httpd) application that serves static + content. For more information about using this template, including OpenShift considerations, + see https://github.com/sclorg/httpd-container/blob/master/README.md. +name: httpd-template +tags: quickstart,httpd +version: 0.0.4 +kubeVersion: '>=1.20.0' +annotations: + charts.openshift.io/name: Red Hat Apache HTTP Server (httpd) application (experimental). +apiVersion: v2 +appVersion: 0.0.4 +sources: + - https://github.com/sclorg/helm-charts diff --git a/charts/redhat/redhat/redhat-httpd-template/0.0.4/src/README.md b/charts/redhat/redhat/redhat-httpd-template/0.0.4/src/README.md new file mode 100644 index 000000000..7fb893105 --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-template/0.0.4/src/README.md @@ -0,0 +1,23 @@ +# Httpd helm chart + +A Helm chart for building and deploying a [Httpd](https://github/sclorg/httpd-container) application on OpenShift. + +For more information about helm charts see the official [Helm Charts Documentation](https://helm.sh/). + +You need to have access to a cluster for each operation with OpenShift 4, like deploying and testing. + +## Values +Below is a table of each value used to configure this chart. + +| Value | Description | Default | Additional Information | +|---------------------------------------------| ----------- | -- | ---------------------- | +| `name` | The name assigned to all of the frontend objects defined in this helm chart. | `httpd-example` | | +| `namespace` | The OpenShift Namespace where the ImageStream resides. | `httpd-template` | | +| `httpd_version` | Version of Httpd image to be used (2.4-el8, or latest). | `2.4-el8` | | +| `memory_limit` | Maximum amount of memory the container can use. | `521Mi` | | +| `source_repository_url` | The URL of the repository with your application source code. | `https://github.com/sclorg/httpd-ex.git` | | +| `source_repository_ref` | Set this to a branch name, tag or other ref of your repository if you are not using the default branch. | | | +| `context_dir` | Set this to the relative path to your project if it is not in the root of your repository. | | | +| `application_domain` | The exposed hostname that will route to the httpd service, if left blank a value will be defaulted. | | | +| `generic_webhook_secret` | A secret string used to configure the Generic webhook. | | | +| `github_webhook_secret` | Github trigger secret. A difficult to guess string encoded as part of the webhook URL. Not encrypted. | | | diff --git a/charts/redhat/redhat/redhat-httpd-template/0.0.4/src/templates/buildconfig.yaml b/charts/redhat/redhat/redhat-httpd-template/0.0.4/src/templates/buildconfig.yaml new file mode 100644 index 000000000..ccc753639 --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-template/0.0.4/src/templates/buildconfig.yaml @@ -0,0 +1,36 @@ +apiVersion: build.openshift.io/v1 +kind: BuildConfig +metadata: + annotations: + description: Defines how to build the application + template.alpha.openshift.io/wait-for-ready: "true" + labels: + app: httpd-example + template: httpd-example + name: {{ .Values.name }} +spec: + output: + to: + kind: ImageStreamTag + name: {{ .Values.name }}:latest + source: + contextDir: {{ .Values.context_dir }} + git: + ref: {{ .Values.source_repository_ref }} + uri: {{ .Values.source_repository_url }} + type: Git + strategy: + sourceStrategy: + from: + kind: ImageStreamTag + name: httpd:{{ .Values.httpd_version }} + type: Source + triggers: + - type: ImageChange + - type: ConfigChange + - type: GitHub + github: + secret: {{ .Values.github_webhook_secret }} + - type: Generic + generic: + secret: {{ .Values.generic_webhook_secret }} diff --git a/charts/redhat/redhat/redhat-httpd-template/0.0.4/src/templates/deploymentconfig.yaml b/charts/redhat/redhat/redhat-httpd-template/0.0.4/src/templates/deploymentconfig.yaml new file mode 100644 index 000000000..e2e1b85f2 --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-template/0.0.4/src/templates/deploymentconfig.yaml @@ -0,0 +1,54 @@ +apiVersion: apps.openshift.io/v1 +kind: DeploymentConfig +metadata: + annotations: + description: Defines how to deploy the application server + template.alpha.openshift.io/wait-for-ready: "true" + labels: + app: httpd-example + template: httpd-example + name: {{ .Values.name }} +spec: + replicas: 1 + selector: + name: {{ .Values.name }} + strategy: + type: Rolling + template: + metadata: + labels: + name: {{ .Values.name }} + name: {{ .Values.name }} + spec: + containers: + - env: [] + image: "{{ .Values.name }}:latest" + livenessProbe: + httpGet: + path: / + port: 8080 + initialDelaySeconds: 30 + timeoutSeconds: 3 + name: httpd-example + ports: + - containerPort: 8080 + readinessProbe: + httpGet: + path: / + port: 8080 + initialDelaySeconds: 3 + timeoutSeconds: 3 + resources: + limits: + memory: {{ .Values.memory_limit }} + triggers: + - imageChangeParams: + automatic: true + containerNames: + - httpd-example + from: + kind: ImageStreamTag + name: "{{ .Values.name }}:latest" + namespace: {{ .Values.namespace }} + type: ImageChange + - type: ConfigChange diff --git a/charts/redhat/redhat/redhat-httpd-template/0.0.4/src/templates/route.yaml b/charts/redhat/redhat/redhat-httpd-template/0.0.4/src/templates/route.yaml new file mode 100644 index 000000000..a9c7d1b9f --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-template/0.0.4/src/templates/route.yaml @@ -0,0 +1,12 @@ +apiVersion: route.openshift.io/v1 +kind: Route +metadata: + labels: + app: httpd-example + template: httpd-example + name: {{ .Values.name }} +spec: + host: {{ .Values.application_domain }} + to: + kind: Service + name: {{ .Values.name }} diff --git a/charts/redhat/redhat/redhat-httpd-template/0.0.4/src/templates/service.yaml b/charts/redhat/redhat/redhat-httpd-template/0.0.4/src/templates/service.yaml new file mode 100644 index 000000000..761024c09 --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-template/0.0.4/src/templates/service.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: Service +metadata: + annotations: + description: Exposes and load balances the application pods + labels: + app: httpd-example + template: httpd-example + name: {{ .Values.name }} +spec: + ports: + - name: web + port: 8080 + targetPort: 8080 + selector: + name: {{ .Values.name }} diff --git a/charts/redhat/redhat/redhat-httpd-template/0.0.4/src/templates/tests/test-httpd-connection.yaml b/charts/redhat/redhat/redhat-httpd-template/0.0.4/src/templates/tests/test-httpd-connection.yaml new file mode 100644 index 000000000..b63dce1f4 --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-template/0.0.4/src/templates/tests/test-httpd-connection.yaml @@ -0,0 +1,23 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ .Release.Name }}-connection-test" + namespace: "{{ .Release.Namespace }}" + annotations: + "helm.sh/hook": test + labels: + name: {{ .Values.database_service_name }} +spec: + #serviceAccount: {{ .Values.serviceAccount }} + containers: + - name: "httpd-connection-test" + image: "registry.redhat.io/rhel8/httpd-24:latest" + imagePullPolicy: IfNotPresent + command: + - '/bin/bash' + - '-ec' + - > + curl {{ .Values.name }}.{{ .Release.Namespace}}:8080 | grep "{{ .Values.expected_str }}" + lookupPolicy: + local: true + restartPolicy: Never diff --git a/charts/redhat/redhat/redhat-httpd-template/0.0.4/src/values.schema.json b/charts/redhat/redhat/redhat-httpd-template/0.0.4/src/values.schema.json new file mode 100644 index 000000000..13d717ed8 --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-template/0.0.4/src/values.schema.json @@ -0,0 +1,36 @@ +{ + "$schema": "http://json-schema.org/schema#", + "type": "object", + "properties": { + "namespace": { + "type": "string" + }, + "name": { + "type": "string", + "description": "The name assigned to all of the frontend objects defined in this template." + }, + "memory_limit": { + "type": "string", + "title": "Memory limit", + "form": true, + "render": "slider", + "sliderMin": 512, + "sliderMax": 65536, + "sliderUnit": "Mi" + }, + "httpd_version": { + "type": "string", + "description": "Specify HTTPD imagestream tag", + "enum": [ "latest", "2.4-el9", "2.4-el8", "2.4-el7" ] + }, + "application_domain": { + "type": "string", + "description": "The exposed hostname that will route to the httpd service, if left blank a value will be defaulted." + }, + "context_dir": { + "type": "string", + "description": "Set this to the relative path to your project if it is not in the root of your repository." + } + } +} + diff --git a/charts/redhat/redhat/redhat-httpd-template/0.0.4/src/values.yaml b/charts/redhat/redhat/redhat-httpd-template/0.0.4/src/values.yaml new file mode 100644 index 000000000..4668c8849 --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-template/0.0.4/src/values.yaml @@ -0,0 +1,11 @@ +application_domain: "" # TODO: must define a default value for .application_domain +context_dir: "" # TODO: must define a default value for .context_dir +generic_webhook_secret: "SOMETHING" # TODO: must define a default value for .generic_webhook_secret +github_webhook_secret: "FOOBAR" # TODO: must define a default value for .github_webhook_secret +httpd_version: 2.4-el8 +memory_limit: 512Mi +name: httpd +namespace: openshift +source_repository_ref: master # TODO: must define a default value for .source_repository_ref +source_repository_url: https://github.com/sclorg/httpd-ex.git +expected_str: Welcome to your static httpd application on OpenShift diff --git a/charts/redhat/redhat/redhat-httpd-template/0.0.5/src/Chart.yaml b/charts/redhat/redhat/redhat-httpd-template/0.0.5/src/Chart.yaml new file mode 100644 index 000000000..d3506d332 --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-template/0.0.5/src/Chart.yaml @@ -0,0 +1,13 @@ +description: This content is experimental, do not use it in production. An example Apache HTTP Server (httpd) application that serves static + content. For more information about using this template, including OpenShift considerations, + see https://github.com/sclorg/httpd-container/blob/master/README.md. +name: httpd-template +tags: quickstart,httpd +kubeVersion: '>=1.20.0' +version: 0.0.5 +annotations: + charts.openshift.io/name: Red Hat Apache HTTP Server (httpd) application (experimental). +apiVersion: v2 +appVersion: 0.0.5 +sources: + - https://github.com/sclorg/helm-charts diff --git a/charts/redhat/redhat/redhat-httpd-template/0.0.5/src/README.md b/charts/redhat/redhat/redhat-httpd-template/0.0.5/src/README.md new file mode 100644 index 000000000..7fb893105 --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-template/0.0.5/src/README.md @@ -0,0 +1,23 @@ +# Httpd helm chart + +A Helm chart for building and deploying a [Httpd](https://github/sclorg/httpd-container) application on OpenShift. + +For more information about helm charts see the official [Helm Charts Documentation](https://helm.sh/). + +You need to have access to a cluster for each operation with OpenShift 4, like deploying and testing. + +## Values +Below is a table of each value used to configure this chart. + +| Value | Description | Default | Additional Information | +|---------------------------------------------| ----------- | -- | ---------------------- | +| `name` | The name assigned to all of the frontend objects defined in this helm chart. | `httpd-example` | | +| `namespace` | The OpenShift Namespace where the ImageStream resides. | `httpd-template` | | +| `httpd_version` | Version of Httpd image to be used (2.4-el8, or latest). | `2.4-el8` | | +| `memory_limit` | Maximum amount of memory the container can use. | `521Mi` | | +| `source_repository_url` | The URL of the repository with your application source code. | `https://github.com/sclorg/httpd-ex.git` | | +| `source_repository_ref` | Set this to a branch name, tag or other ref of your repository if you are not using the default branch. | | | +| `context_dir` | Set this to the relative path to your project if it is not in the root of your repository. | | | +| `application_domain` | The exposed hostname that will route to the httpd service, if left blank a value will be defaulted. | | | +| `generic_webhook_secret` | A secret string used to configure the Generic webhook. | | | +| `github_webhook_secret` | Github trigger secret. A difficult to guess string encoded as part of the webhook URL. Not encrypted. | | | diff --git a/charts/redhat/redhat/redhat-httpd-template/0.0.5/src/templates/buildconfig.yaml b/charts/redhat/redhat/redhat-httpd-template/0.0.5/src/templates/buildconfig.yaml new file mode 100644 index 000000000..ccc753639 --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-template/0.0.5/src/templates/buildconfig.yaml @@ -0,0 +1,36 @@ +apiVersion: build.openshift.io/v1 +kind: BuildConfig +metadata: + annotations: + description: Defines how to build the application + template.alpha.openshift.io/wait-for-ready: "true" + labels: + app: httpd-example + template: httpd-example + name: {{ .Values.name }} +spec: + output: + to: + kind: ImageStreamTag + name: {{ .Values.name }}:latest + source: + contextDir: {{ .Values.context_dir }} + git: + ref: {{ .Values.source_repository_ref }} + uri: {{ .Values.source_repository_url }} + type: Git + strategy: + sourceStrategy: + from: + kind: ImageStreamTag + name: httpd:{{ .Values.httpd_version }} + type: Source + triggers: + - type: ImageChange + - type: ConfigChange + - type: GitHub + github: + secret: {{ .Values.github_webhook_secret }} + - type: Generic + generic: + secret: {{ .Values.generic_webhook_secret }} diff --git a/charts/redhat/redhat/redhat-httpd-template/0.0.5/src/templates/deployment.yaml b/charts/redhat/redhat/redhat-httpd-template/0.0.5/src/templates/deployment.yaml new file mode 100644 index 000000000..baacae3af --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-template/0.0.5/src/templates/deployment.yaml @@ -0,0 +1,54 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + annotations: + description: Defines how to deploy the application server + template.alpha.openshift.io/wait-for-ready: "true" + image.openshift.io/triggers: |- + [ + { + "from": { + "kind": "ImageStreamTag", + "name": "{{ .Values.name }}:latest" + }, + "fieldPath": "spec.template.spec.containers[0].image" + } + ] + labels: + app: httpd-example + template: httpd-example + name: {{ .Values.name }} +spec: + replicas: 1 + selector: + matchLabels: + name: {{ .Values.name }} + strategy: + type: RollingUpdate + template: + metadata: + labels: + name: {{ .Values.name }} + name: {{ .Values.name }} + spec: + containers: + - env: [] + image: " " + livenessProbe: + httpGet: + path: / + port: 8080 + initialDelaySeconds: 30 + timeoutSeconds: 3 + name: httpd-example + ports: + - containerPort: 8080 + readinessProbe: + httpGet: + path: / + port: 8080 + initialDelaySeconds: 3 + timeoutSeconds: 3 + resources: + limits: + memory: {{ .Values.memory_limit }} diff --git a/charts/redhat/redhat/redhat-httpd-template/0.0.5/src/templates/route.yaml b/charts/redhat/redhat/redhat-httpd-template/0.0.5/src/templates/route.yaml new file mode 100644 index 000000000..a9c7d1b9f --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-template/0.0.5/src/templates/route.yaml @@ -0,0 +1,12 @@ +apiVersion: route.openshift.io/v1 +kind: Route +metadata: + labels: + app: httpd-example + template: httpd-example + name: {{ .Values.name }} +spec: + host: {{ .Values.application_domain }} + to: + kind: Service + name: {{ .Values.name }} diff --git a/charts/redhat/redhat/redhat-httpd-template/0.0.5/src/templates/service.yaml b/charts/redhat/redhat/redhat-httpd-template/0.0.5/src/templates/service.yaml new file mode 100644 index 000000000..761024c09 --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-template/0.0.5/src/templates/service.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: Service +metadata: + annotations: + description: Exposes and load balances the application pods + labels: + app: httpd-example + template: httpd-example + name: {{ .Values.name }} +spec: + ports: + - name: web + port: 8080 + targetPort: 8080 + selector: + name: {{ .Values.name }} diff --git a/charts/redhat/redhat/redhat-httpd-template/0.0.5/src/templates/tests/test-httpd-connection.yaml b/charts/redhat/redhat/redhat-httpd-template/0.0.5/src/templates/tests/test-httpd-connection.yaml new file mode 100644 index 000000000..b63dce1f4 --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-template/0.0.5/src/templates/tests/test-httpd-connection.yaml @@ -0,0 +1,23 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ .Release.Name }}-connection-test" + namespace: "{{ .Release.Namespace }}" + annotations: + "helm.sh/hook": test + labels: + name: {{ .Values.database_service_name }} +spec: + #serviceAccount: {{ .Values.serviceAccount }} + containers: + - name: "httpd-connection-test" + image: "registry.redhat.io/rhel8/httpd-24:latest" + imagePullPolicy: IfNotPresent + command: + - '/bin/bash' + - '-ec' + - > + curl {{ .Values.name }}.{{ .Release.Namespace}}:8080 | grep "{{ .Values.expected_str }}" + lookupPolicy: + local: true + restartPolicy: Never diff --git a/charts/redhat/redhat/redhat-httpd-template/0.0.5/src/values.schema.json b/charts/redhat/redhat/redhat-httpd-template/0.0.5/src/values.schema.json new file mode 100644 index 000000000..13d717ed8 --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-template/0.0.5/src/values.schema.json @@ -0,0 +1,36 @@ +{ + "$schema": "http://json-schema.org/schema#", + "type": "object", + "properties": { + "namespace": { + "type": "string" + }, + "name": { + "type": "string", + "description": "The name assigned to all of the frontend objects defined in this template." + }, + "memory_limit": { + "type": "string", + "title": "Memory limit", + "form": true, + "render": "slider", + "sliderMin": 512, + "sliderMax": 65536, + "sliderUnit": "Mi" + }, + "httpd_version": { + "type": "string", + "description": "Specify HTTPD imagestream tag", + "enum": [ "latest", "2.4-el9", "2.4-el8", "2.4-el7" ] + }, + "application_domain": { + "type": "string", + "description": "The exposed hostname that will route to the httpd service, if left blank a value will be defaulted." + }, + "context_dir": { + "type": "string", + "description": "Set this to the relative path to your project if it is not in the root of your repository." + } + } +} + diff --git a/charts/redhat/redhat/redhat-httpd-template/0.0.5/src/values.yaml b/charts/redhat/redhat/redhat-httpd-template/0.0.5/src/values.yaml new file mode 100644 index 000000000..4668c8849 --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-template/0.0.5/src/values.yaml @@ -0,0 +1,11 @@ +application_domain: "" # TODO: must define a default value for .application_domain +context_dir: "" # TODO: must define a default value for .context_dir +generic_webhook_secret: "SOMETHING" # TODO: must define a default value for .generic_webhook_secret +github_webhook_secret: "FOOBAR" # TODO: must define a default value for .github_webhook_secret +httpd_version: 2.4-el8 +memory_limit: 512Mi +name: httpd +namespace: openshift +source_repository_ref: master # TODO: must define a default value for .source_repository_ref +source_repository_url: https://github.com/sclorg/httpd-ex.git +expected_str: Welcome to your static httpd application on OpenShift diff --git a/charts/redhat/redhat/redhat-httpd-template/0.0.6/src/Chart.yaml b/charts/redhat/redhat/redhat-httpd-template/0.0.6/src/Chart.yaml new file mode 100644 index 000000000..9773ecb97 --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-template/0.0.6/src/Chart.yaml @@ -0,0 +1,15 @@ +description: This content is experimental, do not use it in production. An example Apache HTTP Server (httpd) application that serves static + content. For more information about using this template, including OpenShift considerations, + see https://github.com/sclorg/httpd-container/blob/master/README.md. +name: httpd-template +tags: quickstart,httpd +kubeVersion: '>=1.20.0' +version: 0.0.6 +annotations: + charts.openshift.io/name: Red Hat Apache HTTP Server (httpd) application (experimental) + charts.openshift.io/provider: Red Hat + charts.openshift.io/providerType: redhat +apiVersion: v2 +appVersion: 0.0.6 +sources: + - https://github.com/sclorg/helm-charts diff --git a/charts/redhat/redhat/redhat-httpd-template/0.0.6/src/README.md b/charts/redhat/redhat/redhat-httpd-template/0.0.6/src/README.md new file mode 100644 index 000000000..7fb893105 --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-template/0.0.6/src/README.md @@ -0,0 +1,23 @@ +# Httpd helm chart + +A Helm chart for building and deploying a [Httpd](https://github/sclorg/httpd-container) application on OpenShift. + +For more information about helm charts see the official [Helm Charts Documentation](https://helm.sh/). + +You need to have access to a cluster for each operation with OpenShift 4, like deploying and testing. + +## Values +Below is a table of each value used to configure this chart. + +| Value | Description | Default | Additional Information | +|---------------------------------------------| ----------- | -- | ---------------------- | +| `name` | The name assigned to all of the frontend objects defined in this helm chart. | `httpd-example` | | +| `namespace` | The OpenShift Namespace where the ImageStream resides. | `httpd-template` | | +| `httpd_version` | Version of Httpd image to be used (2.4-el8, or latest). | `2.4-el8` | | +| `memory_limit` | Maximum amount of memory the container can use. | `521Mi` | | +| `source_repository_url` | The URL of the repository with your application source code. | `https://github.com/sclorg/httpd-ex.git` | | +| `source_repository_ref` | Set this to a branch name, tag or other ref of your repository if you are not using the default branch. | | | +| `context_dir` | Set this to the relative path to your project if it is not in the root of your repository. | | | +| `application_domain` | The exposed hostname that will route to the httpd service, if left blank a value will be defaulted. | | | +| `generic_webhook_secret` | A secret string used to configure the Generic webhook. | | | +| `github_webhook_secret` | Github trigger secret. A difficult to guess string encoded as part of the webhook URL. Not encrypted. | | | diff --git a/charts/redhat/redhat/redhat-httpd-template/0.0.6/src/templates/buildconfig.yaml b/charts/redhat/redhat/redhat-httpd-template/0.0.6/src/templates/buildconfig.yaml new file mode 100644 index 000000000..ccc753639 --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-template/0.0.6/src/templates/buildconfig.yaml @@ -0,0 +1,36 @@ +apiVersion: build.openshift.io/v1 +kind: BuildConfig +metadata: + annotations: + description: Defines how to build the application + template.alpha.openshift.io/wait-for-ready: "true" + labels: + app: httpd-example + template: httpd-example + name: {{ .Values.name }} +spec: + output: + to: + kind: ImageStreamTag + name: {{ .Values.name }}:latest + source: + contextDir: {{ .Values.context_dir }} + git: + ref: {{ .Values.source_repository_ref }} + uri: {{ .Values.source_repository_url }} + type: Git + strategy: + sourceStrategy: + from: + kind: ImageStreamTag + name: httpd:{{ .Values.httpd_version }} + type: Source + triggers: + - type: ImageChange + - type: ConfigChange + - type: GitHub + github: + secret: {{ .Values.github_webhook_secret }} + - type: Generic + generic: + secret: {{ .Values.generic_webhook_secret }} diff --git a/charts/redhat/redhat/redhat-httpd-template/0.0.6/src/templates/deployment.yaml b/charts/redhat/redhat/redhat-httpd-template/0.0.6/src/templates/deployment.yaml new file mode 100644 index 000000000..a6e66e59c --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-template/0.0.6/src/templates/deployment.yaml @@ -0,0 +1,63 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + annotations: + description: Defines how to deploy the application server + template.alpha.openshift.io/wait-for-ready: "true" + image.openshift.io/triggers: |- + [ + { + "from": { + "kind": "ImageStreamTag", + "name": "{{ .Values.name }}:latest" + }, + "fieldPath": "spec.template.spec.containers[0].image" + } + ] + labels: + app: httpd-example + template: httpd-example + name: {{ .Values.name }} +spec: + replicas: 1 + selector: + matchLabels: + name: {{ .Values.name }} + strategy: + type: RollingUpdate + template: + metadata: + labels: + name: {{ .Values.name }} + name: {{ .Values.name }} + spec: + containers: + - env: [] + image: " " + livenessProbe: + httpGet: + path: / + port: 8080 + initialDelaySeconds: 30 + timeoutSeconds: 3 + name: httpd-example + ports: + - containerPort: 8080 + readinessProbe: + httpGet: + path: / + port: 8080 + initialDelaySeconds: 3 + timeoutSeconds: 3 + resources: + limits: + memory: {{ .Values.memory_limit }} + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + runAsNonRoot: true + seccompProfile: + type: RuntimeDefault diff --git a/charts/redhat/redhat/redhat-httpd-template/0.0.6/src/templates/imagestream.yaml b/charts/redhat/redhat/redhat-httpd-template/0.0.6/src/templates/imagestream.yaml new file mode 100644 index 000000000..a2bc5f624 --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-template/0.0.6/src/templates/imagestream.yaml @@ -0,0 +1,9 @@ +apiVersion: image.openshift.io/v1 +kind: ImageStream +metadata: + annotations: + description: Keeps track of changes in the application image + labels: + app: httpd-example + template: httpd-example + name: {{ .Values.name }} \ No newline at end of file diff --git a/charts/redhat/redhat/redhat-httpd-template/0.0.6/src/templates/route.yaml b/charts/redhat/redhat/redhat-httpd-template/0.0.6/src/templates/route.yaml new file mode 100644 index 000000000..07d56e266 --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-template/0.0.6/src/templates/route.yaml @@ -0,0 +1,14 @@ +apiVersion: route.openshift.io/v1 +kind: Route +metadata: + annotations: + template.openshift.io/expose-uri: http://{.spec.host}{.spec.path} + labels: + app: httpd-example + template: httpd-example + name: {{ .Values.name }} +spec: + host: {{ .Values.application_domain }} + to: + kind: Service + name: {{ .Values.name }} diff --git a/charts/redhat/redhat/redhat-httpd-template/0.0.6/src/templates/service.yaml b/charts/redhat/redhat/redhat-httpd-template/0.0.6/src/templates/service.yaml new file mode 100644 index 000000000..8c3d99efd --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-template/0.0.6/src/templates/service.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: Service +metadata: + annotations: + description: Exposes and load balances the application pods + labels: + app: httpd-example + template: httpd-example + name: {{ .Values.name }} +spec: + ports: + - name: web + port: 8080 + targetPort: 8080 + selector: + name: {{ .Values.name }} \ No newline at end of file diff --git a/charts/redhat/redhat/redhat-httpd-template/0.0.6/src/templates/tests/test-httpd-connection.yaml b/charts/redhat/redhat/redhat-httpd-template/0.0.6/src/templates/tests/test-httpd-connection.yaml new file mode 100644 index 000000000..64fba2262 --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-template/0.0.6/src/templates/tests/test-httpd-connection.yaml @@ -0,0 +1,21 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ .Release.Name }}-connection-test" + namespace: "{{ .Release.Namespace }}" + annotations: + "helm.sh/hook": test + labels: + name: {{ .Values.database_service_name }} +spec: + #serviceAccount: {{ .Values.serviceAccount }} + containers: + - name: "httpd-curl-connection-test" + image: "registry.access.redhat.com/ubi8/ubi:latest" + imagePullPolicy: IfNotPresent + command: + - '/bin/bash' + - '-exc' + - > + curl {{ .Values.name }}.{{ .Release.Namespace}}:8080 | grep "{{ .Values.expected_str }}" + restartPolicy: Never diff --git a/charts/redhat/redhat/redhat-httpd-template/0.0.6/src/values.schema.json b/charts/redhat/redhat/redhat-httpd-template/0.0.6/src/values.schema.json new file mode 100644 index 000000000..13d717ed8 --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-template/0.0.6/src/values.schema.json @@ -0,0 +1,36 @@ +{ + "$schema": "http://json-schema.org/schema#", + "type": "object", + "properties": { + "namespace": { + "type": "string" + }, + "name": { + "type": "string", + "description": "The name assigned to all of the frontend objects defined in this template." + }, + "memory_limit": { + "type": "string", + "title": "Memory limit", + "form": true, + "render": "slider", + "sliderMin": 512, + "sliderMax": 65536, + "sliderUnit": "Mi" + }, + "httpd_version": { + "type": "string", + "description": "Specify HTTPD imagestream tag", + "enum": [ "latest", "2.4-el9", "2.4-el8", "2.4-el7" ] + }, + "application_domain": { + "type": "string", + "description": "The exposed hostname that will route to the httpd service, if left blank a value will be defaulted." + }, + "context_dir": { + "type": "string", + "description": "Set this to the relative path to your project if it is not in the root of your repository." + } + } +} + diff --git a/charts/redhat/redhat/redhat-httpd-template/0.0.6/src/values.yaml b/charts/redhat/redhat/redhat-httpd-template/0.0.6/src/values.yaml new file mode 100644 index 000000000..1ef6d0348 --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-template/0.0.6/src/values.yaml @@ -0,0 +1,11 @@ +application_domain: "" # TODO: must define a default value for .application_domain +context_dir: "" # TODO: must define a default value for .context_dir +generic_webhook_secret: "SOMETHING" # TODO: must define a default value for .generic_webhook_secret +github_webhook_secret: "FOOBAR" # TODO: must define a default value for .github_webhook_secret +httpd_version: 2.4-el8 +memory_limit: 512Mi +name: httpd-example +namespace: openshift +source_repository_ref: master # TODO: must define a default value for .source_repository_ref +source_repository_url: https://github.com/sclorg/httpd-ex.git +expected_str: Welcome to your static httpd application on OpenShift diff --git a/charts/redhat/redhat/redhat-httpd-template/OWNERS b/charts/redhat/redhat/redhat-httpd-template/OWNERS new file mode 100644 index 000000000..cc585189f --- /dev/null +++ b/charts/redhat/redhat/redhat-httpd-template/OWNERS @@ -0,0 +1,9 @@ +chart: + name: redhat-httpd-template + description: This is the Red Hat Apache HTTP Server template chart +publicPgpKey: null +users: + - githubUsername: phracek +vendor: + label: redhat + name: Red Hat diff --git a/charts/redhat/redhat/redhat-jenkins/0.0.1/src/Chart.yaml b/charts/redhat/redhat/redhat-jenkins/0.0.1/src/Chart.yaml new file mode 100644 index 000000000..a1bf8e97d --- /dev/null +++ b/charts/redhat/redhat/redhat-jenkins/0.0.1/src/Chart.yaml @@ -0,0 +1,9 @@ +apiVersion: v2 +name: jenkins +description: A Helm chart for Openshift Jenkins + +type: application + +version: 0.0.1 + +appVersion: "1.16.0" diff --git a/charts/redhat/redhat/redhat-jenkins/0.0.1/src/templates/NOTES.txt b/charts/redhat/redhat/redhat-jenkins/0.0.1/src/templates/NOTES.txt new file mode 100644 index 000000000..e69de29bb diff --git a/charts/redhat/redhat/redhat-jenkins/0.0.1/src/templates/_helpers.tpl b/charts/redhat/redhat/redhat-jenkins/0.0.1/src/templates/_helpers.tpl new file mode 100644 index 000000000..8a087c57f --- /dev/null +++ b/charts/redhat/redhat/redhat-jenkins/0.0.1/src/templates/_helpers.tpl @@ -0,0 +1,62 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "openshift-jenkins.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "openshift-jenkins.fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default .Chart.Name .Values.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "openshift-jenkins.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "openshift-jenkins.labels" -}} +helm.sh/chart: {{ include "openshift-jenkins.chart" . }} +{{ include "openshift-jenkins.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "openshift-jenkins.selectorLabels" -}} +app.kubernetes.io/name: {{ include "openshift-jenkins.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "openshift-jenkins.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "openshift-jenkins.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} diff --git a/charts/redhat/redhat/redhat-jenkins/0.0.1/src/templates/configmap-trusted-ca-bundle.yaml b/charts/redhat/redhat/redhat-jenkins/0.0.1/src/templates/configmap-trusted-ca-bundle.yaml new file mode 100644 index 000000000..8464ea360 --- /dev/null +++ b/charts/redhat/redhat/redhat-jenkins/0.0.1/src/templates/configmap-trusted-ca-bundle.yaml @@ -0,0 +1,7 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + labels: + config.openshift.io/inject-trusted-cabundle: "true" + {{- include "openshift-jenkins.labels" . | nindent 4 }} + name: {{ include "openshift-jenkins.fullname" . }}-trusted-ca-bundle diff --git a/charts/redhat/redhat/redhat-jenkins/0.0.1/src/templates/deploymentconfig.yaml b/charts/redhat/redhat/redhat-jenkins/0.0.1/src/templates/deploymentconfig.yaml new file mode 100644 index 000000000..d7a4e4da8 --- /dev/null +++ b/charts/redhat/redhat/redhat-jenkins/0.0.1/src/templates/deploymentconfig.yaml @@ -0,0 +1,111 @@ +apiVersion: apps.openshift.io/v1 +kind: DeploymentConfig +metadata: + labels: + {{- include "openshift-jenkins.labels" . | nindent 4 }} + name: {{ include "openshift-jenkins.fullname" . }} +spec: + replicas: 1 + selector: + {{ include "openshift-jenkins.selectorLabels" . | nindent 4}} + strategy: + type: Recreate + template: + metadata: + {{- with .Values.podAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + {{- include "openshift-jenkins.selectorLabels" . | nindent 8 }} + spec: + containers: + - env: + - name: OPENSHIFT_ENABLE_OAUTH + value: "true" + - name: OPENSHIFT_ENABLE_REDIRECT_PROMPT + value: "true" + - name: DISABLE_ADMINISTRATIVE_MONITORS + value: "false" + - name: KUBERNETES_MASTER + value: https://kubernetes.default:443 + - name: KUBERNETES_TRUST_CERTIFICATES + value: "true" + - name: JENKINS_SERVICE_NAME + value: {{ include "openshift-jenkins.fullname" . }} + - name: JNLP_SERVICE_NAME + value: {{ include "openshift-jenkins.fullname" . }}-jnlp + - name: ENABLE_FATAL_ERROR_LOG_FILE + value: "false" + - name: JENKINS_UC_INSECURE + value: "false" + - name: CASC_JENKINS_CONFIG + value: /var/lib/jenkins/proxy.yaml + image: "" + imagePullPolicy: IfNotPresent + livenessProbe: + failureThreshold: 2 + httpGet: + path: /login + port: 8080 + scheme: HTTP + initialDelaySeconds: 420 + periodSeconds: 360 + successThreshold: 1 + timeoutSeconds: 240 + name: jenkins + readinessProbe: + failureThreshold: 3 + httpGet: + path: /login + port: 8080 + scheme: HTTP + initialDelaySeconds: 3 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 240 + resources: + limits: + memory: 1Gi + securityContext: + capabilities: {} + privileged: false + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + volumeMounts: + - mountPath: /var/lib/jenkins + name: jenkins-data + - mountPath: /etc/pki/ca-trust/source/anchors + name: jenkins-trusted-ca-bundle + dnsPolicy: ClusterFirst + restartPolicy: Always + schedulerName: default-scheduler + securityContext: {} + serviceAccount: jenkins + serviceAccountName: jenkins + terminationGracePeriodSeconds: 30 + volumes: + - name: jenkins-data + {{- if .Values.persistence.enabled }} + persistentVolumeClaim: + claimName: {{ include "openshift-jenkins.fullname" . }} + {{- else }} + emptyDir: {} + {{- end }} + - configMap: + defaultMode: 420 + name: {{ include "openshift-jenkins.fullname" . }}-trusted-ca-bundle + optional: true + name: jenkins-trusted-ca-bundle + triggers: + - imageChangeParams: + automatic: true + containerNames: + - jenkins + from: + kind: ImageStreamTag + name: jenkins:2 + namespace: openshift + lastTriggeredImage: "" + type: ImageChange + - type: ConfigChange \ No newline at end of file diff --git a/charts/redhat/redhat/redhat-jenkins/0.0.1/src/templates/persistentvolumeclaim.yaml b/charts/redhat/redhat/redhat-jenkins/0.0.1/src/templates/persistentvolumeclaim.yaml new file mode 100644 index 000000000..45edd915c --- /dev/null +++ b/charts/redhat/redhat/redhat-jenkins/0.0.1/src/templates/persistentvolumeclaim.yaml @@ -0,0 +1,17 @@ +{{- if .Values.persistence.enabled -}} +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: {{ include "openshift-jenkins.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: + {{- include "openshift-jenkins.labels" . | nindent 4 }} +spec: + accessModes: + {{- range .Values.persistence.accessModes }} + - {{ . | quote }} + {{- end }} + resources: + requests: + storage: {{ .Values.persistence.size | quote }} +{{- end -}} diff --git a/charts/redhat/redhat/redhat-jenkins/0.0.1/src/templates/rolebinding.yaml b/charts/redhat/redhat/redhat-jenkins/0.0.1/src/templates/rolebinding.yaml new file mode 100644 index 000000000..d508e63b4 --- /dev/null +++ b/charts/redhat/redhat/redhat-jenkins/0.0.1/src/templates/rolebinding.yaml @@ -0,0 +1,13 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + labels: + {{- include "openshift-jenkins.selectorLabels" . | nindent 4 }} + name: {{ include "openshift-jenkins.fullname" . }}_edit +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: edit +subjects: +- kind: ServiceAccount + name: {{ include "openshift-jenkins.serviceAccountName" . }} diff --git a/charts/redhat/redhat/redhat-jenkins/0.0.1/src/templates/route.yaml b/charts/redhat/redhat/redhat-jenkins/0.0.1/src/templates/route.yaml new file mode 100644 index 000000000..72aebd92c --- /dev/null +++ b/charts/redhat/redhat/redhat-jenkins/0.0.1/src/templates/route.yaml @@ -0,0 +1,15 @@ +apiVersion: route.openshift.io/v1 +kind: Route +metadata: + annotations: + haproxy.router.openshift.io/timeout: 4m + labels: + {{- include "openshift-jenkins.labels" . | nindent 4 }} + name: {{ include "openshift-jenkins.fullname" . }} +spec: + tls: + insecureEdgeTerminationPolicy: Redirect + termination: edge + to: + kind: Service + name: {{ include "openshift-jenkins.fullname" . }} diff --git a/charts/redhat/redhat/redhat-jenkins/0.0.1/src/templates/service-jnlp.yaml b/charts/redhat/redhat/redhat-jenkins/0.0.1/src/templates/service-jnlp.yaml new file mode 100644 index 000000000..fc041abc5 --- /dev/null +++ b/charts/redhat/redhat/redhat-jenkins/0.0.1/src/templates/service-jnlp.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "openshift-jenkins.fullname" . }}-jnlp + labels: + {{- include "openshift-jenkins.labels" . | nindent 4 }} +spec: + type: {{ .Values.servicejnlp.type }} + ports: + - port: {{ .Values.servicejnlp.port }} + targetPort: {{ .Values.servicejnlp.targetPort }} + protocol: TCP + name: {{ .Values.servicejnlp.name }} + selector: + {{- include "openshift-jenkins.selectorLabels" . | nindent 4 }} diff --git a/charts/redhat/redhat/redhat-jenkins/0.0.1/src/templates/service.yaml b/charts/redhat/redhat/redhat-jenkins/0.0.1/src/templates/service.yaml new file mode 100644 index 000000000..a14452125 --- /dev/null +++ b/charts/redhat/redhat/redhat-jenkins/0.0.1/src/templates/service.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "openshift-jenkins.fullname" . }} + labels: + {{- include "openshift-jenkins.labels" . | nindent 4 }} +spec: + type: {{ .Values.service.type }} + ports: + - port: {{ .Values.service.port }} + targetPort: {{ .Values.service.targetPort }} + protocol: TCP + name: {{ .Values.service.name }} + selector: + {{- include "openshift-jenkins.selectorLabels" . | nindent 4 }} diff --git a/charts/redhat/redhat/redhat-jenkins/0.0.1/src/templates/serviceaccount.yaml b/charts/redhat/redhat/redhat-jenkins/0.0.1/src/templates/serviceaccount.yaml new file mode 100644 index 000000000..4d6bcbad6 --- /dev/null +++ b/charts/redhat/redhat/redhat-jenkins/0.0.1/src/templates/serviceaccount.yaml @@ -0,0 +1,8 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "openshift-jenkins.serviceAccountName" . }} + labels: + {{- include "openshift-jenkins.labels" . | nindent 4 }} + annotations: + serviceaccounts.openshift.io/oauth-redirectreference.jenkins: "{\"kind\":\"OAuthRedirectReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"Route\",\"name\":\"{{ include "openshift-jenkins.fullname" . }}\"}}" diff --git a/charts/redhat/redhat/redhat-jenkins/0.0.1/src/templates/tests/test-connection.yaml b/charts/redhat/redhat/redhat-jenkins/0.0.1/src/templates/tests/test-connection.yaml new file mode 100644 index 000000000..30a3fee7c --- /dev/null +++ b/charts/redhat/redhat/redhat-jenkins/0.0.1/src/templates/tests/test-connection.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ include "openshift-jenkins.fullname" . }}-test-connection" + labels: + {{- include "openshift-jenkins.labels" . | nindent 4 }} + annotations: + "helm.sh/hook": test +spec: + containers: + - name: wget + image: busybox + command: ['wget'] + args: ['{{ include "openshift-jenkins.fullname" . }}:{{ .Values.service.port }}'] + restartPolicy: Never diff --git a/charts/redhat/redhat/redhat-jenkins/0.0.1/src/values.yaml b/charts/redhat/redhat/redhat-jenkins/0.0.1/src/values.yaml new file mode 100644 index 000000000..e2b4c9570 --- /dev/null +++ b/charts/redhat/redhat/redhat-jenkins/0.0.1/src/values.yaml @@ -0,0 +1,62 @@ +# Default values for openshift-jenkins. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. + +replicaCount: 1 + +image: + repository: nginx + pullPolicy: IfNotPresent + # Overrides the image tag whose default is the chart appVersion. + tag: "" + +imagePullSecrets: [] +nameOverride: "" +fullnameOverride: "" + +serviceAccount: + name: "jenkins" + +service: + type: ClusterIP + port: 80 + targetPort: 8080 + name: web + +servicejnlp: + type: ClusterIP + port: 50000 + targetPort: 50000 + name: agent + +persistence: + ## @param persistence.enabled Enable persistence using Persistent Volume Claims + enabled: false + ## @param persistence.storageClass Persistent Volume storage class + ## If defined, storageClassName: + ## If set to "-", storageClassName: "", which disables dynamic provisioning + ## If undefined (the default) or set to null, no storageClassName spec is set, choosing the default provisioner + ## + storageClass: + ## @param persistence.annotations Additional custom annotations for the PVC + ## + annotations: {} + ## @param persistence.accessModes [array] Persistent Volume access modes + ## + accessModes: + - ReadWriteOnce + ## @param persistence.size Persistent Volume size + ## + size: 8Gi + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi \ No newline at end of file diff --git a/charts/redhat/redhat/redhat-jenkins/0.0.2/src/Chart.yaml b/charts/redhat/redhat/redhat-jenkins/0.0.2/src/Chart.yaml new file mode 100644 index 000000000..356ab64b4 --- /dev/null +++ b/charts/redhat/redhat/redhat-jenkins/0.0.2/src/Chart.yaml @@ -0,0 +1,11 @@ +apiVersion: v2 +name: jenkins +description: A Helm chart for Openshift Jenkins +type: application +version: 0.0.2 +appVersion: "1.16.0" +icon: data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzEyIiBoZWlnaHQ9IjMxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KIDxtZXRhZGF0YSBpZD0ibWV0YWRhdGE4Ij5pbWFnZS9zdmcreG1sPC9tZXRhZGF0YT4KIDxkZWZzPgogIDxjbGlwUGF0aCBpZD0iY2xpcFBhdGgxOCIgY2xpcFBhdGhVbml0cz0idXNlclNwYWNlT25Vc2UiPgogICA8cGF0aCBpZD0icGF0aDIwIiBkPSJtMCwyNDk0Ljg0bDAsLTI0OTQuODRsMTgwNC4zNCwwbDAsMjQ5NC44NGwtMTgwNC4zNCwweiIvPgogIDwvY2xpcFBhdGg+CiA8L2RlZnM+CiA8Zz4KICA8dGl0bGU+YmFja2dyb3VuZDwvdGl0bGU+CiAgPHJlY3QgZmlsbD0ibm9uZSIgaWQ9ImNhbnZhc19iYWNrZ3JvdW5kIiBoZWlnaHQ9IjMxNCIgd2lkdGg9IjMxNCIgeT0iLTEiIHg9Ii0xIi8+CiA8L2c+CiA8Zz4KICA8dGl0bGU+TGF5ZXIgMTwvdGl0bGU+CiAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMS4yNSwwLDAsLTEuMjUsMCwzMTIpICIgaWQ9ImcxMCI+CiAgIDxnIGlkPSJnMzM5MyI+CiAgICA8cGF0aCBmaWxsPSIjZDMzODMzIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGlkPSJwYXRoMjIiIGQ9Im0yMDguMTE4LDEyOS4yNjRjMCwtNDkuNDI4OCAtMzkuMTc1LC04OS40OTkyIC04Ny41LC04OS40OTkyYy00OC4zMjQyLDAgLTg3LjQ5OTI1LDQwLjA3MDQgLTg3LjQ5OTI1LDg5LjQ5OTJjMCw0OS40MyAzOS4xNzUwNSw4OS41MDEgODcuNDk5MjUsODkuNTAxYzQ4LjMyNSwwIDg3LjUsLTQwLjA3MSA4Ny41LC04OS41MDEiLz4KICAgIDxwYXRoIGZpbGw9IiNlZjNkM2EiIGZpbGwtcnVsZT0ibm9uemVybyIgaWQ9InBhdGgyNCIgZD0ibTM2LjY4NDM4LDEwNy4wOThjMCwwIC02LjMzNDM4LDkzLjMzMyA3OS42NjYwMiw5NmwtNS45OTk2LDEwbC00Ni42NjY0LC0xNS42NjdsLTEzLjMzMzYsLTE1LjMzM2wtMTEuNjY2NDIsLTIyLjMzNGwtNi42NjcxOSwtMjZsMiwtMTcuMzMzIi8+CiAgICA8cGF0aCBmaWxsPSIjMjMxZjIwIiBmaWxsLXJ1bGU9Im5vbnplcm8iIGlkPSJwYXRoMjYiIGQ9Im02MC42ODgzLDE5MC4zMTljLTE1LjM1MiwtMTUuNzA4IC0yNC44NTE5NywtMzcuMzk2IC0yNC44NTE5NywtNjEuMzg5bDAsMGMwLC0yMy45ODggOS40OTk5NywtNDUuNjc4OCAyNC44NTE5NywtNjEuMzgzOWwwLDBjMTUuMzU5NCwtMTUuNzA1MSAzNi41MjY5LC0yNS4zOTYxIDU5LjkyODUsLTI1LjM5NjFsMCwwYzIzLjQwMjIsMCA0NC41NzEyLDkuNjkxIDU5LjkyOTIsMjUuMzk2MWwwLDBjMTUuMzUxLDE1LjcwNTEgMjQuODUzLDM3LjM5NTkgMjQuODUzLDYxLjM4MzlsMCwwYzAsMjMuOTkzIC05LjUwMiw0NS42ODEgLTI0Ljg1Myw2MS4zODlsMCwwYy0xNS4zNTgsMTUuNzAyIC0zNi41MjcsMjUuMzkzIC01OS45MjkyLDI1LjM5NWwwLDBjLTIzLjQwMTYsLTAuMDAyIC00NC41NjkxLC05LjY5MyAtNTkuOTI4NSwtMjUuMzk1bDAsMHptLTMuODg2LC0xMjYuNTcyMWMtMTYuMzE1NiwxNi42ODU5IC0yNi40MDIzLDM5Ljc0NjEgLTI2LjQwMjMsNjUuMTgzMWwwLDBjMCwyNS40NDEgMTAuMDg2Nyw0OC40OTkgMjYuNDAyMyw2NS4xODZsMCwwYzE2LjMxMTgsMTYuNjkgMzguODkxNSwyNy4wMzUgNjMuODE0NSwyNy4wMzJsMCwwYzI0LjkyMzIsMC4wMDMgNDcuNTA1MiwtMTAuMzQyIDYzLjgxNDIsLTI3LjAzMmwwLDBjMTYuMzE3LC0xNi42ODcgMjYuNDA1LC0zOS43NDcgMjYuNDAzLC02NS4xODZsMCwwYzAuMDAyLC0yNS40MzcgLTEwLjA4NiwtNDguNDk3MiAtMjYuNDAzLC02NS4xODMxbDAsMGMtMTYuMzA5LC0xNi42ODkxIC0zOC44OTEsLTI3LjAzMjggLTYzLjgxNDIsLTI3LjAzMjhsMCwwYy0yNC45MjMsMCAtNDcuNTAyNywxMC4zNDM3IC02My44MTQ1LDI3LjAzMjhsMCwwIi8+CiAgICA8cGF0aCBmaWxsPSIjZjBkNmI3IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGlkPSJwYXRoMjgiIGQ9Im0xNTcuNDUxLDEyOC43NjhsLTEzLjMzNCwtMmwtMTguMDAwMiwtMmwtMTEuNjY3MiwtMC4zMzNsLTExLjMzMjgsMC4zMzNsLTguNjY3MiwyLjY2N2wtNy42NjY4LDguMzMzbC02LDE3bC0xLjMzMzIsMy42NjdsLTgsMi42NjZsLTQuNjY2OCw3LjY2N2wtMy4zMzMyLDExbDMuNjY3Miw5LjY2N2w4LjY2NiwzbDcsLTMuMzM0bDMuMzM0LC03LjMzM2w0LDAuNjY3bDEuMzMyOCwxLjY2NmwtMS4zMzI4LDcuNjY3bC0wLjMzNCw5LjY2N2wyLDEzLjMzM2wtMC4wNzgxLDcuNjE2bDYuMDc4MSw5LjcxN2wxMC42NjY4LDcuNjY3bDE4LjY2NzIsOGwyMC42NjYyLC0zbDE4LC0xM2w4LjMzNCwtMTMuMzMzbDUuMzMzLC05LjY2N2wxLjMzMywtMjRsLTQsLTIwLjY2N2wtNy4zMzMsLTE4LjMzM2wtNywtOS42NjciLz4KICAgIDxwYXRoIGZpbGw9IiMzMzUwNjEiIGZpbGwtcnVsZT0iZXZlbm9kZCIgaWQ9InBhdGgzMCIgZD0ibTE0Ni4xMTcsNzEuMTAybC00Ny42Njc0LC0ybDAsLThsNCwtMjhsLTIsLTIuMzM0bC0zMy4zMzI4LDExLjMzNGwtMi4zMzQsNGwtMy4zMzMyLDM3LjY2NmwtNy42NjU2LDIyLjY2N2wtMS42NjcyLDUuMzMzbDI2LjY2NiwxOC4zMzNsOC4zMzQsMy4zMzRsNy4zMzI4LC05bDYuMzMzMiwtNS42NjdsNy4zMzQsLTIuMzMzbDMuMzMyOCwtMWw0LC0xNy4zMzNsMywtMy42NjY4bDcuNjY3MiwyLjY2NjhsLTUuMzM0LC0xMC4zMzRsMjkuMDAwMiwtMTMuNjY2bC0zLjY2NiwtMiIvPgogICAgPHBhdGggZmlsbD0iIzZkNmI2ZCIgZmlsbC1ydWxlPSJldmVub2RkIiBpZD0icGF0aDMyIiBkPSJtNjcuMTE2OCwxODcuNDM1bDguNjY2LDNsNywtMy4zMzRsMy4zMzQsLTcuMzMzbDQsMC42NjdsMSw0bC0yLDcuNjY2bDIsMTguMzM0bC0xLjY2NzIsMTBsNiw3bDEzLDEwLjMzM2wtMy42NjY4LDVsLTE4LjMzMzIsLTlsLTcuNjY2OCwtNmwtNC4zMzMyLC05LjMzM2wtNi42NjY4LC05bC0yLC0xMC42NjdsMS4zMzQsLTExLjMzMyIvPgogICAgPHBhdGggZmlsbD0iI2RjZDlkOCIgZmlsbC1ydWxlPSJldmVub2RkIiBpZD0icGF0aDM0IiBkPSJtODAuNzgyOCwyMTguNzY4YzAsMCA1LDEyLjMzMyAyNSwxOC4zMzNjMjAsNiAxLDQuMzM0IDEsNC4zMzRsLTIxLjY2NiwtOC4zMzRsLTguMzM0LC04LjMzM2wtMy42NjYsLTYuNjY3bDcuNjY2LDAuNjY3Ii8+CiAgICA8cGF0aCBmaWxsPSIjZGNkOWQ4IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGlkPSJwYXRoMzYiIGQ9Im03MC43ODI4LDE4OS43NjhjMCwwIC03LDIzLjMzNCAxOS42NjY4LDI2LjY2N2wtMSw0bC0xOC4zMzI4LC00LjMzNGwtNS4zMzQsLTE3LjMzM2wxLjMzNCwtMTEuMzMzbDMuNjY2LDIuMzMzIi8+CiAgICA8cGF0aCBmaWxsPSIjZjdlNGNkIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGlkPSJwYXRoMzgiIGQ9Im04MS40NDk2LDE1OC43NjhsNC4zNjQ1LDQuMjI5YzAsMCAxLjk2OTksLTAuMjI5IDIuMzAyNywtMi41NjJjMC4zMzI4LC0yLjMzNCAxLjMzMjgsLTIzLjMzNCAxNS42NjYsLTM0LjY2OGMxLjMwNzQsLTEuMDM0IC0xMC42NjYsMS42NjggLTEwLjY2NiwxLjY2OGwtMTAuNjY3MiwxNi42NjYiLz4KICAgIDxwYXRoIGZpbGw9IiNmN2U0Y2QiIGZpbGwtcnVsZT0iZXZlbm9kZCIgaWQ9InBhdGg0MCIgZD0ibTE0Mi43ODUsMTY1LjEwMWMwLDAgMC43NzcsMTAuMTA0IDMuNDk4LDkuMzI3YzIuNzIxLC0wLjc3NyAyLjcyMSwtMy40OTggMi43MjEsLTMuNDk4YzAsMCAtNi42MDgsLTQuMjc1IC02LjIxOSwtNS44MjkiLz4KICAgIDxwYXRoIGZpbGw9IiNmN2U0Y2QiIGZpbGwtcnVsZT0ibm9uemVybyIgaWQ9InBhdGg0MiIgZD0ibTE3MC40NSwyMDIuMTAxYzAsMCAtNS40OTQsLTEuMTYgLTYsLTZjLTAuNTA2LC00Ljg0MSA2LC0xIDcsLTAuNjY3Ii8+CiAgICA8cGF0aCBmaWxsPSIjZjdlNGNkIiBmaWxsLXJ1bGU9Im5vbnplcm8iIGlkPSJwYXRoNDQiIGQ9Im0xMzAuMTE2OCwyMDEuNzY3YzAsMCAtNy4zMzQsLTEgLTcuMzM0LC01LjY2NmMwLC00LjY2NyA4LjMzNDIsLTQuMzM0IDEwLjY2NzIsLTIuMzM0Ii8+CiAgICA8cGF0aCBmaWxsPSIjZjdlNGNkIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGlkPSJwYXRoNDYiIGQ9Im04NC43ODI4LDE4MC4xMDFjMCwwIC0xMi42NjcyLDcuNjY3IC0xNCwwLjMzM2MtMS4zMzMyLC03LjMzMyAtNC4zMzQsLTEyLjY2NyAyLC0yMC4zMzNsLTQuMzMzMiwxLjMzM2wtNCwxMC4zMzNsLTEuMzMyOCwxMGw3LjY2Niw4LjAwMWw4LjY2NjgsLTAuNjY3bDUsLTRsMC4zMzMyLC01Ii8+CiAgICA8cGF0aCBmaWxsPSIjZjdlNGNkIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGlkPSJwYXRoNDgiIGQ9Im05MC43ODI4LDIwMS4xMDFjMCwwIDUuNjY2OCwyOS4zMzMgMzQuMzM0LDM1YzIzLjYwMTIsNC42NjUgMzUuOTk5MiwtMSA0MC42NjYyLC02LjMzM2MwLDAgLTIxLDI0Ljk5OSAtNDEuMDAwMiwxNy4zMzNjLTIwLC03LjY2NyAtMzQuNjY2LC0yMS42NjcgLTM0LjMzMzIsLTMwLjY2NmMwLjU2NzYsLTE1LjMyOCAwLjMzMzIsLTE1LjMzNCAwLjMzMzIsLTE1LjMzNCIvPgogICAgPHBhdGggZmlsbD0iI2Y3ZTRjZCIgZmlsbC1ydWxlPSJldmVub2RkIiBpZD0icGF0aDUwIiBkPSJtMTY4LjExNywyMjYuNDM1YzAsMCAtOS42NjYsMC4zMzMgLTEwLC04LjMzNGMwLDAgLTAuMDAxLC0xLjMzMyAwLjY2NiwtMi42NjZjMCwwIDcuNjY4LDguNjY3IDEyLjMzNCw0Ii8+CiAgICA8cGF0aCBmaWxsPSIjZjdlNGNkIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGlkPSJwYXRoNTIiIGQ9Im0xMjUuNzg4NywyMTQuNTMyYzAsMCAtMS42NjQxLDEzLjMwMyAtMTMuMDA1OSw1LjU2OWMtNy4zMzMyLC01IC02LjY2NiwtMTIgLTUuMzMzMiwtMTMuMzMzYzEuMzMzMiwtMS4zMzQgMC45NzA3LC00LjAxOSAxLjk4NTYsLTIuMTc2YzEuMDE0NCwxLjg0MyAwLjY4MDQsNy44NDMgNC4zNDc2LDkuNTA5YzMuNjY2OCwxLjY2NyA5LjY3NzcsMy41MjkgMTIuMDA1OSwwLjQzMSIvPgogICAgPHBhdGggZmlsbD0iIzQ5NzI4YiIgZmlsbC1ydWxlPSJldmVub2RkIiBpZD0icGF0aDU0IiBkPSJtOTQuNDQ5NiwxMjQuNDM1bC0zMS4zMzI4LC0xNGMwLDAgMTMsLTUxLjY2NyA2LjMzMjgsLTY3LjY2N2wtNC42NjY4LDEuNjY2bC0wLjMzMzIsMTkuNjY3MmwtOC42NjU2LDM3LjMzMjhsLTMuNjY3MiwxMC4zMzRsMzIuNjY2LDIxLjk5OWw5LjY2NjgsLTkuMzMyIi8+CiAgICA8cGF0aCBmaWxsPSIjNDk3MjhiIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGlkPSJwYXRoNTYiIGQ9Im05Ny42NzE1LDk1Ljg1NzhsNC40NDUzLC01LjQyMzhsMCwtMjBsLTUuMzM0LDBjMCwwIC0wLjY2NiwxNCAtMC42NjYsMTUuNjY3MmMwLDEuNjY2OCAwLjY2Niw3LjY2NjggMC42NjYsNy42NjY4Ii8+CiAgICA8cGF0aCBmaWxsPSIjNDk3MjhiIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGlkPSJwYXRoNTgiIGQ9Im05Ny43ODI4LDY3LjQzNGwtMTUsLTAuNjY2bDQuMzM0LC0zbDEwLjY2NiwtMS42NjY4Ii8+CiAgICA8cGF0aCBmaWxsPSIjMzM1MDYxIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGlkPSJwYXRoNjAiIGQ9Im0xNDkuMTE3LDcwLjc2OGwxMi4zMzMsMC4zMzMybDMsLTMwLjY2NzJsLTEyLjY2NywtMS42NjZsLTIuNjY2LDMyIi8+CiAgICA8cGF0aCBmaWxsPSIjMzM1MDYxIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGlkPSJwYXRoNjIiIGQ9Im0xNTIuNDUsNzAuNzY4bDE4LjY2NywxYzAsMCA3LjY2NiwxOS4zMzMyIDcuNjY2LDIwLjMzMzJjMCwxIDYuNjY3LDI3Ljk5OTggNi42NjcsMjcuOTk5OGwtMTUsMTUuNjY2bC0zLDIuNjY3bC04LC04bDAsLTMxbC03LC0yOC42NjYiLz4KICAgIDxwYXRoIGZpbGw9IiM0OTcyOGIiIGZpbGwtcnVsZT0iZXZlbm9kZCIgaWQ9InBhdGg2NCIgZD0ibTE2MC43ODMsNzMuMTAxMmwtMTEuNjY2LC0yLjMzMzJsMS42NjYsLTkuMzM0YzQuMzMzLC0yIDExLjY2NywzLjMzNCAxMS42NjcsMy4zMzQiLz4KICAgIDxwYXRoIGZpbGw9IiM0OTcyOGIiIGZpbGwtcnVsZT0iZXZlbm9kZCIgaWQ9InBhdGg2NiIgZD0ibTE2MS4xMTcsMTMxLjQzNGwyMy4zMzMsLTE3LjMzM2wwLjY2Nyw4bC0xNy42NjcsMTYuMzMzbC02LjMzMywtNyIvPgogICAgPHBhdGggZmlsbD0iI2ZmZmZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBpZD0icGF0aDY4IiBkPSJtMTA5LjM1MDgsNS4wOTgwNWwtNi45MDEyLDI4LjAwMzk1bC0zLjQzMjQsMjAuNjYyOGwtMC41Njc2LDE1LjMzNzJsMzEuMjM0OCwxLjY2MjhsMTkuNDMyNiwwLjAwMzJsLTEuNzY3LC0zNS4wMDMybDMsLTI2Ljk5OTk2bC0wLjMzMywtNWwtMjUuMzMyNiwtMmwtMTUuMzMzNiwzLjMzMzIxIi8+CiAgICA8cGF0aCBmaWxsPSIjZGNkOWQ4IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGlkPSJwYXRoNzAiIGQ9Im0xNDQuNzgzLDcxLjEwMTJjMCwwIC0xLjY2NiwtMzQuNjY3MiAzLjMzNCwtNTkuMzMzMmMwLDAgLTEwLC02LjMzNDAyIC0yNC42Njc0LC04LjAwMDAzbDI4LjAwMDQsMWwzLjMzMywybC00LDU0LjY2NjAzbC0xLDExLjY2OCIvPgogICAgPHBhdGggZmlsbD0iI2ZmZmZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBpZD0icGF0aDcyIiBkPSJtMTY1LjAxOCw0My4wOThsMTMsMy42NjY4bDI0LjY2NiwxLjMzMzJsMy42NjcsMTEuMzMyOWwtNi42NjcsMTkuNjY3MWwtNy42NjYsMWwtMTAuNjY3LC0zLjMzMzJsLTEwLjIzNCwtNC45OTY4bC01LjQzMywwLjk5NjhsLTQuMjM0LC0xLjY2MzYiLz4KICAgIDxwYXRoIGZpbGw9IiNkY2Q5ZDgiIGZpbGwtcnVsZT0iZXZlbm9kZCIgaWQ9InBhdGg3NCIgZD0ibTE2NC43ODMsNDkuNzY4YzAsMCA4LjY2NiwzLjk5OTIgMTAsMy42NjZsLTMuNjY2LDE4LjMzNGw0LjMzMywxLjY2NmMwLDAgMywtMTcuMzMyOCAzLC0xOS4zMzI4YzAsMCAxOC42NjYsLTEgMjAuMzMzLC0xYzAsMCA0LDcuNjY2OCAzLDE1LjY2NjhsMy42NjcsLTEwLjY2NjhsMC4zMzMsLTZsLTUuMzMzLC04bC02LC0xLjMzMzJsLTEwLDAuMzMzMmwtMy4zMzMsNC4zMzI4bC0xMS42NjcsLTEuNjY2bC0zLjY2NywtMS4zMzQiLz4KICAgIDxwYXRoIGZpbGw9IiNmZmZmZmYiIGZpbGwtcnVsZT0ibm9uemVybyIgaWQ9InBhdGg3NiIgZD0ibTE1MS42ODQsNzMuNDMwOWwtNy4zMzMsMTguNjY3MWwtNy42NjcsMTFjMCwwIDEuNjY2LDQuNjY3IDQsNC42NjdjMi4zMzQsMCA3LjY2NywwIDcuNjY3LDBsNy4zMzMsLTIuNjY3bC0wLjY2NiwtMTIuMzMzMmwtMy4zMzQsLTE5LjMzMzkiLz4KICAgIDxwYXRoIGZpbGw9IiNkY2Q5ZDgiIGZpbGwtcnVsZT0iZXZlbm9kZCIgaWQ9InBhdGg3OCIgZD0ibTE1My4xMTcsNzkuNzY4YzAsMCAtOS4zMzQsMTcuOTk5MiAtOS4zMzQsMjAuNjY2YzAsMCAxLjY2Niw0IDQsM2MyLjMzNCwtMSA3LjMzNCwtMy42NjYgNy4zMzQsLTMuNjY2bDAsNi4zMzNsLTExLjMzNCwyLjMzNGwtNy42NjYsLTFsMTMsLTMwLjY2N2wyLjY2NiwtMC4zMzQiLz4KICAgIDxwYXRoIGZpbGw9IiNmZmZmZmYiIGZpbGwtcnVsZT0ibm9uemVybyIgaWQ9InBhdGg4MCIgZD0ibTExMi4zNTEyLDEyMy43NjRsLTkuMjM0NCwxLjAwNGwtOC42NjcyLDIuNjY3bDAsLTNsNC4yMzQ4LC00LjY3bDEzLjMzMzIsLTYiLz4KICAgIDxwYXRoIGZpbGw9IiNkY2Q5ZDgiIGZpbGwtcnVsZT0iZXZlbm9kZCIgaWQ9InBhdGg4MiIgZD0ibTk3LjQ1MDgsMTIyLjc2NWMwLDAgMTAuMzM0LC00LjMzNCAxMy42NjcyLC0zLjMzNGwwLjMzMTYsLTMuOTk2bC05LjMzMTYsMS45OTZsLTUuNjY3Miw0bDEsMS4zMzQiLz4KICAgIDxwYXRoIGZpbGw9IiNkMzM4MzMiIGZpbGwtcnVsZT0iZXZlbm9kZCIgaWQ9InBhdGg4NCIgZD0ibTE2NC45ODIsMTA2LjYzYy01LjY1NiwwLjE2NiAtMTAuNzY2LDAuODM4IC0xNS4yNCwyLjFjMC4zMDQsMS44MzQgLTAuMjY1LDMuNjM0IDAuMTkyLDQuOTU1YzEuMjQ3LDAuODk4IDMuMzM3LDAuODg0IDUuMjIyLDEuMDk1Yy0xLjYzLDAuODAxIC0zLjkyLDEuMTE4IC01LjgwMSwwLjY1NWMtMC4wNDQsMS4yNzMgLTAuNjE1LDIuMDYyIC0wLjk2MSwzLjA1OGMzLjE4LDEuMTM1IDEwLjY4Nyw4LjU3NiAxNC45MSw2LjExMmMyLjAxMiwtMS4xNzIgMi44NjcsLTcuODY2IDMuMDIzLC0xMS4xMjFjMC4xMywtMi43IC0wLjI0NSwtNS40MjQgLTEuMzQ1LC02Ljg1NCIvPgogICAgPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZDMzODMzIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1taXRlcmxpbWl0PSI0IiBpZD0icGF0aDg2IiBkPSJtMTY0Ljk4MiwxMDYuNjNjLTUuNjU2LDAuMTY2IC0xMC43NjYsMC44MzggLTE1LjI0LDIuMWMwLjMwNCwxLjgzNCAtMC4yNjUsMy42MzQgMC4xOTIsNC45NTVjMS4yNDcsMC44OTggMy4zMzcsMC44ODQgNS4yMjIsMS4wOTVjLTEuNjMsMC44MDEgLTMuOTIsMS4xMTggLTUuODAxLDAuNjU1Yy0wLjA0NCwxLjI3MyAtMC42MTUsMi4wNjIgLTAuOTYxLDMuMDU4YzMuMTgsMS4xMzUgMTAuNjg3LDguNTc2IDE0LjkxLDYuMTEyYzIuMDEyLC0xLjE3MiAyLjg2NywtNy44NjYgMy4wMjMsLTExLjEyMWMwLjEzLC0yLjcgLTAuMjQ1LC01LjQyNCAtMS4zNDUsLTYuODU0eiIvPgogICAgPHBhdGggZmlsbD0iI2QzMzgzMyIgZmlsbC1ydWxlPSJldmVub2RkIiBpZD0icGF0aDg4IiBkPSJtMTM3LjkzNSwxMTUuODc2Yy0wLjAxNSwtMC40MjggLTAuMDMzLC0wLjg1OSAtMC4wNSwtMS4yOTFjLTEuNzY2LC0xLjE2IC00LjYxNywtMS4xNDYgLTYuNTU1LC0yLjEyMWMyLjg1NywtMC4xMjUgNS4xMDYsLTAuODEzIDcuMDUyLC0xLjc4M2MtMC4wNDMsLTEuMDc4IC0wLjA4NCwtMi4xNTUgLTAuMTI2LC0zLjIzM2MtMy4yMzcsLTIuMjE2IC02LjE5NCwtNS41MTYgLTEwLjAwNTIsLTcuNTk0MWMtMS44MDIsLTAuOTgyOCAtOC4xMjYyLC0zLjUxMTcgLTEwLjA0MzQsLTMuMDY0OGMtMS4wODQ3LDAuMjUxOSAtMS4xODI0LDEuNTk4IC0xLjYxNiwyLjg2NjhjLTAuOTIzOCwyLjcxNzEgLTMuMDUwOCw3LjA0MjEgLTMuMjM2MywxMS4xMzIxYy0wLjIzNjMsNS4xNjYgLTAuNzU3OCwxMy44MjQgNC44MDk0LDEyLjc2YzQuNDkxNCwtMC44NTcgOS43MTUyLC0yLjkyNiAxMy4xOTI1LC00LjgyNmMyLjEyNSwtMS4xNjIgMy4zNTQsLTIuNTk4IDYuNTc4LC0yLjg0NiIvPgogICAgPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZDMzODMzIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1taXRlcmxpbWl0PSI0IiBpZD0icGF0aDkwIiBkPSJtMTM3LjkzNSwxMTUuODc2Yy0wLjAxNSwtMC40MjggLTAuMDMzLC0wLjg1OSAtMC4wNSwtMS4yOTFjLTEuNzY2LC0xLjE2IC00LjYxNywtMS4xNDYgLTYuNTU1LC0yLjEyMWMyLjg1NywtMC4xMjUgNS4xMDYsLTAuODEzIDcuMDUyLC0xLjc4M2MtMC4wNDMsLTEuMDc4IC0wLjA4NCwtMi4xNTUgLTAuMTI2LC0zLjIzM2MtMy4yMzcsLTIuMjE2IC02LjE5NCwtNS41MTYgLTEwLjAwNTIsLTcuNTk0MWMtMS44MDIsLTAuOTgyOCAtOC4xMjYyLC0zLjUxMTcgLTEwLjA0MzQsLTMuMDY0OGMtMS4wODQ3LDAuMjUxOSAtMS4xODI0LDEuNTk4IC0xLjYxNiwyLjg2NjhjLTAuOTIzOCwyLjcxNzEgLTMuMDUwOCw3LjA0MjEgLTMuMjM2MywxMS4xMzIxYy0wLjIzNjMsNS4xNjYgLTAuNzU3OCwxMy44MjQgNC44MDk0LDEyLjc2YzQuNDkxNCwtMC44NTcgOS43MTUyLC0yLjkyNiAxMy4xOTI1LC00LjgyNmMyLjEyNSwtMS4xNjIgMy4zNTQsLTIuNTk4IDYuNTc4LC0yLjg0NnoiLz4KICAgIDxwYXRoIGZpbGw9IiNkMzM4MzMiIGZpbGwtcnVsZT0iZXZlbm9kZCIgaWQ9InBhdGg5MiIgZD0ibTE0MS4xNSwxMDkuNzEyYy0wLjQ5NCwyLjgxNCAtMS4wNjUsMy42MTcgLTAuODQ0LDYuMDcyYzcuNTA1LDUuMDA0IDguOTE0LC04LjU5NSAwLjg0NCwtNi4wNzIiLz4KICAgIDxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2QzMzgzMyIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbWl0ZXJsaW1pdD0iNCIgaWQ9InBhdGg5NCIgZD0ibTE0MS4xNSwxMDkuNzEyYy0wLjQ5NCwyLjgxNCAtMS4wNjUsMy42MTcgLTAuODQ0LDYuMDcyYzcuNTA1LDUuMDA0IDguOTE0LC04LjU5NSAwLjg0NCwtNi4wNzJ6Ii8+CiAgICA8cGF0aCBmaWxsPSIjZWYzZDNhIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGlkPSJwYXRoOTYiIGQ9Im0xNTIuMDE3LDEwNy40MzFjMCwwIC0yLjMzNCwzLjMzNCAtMC42NjcsNC4zMzRjMS42NjcsMSAzLjMzNCwtMC4wMDEgNC4zMzQsMS42NjZjMSwxLjY2NyAwLDIuNjY3IDAuMzMzLDQuNjY3YzAuMzMzLDIgMi4wMDEsMi4zMzQgMy42NjcsMi42NjdjMS42NjYsMC4zMzMgNi4zMzQsMSA3LC0wLjY2N2wtMiw2bC00LDEuMzMzbC0xMi42NjcsLTcuMzMzbC0wLjY2NywtMy42NjdsMCwtNy4zMzMiLz4KICAgIDxwYXRoIGZpbGw9IiNlZjNkM2EiIGZpbGwtcnVsZT0iZXZlbm9kZCIgaWQ9InBhdGg5OCIgZD0ibTExNy4wMTcyLDk2LjQzMDljLTAuNDAwNCw1LjIwMjEgLTAuODI0MiwxMC4zOTcxIC0xLjI5NTcsMTUuNTk0MWMtMC43MDU1LDcuNzYgMS44NjQsNi40MDYgOC41OTA2LDYuNDA2YzEuMDI3NCwwIDYuMzI1OSwtMS4yMjUgNi43MDQ5LC0yYzEuODE4LC0zLjcxMyAtMy4wNCwtMi44ODggMi4wOTQsLTUuNjg4YzQuMzM0LC0yLjM2MyAxMS45OSwxLjQzNSAxMC4yMzksNi42ODhjLTAuOTgsMS4xNjggLTUuMTA2LDAuMzY0IC02LjU4NSwxLjEzMWMtMi42MDQsMS4zNSAtNS4yMDgsMi43IC03LjgxMjMsNC4wNWMtMy4zMTMyLDEuNzE5IC0xMC45NzA3LDQuMjI1IC0xNC41MDMxLDEuODIzYy04Ljk1MDQsLTYuMDg3IDAuNTY0OSwtMjEuMjk2IDMuNzU3OCwtMjcuNjQ1OSIvPgogICAgPHBhdGggZmlsbD0iIzIzMWYyMCIgZmlsbC1ydWxlPSJldmVub2RkIiBpZD0icGF0aDEwMCIgZD0ibTEyNS43ODg3LDIxNC41MzJjLTkuMDg1MiwyLjExNiAtMTMuNTk5NiwtMy44MDIgLTE2LjM1MzUsLTkuOTRjLTIuNDU5LDAuNTk2IC0xLjQ4MDUsMy45NCAtMC44NTk0LDUuNjQ0YzEuNjI2Miw0LjQ3MiA4LjE3OTcsMTAuNDI1IDEzLjUzNDQsOS42MThjMi4zMDQzLC0wLjM0NyA1LjQyMjYsLTIuNDU0IDMuNjc4NSwtNS4zMjIiLz4KICAgIDxwYXRoIGZpbGw9IiMyMzFmMjAiIGZpbGwtcnVsZT0iZXZlbm9kZCIgaWQ9InBhdGgxMDIiIGQ9Im0xNzAuMDU1LDIwNC4xODZjMC4xNDMsLTAuMDA2IDAuMjg4LC0wLjAxMSAwLjQzMSwtMC4wMTdjMi4wNTMsLTQuMjY1IDMuODMsLTguNzgzIDYuNDIsLTEyLjU0OGMtMS43MzUsLTQuMDQxIC0xMy4xMzgsLTcuNjE3IC0xMi45NjIsLTAuMzYxYzIuNDY2LDEuMDc4IDYuNzIzLDAuMjIgOC45MDksMS41OTdjLTEuMjY0LDMuNDY5IC0zLjA4OCw2LjQyMiAtMi43OTgsMTEuMzI5Ii8+CiAgICA8cGF0aCBmaWxsPSIjMjMxZjIwIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGlkPSJwYXRoMTA0IiBkPSJtMTMwLjQ0LDIwNC4wNzVjMS45NDgsLTMuNTcxIDIuNTgyLC03LjMyMyA1LjM1MSwtMTAuMDIyYzEuMjQ3LC0xLjIxNSAzLjY3MiwtMi42OTYgMi40NywtNi4wNzVjLTAuMjgxLC0wLjc5NyAtMi4zMzQsLTIuNTc0IC0zLjUxOSwtMi45MjNjLTQuMzI5LC0xLjI3OCAtMTQuNDE2MiwtMC4yNjQgLTExLjAwMDIsNS4xMzNjMy41ODAxLC0wLjE2NyA4LjM5MjIsLTIuMzI1IDExLjA2ODIsMC4yNzRjLTIuMDU1LDMuMjg1IC01LjcxODYsOS43ODQgLTQuMzcsMTMuNjEzIi8+CiAgICA8cGF0aCBmaWxsPSIjMjMxZjIwIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGlkPSJwYXRoMTA2IiBkPSJtMTY4LjQzLDE2Ny43ODFjLTYuNTE4LC00LjE4NyAtMTMuNzg2LC04Ljc0IC0yNC40NjYsLTcuNjg0Yy0yLjI4MiwxLjk4NCAtMy4xNTIsNi4zOTkgLTAuOTM1LDkuMzE1YzEuMTU0LC0xLjk4NCAwLjQyOSwtNS42MzMgMy42NDUsLTYuMTgyYzYuMDYsLTEuMDM3IDEzLjExMywzLjcwNyAxNy40NzIsNS4zNjVjMi43MDMsNC41NTcgLTAuMjMzLDYuMjMzIC0yLjY2OCw5LjE2NmMtNC45ODUsNi4wMDkgLTExLjY3MiwxMy40NTcgLTExLjQyOSwyMi40NTNjMi4wMTUsMS40NjEgMi4xODksLTIuMjMgMi40NzgsLTIuOTAyYzIuNjAzLC02LjA5MiA5LjE1NCwtMTMuODgzIDEzLjkzNSwtMTkuMDk3YzEuMTc0LC0xLjI4NCAzLjEwNywtMi41MTYgMy4zMjIsLTMuMzY1YzAuNjIsLTIuNDY5IC0xLjYxMywtNS40MjcgLTEuMzU0LC03LjA2OSIvPgogICAgPHBhdGggZmlsbD0iIzIzMWYyMCIgZmlsbC1ydWxlPSJldmVub2RkIiBpZD0icGF0aDEwOCIgZD0ibTgyLjUwMTYsMTcyLjE4OWMtMi4wNDMsMS4xNjYgLTIuNTI5Myw2LjMwMiAtNC45Mjc4LDYuNDQ4Yy0zLjQyNzcsMC4yMDggLTIuODAyNywtNi42NjMgLTIuNzg5LC0xMC42ODFjLTIuMzU5NCwyLjE0MiAtMi43NzQzLDguNzM3IC0xLjA0MSwxMi4xMjRjLTEuOTc1NCwwLjk3IC0yLjg1NzUsLTEuMDcgLTMuOTUzMiwtMS43ODljMS40MDgyLDEwLjIzIDE0Ljk2NDksNC43NDUgMTIuNzExLC02LjEwMiIvPgogICAgPHBhdGggZmlsbD0iIzIzMWYyMCIgZmlsbC1ydWxlPSJldmVub2RkIiBpZD0icGF0aDExMCIgZD0ibTE3Mi41OCwxNjMuNTIxYy0zLjAzNCwtNS43NzUgLTcuMzI2LC0xMi4xMzUgLTE2LjIyOSwtMTIuMzJjLTAuMTgxLDEuODY1IC0wLjMyLDQuNzAzIDAuMDEsNS44MjZjNi44MDYsMC42NTQgMTEuMDA4LDQuMTE4IDE2LjIxOSw2LjQ5NCIvPgogICAgPHBhdGggZmlsbD0iIzIzMWYyMCIgZmlsbC1ydWxlPSJldmVub2RkIiBpZD0icGF0aDExMiIgZD0ibTEyOS45MjY2LDE1OS43NzdjNS42Nzg0LC0yLjk4NiAxNi4xMTQ0LC0zLjMwNyAyMy44MzI0LC0zLjA4MWMwLjQxNCwtMS42OTEgMC40MDQsLTMuNzggMC40MiwtNS44NDJjLTkuOTIxLC0wLjQ5NSAtMjEuNjUxLDEuOTYgLTI0LjI1MjQsOC45MjMiLz4KICAgIDxwYXRoIGZpbGw9IiMyMzFmMjAiIGZpbGwtcnVsZT0iZXZlbm9kZCIgaWQ9InBhdGgxMTQiIGQ9Im0xMjguODQ3MywxNTQuMjA5YzMuOTI2NywtOS44NTkgMTcuNDIyNywtOC43MjQgMjguODAzNywtOC40NTJjLTAuNTAxLC0xLjI4IC0xLjU4NywtMi43OTIgLTIuOTM3LC0zLjMzOWMtMy42NDcsLTEuNDg0IC0xMy43MDYsLTIuNjEgLTE4Ljc2OSwwLjA3OWMtMy4yMTEsMS43MDcgLTUuMjc0LDUuNTY0IC03LjAzMzMsNy44MjVjLTAuODQ5NiwxLjA5MiAtNS4wODAxLDMuODgxIC0wLjA2NDQsMy44ODciLz4KICAgIDxwYXRoIGZpbGw9IiM4MWIwYzQiIGZpbGwtcnVsZT0iZXZlbm9kZCIgaWQ9InBhdGgxMTYiIGQ9Im0xNjcuOTU2LDk5LjgyNjJjLTQuNjA4LC03Ljg5MjIgLTkuMDE3LC0xNS45OTgxIC0xNC40ODQsLTIyLjk1OTRjMi4yOTIsNi43MzkxIDMuMjczLDE4LjAxODQgMy42MTksMjYuNjE3MmM0Ljc5NSwyLjI0NCA4LjkwMSwtMC41MDUgMTAuODY1LC0zLjY1NzgiLz4KICAgIDxwYXRoIGZpbGw9IiMyMzFmMjAiIGZpbGwtcnVsZT0iZXZlbm9kZCIgaWQ9InBhdGgxMTgiIGQ9Im0xOTIuNzUyLDcxLjQ2MDljLTUuMTU5LC0xLjAzMjggLTguNzg0LC02LjA0NjggLTEzLjgxNywtNS43MjVjMi43NjYsMy44OTkzIDcuNjEzLDUuNTQzIDEzLjgxNyw1LjcyNSIvPgogICAgPHBhdGggZmlsbD0iIzIzMWYyMCIgZmlsbC1ydWxlPSJldmVub2RkIiBpZD0icGF0aDEyMCIgZD0ibTE5NS4wMjgsNjMuMzg3MWMtNC4yMDUsLTAuNDQ0MSAtOS4xNDQsLTEuMTI1IC0xMy40MDksLTAuNzc0MmMyLjAxOSwzLjA4NCA5Ljc5OCwyLjAxOTkgMTMuNDA5LDAuNzc0MiIvPgogICAgPHBhdGggZmlsbD0iIzIzMWYyMCIgZmlsbC1ydWxlPSJldmVub2RkIiBpZD0icGF0aDEyMiIgZD0ibTE5Ni40ODUsNTYuNDI2MmMtNC43MjYsLTAuMTAyNCAtMTAuNiwtMC4wMDgyIC0xNS4wOTIsMC4zNjg3YzIuNjU3LDIuODUzOSAxMi4wMjcsMS4wNTkgMTUuMDkyLC0wLjM2ODciLz4KICAgIDxwYXRoIGZpbGw9IiNkY2Q5ZDgiIGZpbGwtcnVsZT0iZXZlbm9kZCIgaWQ9InBhdGgxMjQiIGQ9Im0xNTkuMDY0LDM3LjM3N2MwLjY3OCwtNS45MzUyIDMuMDMxLC0xMS45NDg5IDIuNzM2LC0xOC40NDg5Yy0yLjYxMywtMC44ODEyIC00LjExNCwtMS42NTE5IC03LjYxNSwtMS42NDcyYy0wLjI0Nyw1LjUyNDIgLTAuOTg2LDEzLjk2OTEgLTAuNzY1LDE5LjIzNTFjMS43MjIsLTAuMTE0IDQuMjYxLDEuMjMwMSA1LjY0NCwwLjg2MSIvPgogICAgPHBhdGggZmlsbD0iI2YwZDZiNyIgZmlsbC1ydWxlPSJldmVub2RkIiBpZD0icGF0aDEyNiIgZD0ibTE1MS40NDUsMTI0Ljg0OWMtMi4zNzMsLTEuNTQ5IC00LjM5NCwtMy40ODMgLTYuNjczLC01LjEzN2MtNS4wNTQsLTAuMjUgLTcuODEyLDAuMzUgLTExLjUyNSwzLjI1MmMwLjA2MSwwLjIzMyAwLjQzNCwwLjEyOSAwLjQ0OCwwLjQxNWM1LjQxLC0yLjQxMSAxMi4yODcsMC45ODIgMTcuNzUsMS40NyIvPgogICAgPHBhdGggZmlsbD0iIzgxYjBjNCIgZmlsbC1ydWxlPSJldmVub2RkIiBpZD0icGF0aDEyOCIgZD0ibTEyMy4wNDQ1LDg3Ljk3MTFjMS40ODY0LDYuNDQxIDcuMzEwNiw5Ljc3NjkgMTIuNTk5NSwxMy4zMjM5YzUuNDU5LC02LjkyODIgOC43NzksLTE1LjgzOCAxMi40MzUsLTI0LjQzNmMtOC42MzgsMi42MDM5IC0xNy40NjQsNi44Mjg5IC0yNS4wMzQ1LDExLjExMjEiLz4KICAgIDxwYXRoIGZpbGw9IiMyMzFmMjAiIGZpbGwtcnVsZT0iZXZlbm9kZCIgaWQ9InBhdGgxMzAiIGQ9Im0xNTMuNDIsMzYuNTE2Yy0wLjIyMSwtNS4yNjYgMC41MTgsLTEzLjcxMDkgMC43NjUsLTE5LjIzNTFjMy41MDEsLTAuMDA0NyA1LjAwMiwwLjc2NiA3LjYxNSwxLjY0NzJjMC4yOTUsNi41IC0yLjA1OCwxMi41MTM3IC0yLjczNiwxOC40NDg5Yy0xLjM4MywwLjM2OTEgLTMuOTIyLC0wLjk3NSAtNS42NDQsLTAuODYxem0tNTQuNTE0MSwyOS45NDg4YzIuMzA4NiwtMjEuMjIzIDUuNjUyMywtMzkuMDYzNiAxMS43ODUxLC01Ny44NTY5OWMxMy42MTEzLC00LjEzMjgxIDMwLjAyLC00LjQ5Mjk3IDQyLjA1MSwtMC43NjM2N2MtMi4yMDksMTAuNjA3MDYgLTEuMjQ0LDIzLjUyMDY2IC0yLjUzNSwzNC44Mzk4NmMtMC45NzMsOC41MDc4IC0wLjQ3NywxNy4wNjggLTEuODExLDI1Ljc0OGMtMTQuNTc4LDMuMDMyOCAtMzUuMTgzNSwwLjcwOSAtNDkuNDkwMSwtMS45Njcyem01Mi45MzcxLDEuODM0Yy0wLjEyMywtOS4xMTQ4IDAuNDA4LC0xOC4xMDU4IDEuMTA0LC0yNy4yMzJjMy41LDAuNTI1NCA1Ljg3NSwwLjg3NjIgOS4xMjcsMS41ODkxYy0xLjA1Niw4Ljc4NTkgLTAuOTI2LDE4LjY3MjIgLTMuMDc3LDI2LjQ0NDFjLTIuNDg2LC0wLjAyMzggLTQuNjc1LDAuMDI4OSAtNy4xNTQsLTAuODAxMnptMTcuNzU1LDEuNDY5MmMtMS42NjEsMC4zODA4IC0zLjU5NSwwLjAxNDggLTUuMTgyLC0wLjAxNmMwLjc0NiwtNy40MzAxIDIuNTU2LC0xNS42MjkgMy4xOTMsLTIzLjQyODJjMi40OTcsLTAuMDc3NyAzLjgzMSwxLjEgNS44ODUsMS40OTYxYzAuMTEsNi44NDYxIC0wLjU5OCwxNi4yNzgxIC0zLjg5NiwyMS45NDgxem0yNi44ODQsLTI0LjU2MjljNS4yMDUsMS4yNjQgOC40NzgsNy42MzkgNy4wMjIsMTQuMTg1OWMtMC45NzcsNC40IC0yLjcxNywxMi42ODUyIC00LjU3OSwxNS41Yy0xLjM3NiwyLjA4MiAtNS4xMDcsNC44MDc4IC04LjA4NiwyLjljLTQuODQ2LC0zLjEwMzEgLTEzLjM4MywtNC4wMDM5IC0xNi45MTcsLTcuNzYwMWMxLjc3MiwtNS45IDIuMzIyLC0xNC4wMDM5IDMuMDUzLC0yMS40Nzk3YzYuMDU0LC0wLjM3NzQgMTMuNTAzLDEuNjY2IDE4LjUzOCwtMC41MDI0Yy0zLjUxNSwtMS4xMzg2IC04LjA3NiwtMS4xNDc2IC0xMS4xMTMsLTIuODA3YzIuNDgyLC0xLjE5ODggOC4yOTMsLTAuOTU2NiAxMi4wODIsLTAuMDM2N3ptLTQ4LjQwMywzMS42NTM5Yy0zLjY1Niw4LjU5OCAtNi45NzYsMTcuNTA3OCAtMTIuNDM1LDI0LjQzNmMtNS4yODg5LC0zLjU0NyAtMTEuMTEzMSwtNi44ODI5IC0xMi41OTk1LC0xMy4zMjM5YzcuNTcwNSwtNC4yODMyIDE2LjM5NjUsLTguNTA4MiAyNS4wMzQ1LC0xMS4xMTIxem05LjAxMiwyNi42MjVjLTAuMzQ2LC04LjU5ODggLTEuMzI3LC0xOS44NzgxIC0zLjYxOSwtMjYuNjE3MmM1LjQ2Nyw2Ljk2MTMgOS44NzYsMTUuMDY3MiAxNC40ODQsMjIuOTU5NGMtMS45NjQsMy4xNTI4IC02LjA3LDUuOTAxOCAtMTAuODY1LDMuNjU3OHptLTEwLjIxNiwzLjYzYy0yLjA3MSwwLjIyMyAtMy44MjksLTIuMzgxIC02LjUyMiwtMS4yNTVjLTAuNjE3LC0wLjY4MiAtMS4xNzgsLTEuNDIxIC0xLjgwNywtMi4wODdjNS45NDgsLTcuMTY4MSA4LjY1MSwtMTcuMzM4IDEzLjI0NSwtMjUuNzYxOGMyLjQ2NSw4LjA5MTggMi4xODEsMTYuOTU3IDIuNzI0LDI1Ljc4ODhjLTMuMzg3LC0wLjIxNSAtNS4yNjYsMy4wNjMgLTcuNjQsMy4zMTV6bS02LjU2OSw4LjY3Yy0wLjIyMSwtMi40NTUgMC4zNSwtMy4yNTggMC44NDQsLTYuMDcyYzguMDcsLTIuNTIzIDYuNjYxLDExLjA3NiAtMC44NDQsNi4wNzJ6bS04Ljk0OSwyLjkzOGMtMy40NzczLDEuOSAtOC43MDExLDMuOTY5IC0xMy4xOTI1LDQuODI2Yy01LjU2NzIsMS4wNjUgLTUuMDQ1NywtNy41OTQgLTQuODA5NCwtMTIuNzZjMC4xODU1LC00LjA5IDIuMzEyNSwtOC40MTUgMy4yMzYzLC0xMS4xMzIxYzAuNDMzNiwtMS4yNjg4IDAuNTMxMywtMi42MTQ5IDEuNjE2LC0yLjg2NjhjMS45MTcyLC0wLjQ0NjkgOC4yNDE0LDIuMDgyIDEwLjA0MzQsMy4wNjQ4YzMuODExMiwyLjA3ODEgNi43NjgyLDUuMzc4MSAxMC4wMDUyLDcuNTk0MWMwLjA0MiwxLjA3OCAwLjA4MywyLjE1NSAwLjEyNiwzLjIzM2MtMS45NDYsMC45NyAtNC4xOTUsMS42NTggLTcuMDUyLDEuNzgzYzEuOTM4LDAuOTc1IDQuNzg5LDAuOTYxIDYuNTU1LDIuMTIxYzAuMDE3LDAuNDMyIDAuMDM1LDAuODYzIDAuMDUsMS4yOTFjLTMuMjI0LDAuMjQ4IC00LjQ1MywxLjY4NCAtNi41NzgsMi44NDZ6bS0zMy4yMTM2LDYuMDMzYy0yLjg4NiwtMi45MyA4LjA5NDUsLTYuOTI0IDExLjU5MDYsLTcuMTM5Yy0wLjAxOTUsMS44NTQgMS4wNTY2LDMuNjAyIDAuODM5OCw0LjkzMmMtNC4xNTIzLDAuNzI5IC05LjYwOTMsMC4yNDggLTEyLjQzMDQsMi4yMDd6bTM1LjU1MTYsLTEuMzc2Yy0wLjAxNCwtMC4yODYgLTAuMzg3LC0wLjE4MiAtMC40NDgsLTAuNDE1YzMuNzEzLC0yLjkwMiA2LjQ3MSwtMy41MDIgMTEuNTI1LC0zLjI1MmMyLjI3OSwxLjY1NCA0LjMsMy41ODggNi42NzMsNS4xMzdjLTUuNDYzLC0wLjQ4OCAtMTIuMzQsLTMuODgxIC0xNy43NSwtMS40N3ptMzIuNjMyLC05Ljg5NWMtMC4xNTYsMy4yNTUgLTEuMDExLDkuOTQ5IC0zLjAyMywxMS4xMjFjLTQuMjIzLDIuNDY1IC0xMS43MywtNC45NzcgLTE0LjkxLC02LjExMmMwLjM0NiwtMC45OTYgMC45MTcsLTEuNzg1IDAuOTYxLC0zLjA1OGMxLjg4MSwwLjQ2MyA0LjE3MSwwLjE0NiA1LjgwMSwtMC42NTVjLTEuODg1LC0wLjIxMSAtMy45NzUsLTAuMTk3IC01LjIyMiwtMS4wOTVjLTAuNDU3LC0xLjMyMSAwLjExMiwtMy4xMjEgLTAuMTkyLC00Ljk1NWM0LjQ3NCwtMS4yNjIgOS41ODQsLTEuOTM0IDE1LjI0LC0yLjFjMS4xLDEuNDMgMS40NzUsNC4xNTQgMS4zNDUsNi44NTR6bS03My4wNDIyLDguNDM3Yy0wLjkwNjMsMC42NDYgLTcuMDM3MSw4LjYyMyAtNy44NzcsOC4yOTJjLTExLjA5MzcsLTQuMzc1IC0yMS40NjY4LC0xMS45NCAtMzAuNzM2MywtMTkuMDk1YzguODM3OSwtMTguOTY0MSAxMi40MDU1LC00Mi4xOTgxIDEzLjAzNTksLTY0LjU5MThjMTAuMTI0MiwtNC43MzUyIDE5LjAxNjgsLTExLjU2MTQgMzIuNzU1MSwtMTIuMjc0MmMtMS41ODk4LDExLjI0OCAtMy4wNDEsMjEuMjgzMiAtMy45NDM0LDMxLjg3M2MtMy40NTE5LDEuNDU1MSAtOC40MDQzLC0wLjA2NiAtMTEuNjM0NywwLjQ1MTJjLTAuMDI3NCwzLjg5MjkgNC45MzM2LDEuNzA0NyA1LjM0NjgsNC4zMjI2YzAuMzExNCwxLjk4MDEgLTIuNzI5NiwyLjEzMDEgLTEuNzM5NCw1LjI0ODFjMi41MjU0LC0wLjkxOCAzLjg1MTYsLTIuOTQ1NyA2LjU0NDksLTMuNzA3MWMyLjQ2MSw1LjM4NCAtMC4wMzQ0LDE0LjkxMDIgMC4zMjAzLDE5LjQxMDJjMC4wNjcyLDAuODQ0OSAwLjQyMTksNC42ODA5IDIuMzE0NSw0LjAwNzhjMS42NzUsLTAuNTk1NyAtMC4wOTU3LC0xMC4yMDE5IDAuMDg3OSwtMTQuNDYwOWMwLjE2NzIsLTMuOTIzOSAtMC40NzM5LC03LjcyMDcgMS4xMTUyLC0xMC4xODRjMTMuMjc1NCwxLjgwNyAyNi43NjU2LDIuOTc1IDQxLjEyOTQsMy4zNjkxYy0zLjE2LDEuMzU1OSAtNi45MTQsMi42MzkxIC0xMS4wMjk4LDQuOTU5Yy0yLjIzMTIsMS4yNTc4IC05LjI2NDQsMy44NzUgLTkuOTA4Miw1Ljk5NDJjLTEuMDI3MywzLjM3NjkgMi42OTUzLDUuMTc1NyAzLjMzMiw4LjA3MDdjLTYuNzAxMSwtMy42NTQ3IC04LjAwODUsMy41MDMxIC05LjU5MzcsOC41NzQxYy0xLjQzNjMsNC41OTMgLTIuMjUzOSw4LjAyNCAtMi42MDYzLDEwLjY3M2MtNS43NzI2LDIuNzUyIC0xMS45NDQ1LDUuNTM5IC0xNi45MTMyLDkuMDY4em02Ny4xNzkyLDcuMzI3YzkuMjQzLDQuNDgyIDEwLjkwOSwtMTYuNzUxIDcuMjg2LC0yMy41OTFjMC41NiwtMi4wNCAyLjQ4NiwtMi44MjEgMy4yNzIsLTQuNjU1Yy01LjE1OCwtOS4yMzk5IC0xMC44ODcsLTE3Ljg2NDkgLTE2LjE1LC0yNi45OTYxYzMuOTE1LDIuNDM3MSA5LjUwNywwLjQzNTkgMTQuMTE0LDIuMjYwMWMxLjY4NCwwLjY2NiAyLjkwMyw0LjUyMTEgNC4xNzgsNy42MDUxYzMuNTA3LDguNDg0OCA3LjE4OSwxOS4xODE5IDguODI3LDI3LjI3ODljMC4zNywxLjg0NSAxLjM3OCw1Ljg2NSAxLjE1Miw3LjUwN2MtMC40MDMsMi45NCAtNC4zOTIsNS4xMiAtNi40MjEsNi45MzhjLTMuNzM4LDMuMzU4IC02LjA5Miw2LjMxMyAtOS45OTEsOS40NTNjLTEuNTgxLC0yLjMzNCAtNC45NzQsLTMuOTAyIC02LjI2NywtNS44em0tODguMzE3OSw4MS45NjhjLTQuNDA0MywtNC44NDYgLTMuNDgyNCwtMTMuOTI2IC0yLjk0OTIsLTIwLjM4NmM3Ljk2MDksNS4wMDggMTguNTI3MywtMC4zOTYgMTguNDI3NywtOC45MTRjMy44MDA4LDAuMTAxIDEuNDE5OSw0Ljc0NyAwLjczMjQsNy43NGMtMi4yNDY4LDkuNzc2IDMuNzg1MiwyMC4zOTcgMC4yNzM1LDI5LjMzN2MtNi44MTg0LC0wLjUxNyAtMTIuNDIsLTMuMzAyIC0xNi40ODQ0LC03Ljc3N3ptMzEuNTEzNywyOC4xMjZjLTkuOTcwNywtMi44MjYgLTIyLjc0OTMsLTEwLjA3MSAtMjYuODQ2NSwtMTkuMDI4YzMuMTcyNiwwLjQ2MSA1LjM3NSwyLjA2MSA4LjUwNDcsMi4yNTljMS4xODI4LDAuMDc3IDIuNzMyNCwtMC40OTYgNC4wOTE4LC0wLjE1OGMyLjcwOSwwLjY3MiA0Ljk5NTMsNi43NDYgNy4wMzksOS4wMDZjMS45OTIyLDIuMjA3IDQuMzg2NywzLjE1IDYuMDI1NCw1LjE2MmMxLjA1MjgsMC41MDggMi42MDk0LDAuNDczIDIuNjY5MiwyLjA1NGMtMC40NTYzLDAuNDg4IC0wLjkzNjgsMC44NiAtMS40ODM2LDAuNzA1em01MS45MDMyLC0yLjY1OGMtMTAuMzQ5LDUuODM5IC0yNy44NjYxLDEwLjIzMSAtMzguODc0Nyw0Ljc0M2MtOC44ODI4LC00LjQyOSAtMjAuODg5OSwtMTEuNzU3IC0yNC45ODM2LC0yMS4wNDNjMy44MjQyLC04Ljk2MSAtMS4xMzI4LC0xNy4xNzIgLTEuNDQ5MiwtMjYuMjdjLTAuMTY4LC00Ljg0MSAyLjI3OTMsLTkuMDY3IDIuNDY2OCwtMTQuMzM3Yy0xLjMwODYsLTIuMTU5IC01LjMwNjcsLTIuNDI1IC04LjA3NDMsLTIuMjc3Yy0wLjkzMTYsNC42NjIgLTIuNTYyNSw5LjkwMiAtNy4zNjMyLDEwLjQyOGMtNi43OTMsMC43NDMgLTExLjc1OTgsLTQuODc5IC0xMi4wNjg0LC0xMC43NTRjLTAuMzY1MiwtNi45MDkgNS4zMDY2LC0xOC4zNiAxMy4zNDU3LC0xNy41NjVjMy4xMDU1LDAuMzA3IDMuODY4NCwzLjQyIDcuMjUyLDMuMzg4YzEuODMzOSwtMy42NTkgLTIuODI4OSwtNC44MDggLTMuMzA4NiwtNy40MjVjLTAuMTI1LC0wLjY3NiAwLjM4NjcsLTMuMzE4IDAuNjg0MywtNC41NTdjMS40NjAyLC02LjAzMyA0LjcxNTMsLTEzLjg0MSA3LjkxOTIsLTE4LjQzNGM0LjA2NjQsLTUuODI2IDEyLjA1NTUsLTYuNzA0IDIwLjY1MDQsLTcuMjc1YzEuNTM1MSwzLjMwNyA3LjE5MDIsMy4wMzUgMTAuODc1LDIuMTdjLTQuNDE2LDEuNzQ5IC04LjUyMTUsNS45ODkgLTExLjkyMzksOS43NDJjLTMuOTA4Miw0LjMwNiAtNy44NjcxLDguOTI1IC04LjA2NzEsMTQuNTUzYzcuMzg1NSwtMTAuMjQ2IDEzLjQ4NzEsLTE5LjE5NCAyNi45MTY4LC0yMy43MDFjMTAuMTYxOCwtMy40MDggMjIuMDI5OCwxLjU2MiAyOS44Mzc4LDcuMDQ1YzMuMjQsMi4yNzkgNS4xNzQsNS44OTUgNy40NzcsOS4yMDVjOC42MTcsMTIuMzk1IDEyLjYzOCwzMC4wODcgMTEuNzU0LDQ3LjIzNWMtMC4zNjQsNy4wNzIgLTAuMzQ4LDE0LjEyIC0yLjcyMSwxOC44NzhjLTIuNDgsNC45NzUgLTEwLjg2OCw5LjQyNiAtMTUuNzc4LDQuOTI2Yy0wLjkxLDQuODM4IDQuMDgzLDcuODMgOS45NDgsNi4wODljLTQuMTgyLDUuMzk3IC04LjU3MSwxMS44ODIgLTE0LjUxNSwxNS4yMzZ6bTE5LjI4MSwtMTU5LjU2NzJjOC4wODcsNC4wMjAzIDIzLjE5NywxMC44MjExIDI4LjI2NywtMC4wMTQ4YzEuODcxLC0zLjk5NDIgNC4wNjYsLTEwLjc0NjEgNS4wMzUsLTE0Ljg2OTJjMS4zNjksLTUuODE2OCAtMS40ODQsLTE4LjA0MyAtNy40NjMsLTE5Ljk5NDljLTUuMjgxLC0xLjcyMzggLTExLjQ0MywtMS42MTg4IC0xNy44MDQsLTAuMzQxYy0wLjc0OSwwLjYyMyAtMS41ODMsMS43MDkgLTIuMTY2LDIuODQxYy00LjU0MiwwLjE3NjIgLTguNzk1LC0wLjI0MzggLTEyLjM4MywtMi4xMTA5YzAuMzQsLTMuMzU5IC0xLjkzMiwtMy44OTgxIC00LjA2MiwtNC41ODk5Yy0xLjU3OSwtNi4yNjA5IDMuMTU5LC0xNC40MzcxIDIuMDI1LC0yMC4xNDYxYy0wLjgwOSwtNC4wNjcyIC01LjgxMywtNC42OTYxIC05LjQ5MSwtNS40NTdjLTAuMTIsLTIuMjYwMiAwLjE2MSwtNC4xNDY4OSAwLjQxMiwtNi4wNTljLTAuODQxLC0zLjA5ODgzIC00LjYxMywtNC44NjI4OSAtOC4xODcsLTUuMjk0OTJjLTExLjc1OSwtMS40MTQwNiAtMjkuNjEzMywtMi4wNDkyMiAtNDAuOTIzOSwyLjAxNzk3Yy0zLjE1NjIsNy43NDE3NSAtNS42NDI2LDE3LjE1Nzg1IC04LjI3MTUsMjUuOTk4MDVjLTExLjAzMTIsLTEuMTc4MSAtMTkuOTUzMSw0Ljc1OTggLTI4LjM2NCw4LjY1Yy0yLjkxMjEsMS4zNSAtNi45NDA2LDIuMDkzNyAtOC4wMjg1LDQuNDExN2MtMS4wNTQ3LDIuMjQ0MiAtMC42MjMxLDYuNTQ1MyAtMC44ODQ4LDEwLjYwODJjLTAuNjY2LDEwLjM3NyAtMS4yMzYzLDIwLjM4NiAtMy45NzY2LDMxLjAxMWMtMS4yMzA0LDQuNzY3OSAtMy4zNzUsOC45NzUgLTQuODcxMSwxMy41NjkxYy0xLjM4MjgsNC4yNTc5IC0zLjc5ODgsOS41MTk5IC00LjQyODksMTMuNzY1OWMtMC45MzQzLDYuMjkzIDQuOTkxNCw2LjY0MyA4Ljc4MDUsOS4zN2M1Ljg1NzQsNC4yMTcgMTAuNDU1MSw2LjU0OSAxNi43OTg4LDEwLjM1NWMxLjg3ODksMS4xMjcgNy41NDUsMy45OCA4LjE4OTUsNS4yOTRjMS4yODEyLDIuNjA1IC0yLjE5OTIsNi4yNzggLTMuMTI5Nyw4LjMyYy0xLjQ3MTksMy4yMjkgLTIuMjM5NSw1Ljk3MiAtMi40NTA0LDkuMTU4Yy01LjMyMTUsMC44NDEgLTkuMzU1NSw0LjAwOCAtMTEuNzkyMiw3LjU3OWMtNC4wMzA4LDUuOTEgLTYuODI2MiwxNi44NDQgLTMuMzM4NywyNS4xNjFjMC4yNzM1LDAuNjU1IDEuNjM3NSwxLjk0MyAxLjgzODcsMi45NDljMC4zOTY5LDEuOTgxIC0wLjc0NjksNC42MTUgLTAuODE4LDYuNzIyYy0wLjM2NjQsMTAuODEgMS44MjksMjAuMTI0IDkuMTA2MywyMy4zODRjMi45NTQzLDExLjc2OSAxMy41MjgxLDE1LjY4MiAyMy40OTAyLDIxLjUzMWMzLjcyMzksMi4xODYgNy44Mjg5LDMuNTgzIDEyLjA2ODQsNS4xNDNjMTUuMjA4Miw1LjU5NyAzOC41NDE5LDQuNTQzIDUxLjE2MzksLTUuMDAzYzUuMzUyLC00LjA0OCAxMy45MDcsLTEyLjU5NSAxNi45NjcsLTE4Ljc4M2M4LjA4MiwtMTYuMzM3IDcuNTA4LC00My42NCAxLjg1NSwtNjMuNTEzYy0wLjc2LC0yLjY2OCAtMS44NjIsLTYuNTkgLTMuNDAxLC05Ljc5NWMtMS4wNzMsLTIuMjM4IC00LjQwOCwtNi43MTYgLTQuMDAzLC04LjY5MmMwLjQxNywtMi4wNDMgNy42MDQsLTcuNSA5LjE0NSwtOC45ODZjMi43NzUsLTIuNjc3IDguMDQ3LC02LjIzIDguNDc0LC05LjYwOGMwLjQ1OSwtMy41OTUgLTEuNTg0LC04LjUxMyAtMi42MTksLTExLjk4MmMtMy40NiwtMTEuNTc2OSAtNi44MzYsLTIyLjI3ODEgLTEwLjc1OSwtMzIuNTk5MiIvPgogICAgPHBhdGggZmlsbD0iI2Y3ZTRjZCIgZmlsbC1ydWxlPSJldmVub2RkIiBpZD0icGF0aDEzMiIgZD0ibTEyMC44OTEsMTU3LjI1NWMwLjQzODcsMC41ODQgMi44NTA4LDEuNDcxIDYuMjI1OCwtMC4xNTRjMCwwIC00LC0wLjY2NyAtMy42NjcyLC03LjMzNmwtMS42NjY4LDAuMzM0YzAsMCAtMS43MjI2LDYuMDQ3IC0wLjg5MTgsNy4xNTYiLz4KICAgIDxwYXRoIGZpbGw9IiMxZDE5MTkiIGZpbGwtcnVsZT0iZXZlbm9kZCIgaWQ9InBhdGgxMzQiIGQ9Im0xNTAuMTE3LDk5LjkzNGMwLC0xLjAxMjEgLTAuODIxLC0xLjgzMjggLTEuODM0LC0xLjgzMjhjLTEuMDEyLDAgLTEuODMzLDAuODIwNyAtMS44MzMsMS44MzI4YzAsMS4wMTIgMC44MjEsMS44MzQgMS44MzMsMS44MzRjMS4wMTMsMCAxLjgzNCwtMC44MjIgMS44MzQsLTEuODM0Ii8+CiAgICA8cGF0aCBmaWxsPSIjMWQxOTE5IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGlkPSJwYXRoMTM2IiBkPSJtMTUxLjk1LDkxLjQzNGMwLC0xLjAxMjEgLTAuODIxLC0xLjgzMjggLTEuODM0LC0xLjgzMjhjLTEuMDEyLDAgLTEuODMzLDAuODIwNyAtMS44MzMsMS44MzI4YzAsMS4wMTIxIDAuODIxLDEuODM0IDEuODMzLDEuODM0YzEuMDEzLDAgMS44MzQsLTAuODIxOSAxLjgzNCwtMS44MzQiLz4KICAgPC9nPgogIDwvZz4KIDwvZz4KPC9zdmc+ +keywords: +- ci/cd +- pipeline +- jenkins diff --git a/charts/redhat/redhat/redhat-jenkins/0.0.2/src/templates/NOTES.txt b/charts/redhat/redhat/redhat-jenkins/0.0.2/src/templates/NOTES.txt new file mode 100644 index 000000000..e69de29bb diff --git a/charts/redhat/redhat/redhat-jenkins/0.0.2/src/templates/_helpers.tpl b/charts/redhat/redhat/redhat-jenkins/0.0.2/src/templates/_helpers.tpl new file mode 100644 index 000000000..8a087c57f --- /dev/null +++ b/charts/redhat/redhat/redhat-jenkins/0.0.2/src/templates/_helpers.tpl @@ -0,0 +1,62 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "openshift-jenkins.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "openshift-jenkins.fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default .Chart.Name .Values.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "openshift-jenkins.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "openshift-jenkins.labels" -}} +helm.sh/chart: {{ include "openshift-jenkins.chart" . }} +{{ include "openshift-jenkins.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "openshift-jenkins.selectorLabels" -}} +app.kubernetes.io/name: {{ include "openshift-jenkins.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "openshift-jenkins.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "openshift-jenkins.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} diff --git a/charts/redhat/redhat/redhat-jenkins/0.0.2/src/templates/configmap-trusted-ca-bundle.yaml b/charts/redhat/redhat/redhat-jenkins/0.0.2/src/templates/configmap-trusted-ca-bundle.yaml new file mode 100644 index 000000000..8464ea360 --- /dev/null +++ b/charts/redhat/redhat/redhat-jenkins/0.0.2/src/templates/configmap-trusted-ca-bundle.yaml @@ -0,0 +1,7 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + labels: + config.openshift.io/inject-trusted-cabundle: "true" + {{- include "openshift-jenkins.labels" . | nindent 4 }} + name: {{ include "openshift-jenkins.fullname" . }}-trusted-ca-bundle diff --git a/charts/redhat/redhat/redhat-jenkins/0.0.2/src/templates/deploymentconfig.yaml b/charts/redhat/redhat/redhat-jenkins/0.0.2/src/templates/deploymentconfig.yaml new file mode 100644 index 000000000..d7a4e4da8 --- /dev/null +++ b/charts/redhat/redhat/redhat-jenkins/0.0.2/src/templates/deploymentconfig.yaml @@ -0,0 +1,111 @@ +apiVersion: apps.openshift.io/v1 +kind: DeploymentConfig +metadata: + labels: + {{- include "openshift-jenkins.labels" . | nindent 4 }} + name: {{ include "openshift-jenkins.fullname" . }} +spec: + replicas: 1 + selector: + {{ include "openshift-jenkins.selectorLabels" . | nindent 4}} + strategy: + type: Recreate + template: + metadata: + {{- with .Values.podAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + {{- include "openshift-jenkins.selectorLabels" . | nindent 8 }} + spec: + containers: + - env: + - name: OPENSHIFT_ENABLE_OAUTH + value: "true" + - name: OPENSHIFT_ENABLE_REDIRECT_PROMPT + value: "true" + - name: DISABLE_ADMINISTRATIVE_MONITORS + value: "false" + - name: KUBERNETES_MASTER + value: https://kubernetes.default:443 + - name: KUBERNETES_TRUST_CERTIFICATES + value: "true" + - name: JENKINS_SERVICE_NAME + value: {{ include "openshift-jenkins.fullname" . }} + - name: JNLP_SERVICE_NAME + value: {{ include "openshift-jenkins.fullname" . }}-jnlp + - name: ENABLE_FATAL_ERROR_LOG_FILE + value: "false" + - name: JENKINS_UC_INSECURE + value: "false" + - name: CASC_JENKINS_CONFIG + value: /var/lib/jenkins/proxy.yaml + image: "" + imagePullPolicy: IfNotPresent + livenessProbe: + failureThreshold: 2 + httpGet: + path: /login + port: 8080 + scheme: HTTP + initialDelaySeconds: 420 + periodSeconds: 360 + successThreshold: 1 + timeoutSeconds: 240 + name: jenkins + readinessProbe: + failureThreshold: 3 + httpGet: + path: /login + port: 8080 + scheme: HTTP + initialDelaySeconds: 3 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 240 + resources: + limits: + memory: 1Gi + securityContext: + capabilities: {} + privileged: false + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + volumeMounts: + - mountPath: /var/lib/jenkins + name: jenkins-data + - mountPath: /etc/pki/ca-trust/source/anchors + name: jenkins-trusted-ca-bundle + dnsPolicy: ClusterFirst + restartPolicy: Always + schedulerName: default-scheduler + securityContext: {} + serviceAccount: jenkins + serviceAccountName: jenkins + terminationGracePeriodSeconds: 30 + volumes: + - name: jenkins-data + {{- if .Values.persistence.enabled }} + persistentVolumeClaim: + claimName: {{ include "openshift-jenkins.fullname" . }} + {{- else }} + emptyDir: {} + {{- end }} + - configMap: + defaultMode: 420 + name: {{ include "openshift-jenkins.fullname" . }}-trusted-ca-bundle + optional: true + name: jenkins-trusted-ca-bundle + triggers: + - imageChangeParams: + automatic: true + containerNames: + - jenkins + from: + kind: ImageStreamTag + name: jenkins:2 + namespace: openshift + lastTriggeredImage: "" + type: ImageChange + - type: ConfigChange \ No newline at end of file diff --git a/charts/redhat/redhat/redhat-jenkins/0.0.2/src/templates/persistentvolumeclaim.yaml b/charts/redhat/redhat/redhat-jenkins/0.0.2/src/templates/persistentvolumeclaim.yaml new file mode 100644 index 000000000..45edd915c --- /dev/null +++ b/charts/redhat/redhat/redhat-jenkins/0.0.2/src/templates/persistentvolumeclaim.yaml @@ -0,0 +1,17 @@ +{{- if .Values.persistence.enabled -}} +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: {{ include "openshift-jenkins.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: + {{- include "openshift-jenkins.labels" . | nindent 4 }} +spec: + accessModes: + {{- range .Values.persistence.accessModes }} + - {{ . | quote }} + {{- end }} + resources: + requests: + storage: {{ .Values.persistence.size | quote }} +{{- end -}} diff --git a/charts/redhat/redhat/redhat-jenkins/0.0.2/src/templates/rolebinding.yaml b/charts/redhat/redhat/redhat-jenkins/0.0.2/src/templates/rolebinding.yaml new file mode 100644 index 000000000..d508e63b4 --- /dev/null +++ b/charts/redhat/redhat/redhat-jenkins/0.0.2/src/templates/rolebinding.yaml @@ -0,0 +1,13 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + labels: + {{- include "openshift-jenkins.selectorLabels" . | nindent 4 }} + name: {{ include "openshift-jenkins.fullname" . }}_edit +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: edit +subjects: +- kind: ServiceAccount + name: {{ include "openshift-jenkins.serviceAccountName" . }} diff --git a/charts/redhat/redhat/redhat-jenkins/0.0.2/src/templates/route.yaml b/charts/redhat/redhat/redhat-jenkins/0.0.2/src/templates/route.yaml new file mode 100644 index 000000000..72aebd92c --- /dev/null +++ b/charts/redhat/redhat/redhat-jenkins/0.0.2/src/templates/route.yaml @@ -0,0 +1,15 @@ +apiVersion: route.openshift.io/v1 +kind: Route +metadata: + annotations: + haproxy.router.openshift.io/timeout: 4m + labels: + {{- include "openshift-jenkins.labels" . | nindent 4 }} + name: {{ include "openshift-jenkins.fullname" . }} +spec: + tls: + insecureEdgeTerminationPolicy: Redirect + termination: edge + to: + kind: Service + name: {{ include "openshift-jenkins.fullname" . }} diff --git a/charts/redhat/redhat/redhat-jenkins/0.0.2/src/templates/service-jnlp.yaml b/charts/redhat/redhat/redhat-jenkins/0.0.2/src/templates/service-jnlp.yaml new file mode 100644 index 000000000..fc041abc5 --- /dev/null +++ b/charts/redhat/redhat/redhat-jenkins/0.0.2/src/templates/service-jnlp.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "openshift-jenkins.fullname" . }}-jnlp + labels: + {{- include "openshift-jenkins.labels" . | nindent 4 }} +spec: + type: {{ .Values.servicejnlp.type }} + ports: + - port: {{ .Values.servicejnlp.port }} + targetPort: {{ .Values.servicejnlp.targetPort }} + protocol: TCP + name: {{ .Values.servicejnlp.name }} + selector: + {{- include "openshift-jenkins.selectorLabels" . | nindent 4 }} diff --git a/charts/redhat/redhat/redhat-jenkins/0.0.2/src/templates/service.yaml b/charts/redhat/redhat/redhat-jenkins/0.0.2/src/templates/service.yaml new file mode 100644 index 000000000..a14452125 --- /dev/null +++ b/charts/redhat/redhat/redhat-jenkins/0.0.2/src/templates/service.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "openshift-jenkins.fullname" . }} + labels: + {{- include "openshift-jenkins.labels" . | nindent 4 }} +spec: + type: {{ .Values.service.type }} + ports: + - port: {{ .Values.service.port }} + targetPort: {{ .Values.service.targetPort }} + protocol: TCP + name: {{ .Values.service.name }} + selector: + {{- include "openshift-jenkins.selectorLabels" . | nindent 4 }} diff --git a/charts/redhat/redhat/redhat-jenkins/0.0.2/src/templates/serviceaccount.yaml b/charts/redhat/redhat/redhat-jenkins/0.0.2/src/templates/serviceaccount.yaml new file mode 100644 index 000000000..4d6bcbad6 --- /dev/null +++ b/charts/redhat/redhat/redhat-jenkins/0.0.2/src/templates/serviceaccount.yaml @@ -0,0 +1,8 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "openshift-jenkins.serviceAccountName" . }} + labels: + {{- include "openshift-jenkins.labels" . | nindent 4 }} + annotations: + serviceaccounts.openshift.io/oauth-redirectreference.jenkins: "{\"kind\":\"OAuthRedirectReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"Route\",\"name\":\"{{ include "openshift-jenkins.fullname" . }}\"}}" diff --git a/charts/redhat/redhat/redhat-jenkins/0.0.2/src/templates/tests/test-connection.yaml b/charts/redhat/redhat/redhat-jenkins/0.0.2/src/templates/tests/test-connection.yaml new file mode 100644 index 000000000..30a3fee7c --- /dev/null +++ b/charts/redhat/redhat/redhat-jenkins/0.0.2/src/templates/tests/test-connection.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ include "openshift-jenkins.fullname" . }}-test-connection" + labels: + {{- include "openshift-jenkins.labels" . | nindent 4 }} + annotations: + "helm.sh/hook": test +spec: + containers: + - name: wget + image: busybox + command: ['wget'] + args: ['{{ include "openshift-jenkins.fullname" . }}:{{ .Values.service.port }}'] + restartPolicy: Never diff --git a/charts/redhat/redhat/redhat-jenkins/0.0.2/src/values.yaml b/charts/redhat/redhat/redhat-jenkins/0.0.2/src/values.yaml new file mode 100644 index 000000000..e2b4c9570 --- /dev/null +++ b/charts/redhat/redhat/redhat-jenkins/0.0.2/src/values.yaml @@ -0,0 +1,62 @@ +# Default values for openshift-jenkins. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. + +replicaCount: 1 + +image: + repository: nginx + pullPolicy: IfNotPresent + # Overrides the image tag whose default is the chart appVersion. + tag: "" + +imagePullSecrets: [] +nameOverride: "" +fullnameOverride: "" + +serviceAccount: + name: "jenkins" + +service: + type: ClusterIP + port: 80 + targetPort: 8080 + name: web + +servicejnlp: + type: ClusterIP + port: 50000 + targetPort: 50000 + name: agent + +persistence: + ## @param persistence.enabled Enable persistence using Persistent Volume Claims + enabled: false + ## @param persistence.storageClass Persistent Volume storage class + ## If defined, storageClassName: + ## If set to "-", storageClassName: "", which disables dynamic provisioning + ## If undefined (the default) or set to null, no storageClassName spec is set, choosing the default provisioner + ## + storageClass: + ## @param persistence.annotations Additional custom annotations for the PVC + ## + annotations: {} + ## @param persistence.accessModes [array] Persistent Volume access modes + ## + accessModes: + - ReadWriteOnce + ## @param persistence.size Persistent Volume size + ## + size: 8Gi + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi \ No newline at end of file diff --git a/charts/redhat/redhat/redhat-jenkins/0.0.3/src/Chart.yaml b/charts/redhat/redhat/redhat-jenkins/0.0.3/src/Chart.yaml new file mode 100644 index 000000000..137d74456 --- /dev/null +++ b/charts/redhat/redhat/redhat-jenkins/0.0.3/src/Chart.yaml @@ -0,0 +1,11 @@ +apiVersion: v2 +name: jenkins +description: Jenkins is an open source automation server which enables developers to build, test, and deploy their software using pipelines. This chart allows the installation of th Jenkins on OpenShift image and enables a various set of plugins to improve cloud experience with Jenkins. +type: application +version: 0.0.3 +appVersion: "1.16.0" +icon: data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzEyIiBoZWlnaHQ9IjMxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KIDxtZXRhZGF0YSBpZD0ibWV0YWRhdGE4Ij5pbWFnZS9zdmcreG1sPC9tZXRhZGF0YT4KIDxkZWZzPgogIDxjbGlwUGF0aCBpZD0iY2xpcFBhdGgxOCIgY2xpcFBhdGhVbml0cz0idXNlclNwYWNlT25Vc2UiPgogICA8cGF0aCBpZD0icGF0aDIwIiBkPSJtMCwyNDk0Ljg0bDAsLTI0OTQuODRsMTgwNC4zNCwwbDAsMjQ5NC44NGwtMTgwNC4zNCwweiIvPgogIDwvY2xpcFBhdGg+CiA8L2RlZnM+CiA8Zz4KICA8dGl0bGU+YmFja2dyb3VuZDwvdGl0bGU+CiAgPHJlY3QgZmlsbD0ibm9uZSIgaWQ9ImNhbnZhc19iYWNrZ3JvdW5kIiBoZWlnaHQ9IjMxNCIgd2lkdGg9IjMxNCIgeT0iLTEiIHg9Ii0xIi8+CiA8L2c+CiA8Zz4KICA8dGl0bGU+TGF5ZXIgMTwvdGl0bGU+CiAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMS4yNSwwLDAsLTEuMjUsMCwzMTIpICIgaWQ9ImcxMCI+CiAgIDxnIGlkPSJnMzM5MyI+CiAgICA8cGF0aCBmaWxsPSIjZDMzODMzIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGlkPSJwYXRoMjIiIGQ9Im0yMDguMTE4LDEyOS4yNjRjMCwtNDkuNDI4OCAtMzkuMTc1LC04OS40OTkyIC04Ny41LC04OS40OTkyYy00OC4zMjQyLDAgLTg3LjQ5OTI1LDQwLjA3MDQgLTg3LjQ5OTI1LDg5LjQ5OTJjMCw0OS40MyAzOS4xNzUwNSw4OS41MDEgODcuNDk5MjUsODkuNTAxYzQ4LjMyNSwwIDg3LjUsLTQwLjA3MSA4Ny41LC04OS41MDEiLz4KICAgIDxwYXRoIGZpbGw9IiNlZjNkM2EiIGZpbGwtcnVsZT0ibm9uemVybyIgaWQ9InBhdGgyNCIgZD0ibTM2LjY4NDM4LDEwNy4wOThjMCwwIC02LjMzNDM4LDkzLjMzMyA3OS42NjYwMiw5NmwtNS45OTk2LDEwbC00Ni42NjY0LC0xNS42NjdsLTEzLjMzMzYsLTE1LjMzM2wtMTEuNjY2NDIsLTIyLjMzNGwtNi42NjcxOSwtMjZsMiwtMTcuMzMzIi8+CiAgICA8cGF0aCBmaWxsPSIjMjMxZjIwIiBmaWxsLXJ1bGU9Im5vbnplcm8iIGlkPSJwYXRoMjYiIGQ9Im02MC42ODgzLDE5MC4zMTljLTE1LjM1MiwtMTUuNzA4IC0yNC44NTE5NywtMzcuMzk2IC0yNC44NTE5NywtNjEuMzg5bDAsMGMwLC0yMy45ODggOS40OTk5NywtNDUuNjc4OCAyNC44NTE5NywtNjEuMzgzOWwwLDBjMTUuMzU5NCwtMTUuNzA1MSAzNi41MjY5LC0yNS4zOTYxIDU5LjkyODUsLTI1LjM5NjFsMCwwYzIzLjQwMjIsMCA0NC41NzEyLDkuNjkxIDU5LjkyOTIsMjUuMzk2MWwwLDBjMTUuMzUxLDE1LjcwNTEgMjQuODUzLDM3LjM5NTkgMjQuODUzLDYxLjM4MzlsMCwwYzAsMjMuOTkzIC05LjUwMiw0NS42ODEgLTI0Ljg1Myw2MS4zODlsMCwwYy0xNS4zNTgsMTUuNzAyIC0zNi41MjcsMjUuMzkzIC01OS45MjkyLDI1LjM5NWwwLDBjLTIzLjQwMTYsLTAuMDAyIC00NC41NjkxLC05LjY5MyAtNTkuOTI4NSwtMjUuMzk1bDAsMHptLTMuODg2LC0xMjYuNTcyMWMtMTYuMzE1NiwxNi42ODU5IC0yNi40MDIzLDM5Ljc0NjEgLTI2LjQwMjMsNjUuMTgzMWwwLDBjMCwyNS40NDEgMTAuMDg2Nyw0OC40OTkgMjYuNDAyMyw2NS4xODZsMCwwYzE2LjMxMTgsMTYuNjkgMzguODkxNSwyNy4wMzUgNjMuODE0NSwyNy4wMzJsMCwwYzI0LjkyMzIsMC4wMDMgNDcuNTA1MiwtMTAuMzQyIDYzLjgxNDIsLTI3LjAzMmwwLDBjMTYuMzE3LC0xNi42ODcgMjYuNDA1LC0zOS43NDcgMjYuNDAzLC02NS4xODZsMCwwYzAuMDAyLC0yNS40MzcgLTEwLjA4NiwtNDguNDk3MiAtMjYuNDAzLC02NS4xODMxbDAsMGMtMTYuMzA5LC0xNi42ODkxIC0zOC44OTEsLTI3LjAzMjggLTYzLjgxNDIsLTI3LjAzMjhsMCwwYy0yNC45MjMsMCAtNDcuNTAyNywxMC4zNDM3IC02My44MTQ1LDI3LjAzMjhsMCwwIi8+CiAgICA8cGF0aCBmaWxsPSIjZjBkNmI3IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGlkPSJwYXRoMjgiIGQ9Im0xNTcuNDUxLDEyOC43NjhsLTEzLjMzNCwtMmwtMTguMDAwMiwtMmwtMTEuNjY3MiwtMC4zMzNsLTExLjMzMjgsMC4zMzNsLTguNjY3MiwyLjY2N2wtNy42NjY4LDguMzMzbC02LDE3bC0xLjMzMzIsMy42NjdsLTgsMi42NjZsLTQuNjY2OCw3LjY2N2wtMy4zMzMyLDExbDMuNjY3Miw5LjY2N2w4LjY2NiwzbDcsLTMuMzM0bDMuMzM0LC03LjMzM2w0LDAuNjY3bDEuMzMyOCwxLjY2NmwtMS4zMzI4LDcuNjY3bC0wLjMzNCw5LjY2N2wyLDEzLjMzM2wtMC4wNzgxLDcuNjE2bDYuMDc4MSw5LjcxN2wxMC42NjY4LDcuNjY3bDE4LjY2NzIsOGwyMC42NjYyLC0zbDE4LC0xM2w4LjMzNCwtMTMuMzMzbDUuMzMzLC05LjY2N2wxLjMzMywtMjRsLTQsLTIwLjY2N2wtNy4zMzMsLTE4LjMzM2wtNywtOS42NjciLz4KICAgIDxwYXRoIGZpbGw9IiMzMzUwNjEiIGZpbGwtcnVsZT0iZXZlbm9kZCIgaWQ9InBhdGgzMCIgZD0ibTE0Ni4xMTcsNzEuMTAybC00Ny42Njc0LC0ybDAsLThsNCwtMjhsLTIsLTIuMzM0bC0zMy4zMzI4LDExLjMzNGwtMi4zMzQsNGwtMy4zMzMyLDM3LjY2NmwtNy42NjU2LDIyLjY2N2wtMS42NjcyLDUuMzMzbDI2LjY2NiwxOC4zMzNsOC4zMzQsMy4zMzRsNy4zMzI4LC05bDYuMzMzMiwtNS42NjdsNy4zMzQsLTIuMzMzbDMuMzMyOCwtMWw0LC0xNy4zMzNsMywtMy42NjY4bDcuNjY3MiwyLjY2NjhsLTUuMzM0LC0xMC4zMzRsMjkuMDAwMiwtMTMuNjY2bC0zLjY2NiwtMiIvPgogICAgPHBhdGggZmlsbD0iIzZkNmI2ZCIgZmlsbC1ydWxlPSJldmVub2RkIiBpZD0icGF0aDMyIiBkPSJtNjcuMTE2OCwxODcuNDM1bDguNjY2LDNsNywtMy4zMzRsMy4zMzQsLTcuMzMzbDQsMC42NjdsMSw0bC0yLDcuNjY2bDIsMTguMzM0bC0xLjY2NzIsMTBsNiw3bDEzLDEwLjMzM2wtMy42NjY4LDVsLTE4LjMzMzIsLTlsLTcuNjY2OCwtNmwtNC4zMzMyLC05LjMzM2wtNi42NjY4LC05bC0yLC0xMC42NjdsMS4zMzQsLTExLjMzMyIvPgogICAgPHBhdGggZmlsbD0iI2RjZDlkOCIgZmlsbC1ydWxlPSJldmVub2RkIiBpZD0icGF0aDM0IiBkPSJtODAuNzgyOCwyMTguNzY4YzAsMCA1LDEyLjMzMyAyNSwxOC4zMzNjMjAsNiAxLDQuMzM0IDEsNC4zMzRsLTIxLjY2NiwtOC4zMzRsLTguMzM0LC04LjMzM2wtMy42NjYsLTYuNjY3bDcuNjY2LDAuNjY3Ii8+CiAgICA8cGF0aCBmaWxsPSIjZGNkOWQ4IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGlkPSJwYXRoMzYiIGQ9Im03MC43ODI4LDE4OS43NjhjMCwwIC03LDIzLjMzNCAxOS42NjY4LDI2LjY2N2wtMSw0bC0xOC4zMzI4LC00LjMzNGwtNS4zMzQsLTE3LjMzM2wxLjMzNCwtMTEuMzMzbDMuNjY2LDIuMzMzIi8+CiAgICA8cGF0aCBmaWxsPSIjZjdlNGNkIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGlkPSJwYXRoMzgiIGQ9Im04MS40NDk2LDE1OC43NjhsNC4zNjQ1LDQuMjI5YzAsMCAxLjk2OTksLTAuMjI5IDIuMzAyNywtMi41NjJjMC4zMzI4LC0yLjMzNCAxLjMzMjgsLTIzLjMzNCAxNS42NjYsLTM0LjY2OGMxLjMwNzQsLTEuMDM0IC0xMC42NjYsMS42NjggLTEwLjY2NiwxLjY2OGwtMTAuNjY3MiwxNi42NjYiLz4KICAgIDxwYXRoIGZpbGw9IiNmN2U0Y2QiIGZpbGwtcnVsZT0iZXZlbm9kZCIgaWQ9InBhdGg0MCIgZD0ibTE0Mi43ODUsMTY1LjEwMWMwLDAgMC43NzcsMTAuMTA0IDMuNDk4LDkuMzI3YzIuNzIxLC0wLjc3NyAyLjcyMSwtMy40OTggMi43MjEsLTMuNDk4YzAsMCAtNi42MDgsLTQuMjc1IC02LjIxOSwtNS44MjkiLz4KICAgIDxwYXRoIGZpbGw9IiNmN2U0Y2QiIGZpbGwtcnVsZT0ibm9uemVybyIgaWQ9InBhdGg0MiIgZD0ibTE3MC40NSwyMDIuMTAxYzAsMCAtNS40OTQsLTEuMTYgLTYsLTZjLTAuNTA2LC00Ljg0MSA2LC0xIDcsLTAuNjY3Ii8+CiAgICA8cGF0aCBmaWxsPSIjZjdlNGNkIiBmaWxsLXJ1bGU9Im5vbnplcm8iIGlkPSJwYXRoNDQiIGQ9Im0xMzAuMTE2OCwyMDEuNzY3YzAsMCAtNy4zMzQsLTEgLTcuMzM0LC01LjY2NmMwLC00LjY2NyA4LjMzNDIsLTQuMzM0IDEwLjY2NzIsLTIuMzM0Ii8+CiAgICA8cGF0aCBmaWxsPSIjZjdlNGNkIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGlkPSJwYXRoNDYiIGQ9Im04NC43ODI4LDE4MC4xMDFjMCwwIC0xMi42NjcyLDcuNjY3IC0xNCwwLjMzM2MtMS4zMzMyLC03LjMzMyAtNC4zMzQsLTEyLjY2NyAyLC0yMC4zMzNsLTQuMzMzMiwxLjMzM2wtNCwxMC4zMzNsLTEuMzMyOCwxMGw3LjY2Niw4LjAwMWw4LjY2NjgsLTAuNjY3bDUsLTRsMC4zMzMyLC01Ii8+CiAgICA8cGF0aCBmaWxsPSIjZjdlNGNkIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGlkPSJwYXRoNDgiIGQ9Im05MC43ODI4LDIwMS4xMDFjMCwwIDUuNjY2OCwyOS4zMzMgMzQuMzM0LDM1YzIzLjYwMTIsNC42NjUgMzUuOTk5MiwtMSA0MC42NjYyLC02LjMzM2MwLDAgLTIxLDI0Ljk5OSAtNDEuMDAwMiwxNy4zMzNjLTIwLC03LjY2NyAtMzQuNjY2LC0yMS42NjcgLTM0LjMzMzIsLTMwLjY2NmMwLjU2NzYsLTE1LjMyOCAwLjMzMzIsLTE1LjMzNCAwLjMzMzIsLTE1LjMzNCIvPgogICAgPHBhdGggZmlsbD0iI2Y3ZTRjZCIgZmlsbC1ydWxlPSJldmVub2RkIiBpZD0icGF0aDUwIiBkPSJtMTY4LjExNywyMjYuNDM1YzAsMCAtOS42NjYsMC4zMzMgLTEwLC04LjMzNGMwLDAgLTAuMDAxLC0xLjMzMyAwLjY2NiwtMi42NjZjMCwwIDcuNjY4LDguNjY3IDEyLjMzNCw0Ii8+CiAgICA8cGF0aCBmaWxsPSIjZjdlNGNkIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGlkPSJwYXRoNTIiIGQ9Im0xMjUuNzg4NywyMTQuNTMyYzAsMCAtMS42NjQxLDEzLjMwMyAtMTMuMDA1OSw1LjU2OWMtNy4zMzMyLC01IC02LjY2NiwtMTIgLTUuMzMzMiwtMTMuMzMzYzEuMzMzMiwtMS4zMzQgMC45NzA3LC00LjAxOSAxLjk4NTYsLTIuMTc2YzEuMDE0NCwxLjg0MyAwLjY4MDQsNy44NDMgNC4zNDc2LDkuNTA5YzMuNjY2OCwxLjY2NyA5LjY3NzcsMy41MjkgMTIuMDA1OSwwLjQzMSIvPgogICAgPHBhdGggZmlsbD0iIzQ5NzI4YiIgZmlsbC1ydWxlPSJldmVub2RkIiBpZD0icGF0aDU0IiBkPSJtOTQuNDQ5NiwxMjQuNDM1bC0zMS4zMzI4LC0xNGMwLDAgMTMsLTUxLjY2NyA2LjMzMjgsLTY3LjY2N2wtNC42NjY4LDEuNjY2bC0wLjMzMzIsMTkuNjY3MmwtOC42NjU2LDM3LjMzMjhsLTMuNjY3MiwxMC4zMzRsMzIuNjY2LDIxLjk5OWw5LjY2NjgsLTkuMzMyIi8+CiAgICA8cGF0aCBmaWxsPSIjNDk3MjhiIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGlkPSJwYXRoNTYiIGQ9Im05Ny42NzE1LDk1Ljg1NzhsNC40NDUzLC01LjQyMzhsMCwtMjBsLTUuMzM0LDBjMCwwIC0wLjY2NiwxNCAtMC42NjYsMTUuNjY3MmMwLDEuNjY2OCAwLjY2Niw3LjY2NjggMC42NjYsNy42NjY4Ii8+CiAgICA8cGF0aCBmaWxsPSIjNDk3MjhiIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGlkPSJwYXRoNTgiIGQ9Im05Ny43ODI4LDY3LjQzNGwtMTUsLTAuNjY2bDQuMzM0LC0zbDEwLjY2NiwtMS42NjY4Ii8+CiAgICA8cGF0aCBmaWxsPSIjMzM1MDYxIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGlkPSJwYXRoNjAiIGQ9Im0xNDkuMTE3LDcwLjc2OGwxMi4zMzMsMC4zMzMybDMsLTMwLjY2NzJsLTEyLjY2NywtMS42NjZsLTIuNjY2LDMyIi8+CiAgICA8cGF0aCBmaWxsPSIjMzM1MDYxIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGlkPSJwYXRoNjIiIGQ9Im0xNTIuNDUsNzAuNzY4bDE4LjY2NywxYzAsMCA3LjY2NiwxOS4zMzMyIDcuNjY2LDIwLjMzMzJjMCwxIDYuNjY3LDI3Ljk5OTggNi42NjcsMjcuOTk5OGwtMTUsMTUuNjY2bC0zLDIuNjY3bC04LC04bDAsLTMxbC03LC0yOC42NjYiLz4KICAgIDxwYXRoIGZpbGw9IiM0OTcyOGIiIGZpbGwtcnVsZT0iZXZlbm9kZCIgaWQ9InBhdGg2NCIgZD0ibTE2MC43ODMsNzMuMTAxMmwtMTEuNjY2LC0yLjMzMzJsMS42NjYsLTkuMzM0YzQuMzMzLC0yIDExLjY2NywzLjMzNCAxMS42NjcsMy4zMzQiLz4KICAgIDxwYXRoIGZpbGw9IiM0OTcyOGIiIGZpbGwtcnVsZT0iZXZlbm9kZCIgaWQ9InBhdGg2NiIgZD0ibTE2MS4xMTcsMTMxLjQzNGwyMy4zMzMsLTE3LjMzM2wwLjY2Nyw4bC0xNy42NjcsMTYuMzMzbC02LjMzMywtNyIvPgogICAgPHBhdGggZmlsbD0iI2ZmZmZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBpZD0icGF0aDY4IiBkPSJtMTA5LjM1MDgsNS4wOTgwNWwtNi45MDEyLDI4LjAwMzk1bC0zLjQzMjQsMjAuNjYyOGwtMC41Njc2LDE1LjMzNzJsMzEuMjM0OCwxLjY2MjhsMTkuNDMyNiwwLjAwMzJsLTEuNzY3LC0zNS4wMDMybDMsLTI2Ljk5OTk2bC0wLjMzMywtNWwtMjUuMzMyNiwtMmwtMTUuMzMzNiwzLjMzMzIxIi8+CiAgICA8cGF0aCBmaWxsPSIjZGNkOWQ4IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGlkPSJwYXRoNzAiIGQ9Im0xNDQuNzgzLDcxLjEwMTJjMCwwIC0xLjY2NiwtMzQuNjY3MiAzLjMzNCwtNTkuMzMzMmMwLDAgLTEwLC02LjMzNDAyIC0yNC42Njc0LC04LjAwMDAzbDI4LjAwMDQsMWwzLjMzMywybC00LDU0LjY2NjAzbC0xLDExLjY2OCIvPgogICAgPHBhdGggZmlsbD0iI2ZmZmZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBpZD0icGF0aDcyIiBkPSJtMTY1LjAxOCw0My4wOThsMTMsMy42NjY4bDI0LjY2NiwxLjMzMzJsMy42NjcsMTEuMzMyOWwtNi42NjcsMTkuNjY3MWwtNy42NjYsMWwtMTAuNjY3LC0zLjMzMzJsLTEwLjIzNCwtNC45OTY4bC01LjQzMywwLjk5NjhsLTQuMjM0LC0xLjY2MzYiLz4KICAgIDxwYXRoIGZpbGw9IiNkY2Q5ZDgiIGZpbGwtcnVsZT0iZXZlbm9kZCIgaWQ9InBhdGg3NCIgZD0ibTE2NC43ODMsNDkuNzY4YzAsMCA4LjY2NiwzLjk5OTIgMTAsMy42NjZsLTMuNjY2LDE4LjMzNGw0LjMzMywxLjY2NmMwLDAgMywtMTcuMzMyOCAzLC0xOS4zMzI4YzAsMCAxOC42NjYsLTEgMjAuMzMzLC0xYzAsMCA0LDcuNjY2OCAzLDE1LjY2NjhsMy42NjcsLTEwLjY2NjhsMC4zMzMsLTZsLTUuMzMzLC04bC02LC0xLjMzMzJsLTEwLDAuMzMzMmwtMy4zMzMsNC4zMzI4bC0xMS42NjcsLTEuNjY2bC0zLjY2NywtMS4zMzQiLz4KICAgIDxwYXRoIGZpbGw9IiNmZmZmZmYiIGZpbGwtcnVsZT0ibm9uemVybyIgaWQ9InBhdGg3NiIgZD0ibTE1MS42ODQsNzMuNDMwOWwtNy4zMzMsMTguNjY3MWwtNy42NjcsMTFjMCwwIDEuNjY2LDQuNjY3IDQsNC42NjdjMi4zMzQsMCA3LjY2NywwIDcuNjY3LDBsNy4zMzMsLTIuNjY3bC0wLjY2NiwtMTIuMzMzMmwtMy4zMzQsLTE5LjMzMzkiLz4KICAgIDxwYXRoIGZpbGw9IiNkY2Q5ZDgiIGZpbGwtcnVsZT0iZXZlbm9kZCIgaWQ9InBhdGg3OCIgZD0ibTE1My4xMTcsNzkuNzY4YzAsMCAtOS4zMzQsMTcuOTk5MiAtOS4zMzQsMjAuNjY2YzAsMCAxLjY2Niw0IDQsM2MyLjMzNCwtMSA3LjMzNCwtMy42NjYgNy4zMzQsLTMuNjY2bDAsNi4zMzNsLTExLjMzNCwyLjMzNGwtNy42NjYsLTFsMTMsLTMwLjY2N2wyLjY2NiwtMC4zMzQiLz4KICAgIDxwYXRoIGZpbGw9IiNmZmZmZmYiIGZpbGwtcnVsZT0ibm9uemVybyIgaWQ9InBhdGg4MCIgZD0ibTExMi4zNTEyLDEyMy43NjRsLTkuMjM0NCwxLjAwNGwtOC42NjcyLDIuNjY3bDAsLTNsNC4yMzQ4LC00LjY3bDEzLjMzMzIsLTYiLz4KICAgIDxwYXRoIGZpbGw9IiNkY2Q5ZDgiIGZpbGwtcnVsZT0iZXZlbm9kZCIgaWQ9InBhdGg4MiIgZD0ibTk3LjQ1MDgsMTIyLjc2NWMwLDAgMTAuMzM0LC00LjMzNCAxMy42NjcyLC0zLjMzNGwwLjMzMTYsLTMuOTk2bC05LjMzMTYsMS45OTZsLTUuNjY3Miw0bDEsMS4zMzQiLz4KICAgIDxwYXRoIGZpbGw9IiNkMzM4MzMiIGZpbGwtcnVsZT0iZXZlbm9kZCIgaWQ9InBhdGg4NCIgZD0ibTE2NC45ODIsMTA2LjYzYy01LjY1NiwwLjE2NiAtMTAuNzY2LDAuODM4IC0xNS4yNCwyLjFjMC4zMDQsMS44MzQgLTAuMjY1LDMuNjM0IDAuMTkyLDQuOTU1YzEuMjQ3LDAuODk4IDMuMzM3LDAuODg0IDUuMjIyLDEuMDk1Yy0xLjYzLDAuODAxIC0zLjkyLDEuMTE4IC01LjgwMSwwLjY1NWMtMC4wNDQsMS4yNzMgLTAuNjE1LDIuMDYyIC0wLjk2MSwzLjA1OGMzLjE4LDEuMTM1IDEwLjY4Nyw4LjU3NiAxNC45MSw2LjExMmMyLjAxMiwtMS4xNzIgMi44NjcsLTcuODY2IDMuMDIzLC0xMS4xMjFjMC4xMywtMi43IC0wLjI0NSwtNS40MjQgLTEuMzQ1LC02Ljg1NCIvPgogICAgPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZDMzODMzIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1taXRlcmxpbWl0PSI0IiBpZD0icGF0aDg2IiBkPSJtMTY0Ljk4MiwxMDYuNjNjLTUuNjU2LDAuMTY2IC0xMC43NjYsMC44MzggLTE1LjI0LDIuMWMwLjMwNCwxLjgzNCAtMC4yNjUsMy42MzQgMC4xOTIsNC45NTVjMS4yNDcsMC44OTggMy4zMzcsMC44ODQgNS4yMjIsMS4wOTVjLTEuNjMsMC44MDEgLTMuOTIsMS4xMTggLTUuODAxLDAuNjU1Yy0wLjA0NCwxLjI3MyAtMC42MTUsMi4wNjIgLTAuOTYxLDMuMDU4YzMuMTgsMS4xMzUgMTAuNjg3LDguNTc2IDE0LjkxLDYuMTEyYzIuMDEyLC0xLjE3MiAyLjg2NywtNy44NjYgMy4wMjMsLTExLjEyMWMwLjEzLC0yLjcgLTAuMjQ1LC01LjQyNCAtMS4zNDUsLTYuODU0eiIvPgogICAgPHBhdGggZmlsbD0iI2QzMzgzMyIgZmlsbC1ydWxlPSJldmVub2RkIiBpZD0icGF0aDg4IiBkPSJtMTM3LjkzNSwxMTUuODc2Yy0wLjAxNSwtMC40MjggLTAuMDMzLC0wLjg1OSAtMC4wNSwtMS4yOTFjLTEuNzY2LC0xLjE2IC00LjYxNywtMS4xNDYgLTYuNTU1LC0yLjEyMWMyLjg1NywtMC4xMjUgNS4xMDYsLTAuODEzIDcuMDUyLC0xLjc4M2MtMC4wNDMsLTEuMDc4IC0wLjA4NCwtMi4xNTUgLTAuMTI2LC0zLjIzM2MtMy4yMzcsLTIuMjE2IC02LjE5NCwtNS41MTYgLTEwLjAwNTIsLTcuNTk0MWMtMS44MDIsLTAuOTgyOCAtOC4xMjYyLC0zLjUxMTcgLTEwLjA0MzQsLTMuMDY0OGMtMS4wODQ3LDAuMjUxOSAtMS4xODI0LDEuNTk4IC0xLjYxNiwyLjg2NjhjLTAuOTIzOCwyLjcxNzEgLTMuMDUwOCw3LjA0MjEgLTMuMjM2MywxMS4xMzIxYy0wLjIzNjMsNS4xNjYgLTAuNzU3OCwxMy44MjQgNC44MDk0LDEyLjc2YzQuNDkxNCwtMC44NTcgOS43MTUyLC0yLjkyNiAxMy4xOTI1LC00LjgyNmMyLjEyNSwtMS4xNjIgMy4zNTQsLTIuNTk4IDYuNTc4LC0yLjg0NiIvPgogICAgPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZDMzODMzIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1taXRlcmxpbWl0PSI0IiBpZD0icGF0aDkwIiBkPSJtMTM3LjkzNSwxMTUuODc2Yy0wLjAxNSwtMC40MjggLTAuMDMzLC0wLjg1OSAtMC4wNSwtMS4yOTFjLTEuNzY2LC0xLjE2IC00LjYxNywtMS4xNDYgLTYuNTU1LC0yLjEyMWMyLjg1NywtMC4xMjUgNS4xMDYsLTAuODEzIDcuMDUyLC0xLjc4M2MtMC4wNDMsLTEuMDc4IC0wLjA4NCwtMi4xNTUgLTAuMTI2LC0zLjIzM2MtMy4yMzcsLTIuMjE2IC02LjE5NCwtNS41MTYgLTEwLjAwNTIsLTcuNTk0MWMtMS44MDIsLTAuOTgyOCAtOC4xMjYyLC0zLjUxMTcgLTEwLjA0MzQsLTMuMDY0OGMtMS4wODQ3LDAuMjUxOSAtMS4xODI0LDEuNTk4IC0xLjYxNiwyLjg2NjhjLTAuOTIzOCwyLjcxNzEgLTMuMDUwOCw3LjA0MjEgLTMuMjM2MywxMS4xMzIxYy0wLjIzNjMsNS4xNjYgLTAuNzU3OCwxMy44MjQgNC44MDk0LDEyLjc2YzQuNDkxNCwtMC44NTcgOS43MTUyLC0yLjkyNiAxMy4xOTI1LC00LjgyNmMyLjEyNSwtMS4xNjIgMy4zNTQsLTIuNTk4IDYuNTc4LC0yLjg0NnoiLz4KICAgIDxwYXRoIGZpbGw9IiNkMzM4MzMiIGZpbGwtcnVsZT0iZXZlbm9kZCIgaWQ9InBhdGg5MiIgZD0ibTE0MS4xNSwxMDkuNzEyYy0wLjQ5NCwyLjgxNCAtMS4wNjUsMy42MTcgLTAuODQ0LDYuMDcyYzcuNTA1LDUuMDA0IDguOTE0LC04LjU5NSAwLjg0NCwtNi4wNzIiLz4KICAgIDxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2QzMzgzMyIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbWl0ZXJsaW1pdD0iNCIgaWQ9InBhdGg5NCIgZD0ibTE0MS4xNSwxMDkuNzEyYy0wLjQ5NCwyLjgxNCAtMS4wNjUsMy42MTcgLTAuODQ0LDYuMDcyYzcuNTA1LDUuMDA0IDguOTE0LC04LjU5NSAwLjg0NCwtNi4wNzJ6Ii8+CiAgICA8cGF0aCBmaWxsPSIjZWYzZDNhIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGlkPSJwYXRoOTYiIGQ9Im0xNTIuMDE3LDEwNy40MzFjMCwwIC0yLjMzNCwzLjMzNCAtMC42NjcsNC4zMzRjMS42NjcsMSAzLjMzNCwtMC4wMDEgNC4zMzQsMS42NjZjMSwxLjY2NyAwLDIuNjY3IDAuMzMzLDQuNjY3YzAuMzMzLDIgMi4wMDEsMi4zMzQgMy42NjcsMi42NjdjMS42NjYsMC4zMzMgNi4zMzQsMSA3LC0wLjY2N2wtMiw2bC00LDEuMzMzbC0xMi42NjcsLTcuMzMzbC0wLjY2NywtMy42NjdsMCwtNy4zMzMiLz4KICAgIDxwYXRoIGZpbGw9IiNlZjNkM2EiIGZpbGwtcnVsZT0iZXZlbm9kZCIgaWQ9InBhdGg5OCIgZD0ibTExNy4wMTcyLDk2LjQzMDljLTAuNDAwNCw1LjIwMjEgLTAuODI0MiwxMC4zOTcxIC0xLjI5NTcsMTUuNTk0MWMtMC43MDU1LDcuNzYgMS44NjQsNi40MDYgOC41OTA2LDYuNDA2YzEuMDI3NCwwIDYuMzI1OSwtMS4yMjUgNi43MDQ5LC0yYzEuODE4LC0zLjcxMyAtMy4wNCwtMi44ODggMi4wOTQsLTUuNjg4YzQuMzM0LC0yLjM2MyAxMS45OSwxLjQzNSAxMC4yMzksNi42ODhjLTAuOTgsMS4xNjggLTUuMTA2LDAuMzY0IC02LjU4NSwxLjEzMWMtMi42MDQsMS4zNSAtNS4yMDgsMi43IC03LjgxMjMsNC4wNWMtMy4zMTMyLDEuNzE5IC0xMC45NzA3LDQuMjI1IC0xNC41MDMxLDEuODIzYy04Ljk1MDQsLTYuMDg3IDAuNTY0OSwtMjEuMjk2IDMuNzU3OCwtMjcuNjQ1OSIvPgogICAgPHBhdGggZmlsbD0iIzIzMWYyMCIgZmlsbC1ydWxlPSJldmVub2RkIiBpZD0icGF0aDEwMCIgZD0ibTEyNS43ODg3LDIxNC41MzJjLTkuMDg1MiwyLjExNiAtMTMuNTk5NiwtMy44MDIgLTE2LjM1MzUsLTkuOTRjLTIuNDU5LDAuNTk2IC0xLjQ4MDUsMy45NCAtMC44NTk0LDUuNjQ0YzEuNjI2Miw0LjQ3MiA4LjE3OTcsMTAuNDI1IDEzLjUzNDQsOS42MThjMi4zMDQzLC0wLjM0NyA1LjQyMjYsLTIuNDU0IDMuNjc4NSwtNS4zMjIiLz4KICAgIDxwYXRoIGZpbGw9IiMyMzFmMjAiIGZpbGwtcnVsZT0iZXZlbm9kZCIgaWQ9InBhdGgxMDIiIGQ9Im0xNzAuMDU1LDIwNC4xODZjMC4xNDMsLTAuMDA2IDAuMjg4LC0wLjAxMSAwLjQzMSwtMC4wMTdjMi4wNTMsLTQuMjY1IDMuODMsLTguNzgzIDYuNDIsLTEyLjU0OGMtMS43MzUsLTQuMDQxIC0xMy4xMzgsLTcuNjE3IC0xMi45NjIsLTAuMzYxYzIuNDY2LDEuMDc4IDYuNzIzLDAuMjIgOC45MDksMS41OTdjLTEuMjY0LDMuNDY5IC0zLjA4OCw2LjQyMiAtMi43OTgsMTEuMzI5Ii8+CiAgICA8cGF0aCBmaWxsPSIjMjMxZjIwIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGlkPSJwYXRoMTA0IiBkPSJtMTMwLjQ0LDIwNC4wNzVjMS45NDgsLTMuNTcxIDIuNTgyLC03LjMyMyA1LjM1MSwtMTAuMDIyYzEuMjQ3LC0xLjIxNSAzLjY3MiwtMi42OTYgMi40NywtNi4wNzVjLTAuMjgxLC0wLjc5NyAtMi4zMzQsLTIuNTc0IC0zLjUxOSwtMi45MjNjLTQuMzI5LC0xLjI3OCAtMTQuNDE2MiwtMC4yNjQgLTExLjAwMDIsNS4xMzNjMy41ODAxLC0wLjE2NyA4LjM5MjIsLTIuMzI1IDExLjA2ODIsMC4yNzRjLTIuMDU1LDMuMjg1IC01LjcxODYsOS43ODQgLTQuMzcsMTMuNjEzIi8+CiAgICA8cGF0aCBmaWxsPSIjMjMxZjIwIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGlkPSJwYXRoMTA2IiBkPSJtMTY4LjQzLDE2Ny43ODFjLTYuNTE4LC00LjE4NyAtMTMuNzg2LC04Ljc0IC0yNC40NjYsLTcuNjg0Yy0yLjI4MiwxLjk4NCAtMy4xNTIsNi4zOTkgLTAuOTM1LDkuMzE1YzEuMTU0LC0xLjk4NCAwLjQyOSwtNS42MzMgMy42NDUsLTYuMTgyYzYuMDYsLTEuMDM3IDEzLjExMywzLjcwNyAxNy40NzIsNS4zNjVjMi43MDMsNC41NTcgLTAuMjMzLDYuMjMzIC0yLjY2OCw5LjE2NmMtNC45ODUsNi4wMDkgLTExLjY3MiwxMy40NTcgLTExLjQyOSwyMi40NTNjMi4wMTUsMS40NjEgMi4xODksLTIuMjMgMi40NzgsLTIuOTAyYzIuNjAzLC02LjA5MiA5LjE1NCwtMTMuODgzIDEzLjkzNSwtMTkuMDk3YzEuMTc0LC0xLjI4NCAzLjEwNywtMi41MTYgMy4zMjIsLTMuMzY1YzAuNjIsLTIuNDY5IC0xLjYxMywtNS40MjcgLTEuMzU0LC03LjA2OSIvPgogICAgPHBhdGggZmlsbD0iIzIzMWYyMCIgZmlsbC1ydWxlPSJldmVub2RkIiBpZD0icGF0aDEwOCIgZD0ibTgyLjUwMTYsMTcyLjE4OWMtMi4wNDMsMS4xNjYgLTIuNTI5Myw2LjMwMiAtNC45Mjc4LDYuNDQ4Yy0zLjQyNzcsMC4yMDggLTIuODAyNywtNi42NjMgLTIuNzg5LC0xMC42ODFjLTIuMzU5NCwyLjE0MiAtMi43NzQzLDguNzM3IC0xLjA0MSwxMi4xMjRjLTEuOTc1NCwwLjk3IC0yLjg1NzUsLTEuMDcgLTMuOTUzMiwtMS43ODljMS40MDgyLDEwLjIzIDE0Ljk2NDksNC43NDUgMTIuNzExLC02LjEwMiIvPgogICAgPHBhdGggZmlsbD0iIzIzMWYyMCIgZmlsbC1ydWxlPSJldmVub2RkIiBpZD0icGF0aDExMCIgZD0ibTE3Mi41OCwxNjMuNTIxYy0zLjAzNCwtNS43NzUgLTcuMzI2LC0xMi4xMzUgLTE2LjIyOSwtMTIuMzJjLTAuMTgxLDEuODY1IC0wLjMyLDQuNzAzIDAuMDEsNS44MjZjNi44MDYsMC42NTQgMTEuMDA4LDQuMTE4IDE2LjIxOSw2LjQ5NCIvPgogICAgPHBhdGggZmlsbD0iIzIzMWYyMCIgZmlsbC1ydWxlPSJldmVub2RkIiBpZD0icGF0aDExMiIgZD0ibTEyOS45MjY2LDE1OS43NzdjNS42Nzg0LC0yLjk4NiAxNi4xMTQ0LC0zLjMwNyAyMy44MzI0LC0zLjA4MWMwLjQxNCwtMS42OTEgMC40MDQsLTMuNzggMC40MiwtNS44NDJjLTkuOTIxLC0wLjQ5NSAtMjEuNjUxLDEuOTYgLTI0LjI1MjQsOC45MjMiLz4KICAgIDxwYXRoIGZpbGw9IiMyMzFmMjAiIGZpbGwtcnVsZT0iZXZlbm9kZCIgaWQ9InBhdGgxMTQiIGQ9Im0xMjguODQ3MywxNTQuMjA5YzMuOTI2NywtOS44NTkgMTcuNDIyNywtOC43MjQgMjguODAzNywtOC40NTJjLTAuNTAxLC0xLjI4IC0xLjU4NywtMi43OTIgLTIuOTM3LC0zLjMzOWMtMy42NDcsLTEuNDg0IC0xMy43MDYsLTIuNjEgLTE4Ljc2OSwwLjA3OWMtMy4yMTEsMS43MDcgLTUuMjc0LDUuNTY0IC03LjAzMzMsNy44MjVjLTAuODQ5NiwxLjA5MiAtNS4wODAxLDMuODgxIC0wLjA2NDQsMy44ODciLz4KICAgIDxwYXRoIGZpbGw9IiM4MWIwYzQiIGZpbGwtcnVsZT0iZXZlbm9kZCIgaWQ9InBhdGgxMTYiIGQ9Im0xNjcuOTU2LDk5LjgyNjJjLTQuNjA4LC03Ljg5MjIgLTkuMDE3LC0xNS45OTgxIC0xNC40ODQsLTIyLjk1OTRjMi4yOTIsNi43MzkxIDMuMjczLDE4LjAxODQgMy42MTksMjYuNjE3MmM0Ljc5NSwyLjI0NCA4LjkwMSwtMC41MDUgMTAuODY1LC0zLjY1NzgiLz4KICAgIDxwYXRoIGZpbGw9IiMyMzFmMjAiIGZpbGwtcnVsZT0iZXZlbm9kZCIgaWQ9InBhdGgxMTgiIGQ9Im0xOTIuNzUyLDcxLjQ2MDljLTUuMTU5LC0xLjAzMjggLTguNzg0LC02LjA0NjggLTEzLjgxNywtNS43MjVjMi43NjYsMy44OTkzIDcuNjEzLDUuNTQzIDEzLjgxNyw1LjcyNSIvPgogICAgPHBhdGggZmlsbD0iIzIzMWYyMCIgZmlsbC1ydWxlPSJldmVub2RkIiBpZD0icGF0aDEyMCIgZD0ibTE5NS4wMjgsNjMuMzg3MWMtNC4yMDUsLTAuNDQ0MSAtOS4xNDQsLTEuMTI1IC0xMy40MDksLTAuNzc0MmMyLjAxOSwzLjA4NCA5Ljc5OCwyLjAxOTkgMTMuNDA5LDAuNzc0MiIvPgogICAgPHBhdGggZmlsbD0iIzIzMWYyMCIgZmlsbC1ydWxlPSJldmVub2RkIiBpZD0icGF0aDEyMiIgZD0ibTE5Ni40ODUsNTYuNDI2MmMtNC43MjYsLTAuMTAyNCAtMTAuNiwtMC4wMDgyIC0xNS4wOTIsMC4zNjg3YzIuNjU3LDIuODUzOSAxMi4wMjcsMS4wNTkgMTUuMDkyLC0wLjM2ODciLz4KICAgIDxwYXRoIGZpbGw9IiNkY2Q5ZDgiIGZpbGwtcnVsZT0iZXZlbm9kZCIgaWQ9InBhdGgxMjQiIGQ9Im0xNTkuMDY0LDM3LjM3N2MwLjY3OCwtNS45MzUyIDMuMDMxLC0xMS45NDg5IDIuNzM2LC0xOC40NDg5Yy0yLjYxMywtMC44ODEyIC00LjExNCwtMS42NTE5IC03LjYxNSwtMS42NDcyYy0wLjI0Nyw1LjUyNDIgLTAuOTg2LDEzLjk2OTEgLTAuNzY1LDE5LjIzNTFjMS43MjIsLTAuMTE0IDQuMjYxLDEuMjMwMSA1LjY0NCwwLjg2MSIvPgogICAgPHBhdGggZmlsbD0iI2YwZDZiNyIgZmlsbC1ydWxlPSJldmVub2RkIiBpZD0icGF0aDEyNiIgZD0ibTE1MS40NDUsMTI0Ljg0OWMtMi4zNzMsLTEuNTQ5IC00LjM5NCwtMy40ODMgLTYuNjczLC01LjEzN2MtNS4wNTQsLTAuMjUgLTcuODEyLDAuMzUgLTExLjUyNSwzLjI1MmMwLjA2MSwwLjIzMyAwLjQzNCwwLjEyOSAwLjQ0OCwwLjQxNWM1LjQxLC0yLjQxMSAxMi4yODcsMC45ODIgMTcuNzUsMS40NyIvPgogICAgPHBhdGggZmlsbD0iIzgxYjBjNCIgZmlsbC1ydWxlPSJldmVub2RkIiBpZD0icGF0aDEyOCIgZD0ibTEyMy4wNDQ1LDg3Ljk3MTFjMS40ODY0LDYuNDQxIDcuMzEwNiw5Ljc3NjkgMTIuNTk5NSwxMy4zMjM5YzUuNDU5LC02LjkyODIgOC43NzksLTE1LjgzOCAxMi40MzUsLTI0LjQzNmMtOC42MzgsMi42MDM5IC0xNy40NjQsNi44Mjg5IC0yNS4wMzQ1LDExLjExMjEiLz4KICAgIDxwYXRoIGZpbGw9IiMyMzFmMjAiIGZpbGwtcnVsZT0iZXZlbm9kZCIgaWQ9InBhdGgxMzAiIGQ9Im0xNTMuNDIsMzYuNTE2Yy0wLjIyMSwtNS4yNjYgMC41MTgsLTEzLjcxMDkgMC43NjUsLTE5LjIzNTFjMy41MDEsLTAuMDA0NyA1LjAwMiwwLjc2NiA3LjYxNSwxLjY0NzJjMC4yOTUsNi41IC0yLjA1OCwxMi41MTM3IC0yLjczNiwxOC40NDg5Yy0xLjM4MywwLjM2OTEgLTMuOTIyLC0wLjk3NSAtNS42NDQsLTAuODYxem0tNTQuNTE0MSwyOS45NDg4YzIuMzA4NiwtMjEuMjIzIDUuNjUyMywtMzkuMDYzNiAxMS43ODUxLC01Ny44NTY5OWMxMy42MTEzLC00LjEzMjgxIDMwLjAyLC00LjQ5Mjk3IDQyLjA1MSwtMC43NjM2N2MtMi4yMDksMTAuNjA3MDYgLTEuMjQ0LDIzLjUyMDY2IC0yLjUzNSwzNC44Mzk4NmMtMC45NzMsOC41MDc4IC0wLjQ3NywxNy4wNjggLTEuODExLDI1Ljc0OGMtMTQuNTc4LDMuMDMyOCAtMzUuMTgzNSwwLjcwOSAtNDkuNDkwMSwtMS45Njcyem01Mi45MzcxLDEuODM0Yy0wLjEyMywtOS4xMTQ4IDAuNDA4LC0xOC4xMDU4IDEuMTA0LC0yNy4yMzJjMy41LDAuNTI1NCA1Ljg3NSwwLjg3NjIgOS4xMjcsMS41ODkxYy0xLjA1Niw4Ljc4NTkgLTAuOTI2LDE4LjY3MjIgLTMuMDc3LDI2LjQ0NDFjLTIuNDg2LC0wLjAyMzggLTQuNjc1LDAuMDI4OSAtNy4xNTQsLTAuODAxMnptMTcuNzU1LDEuNDY5MmMtMS42NjEsMC4zODA4IC0zLjU5NSwwLjAxNDggLTUuMTgyLC0wLjAxNmMwLjc0NiwtNy40MzAxIDIuNTU2LC0xNS42MjkgMy4xOTMsLTIzLjQyODJjMi40OTcsLTAuMDc3NyAzLjgzMSwxLjEgNS44ODUsMS40OTYxYzAuMTEsNi44NDYxIC0wLjU5OCwxNi4yNzgxIC0zLjg5NiwyMS45NDgxem0yNi44ODQsLTI0LjU2MjljNS4yMDUsMS4yNjQgOC40NzgsNy42MzkgNy4wMjIsMTQuMTg1OWMtMC45NzcsNC40IC0yLjcxNywxMi42ODUyIC00LjU3OSwxNS41Yy0xLjM3NiwyLjA4MiAtNS4xMDcsNC44MDc4IC04LjA4NiwyLjljLTQuODQ2LC0zLjEwMzEgLTEzLjM4MywtNC4wMDM5IC0xNi45MTcsLTcuNzYwMWMxLjc3MiwtNS45IDIuMzIyLC0xNC4wMDM5IDMuMDUzLC0yMS40Nzk3YzYuMDU0LC0wLjM3NzQgMTMuNTAzLDEuNjY2IDE4LjUzOCwtMC41MDI0Yy0zLjUxNSwtMS4xMzg2IC04LjA3NiwtMS4xNDc2IC0xMS4xMTMsLTIuODA3YzIuNDgyLC0xLjE5ODggOC4yOTMsLTAuOTU2NiAxMi4wODIsLTAuMDM2N3ptLTQ4LjQwMywzMS42NTM5Yy0zLjY1Niw4LjU5OCAtNi45NzYsMTcuNTA3OCAtMTIuNDM1LDI0LjQzNmMtNS4yODg5LC0zLjU0NyAtMTEuMTEzMSwtNi44ODI5IC0xMi41OTk1LC0xMy4zMjM5YzcuNTcwNSwtNC4yODMyIDE2LjM5NjUsLTguNTA4MiAyNS4wMzQ1LC0xMS4xMTIxem05LjAxMiwyNi42MjVjLTAuMzQ2LC04LjU5ODggLTEuMzI3LC0xOS44NzgxIC0zLjYxOSwtMjYuNjE3MmM1LjQ2Nyw2Ljk2MTMgOS44NzYsMTUuMDY3MiAxNC40ODQsMjIuOTU5NGMtMS45NjQsMy4xNTI4IC02LjA3LDUuOTAxOCAtMTAuODY1LDMuNjU3OHptLTEwLjIxNiwzLjYzYy0yLjA3MSwwLjIyMyAtMy44MjksLTIuMzgxIC02LjUyMiwtMS4yNTVjLTAuNjE3LC0wLjY4MiAtMS4xNzgsLTEuNDIxIC0xLjgwNywtMi4wODdjNS45NDgsLTcuMTY4MSA4LjY1MSwtMTcuMzM4IDEzLjI0NSwtMjUuNzYxOGMyLjQ2NSw4LjA5MTggMi4xODEsMTYuOTU3IDIuNzI0LDI1Ljc4ODhjLTMuMzg3LC0wLjIxNSAtNS4yNjYsMy4wNjMgLTcuNjQsMy4zMTV6bS02LjU2OSw4LjY3Yy0wLjIyMSwtMi40NTUgMC4zNSwtMy4yNTggMC44NDQsLTYuMDcyYzguMDcsLTIuNTIzIDYuNjYxLDExLjA3NiAtMC44NDQsNi4wNzJ6bS04Ljk0OSwyLjkzOGMtMy40NzczLDEuOSAtOC43MDExLDMuOTY5IC0xMy4xOTI1LDQuODI2Yy01LjU2NzIsMS4wNjUgLTUuMDQ1NywtNy41OTQgLTQuODA5NCwtMTIuNzZjMC4xODU1LC00LjA5IDIuMzEyNSwtOC40MTUgMy4yMzYzLC0xMS4xMzIxYzAuNDMzNiwtMS4yNjg4IDAuNTMxMywtMi42MTQ5IDEuNjE2LC0yLjg2NjhjMS45MTcyLC0wLjQ0NjkgOC4yNDE0LDIuMDgyIDEwLjA0MzQsMy4wNjQ4YzMuODExMiwyLjA3ODEgNi43NjgyLDUuMzc4MSAxMC4wMDUyLDcuNTk0MWMwLjA0MiwxLjA3OCAwLjA4MywyLjE1NSAwLjEyNiwzLjIzM2MtMS45NDYsMC45NyAtNC4xOTUsMS42NTggLTcuMDUyLDEuNzgzYzEuOTM4LDAuOTc1IDQuNzg5LDAuOTYxIDYuNTU1LDIuMTIxYzAuMDE3LDAuNDMyIDAuMDM1LDAuODYzIDAuMDUsMS4yOTFjLTMuMjI0LDAuMjQ4IC00LjQ1MywxLjY4NCAtNi41NzgsMi44NDZ6bS0zMy4yMTM2LDYuMDMzYy0yLjg4NiwtMi45MyA4LjA5NDUsLTYuOTI0IDExLjU5MDYsLTcuMTM5Yy0wLjAxOTUsMS44NTQgMS4wNTY2LDMuNjAyIDAuODM5OCw0LjkzMmMtNC4xNTIzLDAuNzI5IC05LjYwOTMsMC4yNDggLTEyLjQzMDQsMi4yMDd6bTM1LjU1MTYsLTEuMzc2Yy0wLjAxNCwtMC4yODYgLTAuMzg3LC0wLjE4MiAtMC40NDgsLTAuNDE1YzMuNzEzLC0yLjkwMiA2LjQ3MSwtMy41MDIgMTEuNTI1LC0zLjI1MmMyLjI3OSwxLjY1NCA0LjMsMy41ODggNi42NzMsNS4xMzdjLTUuNDYzLC0wLjQ4OCAtMTIuMzQsLTMuODgxIC0xNy43NSwtMS40N3ptMzIuNjMyLC05Ljg5NWMtMC4xNTYsMy4yNTUgLTEuMDExLDkuOTQ5IC0zLjAyMywxMS4xMjFjLTQuMjIzLDIuNDY1IC0xMS43MywtNC45NzcgLTE0LjkxLC02LjExMmMwLjM0NiwtMC45OTYgMC45MTcsLTEuNzg1IDAuOTYxLC0zLjA1OGMxLjg4MSwwLjQ2MyA0LjE3MSwwLjE0NiA1LjgwMSwtMC42NTVjLTEuODg1LC0wLjIxMSAtMy45NzUsLTAuMTk3IC01LjIyMiwtMS4wOTVjLTAuNDU3LC0xLjMyMSAwLjExMiwtMy4xMjEgLTAuMTkyLC00Ljk1NWM0LjQ3NCwtMS4yNjIgOS41ODQsLTEuOTM0IDE1LjI0LC0yLjFjMS4xLDEuNDMgMS40NzUsNC4xNTQgMS4zNDUsNi44NTR6bS03My4wNDIyLDguNDM3Yy0wLjkwNjMsMC42NDYgLTcuMDM3MSw4LjYyMyAtNy44NzcsOC4yOTJjLTExLjA5MzcsLTQuMzc1IC0yMS40NjY4LC0xMS45NCAtMzAuNzM2MywtMTkuMDk1YzguODM3OSwtMTguOTY0MSAxMi40MDU1LC00Mi4xOTgxIDEzLjAzNTksLTY0LjU5MThjMTAuMTI0MiwtNC43MzUyIDE5LjAxNjgsLTExLjU2MTQgMzIuNzU1MSwtMTIuMjc0MmMtMS41ODk4LDExLjI0OCAtMy4wNDEsMjEuMjgzMiAtMy45NDM0LDMxLjg3M2MtMy40NTE5LDEuNDU1MSAtOC40MDQzLC0wLjA2NiAtMTEuNjM0NywwLjQ1MTJjLTAuMDI3NCwzLjg5MjkgNC45MzM2LDEuNzA0NyA1LjM0NjgsNC4zMjI2YzAuMzExNCwxLjk4MDEgLTIuNzI5NiwyLjEzMDEgLTEuNzM5NCw1LjI0ODFjMi41MjU0LC0wLjkxOCAzLjg1MTYsLTIuOTQ1NyA2LjU0NDksLTMuNzA3MWMyLjQ2MSw1LjM4NCAtMC4wMzQ0LDE0LjkxMDIgMC4zMjAzLDE5LjQxMDJjMC4wNjcyLDAuODQ0OSAwLjQyMTksNC42ODA5IDIuMzE0NSw0LjAwNzhjMS42NzUsLTAuNTk1NyAtMC4wOTU3LC0xMC4yMDE5IDAuMDg3OSwtMTQuNDYwOWMwLjE2NzIsLTMuOTIzOSAtMC40NzM5LC03LjcyMDcgMS4xMTUyLC0xMC4xODRjMTMuMjc1NCwxLjgwNyAyNi43NjU2LDIuOTc1IDQxLjEyOTQsMy4zNjkxYy0zLjE2LDEuMzU1OSAtNi45MTQsMi42MzkxIC0xMS4wMjk4LDQuOTU5Yy0yLjIzMTIsMS4yNTc4IC05LjI2NDQsMy44NzUgLTkuOTA4Miw1Ljk5NDJjLTEuMDI3MywzLjM3NjkgMi42OTUzLDUuMTc1NyAzLjMzMiw4LjA3MDdjLTYuNzAxMSwtMy42NTQ3IC04LjAwODUsMy41MDMxIC05LjU5MzcsOC41NzQxYy0xLjQzNjMsNC41OTMgLTIuMjUzOSw4LjAyNCAtMi42MDYzLDEwLjY3M2MtNS43NzI2LDIuNzUyIC0xMS45NDQ1LDUuNTM5IC0xNi45MTMyLDkuMDY4em02Ny4xNzkyLDcuMzI3YzkuMjQzLDQuNDgyIDEwLjkwOSwtMTYuNzUxIDcuMjg2LC0yMy41OTFjMC41NiwtMi4wNCAyLjQ4NiwtMi44MjEgMy4yNzIsLTQuNjU1Yy01LjE1OCwtOS4yMzk5IC0xMC44ODcsLTE3Ljg2NDkgLTE2LjE1LC0yNi45OTYxYzMuOTE1LDIuNDM3MSA5LjUwNywwLjQzNTkgMTQuMTE0LDIuMjYwMWMxLjY4NCwwLjY2NiAyLjkwMyw0LjUyMTEgNC4xNzgsNy42MDUxYzMuNTA3LDguNDg0OCA3LjE4OSwxOS4xODE5IDguODI3LDI3LjI3ODljMC4zNywxLjg0NSAxLjM3OCw1Ljg2NSAxLjE1Miw3LjUwN2MtMC40MDMsMi45NCAtNC4zOTIsNS4xMiAtNi40MjEsNi45MzhjLTMuNzM4LDMuMzU4IC02LjA5Miw2LjMxMyAtOS45OTEsOS40NTNjLTEuNTgxLC0yLjMzNCAtNC45NzQsLTMuOTAyIC02LjI2NywtNS44em0tODguMzE3OSw4MS45NjhjLTQuNDA0MywtNC44NDYgLTMuNDgyNCwtMTMuOTI2IC0yLjk0OTIsLTIwLjM4NmM3Ljk2MDksNS4wMDggMTguNTI3MywtMC4zOTYgMTguNDI3NywtOC45MTRjMy44MDA4LDAuMTAxIDEuNDE5OSw0Ljc0NyAwLjczMjQsNy43NGMtMi4yNDY4LDkuNzc2IDMuNzg1MiwyMC4zOTcgMC4yNzM1LDI5LjMzN2MtNi44MTg0LC0wLjUxNyAtMTIuNDIsLTMuMzAyIC0xNi40ODQ0LC03Ljc3N3ptMzEuNTEzNywyOC4xMjZjLTkuOTcwNywtMi44MjYgLTIyLjc0OTMsLTEwLjA3MSAtMjYuODQ2NSwtMTkuMDI4YzMuMTcyNiwwLjQ2MSA1LjM3NSwyLjA2MSA4LjUwNDcsMi4yNTljMS4xODI4LDAuMDc3IDIuNzMyNCwtMC40OTYgNC4wOTE4LC0wLjE1OGMyLjcwOSwwLjY3MiA0Ljk5NTMsNi43NDYgNy4wMzksOS4wMDZjMS45OTIyLDIuMjA3IDQuMzg2NywzLjE1IDYuMDI1NCw1LjE2MmMxLjA1MjgsMC41MDggMi42MDk0LDAuNDczIDIuNjY5MiwyLjA1NGMtMC40NTYzLDAuNDg4IC0wLjkzNjgsMC44NiAtMS40ODM2LDAuNzA1em01MS45MDMyLC0yLjY1OGMtMTAuMzQ5LDUuODM5IC0yNy44NjYxLDEwLjIzMSAtMzguODc0Nyw0Ljc0M2MtOC44ODI4LC00LjQyOSAtMjAuODg5OSwtMTEuNzU3IC0yNC45ODM2LC0yMS4wNDNjMy44MjQyLC04Ljk2MSAtMS4xMzI4LC0xNy4xNzIgLTEuNDQ5MiwtMjYuMjdjLTAuMTY4LC00Ljg0MSAyLjI3OTMsLTkuMDY3IDIuNDY2OCwtMTQuMzM3Yy0xLjMwODYsLTIuMTU5IC01LjMwNjcsLTIuNDI1IC04LjA3NDMsLTIuMjc3Yy0wLjkzMTYsNC42NjIgLTIuNTYyNSw5LjkwMiAtNy4zNjMyLDEwLjQyOGMtNi43OTMsMC43NDMgLTExLjc1OTgsLTQuODc5IC0xMi4wNjg0LC0xMC43NTRjLTAuMzY1MiwtNi45MDkgNS4zMDY2LC0xOC4zNiAxMy4zNDU3LC0xNy41NjVjMy4xMDU1LDAuMzA3IDMuODY4NCwzLjQyIDcuMjUyLDMuMzg4YzEuODMzOSwtMy42NTkgLTIuODI4OSwtNC44MDggLTMuMzA4NiwtNy40MjVjLTAuMTI1LC0wLjY3NiAwLjM4NjcsLTMuMzE4IDAuNjg0MywtNC41NTdjMS40NjAyLC02LjAzMyA0LjcxNTMsLTEzLjg0MSA3LjkxOTIsLTE4LjQzNGM0LjA2NjQsLTUuODI2IDEyLjA1NTUsLTYuNzA0IDIwLjY1MDQsLTcuMjc1YzEuNTM1MSwzLjMwNyA3LjE5MDIsMy4wMzUgMTAuODc1LDIuMTdjLTQuNDE2LDEuNzQ5IC04LjUyMTUsNS45ODkgLTExLjkyMzksOS43NDJjLTMuOTA4Miw0LjMwNiAtNy44NjcxLDguOTI1IC04LjA2NzEsMTQuNTUzYzcuMzg1NSwtMTAuMjQ2IDEzLjQ4NzEsLTE5LjE5NCAyNi45MTY4LC0yMy43MDFjMTAuMTYxOCwtMy40MDggMjIuMDI5OCwxLjU2MiAyOS44Mzc4LDcuMDQ1YzMuMjQsMi4yNzkgNS4xNzQsNS44OTUgNy40NzcsOS4yMDVjOC42MTcsMTIuMzk1IDEyLjYzOCwzMC4wODcgMTEuNzU0LDQ3LjIzNWMtMC4zNjQsNy4wNzIgLTAuMzQ4LDE0LjEyIC0yLjcyMSwxOC44NzhjLTIuNDgsNC45NzUgLTEwLjg2OCw5LjQyNiAtMTUuNzc4LDQuOTI2Yy0wLjkxLDQuODM4IDQuMDgzLDcuODMgOS45NDgsNi4wODljLTQuMTgyLDUuMzk3IC04LjU3MSwxMS44ODIgLTE0LjUxNSwxNS4yMzZ6bTE5LjI4MSwtMTU5LjU2NzJjOC4wODcsNC4wMjAzIDIzLjE5NywxMC44MjExIDI4LjI2NywtMC4wMTQ4YzEuODcxLC0zLjk5NDIgNC4wNjYsLTEwLjc0NjEgNS4wMzUsLTE0Ljg2OTJjMS4zNjksLTUuODE2OCAtMS40ODQsLTE4LjA0MyAtNy40NjMsLTE5Ljk5NDljLTUuMjgxLC0xLjcyMzggLTExLjQ0MywtMS42MTg4IC0xNy44MDQsLTAuMzQxYy0wLjc0OSwwLjYyMyAtMS41ODMsMS43MDkgLTIuMTY2LDIuODQxYy00LjU0MiwwLjE3NjIgLTguNzk1LC0wLjI0MzggLTEyLjM4MywtMi4xMTA5YzAuMzQsLTMuMzU5IC0xLjkzMiwtMy44OTgxIC00LjA2MiwtNC41ODk5Yy0xLjU3OSwtNi4yNjA5IDMuMTU5LC0xNC40MzcxIDIuMDI1LC0yMC4xNDYxYy0wLjgwOSwtNC4wNjcyIC01LjgxMywtNC42OTYxIC05LjQ5MSwtNS40NTdjLTAuMTIsLTIuMjYwMiAwLjE2MSwtNC4xNDY4OSAwLjQxMiwtNi4wNTljLTAuODQxLC0zLjA5ODgzIC00LjYxMywtNC44NjI4OSAtOC4xODcsLTUuMjk0OTJjLTExLjc1OSwtMS40MTQwNiAtMjkuNjEzMywtMi4wNDkyMiAtNDAuOTIzOSwyLjAxNzk3Yy0zLjE1NjIsNy43NDE3NSAtNS42NDI2LDE3LjE1Nzg1IC04LjI3MTUsMjUuOTk4MDVjLTExLjAzMTIsLTEuMTc4MSAtMTkuOTUzMSw0Ljc1OTggLTI4LjM2NCw4LjY1Yy0yLjkxMjEsMS4zNSAtNi45NDA2LDIuMDkzNyAtOC4wMjg1LDQuNDExN2MtMS4wNTQ3LDIuMjQ0MiAtMC42MjMxLDYuNTQ1MyAtMC44ODQ4LDEwLjYwODJjLTAuNjY2LDEwLjM3NyAtMS4yMzYzLDIwLjM4NiAtMy45NzY2LDMxLjAxMWMtMS4yMzA0LDQuNzY3OSAtMy4zNzUsOC45NzUgLTQuODcxMSwxMy41NjkxYy0xLjM4MjgsNC4yNTc5IC0zLjc5ODgsOS41MTk5IC00LjQyODksMTMuNzY1OWMtMC45MzQzLDYuMjkzIDQuOTkxNCw2LjY0MyA4Ljc4MDUsOS4zN2M1Ljg1NzQsNC4yMTcgMTAuNDU1MSw2LjU0OSAxNi43OTg4LDEwLjM1NWMxLjg3ODksMS4xMjcgNy41NDUsMy45OCA4LjE4OTUsNS4yOTRjMS4yODEyLDIuNjA1IC0yLjE5OTIsNi4yNzggLTMuMTI5Nyw4LjMyYy0xLjQ3MTksMy4yMjkgLTIuMjM5NSw1Ljk3MiAtMi40NTA0LDkuMTU4Yy01LjMyMTUsMC44NDEgLTkuMzU1NSw0LjAwOCAtMTEuNzkyMiw3LjU3OWMtNC4wMzA4LDUuOTEgLTYuODI2MiwxNi44NDQgLTMuMzM4NywyNS4xNjFjMC4yNzM1LDAuNjU1IDEuNjM3NSwxLjk0MyAxLjgzODcsMi45NDljMC4zOTY5LDEuOTgxIC0wLjc0NjksNC42MTUgLTAuODE4LDYuNzIyYy0wLjM2NjQsMTAuODEgMS44MjksMjAuMTI0IDkuMTA2MywyMy4zODRjMi45NTQzLDExLjc2OSAxMy41MjgxLDE1LjY4MiAyMy40OTAyLDIxLjUzMWMzLjcyMzksMi4xODYgNy44Mjg5LDMuNTgzIDEyLjA2ODQsNS4xNDNjMTUuMjA4Miw1LjU5NyAzOC41NDE5LDQuNTQzIDUxLjE2MzksLTUuMDAzYzUuMzUyLC00LjA0OCAxMy45MDcsLTEyLjU5NSAxNi45NjcsLTE4Ljc4M2M4LjA4MiwtMTYuMzM3IDcuNTA4LC00My42NCAxLjg1NSwtNjMuNTEzYy0wLjc2LC0yLjY2OCAtMS44NjIsLTYuNTkgLTMuNDAxLC05Ljc5NWMtMS4wNzMsLTIuMjM4IC00LjQwOCwtNi43MTYgLTQuMDAzLC04LjY5MmMwLjQxNywtMi4wNDMgNy42MDQsLTcuNSA5LjE0NSwtOC45ODZjMi43NzUsLTIuNjc3IDguMDQ3LC02LjIzIDguNDc0LC05LjYwOGMwLjQ1OSwtMy41OTUgLTEuNTg0LC04LjUxMyAtMi42MTksLTExLjk4MmMtMy40NiwtMTEuNTc2OSAtNi44MzYsLTIyLjI3ODEgLTEwLjc1OSwtMzIuNTk5MiIvPgogICAgPHBhdGggZmlsbD0iI2Y3ZTRjZCIgZmlsbC1ydWxlPSJldmVub2RkIiBpZD0icGF0aDEzMiIgZD0ibTEyMC44OTEsMTU3LjI1NWMwLjQzODcsMC41ODQgMi44NTA4LDEuNDcxIDYuMjI1OCwtMC4xNTRjMCwwIC00LC0wLjY2NyAtMy42NjcyLC03LjMzNmwtMS42NjY4LDAuMzM0YzAsMCAtMS43MjI2LDYuMDQ3IC0wLjg5MTgsNy4xNTYiLz4KICAgIDxwYXRoIGZpbGw9IiMxZDE5MTkiIGZpbGwtcnVsZT0iZXZlbm9kZCIgaWQ9InBhdGgxMzQiIGQ9Im0xNTAuMTE3LDk5LjkzNGMwLC0xLjAxMjEgLTAuODIxLC0xLjgzMjggLTEuODM0LC0xLjgzMjhjLTEuMDEyLDAgLTEuODMzLDAuODIwNyAtMS44MzMsMS44MzI4YzAsMS4wMTIgMC44MjEsMS44MzQgMS44MzMsMS44MzRjMS4wMTMsMCAxLjgzNCwtMC44MjIgMS44MzQsLTEuODM0Ii8+CiAgICA8cGF0aCBmaWxsPSIjMWQxOTE5IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGlkPSJwYXRoMTM2IiBkPSJtMTUxLjk1LDkxLjQzNGMwLC0xLjAxMjEgLTAuODIxLC0xLjgzMjggLTEuODM0LC0xLjgzMjhjLTEuMDEyLDAgLTEuODMzLDAuODIwNyAtMS44MzMsMS44MzI4YzAsMS4wMTIxIDAuODIxLDEuODM0IDEuODMzLDEuODM0YzEuMDEzLDAgMS44MzQsLTAuODIxOSAxLjgzNCwtMS44MzQiLz4KICAgPC9nPgogIDwvZz4KIDwvZz4KPC9zdmc+ +keywords: +- ci/cd +- pipeline +- jenkins diff --git a/charts/redhat/redhat/redhat-jenkins/0.0.3/src/templates/NOTES.txt b/charts/redhat/redhat/redhat-jenkins/0.0.3/src/templates/NOTES.txt new file mode 100644 index 000000000..e69de29bb diff --git a/charts/redhat/redhat/redhat-jenkins/0.0.3/src/templates/_helpers.tpl b/charts/redhat/redhat/redhat-jenkins/0.0.3/src/templates/_helpers.tpl new file mode 100644 index 000000000..8a087c57f --- /dev/null +++ b/charts/redhat/redhat/redhat-jenkins/0.0.3/src/templates/_helpers.tpl @@ -0,0 +1,62 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "openshift-jenkins.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "openshift-jenkins.fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default .Chart.Name .Values.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "openshift-jenkins.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "openshift-jenkins.labels" -}} +helm.sh/chart: {{ include "openshift-jenkins.chart" . }} +{{ include "openshift-jenkins.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "openshift-jenkins.selectorLabels" -}} +app.kubernetes.io/name: {{ include "openshift-jenkins.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "openshift-jenkins.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "openshift-jenkins.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} diff --git a/charts/redhat/redhat/redhat-jenkins/0.0.3/src/templates/configmap-trusted-ca-bundle.yaml b/charts/redhat/redhat/redhat-jenkins/0.0.3/src/templates/configmap-trusted-ca-bundle.yaml new file mode 100644 index 000000000..8464ea360 --- /dev/null +++ b/charts/redhat/redhat/redhat-jenkins/0.0.3/src/templates/configmap-trusted-ca-bundle.yaml @@ -0,0 +1,7 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + labels: + config.openshift.io/inject-trusted-cabundle: "true" + {{- include "openshift-jenkins.labels" . | nindent 4 }} + name: {{ include "openshift-jenkins.fullname" . }}-trusted-ca-bundle diff --git a/charts/redhat/redhat/redhat-jenkins/0.0.3/src/templates/deploymentconfig.yaml b/charts/redhat/redhat/redhat-jenkins/0.0.3/src/templates/deploymentconfig.yaml new file mode 100644 index 000000000..d7a4e4da8 --- /dev/null +++ b/charts/redhat/redhat/redhat-jenkins/0.0.3/src/templates/deploymentconfig.yaml @@ -0,0 +1,111 @@ +apiVersion: apps.openshift.io/v1 +kind: DeploymentConfig +metadata: + labels: + {{- include "openshift-jenkins.labels" . | nindent 4 }} + name: {{ include "openshift-jenkins.fullname" . }} +spec: + replicas: 1 + selector: + {{ include "openshift-jenkins.selectorLabels" . | nindent 4}} + strategy: + type: Recreate + template: + metadata: + {{- with .Values.podAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + {{- include "openshift-jenkins.selectorLabels" . | nindent 8 }} + spec: + containers: + - env: + - name: OPENSHIFT_ENABLE_OAUTH + value: "true" + - name: OPENSHIFT_ENABLE_REDIRECT_PROMPT + value: "true" + - name: DISABLE_ADMINISTRATIVE_MONITORS + value: "false" + - name: KUBERNETES_MASTER + value: https://kubernetes.default:443 + - name: KUBERNETES_TRUST_CERTIFICATES + value: "true" + - name: JENKINS_SERVICE_NAME + value: {{ include "openshift-jenkins.fullname" . }} + - name: JNLP_SERVICE_NAME + value: {{ include "openshift-jenkins.fullname" . }}-jnlp + - name: ENABLE_FATAL_ERROR_LOG_FILE + value: "false" + - name: JENKINS_UC_INSECURE + value: "false" + - name: CASC_JENKINS_CONFIG + value: /var/lib/jenkins/proxy.yaml + image: "" + imagePullPolicy: IfNotPresent + livenessProbe: + failureThreshold: 2 + httpGet: + path: /login + port: 8080 + scheme: HTTP + initialDelaySeconds: 420 + periodSeconds: 360 + successThreshold: 1 + timeoutSeconds: 240 + name: jenkins + readinessProbe: + failureThreshold: 3 + httpGet: + path: /login + port: 8080 + scheme: HTTP + initialDelaySeconds: 3 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 240 + resources: + limits: + memory: 1Gi + securityContext: + capabilities: {} + privileged: false + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + volumeMounts: + - mountPath: /var/lib/jenkins + name: jenkins-data + - mountPath: /etc/pki/ca-trust/source/anchors + name: jenkins-trusted-ca-bundle + dnsPolicy: ClusterFirst + restartPolicy: Always + schedulerName: default-scheduler + securityContext: {} + serviceAccount: jenkins + serviceAccountName: jenkins + terminationGracePeriodSeconds: 30 + volumes: + - name: jenkins-data + {{- if .Values.persistence.enabled }} + persistentVolumeClaim: + claimName: {{ include "openshift-jenkins.fullname" . }} + {{- else }} + emptyDir: {} + {{- end }} + - configMap: + defaultMode: 420 + name: {{ include "openshift-jenkins.fullname" . }}-trusted-ca-bundle + optional: true + name: jenkins-trusted-ca-bundle + triggers: + - imageChangeParams: + automatic: true + containerNames: + - jenkins + from: + kind: ImageStreamTag + name: jenkins:2 + namespace: openshift + lastTriggeredImage: "" + type: ImageChange + - type: ConfigChange \ No newline at end of file diff --git a/charts/redhat/redhat/redhat-jenkins/0.0.3/src/templates/persistentvolumeclaim.yaml b/charts/redhat/redhat/redhat-jenkins/0.0.3/src/templates/persistentvolumeclaim.yaml new file mode 100644 index 000000000..45edd915c --- /dev/null +++ b/charts/redhat/redhat/redhat-jenkins/0.0.3/src/templates/persistentvolumeclaim.yaml @@ -0,0 +1,17 @@ +{{- if .Values.persistence.enabled -}} +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: {{ include "openshift-jenkins.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: + {{- include "openshift-jenkins.labels" . | nindent 4 }} +spec: + accessModes: + {{- range .Values.persistence.accessModes }} + - {{ . | quote }} + {{- end }} + resources: + requests: + storage: {{ .Values.persistence.size | quote }} +{{- end -}} diff --git a/charts/redhat/redhat/redhat-jenkins/0.0.3/src/templates/rolebinding.yaml b/charts/redhat/redhat/redhat-jenkins/0.0.3/src/templates/rolebinding.yaml new file mode 100644 index 000000000..d9ff0ccc2 --- /dev/null +++ b/charts/redhat/redhat/redhat-jenkins/0.0.3/src/templates/rolebinding.yaml @@ -0,0 +1,13 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + labels: + {{- include "openshift-jenkins.selectorLabels" . | nindent 4 }} + name: {{ include "openshift-jenkins.fullname" . }}-edit +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: edit +subjects: +- kind: ServiceAccount + name: {{ include "openshift-jenkins.serviceAccountName" . }} diff --git a/charts/redhat/redhat/redhat-jenkins/0.0.3/src/templates/route.yaml b/charts/redhat/redhat/redhat-jenkins/0.0.3/src/templates/route.yaml new file mode 100644 index 000000000..72aebd92c --- /dev/null +++ b/charts/redhat/redhat/redhat-jenkins/0.0.3/src/templates/route.yaml @@ -0,0 +1,15 @@ +apiVersion: route.openshift.io/v1 +kind: Route +metadata: + annotations: + haproxy.router.openshift.io/timeout: 4m + labels: + {{- include "openshift-jenkins.labels" . | nindent 4 }} + name: {{ include "openshift-jenkins.fullname" . }} +spec: + tls: + insecureEdgeTerminationPolicy: Redirect + termination: edge + to: + kind: Service + name: {{ include "openshift-jenkins.fullname" . }} diff --git a/charts/redhat/redhat/redhat-jenkins/0.0.3/src/templates/service-jnlp.yaml b/charts/redhat/redhat/redhat-jenkins/0.0.3/src/templates/service-jnlp.yaml new file mode 100644 index 000000000..fc041abc5 --- /dev/null +++ b/charts/redhat/redhat/redhat-jenkins/0.0.3/src/templates/service-jnlp.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "openshift-jenkins.fullname" . }}-jnlp + labels: + {{- include "openshift-jenkins.labels" . | nindent 4 }} +spec: + type: {{ .Values.servicejnlp.type }} + ports: + - port: {{ .Values.servicejnlp.port }} + targetPort: {{ .Values.servicejnlp.targetPort }} + protocol: TCP + name: {{ .Values.servicejnlp.name }} + selector: + {{- include "openshift-jenkins.selectorLabels" . | nindent 4 }} diff --git a/charts/redhat/redhat/redhat-jenkins/0.0.3/src/templates/service.yaml b/charts/redhat/redhat/redhat-jenkins/0.0.3/src/templates/service.yaml new file mode 100644 index 000000000..a14452125 --- /dev/null +++ b/charts/redhat/redhat/redhat-jenkins/0.0.3/src/templates/service.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "openshift-jenkins.fullname" . }} + labels: + {{- include "openshift-jenkins.labels" . | nindent 4 }} +spec: + type: {{ .Values.service.type }} + ports: + - port: {{ .Values.service.port }} + targetPort: {{ .Values.service.targetPort }} + protocol: TCP + name: {{ .Values.service.name }} + selector: + {{- include "openshift-jenkins.selectorLabels" . | nindent 4 }} diff --git a/charts/redhat/redhat/redhat-jenkins/0.0.3/src/templates/serviceaccount.yaml b/charts/redhat/redhat/redhat-jenkins/0.0.3/src/templates/serviceaccount.yaml new file mode 100644 index 000000000..4d6bcbad6 --- /dev/null +++ b/charts/redhat/redhat/redhat-jenkins/0.0.3/src/templates/serviceaccount.yaml @@ -0,0 +1,8 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "openshift-jenkins.serviceAccountName" . }} + labels: + {{- include "openshift-jenkins.labels" . | nindent 4 }} + annotations: + serviceaccounts.openshift.io/oauth-redirectreference.jenkins: "{\"kind\":\"OAuthRedirectReference\",\"apiVersion\":\"v1\",\"reference\":{\"kind\":\"Route\",\"name\":\"{{ include "openshift-jenkins.fullname" . }}\"}}" diff --git a/charts/redhat/redhat/redhat-jenkins/0.0.3/src/templates/tests/test-connection.yaml b/charts/redhat/redhat/redhat-jenkins/0.0.3/src/templates/tests/test-connection.yaml new file mode 100644 index 000000000..30a3fee7c --- /dev/null +++ b/charts/redhat/redhat/redhat-jenkins/0.0.3/src/templates/tests/test-connection.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ include "openshift-jenkins.fullname" . }}-test-connection" + labels: + {{- include "openshift-jenkins.labels" . | nindent 4 }} + annotations: + "helm.sh/hook": test +spec: + containers: + - name: wget + image: busybox + command: ['wget'] + args: ['{{ include "openshift-jenkins.fullname" . }}:{{ .Values.service.port }}'] + restartPolicy: Never diff --git a/charts/redhat/redhat/redhat-jenkins/0.0.3/src/values.schema.json b/charts/redhat/redhat/redhat-jenkins/0.0.3/src/values.schema.json new file mode 100644 index 000000000..f5cc069d3 --- /dev/null +++ b/charts/redhat/redhat/redhat-jenkins/0.0.3/src/values.schema.json @@ -0,0 +1,134 @@ +{ + "$schema": "http://json-schema.org/schema#", + "type": "object", + "properties": { + "fullnameOverride": { + "type": "string", + "pattern": "^[a-z0-9-_]+$" + }, + "image": { + "type": "object", + "properties": { + "pullPolicy": { + "type": "string", + "pattern": "^(Always|Never|IfNotPresent)$" + }, + "tag": { + "type": "string" + } + } + }, + "imagePullSecrets": { + "type": "array" + }, + "nameOverride": { + "type": "string", + "pattern": "^[a-z0-9-_]+$" + }, + "persistence": { + "type": "object", + "properties": { + "accessModes": { + "type": "array", + "items": { + "type": "string" + } + }, + "annotations": { + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "size": { + "type": "string", + "title": "Persistent Volume Size", + "form": true, + "render": "slider", + "sliderMin": 1, + "sliderMax": 100, + "sliderUnit": "Gi" + }, + "storageClass": { + "type": "null" + } + } + }, + "replicaCount": { + "type": "integer" + }, + "resources": { + "type": "object", + "title": "Required Resources", + "description": "Configure resource requests", + "form": true, + "properties": { + "requests": { + "type": "object", + "properties": { + "memory": { + "type": "string", + "form": true, + "render": "slider", + "title": "Memory Request", + "sliderMin": 512, + "sliderMax": 65536, + "sliderUnit": "Mi" + }, + "cpu": { + "type": "string", + "form": true, + "render": "slider", + "title": "CPU Request", + "sliderMin": 512, + "sliderMax": 8000, + "sliderUnit": "m" + } + } + } + } + }, + "service": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "port": { + "type": "integer" + }, + "targetPort": { + "type": "integer" + }, + "type": { + "type": "string" + } + } + }, + "serviceAccount": { + "type": "object", + "properties": { + "name": { + "type": "string" + } + } + }, + "servicejnlp": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "port": { + "type": "integer" + }, + "targetPort": { + "type": "integer" + }, + "type": { + "type": "string" + } + } + } + } +} diff --git a/charts/redhat/redhat/redhat-jenkins/0.0.3/src/values.yaml b/charts/redhat/redhat/redhat-jenkins/0.0.3/src/values.yaml new file mode 100644 index 000000000..9a764985a --- /dev/null +++ b/charts/redhat/redhat/redhat-jenkins/0.0.3/src/values.yaml @@ -0,0 +1,61 @@ +# Default values for openshift-jenkins. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. + +replicaCount: 1 + +image: + pullPolicy: IfNotPresent + # Overrides the image tag whose default is the chart appVersion. + tag: "" + +imagePullSecrets: [] +nameOverride: "jenkins" +fullnameOverride: "jenkins" + +serviceAccount: + name: "jenkins" + +service: + type: ClusterIP + port: 80 + targetPort: 8080 + name: web + +servicejnlp: + type: ClusterIP + port: 50000 + targetPort: 50000 + name: agent + +persistence: + ## @param persistence.enabled Enable persistence using Persistent Volume Claims + enabled: false + ## @param persistence.storageClass Persistent Volume storage class + ## If defined, storageClassName: + ## If set to "-", storageClassName: "", which disables dynamic provisioning + ## If undefined (the default) or set to null, no storageClassName spec is set, choosing the default provisioner + ## + storageClass: + ## @param persistence.annotations Additional custom annotations for the PVC + ## + annotations: {} + ## @param persistence.accessModes [array] Persistent Volume access modes + ## + accessModes: + - ReadWriteOnce + ## @param persistence.size Persistent Volume size + ## + size: 8Gi + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi \ No newline at end of file diff --git a/charts/redhat/redhat/redhat-jenkins/OWNERS b/charts/redhat/redhat/redhat-jenkins/OWNERS new file mode 100644 index 000000000..b7c23e2bf --- /dev/null +++ b/charts/redhat/redhat/redhat-jenkins/OWNERS @@ -0,0 +1,13 @@ +chart: + name: redhat-jenkins + shortDescription: This is the Red Hat Openshift Jenkins chart +publicPgpKey: null +users: +- githubUsername: coreydaley +- githubUsername: jkhelil +- githubUsername: divyansh42 +- githubUsername: apoorvajagtap +- githubUsername: mbharatk +vendor: + label: redhat + name: Red Hat diff --git a/charts/redhat/redhat/redhat-knative-istio-authz/1.31.0/knative-istio-authz-1.31.0.tgz b/charts/redhat/redhat/redhat-knative-istio-authz/1.31.0/knative-istio-authz-1.31.0.tgz new file mode 100644 index 000000000..ebe57cbf5 Binary files /dev/null and b/charts/redhat/redhat/redhat-knative-istio-authz/1.31.0/knative-istio-authz-1.31.0.tgz differ diff --git a/charts/redhat/redhat/redhat-knative-istio-authz/1.32.0/knative-istio-authz-1.32.0.tgz b/charts/redhat/redhat/redhat-knative-istio-authz/1.32.0/knative-istio-authz-1.32.0.tgz new file mode 100644 index 000000000..82cd4b9f1 Binary files /dev/null and b/charts/redhat/redhat/redhat-knative-istio-authz/1.32.0/knative-istio-authz-1.32.0.tgz differ diff --git a/charts/redhat/redhat/redhat-knative-istio-authz/OWNERS b/charts/redhat/redhat/redhat-knative-istio-authz/OWNERS new file mode 100644 index 000000000..b74173cfd --- /dev/null +++ b/charts/redhat/redhat/redhat-knative-istio-authz/OWNERS @@ -0,0 +1,13 @@ +chart: + name: redhat-knative-istio-authz + shortDescription: This is the Red Had Openshift Serverless knative-istio-authz chart +publicPgpKey: null +users: +- githubUsername: Kaustubh-pande +- githubUsername: pierDipi +- githubUsername: rudyredhat1 +- githubUsername: ReToCode +- githubUsername: mgencur +vendor: + label: redhat + name: Red Hat diff --git a/charts/redhat/redhat/redhat-mariadb-imagestreams/0.0.1/src/Chart.yaml b/charts/redhat/redhat/redhat-mariadb-imagestreams/0.0.1/src/Chart.yaml new file mode 100644 index 000000000..6f1bbf696 --- /dev/null +++ b/charts/redhat/redhat/redhat-mariadb-imagestreams/0.0.1/src/Chart.yaml @@ -0,0 +1,14 @@ +description: |- + This content is expermental, do not use it in production. Provides a Red Hat MariaDB database. + For more information about using this database image, including OpenShift considerations, + see https://github.com/sclorg/mariadb-container/blob/master/README.md. +annotations: + charts.openshift.io/name: Red Hat MariaDB database service imagestreams (experimental). +apiVersion: v2 +appVersion: 0.0.1 +kubeVersion: '>=1.20.0' +name: mariadb-imagestreams +tags: database,mariadb +sources: + - https://github.com/sclorg/helm-charts +version: 0.0.1 diff --git a/charts/redhat/redhat/redhat-mariadb-imagestreams/0.0.1/src/templates/imagestreams.yaml b/charts/redhat/redhat/redhat-mariadb-imagestreams/0.0.1/src/templates/imagestreams.yaml new file mode 100644 index 000000000..b5d79b50f --- /dev/null +++ b/charts/redhat/redhat/redhat-mariadb-imagestreams/0.0.1/src/templates/imagestreams.yaml @@ -0,0 +1,124 @@ +kind: ImageStream +apiVersion: image.openshift.io/v1 +metadata: + name: mariadb + annotations: + openshift.io/display-name: MariaDB +spec: + tags: + - name: latest + annotations: + openshift.io/display-name: MariaDB (Latest) + openshift.io/provider-display-name: 'Red Hat, Inc.' + description: >- + Provides a MariaDB database on RHEL. For more information about using + this database image, including OpenShift considerations, see + https://github.com/sclorg/mariadb-container/tree/master/10.5/README.md. + + + WARNING: By selecting this tag, your application will automatically + update to use the latest version of MariaDB available on OpenShift, + including major version updates. + iconClass: icon-mariadb + tags: 'database,mariadb' + from: + kind: ImageStreamTag + name: 10.5-el8 + referencePolicy: + type: Local + - name: 10.3-el8 + annotations: + openshift.io/display-name: MariaDB 10.3 (RHEL 8) + openshift.io/provider-display-name: 'Red Hat, Inc.' + description: >- + Provides a MariaDB 10.3 database on RHEL 8. For more information about + using this database image, including OpenShift considerations, see + https://github.com/sclorg/mariadb-container/tree/master/10.3/README.md. + iconClass: icon-mariadb + tags: 'database,mariadb' + version: '10.3' + from: + kind: DockerImage + name: 'registry.redhat.io/rhel8/mariadb-103:latest' + referencePolicy: + type: Local + - name: 10.3-el7 + annotations: + openshift.io/display-name: MariaDB 10.3 (RHEL 7) + openshift.io/provider-display-name: 'Red Hat, Inc.' + description: >- + Provides a MariaDB 10.3 database on RHEL 7. For more information about + using this database image, including OpenShift considerations, see + https://github.com/sclorg/mariadb-container/tree/master/10.3/README.md. + iconClass: icon-mariadb + tags: 'database,mariadb' + version: '10.3' + from: + kind: DockerImage + name: 'registry.redhat.io/rhscl/mariadb-103-rhel7:latest' + referencePolicy: + type: Local + - name: '10.3' + annotations: + openshift.io/display-name: MariaDB 10.3 + openshift.io/provider-display-name: 'Red Hat, Inc.' + description: >- + Provides a MariaDB 10.3 database on RHEL 7. For more information about + using this database image, including OpenShift considerations, see + https://github.com/sclorg/mariadb-container/tree/master/10.3/README.md. + iconClass: icon-mariadb + tags: 'database,mariadb,hidden' + version: '10.3' + from: + kind: DockerImage + name: 'registry.redhat.io/rhscl/mariadb-103-rhel7:latest' + referencePolicy: + type: Local + - name: 10.5-el7 + annotations: + openshift.io/display-name: MariaDB 10.5 (RHEL 7) + openshift.io/provider-display-name: 'Red Hat, Inc.' + description: >- + Provides a MariaDB 10.5 database on RHEL 7. For more information about + using this database image, including OpenShift considerations, see + https://github.com/sclorg/mariadb-container/tree/master/10.5/README.md. + iconClass: icon-mariadb + tags: 'database,mariadb' + version: '10.5' + from: + kind: DockerImage + name: 'registry.redhat.io/rhscl/mariadb-105-rhel7:latest' + referencePolicy: + type: Local + - name: 10.5-el8 + annotations: + openshift.io/display-name: MariaDB 10.5 (RHEL 8) + openshift.io/provider-display-name: 'Red Hat, Inc.' + description: >- + Provides a MariaDB 10.5 database on RHEL 8. For more information about + using this database image, including OpenShift considerations, see + https://github.com/sclorg/mariadb-container/tree/master/10.5/README.md. + iconClass: icon-mariadb + tags: 'database,mariadb' + version: '10.5' + from: + kind: DockerImage + name: 'registry.redhat.io/rhel8/mariadb-105:latest' + referencePolicy: + type: Local + - name: 10.5-el9 + annotations: + openshift.io/display-name: MariaDB 10.5 (RHEL 9) + openshift.io/provider-display-name: 'Red Hat, Inc.' + description: >- + Provides a MariaDB 10.5 database on RHEL 9. For more information about + using this database image, including OpenShift considerations, see + https://github.com/sclorg/mariadb-container/tree/master/10.5/README.md. + iconClass: icon-mariadb + tags: 'database,mariadb' + version: '10.5' + from: + kind: DockerImage + name: 'registry.redhat.io/rhel9/mariadb-105:latest' + referencePolicy: + type: Local diff --git a/charts/redhat/redhat/redhat-mariadb-imagestreams/OWNERS b/charts/redhat/redhat/redhat-mariadb-imagestreams/OWNERS new file mode 100644 index 000000000..b578baeee --- /dev/null +++ b/charts/redhat/redhat/redhat-mariadb-imagestreams/OWNERS @@ -0,0 +1,9 @@ +chart: + name: redhat-mariadb-imagestreams + description: This is the Red Hat MariaDB imagestreams chart +publicPgpKey: null +users: + - githubUsername: phracek +vendor: + label: redhat + name: Red Hat diff --git a/charts/redhat/redhat/redhat-mariadb-persistent/0.0.1/src/Chart.yaml b/charts/redhat/redhat/redhat-mariadb-persistent/0.0.1/src/Chart.yaml new file mode 100644 index 000000000..a1db3f988 --- /dev/null +++ b/charts/redhat/redhat/redhat-mariadb-persistent/0.0.1/src/Chart.yaml @@ -0,0 +1,13 @@ +description: |- + MariaDB database service, with persistent storage. For more information about using this template, including OpenShift considerations, see https://github.com/sclorg/mariadb-container/blob/master/10.3/root/usr/share/container-scripts/mysql/README.md. + + NOTE: Scaling to more than one replica is not supported. You must have persistent volumes available in your cluster to use this template. +name: mariadb-persistent +tags: database,mariadb +version: 0.0.1 +annotations: + charts.openshift.io/name: Red Hat MariaDB database service, with persistent storage (experimental). +apiVersion: v2 +appVersion: 0.0.1 +sources: + - https://github.com/sclorg/helm-charts diff --git a/charts/redhat/redhat/redhat-mariadb-persistent/0.0.1/src/README.md b/charts/redhat/redhat/redhat-mariadb-persistent/0.0.1/src/README.md new file mode 100644 index 000000000..0194e3cb6 --- /dev/null +++ b/charts/redhat/redhat/redhat-mariadb-persistent/0.0.1/src/README.md @@ -0,0 +1,22 @@ +# MariaDB helm chart + +A Helm chart for building and deploying a [MariaDB](https://github/sclorg/mariadb-container) application on OpenShift. + +For more information about helm charts see the official [Helm Charts Documentation](https://helm.sh/). + +You need to have access to a cluster for each operation with OpenShift 4, like deploying and testing. + +## Values +Below is a table of each value used to configure this chart. + +| Value | Description | Default | Additional Information | +|---------------------------------------------| ----------- | -- | ---------------------- | +| `database_service_name` | The name of the OpenShift Service exposed for the database. | `mariadb` | - | +| `mysql_user` | Username for MariaDB user that will be used for accessing the database. | - | Expresion like: `user[A-Z0-9]{3}` | +| `mysql_root_password` | Password for the MariaDB root user. | | Expression like: `[a-zA-Z0-9]{16}` | +| `mysql_database` | Name of the MariaDB database accessed. | `sampledb` | | +| `mysql_password` | Password for the MariaDB connection user. | | Expression like: `[a-zA-Z0-9]{16}` | +| `mariadb_version` | Version of MariaDB image to be used (10.3-el7, 10.3-el8, or latest). | `10.3-el8` | | +| `namespace` | The OpenShift Namespace where the ImageStream resides. | `openshift` | | +| `memory_limit` | Maximum amount of memory the container can use. | `521Mi` | | +| `volume_capacity` | Volume space available for data, e.g. 512Mi, 2Gi. | `1Gi` | | diff --git a/charts/redhat/redhat/redhat-mariadb-persistent/0.0.1/src/templates/deploymentconfig.yaml b/charts/redhat/redhat/redhat-mariadb-persistent/0.0.1/src/templates/deploymentconfig.yaml new file mode 100644 index 000000000..979d30cde --- /dev/null +++ b/charts/redhat/redhat/redhat-mariadb-persistent/0.0.1/src/templates/deploymentconfig.yaml @@ -0,0 +1,85 @@ +apiVersion: apps.openshift.io/v1 +kind: DeploymentConfig +metadata: + annotations: + template.alpha.openshift.io/wait-for-ready: "true" + labels: + app.openshift.io/runtime: mariadb + template: mariadb-persistent-template + name: {{ .Values.database_service_name }} +spec: + replicas: 1 + selector: + name: {{ .Values.database_service_name }} + strategy: + type: Recreate + template: + metadata: + labels: + name: {{ .Values.database_service_name }} + spec: + containers: + - env: + - name: MYSQL_USER + valueFrom: + secretKeyRef: + key: database-user + name: {{ .Values.database_service_name }} + - name: MYSQL_PASSWORD + valueFrom: + secretKeyRef: + key: database-password + name: {{ .Values.database_service_name }} + - name: MYSQL_ROOT_PASSWORD + valueFrom: + secretKeyRef: + key: database-root-password + name: {{ .Values.database_service_name }} + - name: MYSQL_DATABASE + valueFrom: + secretKeyRef: + key: database-name + name: {{ .Values.database_service_name }} + image: "mariadb:{{ .Values.mariadb_version }}" + imagePullPolicy: IfNotPresent + livenessProbe: + exec: + command: + - /bin/sh + - -i + - -c + - MYSQL_PWD="$MYSQL_PASSWORD" mysqladmin -u $MYSQL_USER ping + initialDelaySeconds: 30 + timeoutSeconds: 1 + name: mariadb + ports: + - containerPort: 3306 + readinessProbe: + exec: + command: + - /bin/sh + - -i + - -c + - MYSQL_PWD="$MYSQL_PASSWORD" mysqladmin -u $MYSQL_USER ping + initialDelaySeconds: 5 + timeoutSeconds: 1 + resources: + limits: + memory: {{ .Values.memory_limit }} + volumeMounts: + - mountPath: /var/lib/mysql/data + name: {{ .Values.database_service_name }}-data + volumes: + - name: {{ .Values.database_service_name }}-data + persistentVolumeClaim: + claimName: {{ .Values.database_service_name }} + triggers: + - imageChangeParams: + automatic: true + containerNames: + - mariadb + from: + kind: ImageStreamTag + name: mariadb:{{ .Values.mariadb_version }} + type: ImageChange + - type: ConfigChange diff --git a/charts/redhat/redhat/redhat-mariadb-persistent/0.0.1/src/templates/persistentvolumeclaim.yaml b/charts/redhat/redhat/redhat-mariadb-persistent/0.0.1/src/templates/persistentvolumeclaim.yaml new file mode 100644 index 000000000..fba72619c --- /dev/null +++ b/charts/redhat/redhat/redhat-mariadb-persistent/0.0.1/src/templates/persistentvolumeclaim.yaml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + labels: + app.openshift.io/runtime: mariadb + template: mariadb-persistent-template + name: {{ .Values.database_service_name }} +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: {{ .Values.volume_capacity }} diff --git a/charts/redhat/redhat/redhat-mariadb-persistent/0.0.1/src/templates/secret.yaml b/charts/redhat/redhat/redhat-mariadb-persistent/0.0.1/src/templates/secret.yaml new file mode 100644 index 000000000..8ae14d904 --- /dev/null +++ b/charts/redhat/redhat/redhat-mariadb-persistent/0.0.1/src/templates/secret.yaml @@ -0,0 +1,17 @@ +apiVersion: v1 +kind: Secret +metadata: + annotations: + template.openshift.io/expose-database_name: ".data['database-name']}" + template.openshift.io/expose-password: "{.data['database-password']}" + template.openshift.io/expose-root_password: "{.data['database-root-password']}" + template.openshift.io/expose-username: "{.data['database-user']}" + labels: + app.openshift.io/runtime: mariadb + template: mariadb-persistent-template + name: {{ .Values.database_service_name }} +stringData: + database-name: {{ .Values.mysql_database }} + database-password: {{ .Values.mysql_password }} + database-root-password: {{ .Values.mysql_root_password }} + database-user: {{ .Values.mysql_user }} diff --git a/charts/redhat/redhat/redhat-mariadb-persistent/0.0.1/src/templates/service.yaml b/charts/redhat/redhat/redhat-mariadb-persistent/0.0.1/src/templates/service.yaml new file mode 100644 index 000000000..717cd1168 --- /dev/null +++ b/charts/redhat/redhat/redhat-mariadb-persistent/0.0.1/src/templates/service.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + annotations: + template.openshift.io/expose-uri: mysql://{.spec.clusterIP}:{.spec.ports[?(.name=="mariadb")].port} + labels: + app.openshift.io/runtime: mariadb + template: mariadb-persistent-template + name: {{ .Values.database_service_name }} +spec: + ports: + - name: mariadb + port: 3306 + selector: + name: {{ .Values.database_service_name }} diff --git a/charts/redhat/redhat/redhat-mariadb-persistent/0.0.1/src/templates/tests/test-mariadb-connection.yaml b/charts/redhat/redhat/redhat-mariadb-persistent/0.0.1/src/templates/tests/test-mariadb-connection.yaml new file mode 100644 index 000000000..87abe997a --- /dev/null +++ b/charts/redhat/redhat/redhat-mariadb-persistent/0.0.1/src/templates/tests/test-mariadb-connection.yaml @@ -0,0 +1,27 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ .Release.Name }}-connection-test" + namespace: "{{ .Release.Namespace }}" + annotations: + "helm.sh/hook": test + labels: + name: {{ .Values.database_service_name }} +spec: + #serviceAccount: {{ .Values.serviceAccount }} + containers: + - name: "mariadb-connection-test" + image: "registry.redhat.io/rhel8/mariadb-105:latest" + imagePullPolicy: IfNotPresent + env: + - name: MARIADB_USER + value: "{{ .Values.mysql_user }}" + - name: MARIADB_PASSWORD + value: "{{ .Values.mysql_password }}" + - name: MARIADB_DATABASE + value: "{{ .Values.mysql_database }}" + command: + - /bin/bash + - -ec + - "echo \"SELECT 42 as testval\\g\" | mysql --connect-timeout=15 -h {{ .Values.database_service_name }} $MARIADB_DATABASE -u$MARIADB_USER -p$MARIADB_PASSWORD" + restartPolicy: Never diff --git a/charts/redhat/redhat/redhat-mariadb-persistent/0.0.1/src/values.schema.json b/charts/redhat/redhat/redhat-mariadb-persistent/0.0.1/src/values.schema.json new file mode 100644 index 000000000..65abd8f5f --- /dev/null +++ b/charts/redhat/redhat/redhat-mariadb-persistent/0.0.1/src/values.schema.json @@ -0,0 +1,49 @@ +{ + "$schema": "http://json-schema.org/schema#", + "type": "object", + "properties": { + "database_service_name": { + "type": "string", + "pattern": "^[a-z0-9-_]+$" + }, + "namespace": { + "type": "string" + }, + "mysql_database": { + "type": "string" + }, + "mysql_password": { + "type": "string" + }, + "mysql_root_password": { + "type": "string" + }, + "mysql_user": { + "type": "string" + }, + "volume_capacity": { + "type": "string", + "title": "Persistent Volume Size", + "form": true, + "render": "slider", + "sliderMin": 1, + "sliderMax": 100, + "sliderUnit": "Gi" + }, + "memory_limit": { + "type": "string", + "title": "Database memory limit", + "form": true, + "render": "slider", + "sliderMin": 512, + "sliderMax": 65536, + "sliderUnit": "Mi" + }, + "mariadb_version": { + "type": "string", + "description": "Specify mariadb imagestream tag", + "enum": [ "latest", "10.5-el9", "10.3-el8", "10.5-el8", "10.3-el7", "10.3", "10.5-el7" ] + } + } +} + diff --git a/charts/redhat/redhat/redhat-mariadb-persistent/0.0.1/src/values.yaml b/charts/redhat/redhat/redhat-mariadb-persistent/0.0.1/src/values.yaml new file mode 100644 index 000000000..5fcdee1d2 --- /dev/null +++ b/charts/redhat/redhat/redhat-mariadb-persistent/0.0.1/src/values.yaml @@ -0,0 +1,9 @@ +database_service_name: mariadb +mariadb_version: 10.3-el8 +memory_limit: 512Mi +mysql_database: testdb +mysql_password: testu +mysql_root_password: testur +mysql_user: testu +namespace: openshift +volume_capacity: 1Gi diff --git a/charts/redhat/redhat/redhat-mariadb-persistent/0.0.2/src/Chart.yaml b/charts/redhat/redhat/redhat-mariadb-persistent/0.0.2/src/Chart.yaml new file mode 100644 index 000000000..95b06de14 --- /dev/null +++ b/charts/redhat/redhat/redhat-mariadb-persistent/0.0.2/src/Chart.yaml @@ -0,0 +1,16 @@ +description: |- + This content is expermental, do not use it in production. MariaDB database service, with persistent storage. For more information about using this template, including OpenShift considerations, see https://github.com/sclorg/mariadb-container/blob/master/10.3/root/usr/share/container-scripts/mysql/README.md. + + NOTE: Scaling to more than one replica is not supported. You must have persistent volumes available in your cluster to use this template. +name: mariadb-persistent +tags: database,mariadb +version: 0.0.2 +kubeVersion: '>=1.20.0' +annotations: + charts.openshift.io/name: Red Hat MariaDB database service, with persistent storage (experimental) + charts.openshift.io/provider: Red Hat + charts.openshift.io/providerType: redhat +apiVersion: v2 +appVersion: 0.0.2 +sources: + - https://github.com/sclorg/helm-charts diff --git a/charts/redhat/redhat/redhat-mariadb-persistent/0.0.2/src/README.md b/charts/redhat/redhat/redhat-mariadb-persistent/0.0.2/src/README.md new file mode 100644 index 000000000..0194e3cb6 --- /dev/null +++ b/charts/redhat/redhat/redhat-mariadb-persistent/0.0.2/src/README.md @@ -0,0 +1,22 @@ +# MariaDB helm chart + +A Helm chart for building and deploying a [MariaDB](https://github/sclorg/mariadb-container) application on OpenShift. + +For more information about helm charts see the official [Helm Charts Documentation](https://helm.sh/). + +You need to have access to a cluster for each operation with OpenShift 4, like deploying and testing. + +## Values +Below is a table of each value used to configure this chart. + +| Value | Description | Default | Additional Information | +|---------------------------------------------| ----------- | -- | ---------------------- | +| `database_service_name` | The name of the OpenShift Service exposed for the database. | `mariadb` | - | +| `mysql_user` | Username for MariaDB user that will be used for accessing the database. | - | Expresion like: `user[A-Z0-9]{3}` | +| `mysql_root_password` | Password for the MariaDB root user. | | Expression like: `[a-zA-Z0-9]{16}` | +| `mysql_database` | Name of the MariaDB database accessed. | `sampledb` | | +| `mysql_password` | Password for the MariaDB connection user. | | Expression like: `[a-zA-Z0-9]{16}` | +| `mariadb_version` | Version of MariaDB image to be used (10.3-el7, 10.3-el8, or latest). | `10.3-el8` | | +| `namespace` | The OpenShift Namespace where the ImageStream resides. | `openshift` | | +| `memory_limit` | Maximum amount of memory the container can use. | `521Mi` | | +| `volume_capacity` | Volume space available for data, e.g. 512Mi, 2Gi. | `1Gi` | | diff --git a/charts/redhat/redhat/redhat-mariadb-persistent/0.0.2/src/templates/deployment.yaml b/charts/redhat/redhat/redhat-mariadb-persistent/0.0.2/src/templates/deployment.yaml new file mode 100644 index 000000000..b65830e7f --- /dev/null +++ b/charts/redhat/redhat/redhat-mariadb-persistent/0.0.2/src/templates/deployment.yaml @@ -0,0 +1,87 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + annotations: + template.alpha.openshift.io/wait-for-ready: "true" + image.openshift.io/triggers: |- + [ + { + "from": { + "kind": "ImageStreamTag", + "name": "mariadb:{{ .Values.mariadb_version }}" + }, + "fieldPath": "spec.template.spec.containers[0].image" + } + ] + labels: + app.openshift.io/runtime: mariadb + template: mariadb-persistent-template + name: {{ .Values.database_service_name }} + +spec: + replicas: 1 + selector: + matchLabels: + name: {{ .Values.database_service_name }} + strategy: + type: Recreate + template: + metadata: + labels: + name: {{ .Values.database_service_name }} + spec: + containers: + - env: + - name: MYSQL_USER + valueFrom: + secretKeyRef: + key: database-user + name: {{ .Values.database_service_name }} + - name: MYSQL_PASSWORD + valueFrom: + secretKeyRef: + key: database-password + name: {{ .Values.database_service_name }} + - name: MYSQL_ROOT_PASSWORD + valueFrom: + secretKeyRef: + key: database-root-password + name: {{ .Values.database_service_name }} + - name: MYSQL_DATABASE + valueFrom: + secretKeyRef: + key: database-name + name: {{ .Values.database_service_name }} + image: "mariadb:{{ .Values.mariadb_version }}" + imagePullPolicy: IfNotPresent + livenessProbe: + exec: + command: + - /bin/sh + - -i + - -c + - MYSQL_PWD="$MYSQL_PASSWORD" mysqladmin -u $MYSQL_USER ping + initialDelaySeconds: 30 + timeoutSeconds: 1 + name: mariadb + ports: + - containerPort: 3306 + readinessProbe: + exec: + command: + - /bin/sh + - -i + - -c + - MYSQL_PWD="$MYSQL_PASSWORD" mysqladmin -u $MYSQL_USER ping + initialDelaySeconds: 5 + timeoutSeconds: 1 + resources: + limits: + memory: {{ .Values.memory_limit }} + volumeMounts: + - mountPath: /var/lib/mysql/data + name: {{ .Values.database_service_name }}-data + volumes: + - name: {{ .Values.database_service_name }}-data + persistentVolumeClaim: + claimName: {{ .Values.database_service_name }} diff --git a/charts/redhat/redhat/redhat-mariadb-persistent/0.0.2/src/templates/persistentvolumeclaim.yaml b/charts/redhat/redhat/redhat-mariadb-persistent/0.0.2/src/templates/persistentvolumeclaim.yaml new file mode 100644 index 000000000..fba72619c --- /dev/null +++ b/charts/redhat/redhat/redhat-mariadb-persistent/0.0.2/src/templates/persistentvolumeclaim.yaml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + labels: + app.openshift.io/runtime: mariadb + template: mariadb-persistent-template + name: {{ .Values.database_service_name }} +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: {{ .Values.volume_capacity }} diff --git a/charts/redhat/redhat/redhat-mariadb-persistent/0.0.2/src/templates/secret.yaml b/charts/redhat/redhat/redhat-mariadb-persistent/0.0.2/src/templates/secret.yaml new file mode 100644 index 000000000..8ae14d904 --- /dev/null +++ b/charts/redhat/redhat/redhat-mariadb-persistent/0.0.2/src/templates/secret.yaml @@ -0,0 +1,17 @@ +apiVersion: v1 +kind: Secret +metadata: + annotations: + template.openshift.io/expose-database_name: ".data['database-name']}" + template.openshift.io/expose-password: "{.data['database-password']}" + template.openshift.io/expose-root_password: "{.data['database-root-password']}" + template.openshift.io/expose-username: "{.data['database-user']}" + labels: + app.openshift.io/runtime: mariadb + template: mariadb-persistent-template + name: {{ .Values.database_service_name }} +stringData: + database-name: {{ .Values.mysql_database }} + database-password: {{ .Values.mysql_password }} + database-root-password: {{ .Values.mysql_root_password }} + database-user: {{ .Values.mysql_user }} diff --git a/charts/redhat/redhat/redhat-mariadb-persistent/0.0.2/src/templates/service.yaml b/charts/redhat/redhat/redhat-mariadb-persistent/0.0.2/src/templates/service.yaml new file mode 100644 index 000000000..717cd1168 --- /dev/null +++ b/charts/redhat/redhat/redhat-mariadb-persistent/0.0.2/src/templates/service.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + annotations: + template.openshift.io/expose-uri: mysql://{.spec.clusterIP}:{.spec.ports[?(.name=="mariadb")].port} + labels: + app.openshift.io/runtime: mariadb + template: mariadb-persistent-template + name: {{ .Values.database_service_name }} +spec: + ports: + - name: mariadb + port: 3306 + selector: + name: {{ .Values.database_service_name }} diff --git a/charts/redhat/redhat/redhat-mariadb-persistent/0.0.2/src/templates/tests/test-mariadb-connection.yaml b/charts/redhat/redhat/redhat-mariadb-persistent/0.0.2/src/templates/tests/test-mariadb-connection.yaml new file mode 100644 index 000000000..87abe997a --- /dev/null +++ b/charts/redhat/redhat/redhat-mariadb-persistent/0.0.2/src/templates/tests/test-mariadb-connection.yaml @@ -0,0 +1,27 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ .Release.Name }}-connection-test" + namespace: "{{ .Release.Namespace }}" + annotations: + "helm.sh/hook": test + labels: + name: {{ .Values.database_service_name }} +spec: + #serviceAccount: {{ .Values.serviceAccount }} + containers: + - name: "mariadb-connection-test" + image: "registry.redhat.io/rhel8/mariadb-105:latest" + imagePullPolicy: IfNotPresent + env: + - name: MARIADB_USER + value: "{{ .Values.mysql_user }}" + - name: MARIADB_PASSWORD + value: "{{ .Values.mysql_password }}" + - name: MARIADB_DATABASE + value: "{{ .Values.mysql_database }}" + command: + - /bin/bash + - -ec + - "echo \"SELECT 42 as testval\\g\" | mysql --connect-timeout=15 -h {{ .Values.database_service_name }} $MARIADB_DATABASE -u$MARIADB_USER -p$MARIADB_PASSWORD" + restartPolicy: Never diff --git a/charts/redhat/redhat/redhat-mariadb-persistent/0.0.2/src/values.schema.json b/charts/redhat/redhat/redhat-mariadb-persistent/0.0.2/src/values.schema.json new file mode 100644 index 000000000..65abd8f5f --- /dev/null +++ b/charts/redhat/redhat/redhat-mariadb-persistent/0.0.2/src/values.schema.json @@ -0,0 +1,49 @@ +{ + "$schema": "http://json-schema.org/schema#", + "type": "object", + "properties": { + "database_service_name": { + "type": "string", + "pattern": "^[a-z0-9-_]+$" + }, + "namespace": { + "type": "string" + }, + "mysql_database": { + "type": "string" + }, + "mysql_password": { + "type": "string" + }, + "mysql_root_password": { + "type": "string" + }, + "mysql_user": { + "type": "string" + }, + "volume_capacity": { + "type": "string", + "title": "Persistent Volume Size", + "form": true, + "render": "slider", + "sliderMin": 1, + "sliderMax": 100, + "sliderUnit": "Gi" + }, + "memory_limit": { + "type": "string", + "title": "Database memory limit", + "form": true, + "render": "slider", + "sliderMin": 512, + "sliderMax": 65536, + "sliderUnit": "Mi" + }, + "mariadb_version": { + "type": "string", + "description": "Specify mariadb imagestream tag", + "enum": [ "latest", "10.5-el9", "10.3-el8", "10.5-el8", "10.3-el7", "10.3", "10.5-el7" ] + } + } +} + diff --git a/charts/redhat/redhat/redhat-mariadb-persistent/0.0.2/src/values.yaml b/charts/redhat/redhat/redhat-mariadb-persistent/0.0.2/src/values.yaml new file mode 100644 index 000000000..5fcdee1d2 --- /dev/null +++ b/charts/redhat/redhat/redhat-mariadb-persistent/0.0.2/src/values.yaml @@ -0,0 +1,9 @@ +database_service_name: mariadb +mariadb_version: 10.3-el8 +memory_limit: 512Mi +mysql_database: testdb +mysql_password: testu +mysql_root_password: testur +mysql_user: testu +namespace: openshift +volume_capacity: 1Gi diff --git a/charts/redhat/redhat/redhat-mariadb-persistent/OWNERS b/charts/redhat/redhat/redhat-mariadb-persistent/OWNERS new file mode 100644 index 000000000..8d659bc4b --- /dev/null +++ b/charts/redhat/redhat/redhat-mariadb-persistent/OWNERS @@ -0,0 +1,9 @@ +chart: + name: redhat-mariadb-persistent + description: This is the Red Hat MariaDB persistent storage +publicPgpKey: null +users: + - githubUsername: phracek +vendor: + label: redhat + name: Red Hat diff --git a/charts/redhat/redhat/redhat-mongo-sed/1.0.0/mongo-sed-1.0.0.tgz b/charts/redhat/redhat/redhat-mongo-sed/1.0.0/mongo-sed-1.0.0.tgz new file mode 100644 index 000000000..5bbab4561 Binary files /dev/null and b/charts/redhat/redhat/redhat-mongo-sed/1.0.0/mongo-sed-1.0.0.tgz differ diff --git a/charts/redhat/redhat/redhat-mongo-sed/1.0.0/report.yaml b/charts/redhat/redhat/redhat-mongo-sed/1.0.0/report.yaml new file mode 100644 index 000000000..512a4a423 --- /dev/null +++ b/charts/redhat/redhat/redhat-mongo-sed/1.0.0/report.yaml @@ -0,0 +1,87 @@ +apiversion: v1 +kind: verify-report +metadata: + tool: + verifier-version: 1.5.0 + profile: + VendorType: partner + version: v1.1 + chart-uri: /.kube/mongo-sed-1.0.0.tgz + digests: + chart: sha256:0c58aaebf6f6fed25017c33d1a073febbb448d3cb561e3dfc6611a3b2a016cfd + package: 3fcd1efd82f984ad24b27d32c6349bff57e5ec1861380d2c05e6461485597f64 + lastCertifiedTimestamp: "2022-03-15T11:59:46.057866+00:00" + testedOpenShiftVersion: "4.9" + supportedOpenShiftVersions: '>=4.7' + chart: + name: mongo-sed + home: "" + sources: [] + version: 1.0.0 + description: A Helm chart for MongoDB Service Endpoint Definition (SED) + keywords: [] + maintainers: [] + icon: "" + apiversion: v2 + condition: "" + tags: "" + appversion: 1.0.0 + deprecated: false + annotations: + charts.openshift.io/archs: x86_64 + charts.openshift.io/name: MongoDB Service Endpoint Definition (SED) + charts.openshift.io/provider: RedHat + charts.openshift.io/supportURL: https://github.com/redhat-developer/service-endpoint-definition + kubeversion: '>=1.20.0' + dependencies: [] + type: application + chart-overrides: "" +results: + - check: v1.0/helm-lint + type: Mandatory + outcome: PASS + reason: Helm lint successful + - check: v1.0/not-contain-csi-objects + type: Mandatory + outcome: PASS + reason: CSI objects do not exist + - check: v1.0/images-are-certified + type: Mandatory + outcome: PASS + reason: 'Image is Red Hat certified : quay.io/opencloudio/ibm-mongodb@sha256:d8af61f68bce9ce744dd0b6b1734ba9a6cd4d85cd28baa5798b7470256be6dce' + - check: v1.0/contains-values + type: Mandatory + outcome: PASS + reason: Values file exist + - check: v1.0/contains-values-schema + type: Mandatory + outcome: PASS + reason: Values schema file exist + - check: v1.1/has-kubeversion + type: Mandatory + outcome: PASS + reason: Kubernetes version specified + - check: v1.0/not-contains-crds + type: Mandatory + outcome: PASS + reason: Chart does not contain CRDs + - check: v1.0/chart-testing + type: Mandatory + outcome: PASS + reason: Chart tests have passed + - check: v1.0/required-annotations-present + type: Mandatory + outcome: PASS + reason: All required annotations present + - check: v1.0/has-readme + type: Mandatory + outcome: PASS + reason: Chart has a README + - check: v1.0/is-helm-v3 + type: Mandatory + outcome: PASS + reason: API version is V2, used in Helm 3 + - check: v1.0/contains-test + type: Mandatory + outcome: PASS + reason: Chart test files exist \ No newline at end of file diff --git a/charts/redhat/redhat/redhat-mongo-sed/OWNERS b/charts/redhat/redhat/redhat-mongo-sed/OWNERS new file mode 100644 index 000000000..edc255602 --- /dev/null +++ b/charts/redhat/redhat/redhat-mongo-sed/OWNERS @@ -0,0 +1,9 @@ +chart: + name: redhat-mongo-sed + shortDescription: MongoDB Service Endpoint Definition +publicPgpKey: null +users: +- githubUsername: fbm3307 +vendor: + label: redhat + name: Red Hat diff --git a/charts/redhat/redhat/redhat-mysql-imagestreams/0.0.1/src/Chart.yaml b/charts/redhat/redhat/redhat-mysql-imagestreams/0.0.1/src/Chart.yaml new file mode 100644 index 000000000..894b0e779 --- /dev/null +++ b/charts/redhat/redhat/redhat-mysql-imagestreams/0.0.1/src/Chart.yaml @@ -0,0 +1,14 @@ +description: |- + This content is expermental, do not use it in production. Provides a MySQL 8.0 database. + For more information about using this database image, including OpenShift considerations, + see https://github.com/sclorg/mysql-container/blob/master/README.md. +annotations: + charts.openshift.io/name: Red Hat MySQL database service imagestreams (experimental). +apiVersion: v2 +appVersion: 0.0.1 +kubeVersion: '>=1.20.0' +name: mysql-imagestreams +tags: database,mysql +sources: + - https://github.com/sclorg/helm-charts +version: 0.0.1 diff --git a/charts/redhat/redhat/redhat-mysql-imagestreams/0.0.1/src/templates/imagestreams.yaml b/charts/redhat/redhat/redhat-mysql-imagestreams/0.0.1/src/templates/imagestreams.yaml new file mode 100644 index 000000000..86103578b --- /dev/null +++ b/charts/redhat/redhat/redhat-mysql-imagestreams/0.0.1/src/templates/imagestreams.yaml @@ -0,0 +1,92 @@ +kind: ImageStream +apiVersion: image.openshift.io/v1 +metadata: + name: mysql + annotations: + openshift.io/display-name: MySQL +spec: + tags: + - name: latest + annotations: + openshift.io/display-name: MySQL (Latest) + openshift.io/provider-display-name: 'Red Hat, Inc.' + description: >- + Provides a MySQL database on RHEL. For more information about using + this database image, including OpenShift considerations, see + https://github.com/sclorg/mysql-container/blob/master/README.md. + + + WARNING: By selecting this tag, your application will automatically + update to use the latest version of MySQL available on OpenShift, + including major version updates. + iconClass: icon-mysql-database + tags: mysql + from: + kind: ImageStreamTag + name: 8.0-el8 + referencePolicy: + type: Local + - name: 8.0-el9 + annotations: + openshift.io/display-name: MySQL 8.0 (RHEL 9) + openshift.io/provider-display-name: 'Red Hat, Inc.' + description: >- + Provides a MySQL 8.0 database on RHEL 9. For more information about + using this database image, including OpenShift considerations, see + https://github.com/sclorg/mysql-container/blob/master/README.md. + iconClass: icon-mysql-database + tags: mysql + version: '8.0' + from: + kind: DockerImage + name: 'registry.redhat.io/rhel9/mysql-80:latest' + referencePolicy: + type: Local + - name: 8.0-el8 + annotations: + openshift.io/display-name: MySQL 8.0 (RHEL 8) + openshift.io/provider-display-name: 'Red Hat, Inc.' + description: >- + Provides a MySQL 8.0 database on RHEL 8. For more information about + using this database image, including OpenShift considerations, see + https://github.com/sclorg/mysql-container/blob/master/README.md. + iconClass: icon-mysql-database + tags: mysql + version: '8.0' + from: + kind: DockerImage + name: 'registry.redhat.io/rhel8/mysql-80:latest' + referencePolicy: + type: Local + - name: 8.0-el7 + annotations: + openshift.io/display-name: MySQL 8.0 (RHEL 7) + openshift.io/provider-display-name: 'Red Hat, Inc.' + description: >- + Provides a MySQL 8.0 database on RHEL 7. For more information about + using this database image, including OpenShift considerations, see + https://github.com/sclorg/mysql-container/blob/master/README.md. + iconClass: icon-mysql-database + tags: mysql + version: '8.0' + from: + kind: DockerImage + name: 'registry.redhat.io/rhscl/mysql-80-rhel7:latest' + referencePolicy: + type: Local + - name: '8.0' + annotations: + openshift.io/display-name: MySQL 8.0 + openshift.io/provider-display-name: 'Red Hat, Inc.' + description: >- + Provides a MySQL 8.0 database on RHEL 7. For more information about + using this database image, including OpenShift considerations, see + https://github.com/sclorg/mysql-container/blob/master/README.md. + iconClass: icon-mysql-database + tags: 'mysql,hidden' + version: '8.0' + from: + kind: DockerImage + name: 'registry.redhat.io/rhscl/mysql-80-rhel7:latest' + referencePolicy: + type: Local diff --git a/charts/redhat/redhat/redhat-mysql-imagestreams/OWNERS b/charts/redhat/redhat/redhat-mysql-imagestreams/OWNERS new file mode 100644 index 000000000..8f8cd1108 --- /dev/null +++ b/charts/redhat/redhat/redhat-mysql-imagestreams/OWNERS @@ -0,0 +1,9 @@ +chart: + name: redhat-mysql-imagestreams + description: This is the Red Hat MySQL imagestreams chart +publicPgpKey: null +users: + - githubUsername: phracek +vendor: + label: redhat + name: Red Hat diff --git a/charts/redhat/redhat/redhat-mysql-persistent/0.0.1/src/Chart.yaml b/charts/redhat/redhat/redhat-mysql-persistent/0.0.1/src/Chart.yaml new file mode 100644 index 000000000..3c0b0d98a --- /dev/null +++ b/charts/redhat/redhat/redhat-mysql-persistent/0.0.1/src/Chart.yaml @@ -0,0 +1,13 @@ +description: |- + This content is expermental, do not use it in production. MySQL database service, with persistent storage. For more information about using this template, including OpenShift considerations, see https://github.com/sclorg/mysql-container/blob/master/8.0/root/usr/share/container-scripts/mysql/README.md. + + NOTE: Scaling to more than one replica is not supported. You must have persistent volumes available in your cluster to use this template. +name: mysql-persistent +tags: database,mysql +version: 0.0.1 +annotations: + charts.openshift.io/name: Red Hat MySQL database service, with persistent storage (experimental). +apiVersion: v2 +appVersion: 0.0.1 +sources: + - https://github.com/sclorg/helm-charts diff --git a/charts/redhat/redhat/redhat-mysql-persistent/0.0.1/src/README.md b/charts/redhat/redhat/redhat-mysql-persistent/0.0.1/src/README.md new file mode 100644 index 000000000..4938a2348 --- /dev/null +++ b/charts/redhat/redhat/redhat-mysql-persistent/0.0.1/src/README.md @@ -0,0 +1,22 @@ +# MySQL helm chart + +A Helm chart for building and deploying a [MySQL](https://github/sclorg/mysql-container) application on OpenShift. + +For more information about helm charts see the official [Helm Charts Documentation](https://helm.sh/). + +You need to have access to a cluster for each operation with OpenShift 4, like deploying and testing. + +## Values +Below is a table of each value used to configure this chart. + +| Value | Description | Default | Additional Information | +|---------------------------------------------| ----------- | -- | ---------------------- | +| `database_service_name` | The name of the OpenShift Service exposed for the database. | `mysql` | - | +| `mysql_user` | Username for MySQL user that will be used for accessing the database. | `testu` | Expresion like: `user[A-Z0-9]{3}` | +| `mysql_root_password` | Password for the MySQL root user. | `testur` | Expression like: `[a-zA-Z0-9]{16}` | +| `mysql_database` | Name of the MySQL database accessed. | `testdb` | | +| `mysql_password` | Password for the MySQL connection user. | `testp` | Expression like: `[a-zA-Z0-9]{16}` | +| `mysql_version` | Version of MySQL image to be used (8.0-el8, or latest). | `8.0-el8` | | +| `namespace` | The OpenShift Namespace where the ImageStream resides. | `mysql-persistent-testing` | | +| `memory_limit` | Maximum amount of memory the container can use. | `521Mi` | | +| `volume_capacity` | Volume space available for data, e.g. 512Mi, 2Gi. | `1Gi` | | diff --git a/charts/redhat/redhat/redhat-mysql-persistent/0.0.1/src/templates/deploymentconfig.yaml b/charts/redhat/redhat/redhat-mysql-persistent/0.0.1/src/templates/deploymentconfig.yaml new file mode 100644 index 000000000..14a914e38 --- /dev/null +++ b/charts/redhat/redhat/redhat-mysql-persistent/0.0.1/src/templates/deploymentconfig.yaml @@ -0,0 +1,85 @@ +apiVersion: apps.openshift.io/v1 +kind: DeploymentConfig +metadata: + annotations: + template.alpha.openshift.io/wait-for-ready: "true" + labels: + template: mysql-persistent-template + name: {{ .Values.database_service_name }} +spec: + replicas: 1 + selector: + name: {{ .Values.database_service_name }} + strategy: + type: Recreate + template: + metadata: + labels: + name: {{ .Values.database_service_name }} + spec: + containers: + - env: + - name: MYSQL_USER + valueFrom: + secretKeyRef: + key: database-user + name: {{ .Values.database_service_name }} + - name: MYSQL_PASSWORD + valueFrom: + secretKeyRef: + key: database-password + name: {{ .Values.database_service_name }} + - name: MYSQL_ROOT_PASSWORD + valueFrom: + secretKeyRef: + key: database-root-password + name: {{ .Values.database_service_name }} + - name: MYSQL_DATABASE + valueFrom: + secretKeyRef: + key: database-name + name: {{ .Values.database_service_name }} + image: "mysql:{{ .Values.mysql_version }}" + imagePullPolicy: IfNotPresent + livenessProbe: + exec: + command: + - /bin/sh + - -i + - -c + - MYSQL_PWD="$MYSQL_PASSWORD" mysqladmin -u $MYSQL_USER ping + initialDelaySeconds: 30 + timeoutSeconds: 1 + name: mysql + ports: + - containerPort: 3306 + readinessProbe: + exec: + command: + - /bin/sh + - -i + - -c + - MYSQL_PWD="$MYSQL_PASSWORD" mysqladmin -u $MYSQL_USER ping + initialDelaySeconds: 5 + timeoutSeconds: 1 + resources: + limits: + memory: {{ .Values.memory_limit }} + volumeMounts: + - mountPath: /var/lib/mysql/data + name: {{ .Values.database_service_name }}-data + volumes: + - name: {{ .Values.database_service_name }}-data + persistentVolumeClaim: + claimName: {{ .Values.database_service_name }} + triggers: + - imageChangeParams: + automatic: true + containerNames: + - mysql + from: + kind: ImageStreamTag + name: mysql:{{ .Values.mysql_version }} + namespace: {{ .Values.namespace }} + type: ImageChange + - type: ConfigChange diff --git a/charts/redhat/redhat/redhat-mysql-persistent/0.0.1/src/templates/persistentvolumeclaim.yaml b/charts/redhat/redhat/redhat-mysql-persistent/0.0.1/src/templates/persistentvolumeclaim.yaml new file mode 100644 index 000000000..a8b426454 --- /dev/null +++ b/charts/redhat/redhat/redhat-mysql-persistent/0.0.1/src/templates/persistentvolumeclaim.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + labels: + template: mysql-persistent-template + name: {{ .Values.database_service_name }} +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: {{ .Values.volume_capacity }} diff --git a/charts/redhat/redhat/redhat-mysql-persistent/0.0.1/src/templates/secret.yaml b/charts/redhat/redhat/redhat-mysql-persistent/0.0.1/src/templates/secret.yaml new file mode 100644 index 000000000..5cc981ad9 --- /dev/null +++ b/charts/redhat/redhat/redhat-mysql-persistent/0.0.1/src/templates/secret.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: Secret +metadata: + annotations: + template.openshift.io/expose-database_name: '{.data[''database-name'']}' + template.openshift.io/expose-password: '{.data[''database-password'']}' + template.openshift.io/expose-root_password: '{.data[''database-root-password'']}' + template.openshift.io/expose-username: '{.data[''database-user'']}' + labels: + template: mysql-persistent-template + name: {{ .Values.database_service_name }} +stringData: + database-name: {{ .Values.mysql_database }} + database-password: {{ .Values.mysql_password }} + database-root-password: {{ .Values.mysql_root_password }} + database-user: {{ .Values.mysql_user }} diff --git a/charts/redhat/redhat/redhat-mysql-persistent/0.0.1/src/templates/service.yaml b/charts/redhat/redhat/redhat-mysql-persistent/0.0.1/src/templates/service.yaml new file mode 100644 index 000000000..a48fea4f0 --- /dev/null +++ b/charts/redhat/redhat/redhat-mysql-persistent/0.0.1/src/templates/service.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: Service +metadata: + annotations: + template.openshift.io/expose-uri: mysql://{.spec.clusterIP}:{.spec.ports[?(.name=="mysql")].port} + labels: + template: mysql-persistent-template + name: {{ .Values.database_service_name }} +spec: + ports: + - name: mysql + port: 3306 + selector: + name: {{ .Values.database_service_name }} diff --git a/charts/redhat/redhat/redhat-mysql-persistent/0.0.1/src/templates/tests/test-mysql-connection.yaml b/charts/redhat/redhat/redhat-mysql-persistent/0.0.1/src/templates/tests/test-mysql-connection.yaml new file mode 100644 index 000000000..9a6189930 --- /dev/null +++ b/charts/redhat/redhat/redhat-mysql-persistent/0.0.1/src/templates/tests/test-mysql-connection.yaml @@ -0,0 +1,27 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ .Release.Name }}-connection-test" + namespace: "{{ .Release.Namespace }}" + annotations: + "helm.sh/hook": test + labels: + name: {{ .Values.database_service_name }} +spec: + #serviceAccount: {{ .Values.serviceAccount }} + containers: + - name: "mysql-connection-test" + image: "registry.redhat.io/rhel8/mysql-80:latest" + imagePullPolicy: IfNotPresent + env: + - name: MARIADB_USER + value: "{{ .Values.mysql_user }}" + - name: MARIADB_PASSWORD + value: "{{ .Values.mysql_password }}" + - name: MARIADB_DATABASE + value: "{{ .Values.mysql_database }}" + command: + - /bin/bash + - -ec + - "echo \"SELECT 42 as testval\\g\" | mysql --connect-timeout=15 -h {{ .Values.database_service_name }} $MARIADB_DATABASE -u$MARIADB_USER -p$MARIADB_PASSWORD" + restartPolicy: Never diff --git a/charts/redhat/redhat/redhat-mysql-persistent/0.0.1/src/values.schema.json b/charts/redhat/redhat/redhat-mysql-persistent/0.0.1/src/values.schema.json new file mode 100644 index 000000000..732c8c80d --- /dev/null +++ b/charts/redhat/redhat/redhat-mysql-persistent/0.0.1/src/values.schema.json @@ -0,0 +1,49 @@ +{ + "$schema": "http://json-schema.org/schema#", + "type": "object", + "properties": { + "database_service_name": { + "type": "string", + "pattern": "^[a-z0-9-_]+$" + }, + "namespace": { + "type": "string" + }, + "mysql_database": { + "type": "string" + }, + "mysql_password": { + "type": "string" + }, + "mysql_root_password": { + "type": "string" + }, + "mysql_user": { + "type": "string" + }, + "volume_capacity": { + "type": "string", + "title": "Persistent Volume Size", + "form": true, + "render": "slider", + "sliderMin": 1, + "sliderMax": 100, + "sliderUnit": "Gi" + }, + "memory_limit": { + "type": "string", + "title": "Database memory limit", + "form": true, + "render": "slider", + "sliderMin": 512, + "sliderMax": 65536, + "sliderUnit": "Mi" + }, + "mysql_version": { + "type": "string", + "description": "Specify mysql imagestream tag", + "enum": [ "latest", "8.0-el9", "8.0-el8", "8.0-el7" ] + } + } +} + diff --git a/charts/redhat/redhat/redhat-mysql-persistent/0.0.1/src/values.yaml b/charts/redhat/redhat/redhat-mysql-persistent/0.0.1/src/values.yaml new file mode 100644 index 000000000..897397368 --- /dev/null +++ b/charts/redhat/redhat/redhat-mysql-persistent/0.0.1/src/values.yaml @@ -0,0 +1,9 @@ +database_service_name: mysql +memory_limit: 512Mi +mysql_database: testdb +mysql_password: testp # TODO: must define a default value for .mysql_password' +mysql_root_password: testur # TODO: must define a default value for .mysql_root_password' +mysql_user: testu # TODO: must define a default value for .mysql_user' +mysql_version: 8.0-el8 +namespace: openshift +volume_capacity: 1Gi diff --git a/charts/redhat/redhat/redhat-mysql-persistent/0.0.2/src/Chart.yaml b/charts/redhat/redhat/redhat-mysql-persistent/0.0.2/src/Chart.yaml new file mode 100644 index 000000000..79391a0de --- /dev/null +++ b/charts/redhat/redhat/redhat-mysql-persistent/0.0.2/src/Chart.yaml @@ -0,0 +1,18 @@ +dependencies: +- name: mysql-imagestreams + version: "0.0.1" + repository: https://github.com/openshift-helm-charts/charts +description: |- + This content is expermental, do not use it in production. MySQL database service, with persistent storage. For more information about using this template, including OpenShift considerations, see https://github.com/sclorg/mysql-container/blob/master/8.0/root/usr/share/container-scripts/mysql/README.md. + + NOTE: Scaling to more than one replica is not supported. You must have persistent volumes available in your cluster to use this template. +name: mysql-persistent +tags: database,mysql +version: 0.0.2 +annotations: + charts.openshift.io/name: Red Hat MySQL database service, with persistent storage (experimental). +apiVersion: v2 +appVersion: 0.0.2 +kubeVersion: '>=1.20.0' +sources: + - https://github.com/sclorg/helm-charts diff --git a/charts/redhat/redhat/redhat-mysql-persistent/0.0.2/src/README.md b/charts/redhat/redhat/redhat-mysql-persistent/0.0.2/src/README.md new file mode 100644 index 000000000..4938a2348 --- /dev/null +++ b/charts/redhat/redhat/redhat-mysql-persistent/0.0.2/src/README.md @@ -0,0 +1,22 @@ +# MySQL helm chart + +A Helm chart for building and deploying a [MySQL](https://github/sclorg/mysql-container) application on OpenShift. + +For more information about helm charts see the official [Helm Charts Documentation](https://helm.sh/). + +You need to have access to a cluster for each operation with OpenShift 4, like deploying and testing. + +## Values +Below is a table of each value used to configure this chart. + +| Value | Description | Default | Additional Information | +|---------------------------------------------| ----------- | -- | ---------------------- | +| `database_service_name` | The name of the OpenShift Service exposed for the database. | `mysql` | - | +| `mysql_user` | Username for MySQL user that will be used for accessing the database. | `testu` | Expresion like: `user[A-Z0-9]{3}` | +| `mysql_root_password` | Password for the MySQL root user. | `testur` | Expression like: `[a-zA-Z0-9]{16}` | +| `mysql_database` | Name of the MySQL database accessed. | `testdb` | | +| `mysql_password` | Password for the MySQL connection user. | `testp` | Expression like: `[a-zA-Z0-9]{16}` | +| `mysql_version` | Version of MySQL image to be used (8.0-el8, or latest). | `8.0-el8` | | +| `namespace` | The OpenShift Namespace where the ImageStream resides. | `mysql-persistent-testing` | | +| `memory_limit` | Maximum amount of memory the container can use. | `521Mi` | | +| `volume_capacity` | Volume space available for data, e.g. 512Mi, 2Gi. | `1Gi` | | diff --git a/charts/redhat/redhat/redhat-mysql-persistent/0.0.2/src/templates/deploymentconfig.yaml b/charts/redhat/redhat/redhat-mysql-persistent/0.0.2/src/templates/deploymentconfig.yaml new file mode 100644 index 000000000..14a914e38 --- /dev/null +++ b/charts/redhat/redhat/redhat-mysql-persistent/0.0.2/src/templates/deploymentconfig.yaml @@ -0,0 +1,85 @@ +apiVersion: apps.openshift.io/v1 +kind: DeploymentConfig +metadata: + annotations: + template.alpha.openshift.io/wait-for-ready: "true" + labels: + template: mysql-persistent-template + name: {{ .Values.database_service_name }} +spec: + replicas: 1 + selector: + name: {{ .Values.database_service_name }} + strategy: + type: Recreate + template: + metadata: + labels: + name: {{ .Values.database_service_name }} + spec: + containers: + - env: + - name: MYSQL_USER + valueFrom: + secretKeyRef: + key: database-user + name: {{ .Values.database_service_name }} + - name: MYSQL_PASSWORD + valueFrom: + secretKeyRef: + key: database-password + name: {{ .Values.database_service_name }} + - name: MYSQL_ROOT_PASSWORD + valueFrom: + secretKeyRef: + key: database-root-password + name: {{ .Values.database_service_name }} + - name: MYSQL_DATABASE + valueFrom: + secretKeyRef: + key: database-name + name: {{ .Values.database_service_name }} + image: "mysql:{{ .Values.mysql_version }}" + imagePullPolicy: IfNotPresent + livenessProbe: + exec: + command: + - /bin/sh + - -i + - -c + - MYSQL_PWD="$MYSQL_PASSWORD" mysqladmin -u $MYSQL_USER ping + initialDelaySeconds: 30 + timeoutSeconds: 1 + name: mysql + ports: + - containerPort: 3306 + readinessProbe: + exec: + command: + - /bin/sh + - -i + - -c + - MYSQL_PWD="$MYSQL_PASSWORD" mysqladmin -u $MYSQL_USER ping + initialDelaySeconds: 5 + timeoutSeconds: 1 + resources: + limits: + memory: {{ .Values.memory_limit }} + volumeMounts: + - mountPath: /var/lib/mysql/data + name: {{ .Values.database_service_name }}-data + volumes: + - name: {{ .Values.database_service_name }}-data + persistentVolumeClaim: + claimName: {{ .Values.database_service_name }} + triggers: + - imageChangeParams: + automatic: true + containerNames: + - mysql + from: + kind: ImageStreamTag + name: mysql:{{ .Values.mysql_version }} + namespace: {{ .Values.namespace }} + type: ImageChange + - type: ConfigChange diff --git a/charts/redhat/redhat/redhat-mysql-persistent/0.0.2/src/templates/persistentvolumeclaim.yaml b/charts/redhat/redhat/redhat-mysql-persistent/0.0.2/src/templates/persistentvolumeclaim.yaml new file mode 100644 index 000000000..a8b426454 --- /dev/null +++ b/charts/redhat/redhat/redhat-mysql-persistent/0.0.2/src/templates/persistentvolumeclaim.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + labels: + template: mysql-persistent-template + name: {{ .Values.database_service_name }} +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: {{ .Values.volume_capacity }} diff --git a/charts/redhat/redhat/redhat-mysql-persistent/0.0.2/src/templates/secret.yaml b/charts/redhat/redhat/redhat-mysql-persistent/0.0.2/src/templates/secret.yaml new file mode 100644 index 000000000..5cc981ad9 --- /dev/null +++ b/charts/redhat/redhat/redhat-mysql-persistent/0.0.2/src/templates/secret.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: Secret +metadata: + annotations: + template.openshift.io/expose-database_name: '{.data[''database-name'']}' + template.openshift.io/expose-password: '{.data[''database-password'']}' + template.openshift.io/expose-root_password: '{.data[''database-root-password'']}' + template.openshift.io/expose-username: '{.data[''database-user'']}' + labels: + template: mysql-persistent-template + name: {{ .Values.database_service_name }} +stringData: + database-name: {{ .Values.mysql_database }} + database-password: {{ .Values.mysql_password }} + database-root-password: {{ .Values.mysql_root_password }} + database-user: {{ .Values.mysql_user }} diff --git a/charts/redhat/redhat/redhat-mysql-persistent/0.0.2/src/templates/service.yaml b/charts/redhat/redhat/redhat-mysql-persistent/0.0.2/src/templates/service.yaml new file mode 100644 index 000000000..a48fea4f0 --- /dev/null +++ b/charts/redhat/redhat/redhat-mysql-persistent/0.0.2/src/templates/service.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: Service +metadata: + annotations: + template.openshift.io/expose-uri: mysql://{.spec.clusterIP}:{.spec.ports[?(.name=="mysql")].port} + labels: + template: mysql-persistent-template + name: {{ .Values.database_service_name }} +spec: + ports: + - name: mysql + port: 3306 + selector: + name: {{ .Values.database_service_name }} diff --git a/charts/redhat/redhat/redhat-mysql-persistent/0.0.2/src/templates/tests/test-mysql-connection.yaml b/charts/redhat/redhat/redhat-mysql-persistent/0.0.2/src/templates/tests/test-mysql-connection.yaml new file mode 100644 index 000000000..9a6189930 --- /dev/null +++ b/charts/redhat/redhat/redhat-mysql-persistent/0.0.2/src/templates/tests/test-mysql-connection.yaml @@ -0,0 +1,27 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ .Release.Name }}-connection-test" + namespace: "{{ .Release.Namespace }}" + annotations: + "helm.sh/hook": test + labels: + name: {{ .Values.database_service_name }} +spec: + #serviceAccount: {{ .Values.serviceAccount }} + containers: + - name: "mysql-connection-test" + image: "registry.redhat.io/rhel8/mysql-80:latest" + imagePullPolicy: IfNotPresent + env: + - name: MARIADB_USER + value: "{{ .Values.mysql_user }}" + - name: MARIADB_PASSWORD + value: "{{ .Values.mysql_password }}" + - name: MARIADB_DATABASE + value: "{{ .Values.mysql_database }}" + command: + - /bin/bash + - -ec + - "echo \"SELECT 42 as testval\\g\" | mysql --connect-timeout=15 -h {{ .Values.database_service_name }} $MARIADB_DATABASE -u$MARIADB_USER -p$MARIADB_PASSWORD" + restartPolicy: Never diff --git a/charts/redhat/redhat/redhat-mysql-persistent/0.0.2/src/values.schema.json b/charts/redhat/redhat/redhat-mysql-persistent/0.0.2/src/values.schema.json new file mode 100644 index 000000000..732c8c80d --- /dev/null +++ b/charts/redhat/redhat/redhat-mysql-persistent/0.0.2/src/values.schema.json @@ -0,0 +1,49 @@ +{ + "$schema": "http://json-schema.org/schema#", + "type": "object", + "properties": { + "database_service_name": { + "type": "string", + "pattern": "^[a-z0-9-_]+$" + }, + "namespace": { + "type": "string" + }, + "mysql_database": { + "type": "string" + }, + "mysql_password": { + "type": "string" + }, + "mysql_root_password": { + "type": "string" + }, + "mysql_user": { + "type": "string" + }, + "volume_capacity": { + "type": "string", + "title": "Persistent Volume Size", + "form": true, + "render": "slider", + "sliderMin": 1, + "sliderMax": 100, + "sliderUnit": "Gi" + }, + "memory_limit": { + "type": "string", + "title": "Database memory limit", + "form": true, + "render": "slider", + "sliderMin": 512, + "sliderMax": 65536, + "sliderUnit": "Mi" + }, + "mysql_version": { + "type": "string", + "description": "Specify mysql imagestream tag", + "enum": [ "latest", "8.0-el9", "8.0-el8", "8.0-el7" ] + } + } +} + diff --git a/charts/redhat/redhat/redhat-mysql-persistent/0.0.2/src/values.yaml b/charts/redhat/redhat/redhat-mysql-persistent/0.0.2/src/values.yaml new file mode 100644 index 000000000..897397368 --- /dev/null +++ b/charts/redhat/redhat/redhat-mysql-persistent/0.0.2/src/values.yaml @@ -0,0 +1,9 @@ +database_service_name: mysql +memory_limit: 512Mi +mysql_database: testdb +mysql_password: testp # TODO: must define a default value for .mysql_password' +mysql_root_password: testur # TODO: must define a default value for .mysql_root_password' +mysql_user: testu # TODO: must define a default value for .mysql_user' +mysql_version: 8.0-el8 +namespace: openshift +volume_capacity: 1Gi diff --git a/charts/redhat/redhat/redhat-mysql-persistent/0.0.3/src/Chart.yaml b/charts/redhat/redhat/redhat-mysql-persistent/0.0.3/src/Chart.yaml new file mode 100644 index 000000000..d3da89bc2 --- /dev/null +++ b/charts/redhat/redhat/redhat-mysql-persistent/0.0.3/src/Chart.yaml @@ -0,0 +1,18 @@ +dependencies: +- name: mysql-imagestreams + version: "0.0.1" + repository: file://../../../../../redhat/redhat/mysql-imagestreams/0.0.1/src +description: |- + This content is expermental, do not use it in production. MySQL database service, with persistent storage. For more information about using this template, including OpenShift considerations, see https://github.com/sclorg/mysql-container/blob/master/8.0/root/usr/share/container-scripts/mysql/README.md. + + NOTE: Scaling to more than one replica is not supported. You must have persistent volumes available in your cluster to use this template. +name: mysql-persistent +tags: database,mysql +version: 0.0.3 +annotations: + charts.openshift.io/name: Red Hat MySQL database service, with persistent storage (experimental). +apiVersion: v2 +appVersion: 0.0.3 +kubeVersion: '>=1.20.0' +sources: + - https://github.com/sclorg/helm-charts diff --git a/charts/redhat/redhat/redhat-mysql-persistent/0.0.3/src/README.md b/charts/redhat/redhat/redhat-mysql-persistent/0.0.3/src/README.md new file mode 100644 index 000000000..4938a2348 --- /dev/null +++ b/charts/redhat/redhat/redhat-mysql-persistent/0.0.3/src/README.md @@ -0,0 +1,22 @@ +# MySQL helm chart + +A Helm chart for building and deploying a [MySQL](https://github/sclorg/mysql-container) application on OpenShift. + +For more information about helm charts see the official [Helm Charts Documentation](https://helm.sh/). + +You need to have access to a cluster for each operation with OpenShift 4, like deploying and testing. + +## Values +Below is a table of each value used to configure this chart. + +| Value | Description | Default | Additional Information | +|---------------------------------------------| ----------- | -- | ---------------------- | +| `database_service_name` | The name of the OpenShift Service exposed for the database. | `mysql` | - | +| `mysql_user` | Username for MySQL user that will be used for accessing the database. | `testu` | Expresion like: `user[A-Z0-9]{3}` | +| `mysql_root_password` | Password for the MySQL root user. | `testur` | Expression like: `[a-zA-Z0-9]{16}` | +| `mysql_database` | Name of the MySQL database accessed. | `testdb` | | +| `mysql_password` | Password for the MySQL connection user. | `testp` | Expression like: `[a-zA-Z0-9]{16}` | +| `mysql_version` | Version of MySQL image to be used (8.0-el8, or latest). | `8.0-el8` | | +| `namespace` | The OpenShift Namespace where the ImageStream resides. | `mysql-persistent-testing` | | +| `memory_limit` | Maximum amount of memory the container can use. | `521Mi` | | +| `volume_capacity` | Volume space available for data, e.g. 512Mi, 2Gi. | `1Gi` | | diff --git a/charts/redhat/redhat/redhat-mysql-persistent/0.0.3/src/templates/deploymentconfig.yaml b/charts/redhat/redhat/redhat-mysql-persistent/0.0.3/src/templates/deploymentconfig.yaml new file mode 100644 index 000000000..14a914e38 --- /dev/null +++ b/charts/redhat/redhat/redhat-mysql-persistent/0.0.3/src/templates/deploymentconfig.yaml @@ -0,0 +1,85 @@ +apiVersion: apps.openshift.io/v1 +kind: DeploymentConfig +metadata: + annotations: + template.alpha.openshift.io/wait-for-ready: "true" + labels: + template: mysql-persistent-template + name: {{ .Values.database_service_name }} +spec: + replicas: 1 + selector: + name: {{ .Values.database_service_name }} + strategy: + type: Recreate + template: + metadata: + labels: + name: {{ .Values.database_service_name }} + spec: + containers: + - env: + - name: MYSQL_USER + valueFrom: + secretKeyRef: + key: database-user + name: {{ .Values.database_service_name }} + - name: MYSQL_PASSWORD + valueFrom: + secretKeyRef: + key: database-password + name: {{ .Values.database_service_name }} + - name: MYSQL_ROOT_PASSWORD + valueFrom: + secretKeyRef: + key: database-root-password + name: {{ .Values.database_service_name }} + - name: MYSQL_DATABASE + valueFrom: + secretKeyRef: + key: database-name + name: {{ .Values.database_service_name }} + image: "mysql:{{ .Values.mysql_version }}" + imagePullPolicy: IfNotPresent + livenessProbe: + exec: + command: + - /bin/sh + - -i + - -c + - MYSQL_PWD="$MYSQL_PASSWORD" mysqladmin -u $MYSQL_USER ping + initialDelaySeconds: 30 + timeoutSeconds: 1 + name: mysql + ports: + - containerPort: 3306 + readinessProbe: + exec: + command: + - /bin/sh + - -i + - -c + - MYSQL_PWD="$MYSQL_PASSWORD" mysqladmin -u $MYSQL_USER ping + initialDelaySeconds: 5 + timeoutSeconds: 1 + resources: + limits: + memory: {{ .Values.memory_limit }} + volumeMounts: + - mountPath: /var/lib/mysql/data + name: {{ .Values.database_service_name }}-data + volumes: + - name: {{ .Values.database_service_name }}-data + persistentVolumeClaim: + claimName: {{ .Values.database_service_name }} + triggers: + - imageChangeParams: + automatic: true + containerNames: + - mysql + from: + kind: ImageStreamTag + name: mysql:{{ .Values.mysql_version }} + namespace: {{ .Values.namespace }} + type: ImageChange + - type: ConfigChange diff --git a/charts/redhat/redhat/redhat-mysql-persistent/0.0.3/src/templates/persistentvolumeclaim.yaml b/charts/redhat/redhat/redhat-mysql-persistent/0.0.3/src/templates/persistentvolumeclaim.yaml new file mode 100644 index 000000000..a8b426454 --- /dev/null +++ b/charts/redhat/redhat/redhat-mysql-persistent/0.0.3/src/templates/persistentvolumeclaim.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + labels: + template: mysql-persistent-template + name: {{ .Values.database_service_name }} +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: {{ .Values.volume_capacity }} diff --git a/charts/redhat/redhat/redhat-mysql-persistent/0.0.3/src/templates/secret.yaml b/charts/redhat/redhat/redhat-mysql-persistent/0.0.3/src/templates/secret.yaml new file mode 100644 index 000000000..5cc981ad9 --- /dev/null +++ b/charts/redhat/redhat/redhat-mysql-persistent/0.0.3/src/templates/secret.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: Secret +metadata: + annotations: + template.openshift.io/expose-database_name: '{.data[''database-name'']}' + template.openshift.io/expose-password: '{.data[''database-password'']}' + template.openshift.io/expose-root_password: '{.data[''database-root-password'']}' + template.openshift.io/expose-username: '{.data[''database-user'']}' + labels: + template: mysql-persistent-template + name: {{ .Values.database_service_name }} +stringData: + database-name: {{ .Values.mysql_database }} + database-password: {{ .Values.mysql_password }} + database-root-password: {{ .Values.mysql_root_password }} + database-user: {{ .Values.mysql_user }} diff --git a/charts/redhat/redhat/redhat-mysql-persistent/0.0.3/src/templates/service.yaml b/charts/redhat/redhat/redhat-mysql-persistent/0.0.3/src/templates/service.yaml new file mode 100644 index 000000000..a48fea4f0 --- /dev/null +++ b/charts/redhat/redhat/redhat-mysql-persistent/0.0.3/src/templates/service.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: Service +metadata: + annotations: + template.openshift.io/expose-uri: mysql://{.spec.clusterIP}:{.spec.ports[?(.name=="mysql")].port} + labels: + template: mysql-persistent-template + name: {{ .Values.database_service_name }} +spec: + ports: + - name: mysql + port: 3306 + selector: + name: {{ .Values.database_service_name }} diff --git a/charts/redhat/redhat/redhat-mysql-persistent/0.0.3/src/templates/tests/test-mysql-connection.yaml b/charts/redhat/redhat/redhat-mysql-persistent/0.0.3/src/templates/tests/test-mysql-connection.yaml new file mode 100644 index 000000000..9a6189930 --- /dev/null +++ b/charts/redhat/redhat/redhat-mysql-persistent/0.0.3/src/templates/tests/test-mysql-connection.yaml @@ -0,0 +1,27 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ .Release.Name }}-connection-test" + namespace: "{{ .Release.Namespace }}" + annotations: + "helm.sh/hook": test + labels: + name: {{ .Values.database_service_name }} +spec: + #serviceAccount: {{ .Values.serviceAccount }} + containers: + - name: "mysql-connection-test" + image: "registry.redhat.io/rhel8/mysql-80:latest" + imagePullPolicy: IfNotPresent + env: + - name: MARIADB_USER + value: "{{ .Values.mysql_user }}" + - name: MARIADB_PASSWORD + value: "{{ .Values.mysql_password }}" + - name: MARIADB_DATABASE + value: "{{ .Values.mysql_database }}" + command: + - /bin/bash + - -ec + - "echo \"SELECT 42 as testval\\g\" | mysql --connect-timeout=15 -h {{ .Values.database_service_name }} $MARIADB_DATABASE -u$MARIADB_USER -p$MARIADB_PASSWORD" + restartPolicy: Never diff --git a/charts/redhat/redhat/redhat-mysql-persistent/0.0.3/src/values.schema.json b/charts/redhat/redhat/redhat-mysql-persistent/0.0.3/src/values.schema.json new file mode 100644 index 000000000..732c8c80d --- /dev/null +++ b/charts/redhat/redhat/redhat-mysql-persistent/0.0.3/src/values.schema.json @@ -0,0 +1,49 @@ +{ + "$schema": "http://json-schema.org/schema#", + "type": "object", + "properties": { + "database_service_name": { + "type": "string", + "pattern": "^[a-z0-9-_]+$" + }, + "namespace": { + "type": "string" + }, + "mysql_database": { + "type": "string" + }, + "mysql_password": { + "type": "string" + }, + "mysql_root_password": { + "type": "string" + }, + "mysql_user": { + "type": "string" + }, + "volume_capacity": { + "type": "string", + "title": "Persistent Volume Size", + "form": true, + "render": "slider", + "sliderMin": 1, + "sliderMax": 100, + "sliderUnit": "Gi" + }, + "memory_limit": { + "type": "string", + "title": "Database memory limit", + "form": true, + "render": "slider", + "sliderMin": 512, + "sliderMax": 65536, + "sliderUnit": "Mi" + }, + "mysql_version": { + "type": "string", + "description": "Specify mysql imagestream tag", + "enum": [ "latest", "8.0-el9", "8.0-el8", "8.0-el7" ] + } + } +} + diff --git a/charts/redhat/redhat/redhat-mysql-persistent/0.0.3/src/values.yaml b/charts/redhat/redhat/redhat-mysql-persistent/0.0.3/src/values.yaml new file mode 100644 index 000000000..897397368 --- /dev/null +++ b/charts/redhat/redhat/redhat-mysql-persistent/0.0.3/src/values.yaml @@ -0,0 +1,9 @@ +database_service_name: mysql +memory_limit: 512Mi +mysql_database: testdb +mysql_password: testp # TODO: must define a default value for .mysql_password' +mysql_root_password: testur # TODO: must define a default value for .mysql_root_password' +mysql_user: testu # TODO: must define a default value for .mysql_user' +mysql_version: 8.0-el8 +namespace: openshift +volume_capacity: 1Gi diff --git a/charts/redhat/redhat/redhat-mysql-persistent/0.0.4/src/Chart.yaml b/charts/redhat/redhat/redhat-mysql-persistent/0.0.4/src/Chart.yaml new file mode 100644 index 000000000..2fa35796d --- /dev/null +++ b/charts/redhat/redhat/redhat-mysql-persistent/0.0.4/src/Chart.yaml @@ -0,0 +1,16 @@ +description: |- + This content is expermental, do not use it in production. MySQL database service, with persistent storage. For more information about using this template, including OpenShift considerations, see https://github.com/sclorg/mysql-container/blob/master/8.0/root/usr/share/container-scripts/mysql/README.md. + + NOTE: Scaling to more than one replica is not supported. You must have persistent volumes available in your cluster to use this template. +name: mysql-persistent +tags: database,mysql +version: 0.0.4 +annotations: + charts.openshift.io/name: Red Hat MySQL database service, with persistent storage (experimental) + charts.openshift.io/provider: Red Hat + charts.openshift.io/providerType: redhat +apiVersion: v2 +appVersion: 0.0.4 +kubeVersion: '>=1.20.0' +sources: + - https://github.com/sclorg/helm-charts diff --git a/charts/redhat/redhat/redhat-mysql-persistent/0.0.4/src/README.md b/charts/redhat/redhat/redhat-mysql-persistent/0.0.4/src/README.md new file mode 100644 index 000000000..4938a2348 --- /dev/null +++ b/charts/redhat/redhat/redhat-mysql-persistent/0.0.4/src/README.md @@ -0,0 +1,22 @@ +# MySQL helm chart + +A Helm chart for building and deploying a [MySQL](https://github/sclorg/mysql-container) application on OpenShift. + +For more information about helm charts see the official [Helm Charts Documentation](https://helm.sh/). + +You need to have access to a cluster for each operation with OpenShift 4, like deploying and testing. + +## Values +Below is a table of each value used to configure this chart. + +| Value | Description | Default | Additional Information | +|---------------------------------------------| ----------- | -- | ---------------------- | +| `database_service_name` | The name of the OpenShift Service exposed for the database. | `mysql` | - | +| `mysql_user` | Username for MySQL user that will be used for accessing the database. | `testu` | Expresion like: `user[A-Z0-9]{3}` | +| `mysql_root_password` | Password for the MySQL root user. | `testur` | Expression like: `[a-zA-Z0-9]{16}` | +| `mysql_database` | Name of the MySQL database accessed. | `testdb` | | +| `mysql_password` | Password for the MySQL connection user. | `testp` | Expression like: `[a-zA-Z0-9]{16}` | +| `mysql_version` | Version of MySQL image to be used (8.0-el8, or latest). | `8.0-el8` | | +| `namespace` | The OpenShift Namespace where the ImageStream resides. | `mysql-persistent-testing` | | +| `memory_limit` | Maximum amount of memory the container can use. | `521Mi` | | +| `volume_capacity` | Volume space available for data, e.g. 512Mi, 2Gi. | `1Gi` | | diff --git a/charts/redhat/redhat/redhat-mysql-persistent/0.0.4/src/templates/deployment.yaml b/charts/redhat/redhat/redhat-mysql-persistent/0.0.4/src/templates/deployment.yaml new file mode 100644 index 000000000..ca4cc6ab9 --- /dev/null +++ b/charts/redhat/redhat/redhat-mysql-persistent/0.0.4/src/templates/deployment.yaml @@ -0,0 +1,85 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + annotations: + template.alpha.openshift.io/wait-for-ready: "true" + image.openshift.io/triggers: |- + [ + { + "from": { + "kind": "ImageStreamTag", + "name": "mysql:{{ .Values.mysql_version }}" + }, + "fieldPath": "spec.template.spec.containers[0].image" + } + ] + labels: + template: mysql-persistent-template + name: {{ .Values.database_service_name }} +spec: + replicas: 1 + selector: + matchLabels: + name: {{ .Values.database_service_name }} + strategy: + type: Recreate + template: + metadata: + labels: + name: {{ .Values.database_service_name }} + spec: + containers: + - env: + - name: MYSQL_USER + valueFrom: + secretKeyRef: + key: database-user + name: {{ .Values.database_service_name }} + - name: MYSQL_PASSWORD + valueFrom: + secretKeyRef: + key: database-password + name: {{ .Values.database_service_name }} + - name: MYSQL_ROOT_PASSWORD + valueFrom: + secretKeyRef: + key: database-root-password + name: {{ .Values.database_service_name }} + - name: MYSQL_DATABASE + valueFrom: + secretKeyRef: + key: database-name + name: {{ .Values.database_service_name }} + image: " " + imagePullPolicy: IfNotPresent + livenessProbe: + exec: + command: + - /bin/sh + - -i + - -c + - MYSQL_PWD="$MYSQL_PASSWORD" mysqladmin -u $MYSQL_USER ping + initialDelaySeconds: 30 + timeoutSeconds: 1 + name: mysql + ports: + - containerPort: 3306 + readinessProbe: + exec: + command: + - /bin/sh + - -i + - -c + - MYSQL_PWD="$MYSQL_PASSWORD" mysqladmin -u $MYSQL_USER ping + initialDelaySeconds: 5 + timeoutSeconds: 1 + resources: + limits: + memory: {{ .Values.memory_limit }} + volumeMounts: + - mountPath: /var/lib/mysql/data + name: {{ .Values.database_service_name }}-data + volumes: + - name: {{ .Values.database_service_name }}-data + persistentVolumeClaim: + claimName: {{ .Values.database_service_name }} diff --git a/charts/redhat/redhat/redhat-mysql-persistent/0.0.4/src/templates/persistentvolumeclaim.yaml b/charts/redhat/redhat/redhat-mysql-persistent/0.0.4/src/templates/persistentvolumeclaim.yaml new file mode 100644 index 000000000..a8b426454 --- /dev/null +++ b/charts/redhat/redhat/redhat-mysql-persistent/0.0.4/src/templates/persistentvolumeclaim.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + labels: + template: mysql-persistent-template + name: {{ .Values.database_service_name }} +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: {{ .Values.volume_capacity }} diff --git a/charts/redhat/redhat/redhat-mysql-persistent/0.0.4/src/templates/secret.yaml b/charts/redhat/redhat/redhat-mysql-persistent/0.0.4/src/templates/secret.yaml new file mode 100644 index 000000000..5cc981ad9 --- /dev/null +++ b/charts/redhat/redhat/redhat-mysql-persistent/0.0.4/src/templates/secret.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: Secret +metadata: + annotations: + template.openshift.io/expose-database_name: '{.data[''database-name'']}' + template.openshift.io/expose-password: '{.data[''database-password'']}' + template.openshift.io/expose-root_password: '{.data[''database-root-password'']}' + template.openshift.io/expose-username: '{.data[''database-user'']}' + labels: + template: mysql-persistent-template + name: {{ .Values.database_service_name }} +stringData: + database-name: {{ .Values.mysql_database }} + database-password: {{ .Values.mysql_password }} + database-root-password: {{ .Values.mysql_root_password }} + database-user: {{ .Values.mysql_user }} diff --git a/charts/redhat/redhat/redhat-mysql-persistent/0.0.4/src/templates/service.yaml b/charts/redhat/redhat/redhat-mysql-persistent/0.0.4/src/templates/service.yaml new file mode 100644 index 000000000..a48fea4f0 --- /dev/null +++ b/charts/redhat/redhat/redhat-mysql-persistent/0.0.4/src/templates/service.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: Service +metadata: + annotations: + template.openshift.io/expose-uri: mysql://{.spec.clusterIP}:{.spec.ports[?(.name=="mysql")].port} + labels: + template: mysql-persistent-template + name: {{ .Values.database_service_name }} +spec: + ports: + - name: mysql + port: 3306 + selector: + name: {{ .Values.database_service_name }} diff --git a/charts/redhat/redhat/redhat-mysql-persistent/0.0.4/src/templates/tests/test-mysql-connection.yaml b/charts/redhat/redhat/redhat-mysql-persistent/0.0.4/src/templates/tests/test-mysql-connection.yaml new file mode 100644 index 000000000..b5ff9027a --- /dev/null +++ b/charts/redhat/redhat/redhat-mysql-persistent/0.0.4/src/templates/tests/test-mysql-connection.yaml @@ -0,0 +1,27 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ .Release.Name }}-connection-test" + namespace: "{{ .Release.Namespace }}" + annotations: + "helm.sh/hook": test + labels: + name: {{ .Values.database_service_name }} +spec: + #serviceAccount: {{ .Values.serviceAccount }} + containers: + - name: "mysql-connection-test" + image: "registry.redhat.io/rhel8/mysql-80:latest" + imagePullPolicy: IfNotPresent + env: + - name: MARIADB_USER + value: "{{ .Values.mysql_user }}" + - name: MARIADB_PASSWORD + value: "{{ .Values.mysql_password }}" + - name: MARIADB_DATABASE + value: "{{ .Values.mysql_database }}" + command: + - /bin/bash + - -exc + - "echo \"SELECT 42 as testval\\g\" | mysql --connect-timeout=15 -h {{ .Values.database_service_name }} $MARIADB_DATABASE -u $MARIADB_USER -p$MARIADB_PASSWORD" + restartPolicy: Never diff --git a/charts/redhat/redhat/redhat-mysql-persistent/0.0.4/src/values.schema.json b/charts/redhat/redhat/redhat-mysql-persistent/0.0.4/src/values.schema.json new file mode 100644 index 000000000..732c8c80d --- /dev/null +++ b/charts/redhat/redhat/redhat-mysql-persistent/0.0.4/src/values.schema.json @@ -0,0 +1,49 @@ +{ + "$schema": "http://json-schema.org/schema#", + "type": "object", + "properties": { + "database_service_name": { + "type": "string", + "pattern": "^[a-z0-9-_]+$" + }, + "namespace": { + "type": "string" + }, + "mysql_database": { + "type": "string" + }, + "mysql_password": { + "type": "string" + }, + "mysql_root_password": { + "type": "string" + }, + "mysql_user": { + "type": "string" + }, + "volume_capacity": { + "type": "string", + "title": "Persistent Volume Size", + "form": true, + "render": "slider", + "sliderMin": 1, + "sliderMax": 100, + "sliderUnit": "Gi" + }, + "memory_limit": { + "type": "string", + "title": "Database memory limit", + "form": true, + "render": "slider", + "sliderMin": 512, + "sliderMax": 65536, + "sliderUnit": "Mi" + }, + "mysql_version": { + "type": "string", + "description": "Specify mysql imagestream tag", + "enum": [ "latest", "8.0-el9", "8.0-el8", "8.0-el7" ] + } + } +} + diff --git a/charts/redhat/redhat/redhat-mysql-persistent/0.0.4/src/values.yaml b/charts/redhat/redhat/redhat-mysql-persistent/0.0.4/src/values.yaml new file mode 100644 index 000000000..897397368 --- /dev/null +++ b/charts/redhat/redhat/redhat-mysql-persistent/0.0.4/src/values.yaml @@ -0,0 +1,9 @@ +database_service_name: mysql +memory_limit: 512Mi +mysql_database: testdb +mysql_password: testp # TODO: must define a default value for .mysql_password' +mysql_root_password: testur # TODO: must define a default value for .mysql_root_password' +mysql_user: testu # TODO: must define a default value for .mysql_user' +mysql_version: 8.0-el8 +namespace: openshift +volume_capacity: 1Gi diff --git a/charts/redhat/redhat/redhat-mysql-persistent/OWNERS b/charts/redhat/redhat/redhat-mysql-persistent/OWNERS new file mode 100644 index 000000000..7d058fdbc --- /dev/null +++ b/charts/redhat/redhat/redhat-mysql-persistent/OWNERS @@ -0,0 +1,9 @@ +chart: + name: redhat-mysql-persistent + description: This is the Red Hat MySQL persistent storage chart +publicPgpKey: null +users: + - githubUsername: phracek +vendor: + label: redhat + name: Red Hat diff --git a/charts/redhat/redhat/redhat-mysql-sed/0.1.0/mysql-sed-0.1.0.tgz b/charts/redhat/redhat/redhat-mysql-sed/0.1.0/mysql-sed-0.1.0.tgz new file mode 100644 index 000000000..53c4f02fb Binary files /dev/null and b/charts/redhat/redhat/redhat-mysql-sed/0.1.0/mysql-sed-0.1.0.tgz differ diff --git a/charts/redhat/redhat/redhat-mysql-sed/0.1.0/report.yaml b/charts/redhat/redhat/redhat-mysql-sed/0.1.0/report.yaml new file mode 100644 index 000000000..38a401507 --- /dev/null +++ b/charts/redhat/redhat/redhat-mysql-sed/0.1.0/report.yaml @@ -0,0 +1,88 @@ +apiversion: v1 +kind: verify-report +metadata: + tool: + verifier-version: 1.6.0 + profile: + VendorType: partner + version: v1.1 + chart-uri: /.kube/mysql-sed-0.1.0.tgz + digests: + chart: sha256:451087463b43fdffa1bd542bdec76f50909355cced7310d8093c4da38a15be48 + package: 6f3f5b053e2bd381fc7941f7a7528a82ab66f846ade4c23ff55a607ec7ac58d6 + lastCertifiedTimestamp: "2022-03-15T13:30:29.675151+00:00" + testedOpenShiftVersion: "4.9" + supportedOpenShiftVersions: '>=4.7' + providerControlledDelivery: false + chart: + name: mysql-sed + home: "" + sources: [] + version: 0.1.0 + description: A Helm chart for MySQL Service Endpoint Definition (SED) + keywords: [] + maintainers: [] + icon: "" + apiversion: v2 + condition: "" + tags: "" + appversion: 0.1.0 + deprecated: false + annotations: + charts.openshift.io/archs: x86_64 + charts.openshift.io/name: MYSQL Service Endpoint Definition (SED) + charts.openshift.io/provider: RedHat + charts.openshift.io/supportURL: https://github.com/redhat-developer/service-endpoint-definition + kubeversion: '>=1.20.0' + dependencies: [] + type: application + chart-overrides: "" +results: + - check: v1.0/helm-lint + type: Mandatory + outcome: PASS + reason: Helm lint successful + - check: v1.0/chart-testing + type: Mandatory + outcome: PASS + reason: Chart tests have passed + - check: v1.0/required-annotations-present + type: Mandatory + outcome: PASS + reason: All required annotations present + - check: v1.0/is-helm-v3 + type: Mandatory + outcome: PASS + reason: API version is V2, used in Helm 3 + - check: v1.0/contains-values + type: Mandatory + outcome: PASS + reason: Values file exist + - check: v1.0/contains-values-schema + type: Mandatory + outcome: PASS + reason: Values schema file exist + - check: v1.1/has-kubeversion + type: Mandatory + outcome: PASS + reason: Kubernetes version specified + - check: v1.0/not-contains-crds + type: Mandatory + outcome: PASS + reason: Chart does not contain CRDs + - check: v1.0/has-readme + type: Mandatory + outcome: PASS + reason: Chart has a README + - check: v1.0/contains-test + type: Mandatory + outcome: PASS + reason: Chart test files exist + - check: v1.0/not-contain-csi-objects + type: Mandatory + outcome: PASS + reason: CSI objects do not exist + - check: v1.0/images-are-certified + type: Mandatory + outcome: PASS + reason: 'Image is Red Hat certified : registry.access.redhat.com/rhscl/mysql-80-rhel7:latest' \ No newline at end of file diff --git a/charts/redhat/redhat/redhat-mysql-sed/OWNERS b/charts/redhat/redhat/redhat-mysql-sed/OWNERS new file mode 100644 index 000000000..d5a20e32d --- /dev/null +++ b/charts/redhat/redhat/redhat-mysql-sed/OWNERS @@ -0,0 +1,9 @@ +chart: + name: redhat-mysql-sed + shortDescription: MySQL Service Endpoint Definition +publicPgpKey: null +users: +- githubUsername: Kartikey-star +vendor: + label: redhat + name: Red Hat diff --git a/charts/redhat/redhat/redhat-nginx-imagestreams/0.0.1/src/Chart.yaml b/charts/redhat/redhat/redhat-nginx-imagestreams/0.0.1/src/Chart.yaml new file mode 100644 index 000000000..4c27d972c --- /dev/null +++ b/charts/redhat/redhat/redhat-nginx-imagestreams/0.0.1/src/Chart.yaml @@ -0,0 +1,13 @@ +description: |- + This content is expermental, do not use it in production. Build and serve static content via Nginx HTTP server + and a reverse proxy (nginx) on RHEL. https://github.com/sclorg/nginx-container/blob/master/README.md. +annotations: + charts.openshift.io/name: Red Hat Nginx HTTP server and a reverse proxy (nginx) (experimental). +apiVersion: v2 +appVersion: 0.0.1 +kubeVersion: '>=1.20.0' +name: nginx-imagestreams +tags: builder,nginx +sources: + - https://github.com/sclorg/helm-charts +version: 0.0.1 diff --git a/charts/redhat/redhat/redhat-nginx-imagestreams/0.0.1/src/templates/imagestreams.yaml b/charts/redhat/redhat/redhat-nginx-imagestreams/0.0.1/src/templates/imagestreams.yaml new file mode 100644 index 000000000..35b00f336 --- /dev/null +++ b/charts/redhat/redhat/redhat-nginx-imagestreams/0.0.1/src/templates/imagestreams.yaml @@ -0,0 +1,88 @@ +apiVersion: image.openshift.io/v1 +kind: ImageStream +metadata: + annotations: + openshift.io/display-name: Nginx HTTP server and a reverse proxy (nginx) + name: nginx +spec: + tags: + - annotations: + description: >- + Build and serve static content via Nginx HTTP server and a reverse + proxy (nginx) on RHEL. For more information about using this builder + image, including OpenShift considerations, see + https://github.com/sclorg/nginx-container/blob/master/1.20/README.md. + + + WARNING: By selecting this tag, your application will automatically + update to use the latest version of Nginx available on OpenShift, + including major version updates. + iconClass: icon-nginx + openshift.io/display-name: Nginx HTTP server and a reverse proxy (Latest) + openshift.io/provider-display-name: 'Red Hat, Inc.' + sampleRepo: 'https://github.com/sclorg/nginx-ex.git' + supports: nginx + tags: 'builder,nginx' + from: + kind: ImageStreamTag + name: 1.20-ubi8 + referencePolicy: + type: Local + name: latest + - annotations: + description: >- + Build and serve static content via Nginx HTTP server and a reverse + proxy (nginx) on RHEL 8. For more information about using this builder + image, including OpenShift considerations, see + https://github.com/sclorg/nginx-container/blob/master/1.20/README.md. + iconClass: icon-nginx + openshift.io/display-name: Nginx HTTP server and a reverse proxy 1.20 (UBI 9) + openshift.io/provider-display-name: 'Red Hat, Inc.' + sampleRepo: 'https://github.com/sclorg/nginx-ex.git' + supports: nginx + tags: 'builder,nginx' + version: '1.20' + from: + kind: DockerImage + name: 'registry.redhat.io/ubi9/nginx-120:latest' + referencePolicy: + type: Local + name: 1.20-ubi9 + - annotations: + description: >- + Build and serve static content via Nginx HTTP server and a reverse + proxy (nginx) on RHEL 8. For more information about using this builder + image, including OpenShift considerations, see + https://github.com/sclorg/nginx-container/blob/master/1.20/README.md. + iconClass: icon-nginx + openshift.io/display-name: Nginx HTTP server and a reverse proxy 1.20 (UBI 8) + openshift.io/provider-display-name: 'Red Hat, Inc.' + sampleRepo: 'https://github.com/sclorg/nginx-ex.git' + supports: nginx + tags: 'builder,nginx' + version: '1.20' + from: + kind: DockerImage + name: 'registry.redhat.io/ubi8/nginx-120:latest' + referencePolicy: + type: Local + name: 1.20-ubi8 + - annotations: + description: >- + Build and serve static content via Nginx HTTP server and a reverse + proxy (nginx) on RHEL 7. For more information about using this builder + image, including OpenShift considerations, see + https://github.com/sclorg/nginx-container/blob/master/1.20/README.md. + iconClass: icon-nginx + openshift.io/display-name: Nginx HTTP server and a reverse proxy 1.20 (UBI 7) + openshift.io/provider-display-name: 'Red Hat, Inc.' + sampleRepo: 'https://github.com/sclorg/nginx-ex.git' + supports: nginx + tags: 'builder,nginx' + version: '1.20' + from: + kind: DockerImage + name: 'registry.redhat.io/ubi7/nginx-120:latest' + referencePolicy: + type: Local + name: 1.20-ubi7 diff --git a/charts/redhat/redhat/redhat-nginx-imagestreams/OWNERS b/charts/redhat/redhat/redhat-nginx-imagestreams/OWNERS new file mode 100644 index 000000000..7704c13fd --- /dev/null +++ b/charts/redhat/redhat/redhat-nginx-imagestreams/OWNERS @@ -0,0 +1,9 @@ +chart: + name: redhat-nginx-imagestreams + description: This is the Red Hat Nginx Server imagestream chart +publicPgpKey: null +users: + - githubUsername: phracek +vendor: + label: redhat + name: Red Hat diff --git a/charts/redhat/redhat/redhat-nginx-template/0.0.1/src/Chart.yaml b/charts/redhat/redhat/redhat-nginx-template/0.0.1/src/Chart.yaml new file mode 100644 index 000000000..62a9d2844 --- /dev/null +++ b/charts/redhat/redhat/redhat-nginx-template/0.0.1/src/Chart.yaml @@ -0,0 +1,15 @@ +description: An example Nginx HTTP server and a reverse proxy (nginx) application + that serves static content. For more information about using this template, including + OpenShift considerations, see https://github.com/sclorg/nginx-ex/blob/master/README.md. +name: nginx-template +tags: quickstart,nginx +version: 0.0.1 +kubeVersion: '>=1.20.0' +annotations: + charts.openshift.io/name: Red Hat Nginx HTTP Server (nginx) application (experimental). + charts.openshift.io/provider: Red Hat + charts.openshift.io/providerType: redhat +apiVersion: v2 +appVersion: 0.0.1 +sources: + - https://github.com/sclorg/helm-charts \ No newline at end of file diff --git a/charts/redhat/redhat/redhat-nginx-template/0.0.1/src/README.md b/charts/redhat/redhat/redhat-nginx-template/0.0.1/src/README.md new file mode 100644 index 000000000..e6b4589c9 --- /dev/null +++ b/charts/redhat/redhat/redhat-nginx-template/0.0.1/src/README.md @@ -0,0 +1,23 @@ +# Nginx helm chart + +A Helm chart for building and deploying a [Nginx](https://github/sclorg/nginx-container) application on OpenShift. + +For more information about helm charts see the official [Helm Charts Documentation](https://helm.sh/). + +You need to have access to a cluster for each operation with OpenShift 4, like deploying and testing. + +## Values +Below is a table of each value used to configure this chart. + +| Value | Description | Default | Additional Information | +|---------------------------------------------| ----------- |----------------------------------------------------| ---------------------- | +| `name` | The name assigned to all of the frontend objects defined in this helm chart. | `httpd-example` | | +| `namespace` | The OpenShift Namespace where the ImageStream resides. | `httpd-template` | | +| `nginx_version` | Version of NGINX image to be used (1.20-ubi8 by default). | `1.20-ubi8` | | +| `memory_limit` | Maximum amount of memory the container can use. | `521Mi` | | +| `source_repository_url` | The URL of the repository with your application source code. | `https://github.com/sclorg/nginx-ex.git` | | +| `source_repository_ref` | Set this to a branch name, tag or other ref of your repository if you are not using the default branch. | | | +| `context_dir` | Set this to the relative path to your project if it is not in the root of your repository. | | | +| `application_domain` | The exposed hostname that will route to the httpd service, if left blank a value will be defaulted. | | | +| `generic_webhook_secret` | A secret string used to configure the Generic webhook. | | | +| `github_webhook_secret` | Github trigger secret. A difficult to guess string encoded as part of the webhook URL. Not encrypted. | | | diff --git a/charts/redhat/redhat/redhat-nginx-template/0.0.1/src/templates/buildconfig.yaml b/charts/redhat/redhat/redhat-nginx-template/0.0.1/src/templates/buildconfig.yaml new file mode 100644 index 000000000..cecf1685e --- /dev/null +++ b/charts/redhat/redhat/redhat-nginx-template/0.0.1/src/templates/buildconfig.yaml @@ -0,0 +1,36 @@ +apiVersion: build.openshift.io/v1 +kind: BuildConfig +metadata: + annotations: + description: Defines how to build the application + template.alpha.openshift.io/wait-for-ready: "true" + labels: + app: {{ .Values.name }} + template: {{ .Values.name }} + name: {{ .Values.name }} +spec: + output: + to: + kind: ImageStreamTag + name: {{ .Values.name }}:latest + source: + contextDir: {{ .Values.context_dir }} + git: + ref: {{ .Values.source_repository_ref }} + uri: {{ .Values.source_repository_url }} + type: Git + strategy: + sourceStrategy: + from: + kind: ImageStreamTag + name: nginx:{{ .Values.nginx_version }} + type: Source + triggers: + - type: ImageChange + - type: ConfigChange + - github: + secret: {{ .Values.github_webhook_secret }} + type: GitHub + - generic: + secret: {{ .Values.generic_webhook_secret }} + type: Generic diff --git a/charts/redhat/redhat/redhat-nginx-template/0.0.1/src/templates/deployment.yaml b/charts/redhat/redhat/redhat-nginx-template/0.0.1/src/templates/deployment.yaml new file mode 100644 index 000000000..b68f62e02 --- /dev/null +++ b/charts/redhat/redhat/redhat-nginx-template/0.0.1/src/templates/deployment.yaml @@ -0,0 +1,54 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + annotations: + description: Defines how to deploy the application server + template.alpha.openshift.io/wait-for-ready: "true" + image.openshift.io/triggers: |- + [ + { + "from": { + "kind": "ImageStreamTag", + "name": "{{ .Values.name }}:latest" + }, + "fieldPath": "spec.template.spec.containers[0].image" + } + ] + labels: + app: nginx-template + template: nginx-template + name: {{ .Values.name }} +spec: + replicas: 1 + selector: + matchLabels: + name: {{ .Values.name }} + strategy: + type: RollingUpdate + template: + metadata: + labels: + name: {{ .Values.name }} + name: {{ .Values.name }} + spec: + containers: + - env: [] + image: " " + livenessProbe: + httpGet: + path: / + port: 8080 + initialDelaySeconds: 30 + timeoutSeconds: 3 + name: nginx-template + ports: + - containerPort: 8080 + readinessProbe: + httpGet: + path: / + port: 8080 + initialDelaySeconds: 3 + timeoutSeconds: 3 + resources: + limits: + memory: {{ .Values.memory_limit }} diff --git a/charts/redhat/redhat/redhat-nginx-template/0.0.1/src/templates/imagestream.yaml b/charts/redhat/redhat/redhat-nginx-template/0.0.1/src/templates/imagestream.yaml new file mode 100644 index 000000000..cd14a8a14 --- /dev/null +++ b/charts/redhat/redhat/redhat-nginx-template/0.0.1/src/templates/imagestream.yaml @@ -0,0 +1,9 @@ +apiVersion: image.openshift.io/v1 +kind: ImageStream +metadata: + annotations: + description: Keeps track of changes in the application image + labels: + app: dancer-example + template: dancer-example + name: {{ .Values.name }} \ No newline at end of file diff --git a/charts/redhat/redhat/redhat-nginx-template/0.0.1/src/templates/route.yaml b/charts/redhat/redhat/redhat-nginx-template/0.0.1/src/templates/route.yaml new file mode 100644 index 000000000..d1a605d6e --- /dev/null +++ b/charts/redhat/redhat/redhat-nginx-template/0.0.1/src/templates/route.yaml @@ -0,0 +1,14 @@ +apiVersion: route.openshift.io/v1 +kind: Route +metadata: + annotations: + template.openshift.io/expose-uri: http://{.spec.host}{.spec.path} + labels: + app: {{ .Values.name }} + template: {{ .Values.name }} + name: {{ .Values.name }} +spec: + host: {{ .Values.application_domain }} + to: + kind: Service + name: {{ .Values.name }} diff --git a/charts/redhat/redhat/redhat-nginx-template/0.0.1/src/templates/service.yaml b/charts/redhat/redhat/redhat-nginx-template/0.0.1/src/templates/service.yaml new file mode 100644 index 000000000..7501d7dbd --- /dev/null +++ b/charts/redhat/redhat/redhat-nginx-template/0.0.1/src/templates/service.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: Service +metadata: + annotations: + description: Exposes and load balances the application pods + labels: + app: {{ .Values.name }} + template: {{ .Values.name }} + name: {{ .Values.name }} +spec: + ports: + - name: web + port: 8080 + targetPort: 8080 + selector: + name: {{ .Values.name }} diff --git a/charts/redhat/redhat/redhat-nginx-template/0.0.1/src/templates/tests/test-nginx-connection.yaml b/charts/redhat/redhat/redhat-nginx-template/0.0.1/src/templates/tests/test-nginx-connection.yaml new file mode 100644 index 000000000..e91d41b17 --- /dev/null +++ b/charts/redhat/redhat/redhat-nginx-template/0.0.1/src/templates/tests/test-nginx-connection.yaml @@ -0,0 +1,21 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ .Release.Name }}-connection-test" + namespace: "{{ .Release.Namespace }}" + annotations: + "helm.sh/hook": test + labels: + name: {{ .Values.database_service_name }} +spec: + #serviceAccount: {{ .Values.serviceAccount }} + containers: + - name: "nginx-connection-test" + image: "registry.redhat.io/ubi8/nginx-122:latest" + imagePullPolicy: IfNotPresent + command: + - '/bin/bash' + - '-exc' + - > + curl {{ .Values.name }}.{{ .Release.Namespace }}:8080 | grep "{{ .Values.expected_str }}" + restartPolicy: Never diff --git a/charts/redhat/redhat/redhat-nginx-template/0.0.1/src/values.schema.json b/charts/redhat/redhat/redhat-nginx-template/0.0.1/src/values.schema.json new file mode 100644 index 000000000..f2842e2db --- /dev/null +++ b/charts/redhat/redhat/redhat-nginx-template/0.0.1/src/values.schema.json @@ -0,0 +1,51 @@ +{ + "$schema": "http://json-schema.org/schema#", + "type": "object", + "properties": { + "name": { + "type": "string", + "pattern": "^[a-z0-9-_]+$" + }, + "namespace": { + "type": "string", + "title": "The URL of the repository with your application source code." + }, + "nginx_version": { + "type": "string", + "description": "Version of NGINX image to be used (1.20-ubi8 by default).", + "enum": [ "latest", "1.20-ubi8", "1.20-ubi9", "1.22-ubi8", "1.22-ubi9", "1.20-ubi7" ] + }, + "memory_limit": { + "type": "string", + "title": "Maximum amount of memory the container can use.", + "form": true, + "render": "slider", + "sliderMin": 512, + "sliderMax": 65536, + "sliderUnit": "Mi" + }, + "source_repository_url": { + "type": "string" + }, + "source_repository_ref": { + "type": "string" + }, + "context_dir": { + "type": "string", + "description": "Set this to the relative path to your project if it is not in the root of your repository." + }, + "application_domain": { + "type": "string", + "description": "The exposed hostname that will route to the httpd service, if left blank a value will be defaulted." + }, + "github_webhook_secret": { + "type": "string", + "description": "Github trigger secret. A difficult to guess string encoded as part of the webhook URL. Not encrypted." + }, + "generic_webhook_secret": { + "type": "string", + "description": "A secret string used to configure the Generic webhook." + } + } +} + diff --git a/charts/redhat/redhat/redhat-nginx-template/0.0.1/src/values.yaml b/charts/redhat/redhat/redhat-nginx-template/0.0.1/src/values.yaml new file mode 100644 index 000000000..492a03bf1 --- /dev/null +++ b/charts/redhat/redhat/redhat-nginx-template/0.0.1/src/values.yaml @@ -0,0 +1,9 @@ +context_dir: "" # TODO: must define a default value for .context_dir +generic_webhook_secret: "SOMETHING" # TODO: must define a default value for .generic_webhook_secret +github_webhook_secret: "FOOBAR" # TODO: must define a default value for .github_webhook_secret +memory_limit: 512Mi +name: nginx-example +namespace: openshift +nginx_version: 1.20-ubi8 +source_repository_ref: master # TODO: must define a default value for .source_repository_ref +source_repository_url: https://github.com/sclorg/nginx-ex.git diff --git a/charts/redhat/redhat/redhat-nginx-template/OWNERS b/charts/redhat/redhat/redhat-nginx-template/OWNERS new file mode 100644 index 000000000..da2b114e5 --- /dev/null +++ b/charts/redhat/redhat/redhat-nginx-template/OWNERS @@ -0,0 +1,9 @@ +chart: + name: redhat-nginx-template + description: This is the Red Hat Nginx server template chart +publicPgpKey: null +users: + - githubUsername: phracek +vendor: + label: redhat + name: Red Hat diff --git a/charts/redhat/redhat/redhat-nodejs-application/0.0.1/src/Chart.yaml b/charts/redhat/redhat/redhat-nodejs-application/0.0.1/src/Chart.yaml new file mode 100644 index 000000000..26100415f --- /dev/null +++ b/charts/redhat/redhat/redhat-nodejs-application/0.0.1/src/Chart.yaml @@ -0,0 +1,14 @@ +description: This content is experimental, do not use it in production. An example Node.js application with no database. For more information + about using this template, including OpenShift considerations, see https://github.com/sclorg/nodejs-ex/blob/master/README.md. +name: nodejs-application +tags: quickstart,nodejs +version: 0.0.1 +kubeVersion: '>=1.20.0' +annotations: + charts.openshift.io/name: Red Hat Apache Rails application with no database (experimental) + charts.openshift.io/provider: Red Hat + charts.openshift.io/providerType: redhat +apiVersion: v2 +appVersion: 0.0.1 +sources: + - https://github.com/sclorg/helm-charts diff --git a/charts/redhat/redhat/redhat-nodejs-application/0.0.1/src/templates/buildconfig.yaml b/charts/redhat/redhat/redhat-nodejs-application/0.0.1/src/templates/buildconfig.yaml new file mode 100644 index 000000000..483fab3eb --- /dev/null +++ b/charts/redhat/redhat/redhat-nodejs-application/0.0.1/src/templates/buildconfig.yaml @@ -0,0 +1,40 @@ +apiVersion: build.openshift.io/v1 +kind: BuildConfig +metadata: + annotations: + description: Defines how to build the application + template.alpha.openshift.io/wait-for-ready: "true" + labels: + app: nodejs-example + template: nodejs-example + name: {{ .Values.name }} +spec: + output: + to: + kind: ImageStreamTag + name: {{ .Values.name }}:latest + source: + contextDir: {{ .Values.context_dir }} + git: + ref: {{ .Values.source_repository_ref }} + uri: {{ .Values.source_repository_url }} + type: Git + strategy: + sourceStrategy: + env: + - name: NPM_MIRROR + value: {{ .Values.npm_mirror }} + from: + kind: ImageStreamTag + name: nodejs:{{ .Values.nodejs_version }} + namespace: {{ .Values.namespace }} + type: Source + triggers: + - type: ImageChange + - type: ConfigChange + - github: + secret: {{ .Values.github_webhook_secret }} + type: GitHub + - generic: + secret: {{ .Values.generic_webhook_secret }} + type: Generic diff --git a/charts/redhat/redhat/redhat-nodejs-application/0.0.1/src/templates/deployment.yaml b/charts/redhat/redhat/redhat-nodejs-application/0.0.1/src/templates/deployment.yaml new file mode 100644 index 000000000..1fb6d53a4 --- /dev/null +++ b/charts/redhat/redhat/redhat-nodejs-application/0.0.1/src/templates/deployment.yaml @@ -0,0 +1,53 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + annotations: + description: Defines how to deploy the application server + image.openshift.io/triggers: |- + [ + { + "from": { + "kind": "ImageStreamTag", + "name": "{{ .Values.name }}:latest" + }, + "fieldPath": "spec.template.spec.containers[0].image" + } + ] + template.alpha.openshift.io/wait-for-ready: "true" + labels: + app: nodejs-example + template: nodejs-example + name: {{ .Values.name }} +spec: + replicas: 1 + selector: + matchLabels: + name: {{ .Values.name }} + strategy: + type: RollingUpdate + template: + metadata: + labels: + name: {{ .Values.name }} + name: {{ .Values.name }} + spec: + containers: + - image: " " + livenessProbe: + httpGet: + path: / + port: 8080 + initialDelaySeconds: 30 + timeoutSeconds: 3 + name: nodejs-example + ports: + - containerPort: 8080 + readinessProbe: + httpGet: + path: / + port: 8080 + initialDelaySeconds: 3 + timeoutSeconds: 3 + resources: + limits: + memory: {{ .Values.memory_limit }} diff --git a/charts/redhat/redhat/redhat-nodejs-application/0.0.1/src/templates/imagestream.yaml b/charts/redhat/redhat/redhat-nodejs-application/0.0.1/src/templates/imagestream.yaml new file mode 100644 index 000000000..7c18b14a2 --- /dev/null +++ b/charts/redhat/redhat/redhat-nodejs-application/0.0.1/src/templates/imagestream.yaml @@ -0,0 +1,9 @@ +apiVersion: image.openshift.io/v1 +kind: ImageStream +metadata: + annotations: + description: Keeps track of changes in the application image + labels: + app: nodejs-example + template: nodejs-example + name: {{ .Values.name }} diff --git a/charts/redhat/redhat/redhat-nodejs-application/0.0.1/src/templates/route.yaml b/charts/redhat/redhat/redhat-nodejs-application/0.0.1/src/templates/route.yaml new file mode 100644 index 000000000..3a894962d --- /dev/null +++ b/charts/redhat/redhat/redhat-nodejs-application/0.0.1/src/templates/route.yaml @@ -0,0 +1,12 @@ +apiVersion: route.openshift.io/v1 +kind: Route +metadata: + labels: + app: nodejs-example + template: nodejs-example + name: {{ .Values.name }} +spec: + host: {{ .Values.application_domain }} + to: + kind: Service + name: {{ .Values.name }} diff --git a/charts/redhat/redhat/redhat-nodejs-application/0.0.1/src/templates/service.yaml b/charts/redhat/redhat/redhat-nodejs-application/0.0.1/src/templates/service.yaml new file mode 100644 index 000000000..8a2d373d0 --- /dev/null +++ b/charts/redhat/redhat/redhat-nodejs-application/0.0.1/src/templates/service.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: Service +metadata: + annotations: + description: Exposes and load balances the application pods + labels: + app: nodejs-example + template: nodejs-example + name: {{ .Values.name }} +spec: + ports: + - name: web + port: 8080 + targetPort: 8080 + selector: + name: {{ .Values.name }} diff --git a/charts/redhat/redhat/redhat-nodejs-application/0.0.1/src/templates/tests/test-nodejs-connection.yaml b/charts/redhat/redhat/redhat-nodejs-application/0.0.1/src/templates/tests/test-nodejs-connection.yaml new file mode 100644 index 000000000..b21a06561 --- /dev/null +++ b/charts/redhat/redhat/redhat-nodejs-application/0.0.1/src/templates/tests/test-nodejs-connection.yaml @@ -0,0 +1,20 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ .Release.Name }}-connection-test" + annotations: + "helm.sh/hook": test + labels: + name: {{ .Values.name }} + template: {{ .Values.name }} +spec: + containers: + - name: "{{ .Release.Name }}-connection-test" + image: "registry.redhat.io/ubi8/ubi:latest" + imagePullPolicy: IfNotPresent + command: + - '/bin/bash' + - '-exc' + - > + curl {{ .Values.name }}.{{ .Release.Namespace }}:8080 | grep "Node.js Crud Application" + restartPolicy: Never diff --git a/charts/redhat/redhat/redhat-nodejs-application/0.0.1/src/values.schema.json b/charts/redhat/redhat/redhat-nodejs-application/0.0.1/src/values.schema.json new file mode 100644 index 000000000..c2e4943b7 --- /dev/null +++ b/charts/redhat/redhat/redhat-nodejs-application/0.0.1/src/values.schema.json @@ -0,0 +1,54 @@ +{ + "$schema": "http://json-schema.org/schema#", + "type": "object", + "properties": { + "name": { + "type": "string", + "pattern": "^[a-z0-9-_]+$" + }, + "namespace": { + "type": "string", + "title": "The URL of the repository with your application source code." + }, + "nodejs_version": { + "type": "string", + "description": "Version of NodeJS image to be used (18-ubi8, 20-ubi8, or latest).", + "enum": [ "latest", "18-ubi8", "20-ubi8", "18-ubi9", "20-ubi9" ] + }, + "memory_limit": { + "type": "string", + "title": "Maximum amount of memory the container can use.", + "form": true, + "render": "slider", + "sliderMin": 512, + "sliderMax": 65536, + "sliderUnit": "Mi" + }, + "source_repository_url": { + "type": "string" + }, + "source_repository_ref": { + "type": "string" + }, + "context_dir": { + "type": "string", + "description": "Set this to the relative path to your project if it is not in the root of your repository." + }, + "application_domain": { + "type": "string", + "description": "The exposed hostname that will route to the httpd service, if left blank a value will be defaulted." + }, + "github_webhook_secret": { + "type": "string", + "description": "Github trigger secret. A difficult to guess string encoded as part of the webhook URL. Not encrypted." + }, + "generic_webhook_secret": { + "type": "string", + "description": "A secret string used to configure the Generic webhook." + }, + "npm_mirror": { + "type": "string", + "description": "The custom NPM mirror URL." + } + } +} diff --git a/charts/redhat/redhat/redhat-nodejs-application/0.0.1/src/values.yaml b/charts/redhat/redhat/redhat-nodejs-application/0.0.1/src/values.yaml new file mode 100644 index 000000000..db91f6849 --- /dev/null +++ b/charts/redhat/redhat/redhat-nodejs-application/0.0.1/src/values.yaml @@ -0,0 +1,11 @@ +application_domain: "" # TODO: must define a default value for .application_domain +context_dir: "" # TODO: must define a default value for .context_dir +generic_webhook_secret: "FOO" # TODO: must define a default value for .generic_webhook_secret +github_webhook_secret: "SOMETHING"# TODO: must define a default value for .github_webhook_secret +memory_limit: 512Mi +name: nodejs-example +namespace: openshift +nodejs_version: 20-ubi8 +npm_mirror: "" # TODO: must define a default value for .npm_mirror +source_repository_ref: "master" # TODO: must define a default value for .source_repository_ref +source_repository_url: https://github.com/sclorg/nodejs-ex.git diff --git a/charts/redhat/redhat/redhat-nodejs-application/OWNERS b/charts/redhat/redhat/redhat-nodejs-application/OWNERS new file mode 100644 index 000000000..d8dddbff7 --- /dev/null +++ b/charts/redhat/redhat/redhat-nodejs-application/OWNERS @@ -0,0 +1,10 @@ +chart: + name: redhat-nodejs-application + description: This is the Red Hat quickstart NodeJS application with no database helm chart +publicPgpKey: null +users: + - githubUsername: phracek +vendor: + label: redhat + name: Red Hat + diff --git a/charts/redhat/redhat/redhat-nodejs-ex-k/0.2.1/nodejs-ex-k-0.2.1.tgz b/charts/redhat/redhat/redhat-nodejs-ex-k/0.2.1/nodejs-ex-k-0.2.1.tgz new file mode 100644 index 000000000..fa42c5a5d Binary files /dev/null and b/charts/redhat/redhat/redhat-nodejs-ex-k/0.2.1/nodejs-ex-k-0.2.1.tgz differ diff --git a/charts/redhat/redhat/redhat-nodejs-ex-k/0.2.1/report.yaml b/charts/redhat/redhat/redhat-nodejs-ex-k/0.2.1/report.yaml new file mode 100644 index 000000000..df81e52ed --- /dev/null +++ b/charts/redhat/redhat/redhat-nodejs-ex-k/0.2.1/report.yaml @@ -0,0 +1,80 @@ +apiversion: v1 +kind: verify-report +metadata: + tool: + verifier-version: 1.1.0 + profile: + VendorType: partner + version: v1.0 + chart-uri: https://redhat-developer.github.io/redhat-helm-charts/charts/nodejs-ex-k-0.2.1.tgz + digest: sha256:ee5c3d26bfc17ce6333678c1279dbed06a2c7d3cd0bd8f2b4128a1a7a7cf8acf + digests: + chart: sha256:ee5c3d26bfc17ce6333678c1279dbed06a2c7d3cd0bd8f2b4128a1a7a7cf8acf + package: 4340070f6b0d04ebb2ea4a10046b89c9f1706c62ae67bdc247ff6a59b9d035ec + lastCertifiedTimestamp: "2021-07-09T23:02:59.065099+00:00" + certifiedOpenShiftVersions: 4.7.0 + chart: + name: nodejs-ex-k + home: "" + sources: [] + version: 0.2.1 + description: A Helm chart for Kubernetes + keywords: [] + maintainers: [] + icon: "" + apiversion: v2 + condition: "" + tags: "" + appversion: 1.16.0 + deprecated: false + annotations: {} + kubeversion: "" + dependencies: [] + type: application + chart-overrides: "" +results: + - check: v1.0/has-readme + type: Mandatory + outcome: FAIL + reason: Chart does not have a README + - check: v1.0/contains-test + type: Mandatory + outcome: FAIL + reason: Chart test files do not exist + - check: v1.0/contains-values + type: Mandatory + outcome: PASS + reason: Values file exist + - check: v1.0/has-kubeversion + type: Mandatory + outcome: FAIL + reason: Kubernetes version is not specified + - check: v1.0/not-contains-crds + type: Mandatory + outcome: PASS + reason: Chart does not contain CRDs + - check: v1.0/helm-lint + type: Mandatory + outcome: PASS + reason: Helm lint successful + - check: v1.0/not-contain-csi-objects + type: Mandatory + outcome: PASS + reason: CSI objects do not exist + - check: v1.0/chart-testing + type: Mandatory + outcome: PASS + reason: Chart tests have passed + - check: v1.0/is-helm-v3 + type: Mandatory + outcome: PASS + reason: API version is V2, used in Helm 3 + - check: v1.0/contains-values-schema + type: Mandatory + outcome: PASS + reason: Values schema file exist + - check: v1.0/images-are-certified + type: Mandatory + outcome: FAIL + reason: 'Image is not Red Hat certified : : Bad response code from Pyxis: 400 + : https://catalog.redhat.com/api/containers/v1/repositories?filter=repository%3D%3D+' diff --git a/charts/redhat/redhat/redhat-nodejs-ex-k/OWNERS b/charts/redhat/redhat/redhat-nodejs-ex-k/OWNERS new file mode 100644 index 000000000..4457d6be7 --- /dev/null +++ b/charts/redhat/redhat/redhat-nodejs-ex-k/OWNERS @@ -0,0 +1,9 @@ +chart: + name: redhat-nodejs-ex-k + shortDescription: This is the Red Hat NodeJs EX K chart +publicPgpKey: null +users: +- githubUsername: dperaza4dustbit +vendor: + label: redhat + name: Red Hat diff --git a/charts/redhat/redhat/redhat-nodejs-imagestreams/0.0.4/src/Chart.yaml b/charts/redhat/redhat/redhat-nodejs-imagestreams/0.0.4/src/Chart.yaml new file mode 100644 index 000000000..c15a11087 --- /dev/null +++ b/charts/redhat/redhat/redhat-nodejs-imagestreams/0.0.4/src/Chart.yaml @@ -0,0 +1,16 @@ +description: |- + This content is experimental, do not use it in production. Build and run NodeJS applications on UBI. + For more information about using this builder image, including OpenShift considerations, + see https://github.com/sclorg/s2i-nodejs-container/blob/master/20/README.md. +annotations: + charts.openshift.io/name: Red Hat NodeJS imagestreams (experimental). + charts.openshift.io/provider: Red Hat + charts.openshift.io/providerType: redhat +apiVersion: v2 +appVersion: 0.0.4 +kubeVersion: '>=1.20.0' +name: redhat-nodejs-imagestreams +tags: builder,nodejs +sources: + - https://github.com/sclorg/helm-charts +version: 0.0.4 diff --git a/charts/redhat/redhat/redhat-nodejs-imagestreams/0.0.4/src/README.md b/charts/redhat/redhat/redhat-nodejs-imagestreams/0.0.4/src/README.md new file mode 100644 index 000000000..86fb4044f --- /dev/null +++ b/charts/redhat/redhat/redhat-nodejs-imagestreams/0.0.4/src/README.md @@ -0,0 +1,7 @@ +# NodeJS imagestream helm chart + +A Helm chart for importing NodeJS imagestreams on OpenShift. + +For more information about helm charts see the official [Helm Charts Documentation](https://helm.sh/). + +You need to have access to a cluster for each operation with OpenShift 4, like deploying and testing. diff --git a/charts/redhat/redhat/redhat-nodejs-imagestreams/0.0.4/src/templates/nodejs-imagestream.yaml b/charts/redhat/redhat/redhat-nodejs-imagestreams/0.0.4/src/templates/nodejs-imagestream.yaml new file mode 100644 index 000000000..d57f2fbfc --- /dev/null +++ b/charts/redhat/redhat/redhat-nodejs-imagestreams/0.0.4/src/templates/nodejs-imagestream.yaml @@ -0,0 +1,165 @@ +--- +kind: ImageStream +apiVersion: image.openshift.io/v1 +metadata: + name: nodejs + annotations: + openshift.io/display-name: Node.js +spec: + tags: + - name: latest + annotations: + openshift.io/display-name: Node.js (Latest) + openshift.io/provider-display-name: Red Hat, Inc. + description: |- + Build and run Node.js applications on UBI. For more information about using this builder image, including OpenShift considerations, see https://github.com/sclorg/s2i-nodejs-container/blob/master/20/README.md. + + WARNING: By selecting this tag, your application will automatically update to use the latest version of Node.js available on OpenShift, including major version updates. + iconClass: icon-nodejs + tags: builder,nodejs + supports: nodejs + sampleRepo: https://github.com/sclorg/nodejs-ex.git + from: + kind: ImageStreamTag + name: 20-ubi8 + referencePolicy: + type: Local + - name: 20-ubi9 + annotations: + openshift.io/display-name: Node.js 20 (UBI 9) + openshift.io/provider-display-name: Red Hat, Inc. + description: Build and run Node.js 20 applications on UBI 9. For more information + about using this builder image, including OpenShift considerations, see https://github.com/sclorg/s2i-nodejs-container/blob/master/20/README.md. + iconClass: icon-nodejs + tags: builder,nodejs + version: '20' + sampleRepo: https://github.com/sclorg/nodejs-ex.git + from: + kind: DockerImage + name: registry.redhat.io/ubi9/nodejs-20:latest + referencePolicy: + type: Local + - name: 18-ubi9 + annotations: + openshift.io/display-name: Node.js 18 (UBI 9) + openshift.io/provider-display-name: Red Hat, Inc. + description: Build and run Node.js 18 applications on UBI 9. For more information + about using this builder image, including OpenShift considerations, see https://github.com/sclorg/s2i-nodejs-container/blob/master/18/README.md. + iconClass: icon-nodejs + tags: builder,nodejs + version: '18' + sampleRepo: https://github.com/sclorg/nodejs-ex.git + from: + kind: DockerImage + name: registry.redhat.io/ubi9/nodejs-18:latest + referencePolicy: + type: Local + - name: 20-ubi9-minimal + annotations: + openshift.io/display-name: Node.js 20 (UBI 9 Minimal) + openshift.io/provider-display-name: Red Hat, Inc. + description: Build and run Node.js 20 applications on UBI 9 Minimal. For more + information about using this builder image, including OpenShift considerations, + see https://github.com/sclorg/s2i-nodejs-container/blob/master/20-minimal/README.md. + iconClass: icon-nodejs + tags: builder,nodejs + version: '20' + sampleRepo: https://github.com/sclorg/nodejs-ex.git + from: + kind: DockerImage + name: registry.redhat.io/ubi9/nodejs-20-minimal:latest + referencePolicy: + type: Local + - name: 18-ubi9-minimal + annotations: + openshift.io/display-name: Node.js 18 (UBI 9 Minimal) + openshift.io/provider-display-name: Red Hat, Inc. + description: Build and run Node.js 18 applications on UBI 9 Minimal. For more + information about using this builder image, including OpenShift considerations, + see https://github.com/sclorg/s2i-nodejs-container/blob/master/18-minimal/README.md. + iconClass: icon-nodejs + tags: builder,nodejs + version: '18' + sampleRepo: https://github.com/sclorg/nodejs-ex.git + from: + kind: DockerImage + name: registry.redhat.io/ubi9/nodejs-18-minimal:latest + referencePolicy: + type: Local + - name: 20-ubi8 + annotations: + openshift.io/display-name: Node.js 20 (UBI 8) + openshift.io/provider-display-name: Red Hat, Inc. + description: Build and run Node.js 20 applications on UBI 8. For more information + about using this builder image, including OpenShift considerations, see https://github.com/sclorg/s2i-nodejs-container/blob/master/20/README.md. + iconClass: icon-nodejs + tags: builder,nodejs + version: '20' + sampleRepo: https://github.com/sclorg/nodejs-ex.git + from: + kind: DockerImage + name: registry.redhat.io/ubi8/nodejs-20:latest + referencePolicy: + type: Local + - name: 18-ubi8 + annotations: + openshift.io/display-name: Node.js 18 (UBI 8) + openshift.io/provider-display-name: Red Hat, Inc. + description: Build and run Node.js 18 applications on UBI 8. For more information + about using this builder image, including OpenShift considerations, see https://github.com/sclorg/s2i-nodejs-container/blob/master/18/README.md. + iconClass: icon-nodejs + tags: builder,nodejs + version: '18' + sampleRepo: https://github.com/sclorg/nodejs-ex.git + from: + kind: DockerImage + name: registry.redhat.io/ubi8/nodejs-18:latest + referencePolicy: + type: Local + - name: 20-ubi8-minimal + annotations: + openshift.io/display-name: Node.js 20 (UBI 8 Minimal) + openshift.io/provider-display-name: Red Hat, Inc. + description: Build and run Node.js 20 applications on UBI 8 Minimal. For more + information about using this builder image, including OpenShift considerations, + see https://github.com/sclorg/s2i-nodejs-container/blob/master/20-minimal/README.md. + iconClass: icon-nodejs + tags: builder,nodejs + version: '20' + sampleRepo: https://github.com/sclorg/nodejs-ex.git + from: + kind: DockerImage + name: registry.redhat.io/ubi8/nodejs-20-minimal:latest + referencePolicy: + type: Local + - name: 18-ubi8-minimal + annotations: + openshift.io/display-name: Node.js 18 (UBI 8 Minimal) + openshift.io/provider-display-name: Red Hat, Inc. + description: Build and run Node.js 18 applications on UBI 8 Minimal. For more + information about using this builder image, including OpenShift considerations, + see https://github.com/sclorg/s2i-nodejs-container/blob/master/18-minimal/README.md. + iconClass: icon-nodejs + tags: builder,nodejs + version: '18' + sampleRepo: https://github.com/sclorg/nodejs-ex.git + from: + kind: DockerImage + name: registry.redhat.io/ubi8/nodejs-18-minimal:latest + referencePolicy: + type: Local + - name: 14-ubi7 + annotations: + openshift.io/display-name: Node.js 14 (UBI 7) + openshift.io/provider-display-name: Red Hat, Inc. + description: Build and run Node.js 14 applications on UBI 7. For more information + about using this builder image, including OpenShift considerations, see https://github.com/sclorg/s2i-nodejs-container/blob/master/14/README.md. + iconClass: icon-nodejs + tags: builder,nodejs,hidden + version: '14' + sampleRepo: https://github.com/sclorg/nodejs-ex.git + from: + kind: DockerImage + name: registry.redhat.io/ubi7/nodejs-14:latest + referencePolicy: + type: Local diff --git a/charts/redhat/redhat/redhat-nodejs-imagestreams/0.0.4/src/templates/tests/test-import-imagestream.yaml b/charts/redhat/redhat/redhat-nodejs-imagestreams/0.0.4/src/templates/tests/test-import-imagestream.yaml new file mode 100644 index 000000000..8c4e5836a --- /dev/null +++ b/charts/redhat/redhat/redhat-nodejs-imagestreams/0.0.4/src/templates/tests/test-import-imagestream.yaml @@ -0,0 +1,21 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ .Release.Name }}-connection-test" + namespace: "{{ .Release.Namespace }}" + annotations: + "helm.sh/hook": test +spec: + #serviceAccount: {{ .Values.serviceAccount }} + containers: + - name: "nodejs-imagestream-test" + image: "registry.access.redhat.com/ubi8/nodejs-20" + imagePullPolicy: IfNotPresent + command: + - '/bin/bash' + - '-ec' + - > + node -v + lookupPolicy: + local: true + restartPolicy: Never \ No newline at end of file diff --git a/charts/redhat/redhat/redhat-nodejs-imagestreams/0.0.4/src/values.schema.json b/charts/redhat/redhat/redhat-nodejs-imagestreams/0.0.4/src/values.schema.json new file mode 100644 index 000000000..9515e9236 --- /dev/null +++ b/charts/redhat/redhat/redhat-nodejs-imagestreams/0.0.4/src/values.schema.json @@ -0,0 +1,9 @@ +{ + "$schema": "http://json-schema.org/schema#", + "type": "object", + "properties": { + "namespace": { + "type": "string" + } + } +} \ No newline at end of file diff --git a/charts/redhat/redhat/redhat-nodejs-imagestreams/0.0.4/src/values.yaml b/charts/redhat/redhat/redhat-nodejs-imagestreams/0.0.4/src/values.yaml new file mode 100644 index 000000000..3894ddbca --- /dev/null +++ b/charts/redhat/redhat/redhat-nodejs-imagestreams/0.0.4/src/values.yaml @@ -0,0 +1 @@ +namespace: openshift diff --git a/charts/redhat/redhat/redhat-nodejs/0.0.1/nodejs-0.0.1.tgz b/charts/redhat/redhat/redhat-nodejs/0.0.1/nodejs-0.0.1.tgz new file mode 100644 index 000000000..00f75dba9 Binary files /dev/null and b/charts/redhat/redhat/redhat-nodejs/0.0.1/nodejs-0.0.1.tgz differ diff --git a/charts/redhat/redhat/redhat-nodejs/0.0.1/report.yaml b/charts/redhat/redhat/redhat-nodejs/0.0.1/report.yaml new file mode 100644 index 000000000..091deedbb --- /dev/null +++ b/charts/redhat/redhat/redhat-nodejs/0.0.1/report.yaml @@ -0,0 +1,85 @@ +apiversion: v1 +kind: verify-report +metadata: + tool: + verifier-version: 1.1.0 + profile: + VendorType: partner + version: v1.0 + chart-uri: https://redhat-developer.github.io/redhat-helm-charts/charts/nodejs-0.0.1.tgz + digest: sha256:3696fe9d93f49c0a87c2424b792056ce60ef373ce11b6c28b53674417b474314 + digests: + chart: sha256:3696fe9d93f49c0a87c2424b792056ce60ef373ce11b6c28b53674417b474314 + package: eeb75da3ec2e4d63fcc69aaa51d5d5a6fe0573414ac8d7341f73faed7c439ac4 + lastCertifiedTimestamp: "2021-07-09T22:47:54.970912+00:00" + certifiedOpenShiftVersions: 4.7.5 + chart: + name: nodejs + home: "" + sources: [] + version: 0.0.1 + description: A Helm chart to build and deploy Node.js applications + keywords: + - runtimes + - nodejs + maintainers: [] + icon: "" + apiversion: v2 + condition: "" + tags: "" + appversion: "" + deprecated: false + annotations: {} + kubeversion: "" + dependencies: [] + type: "" + chart-overrides: "" +results: + - check: v1.0/contains-values + type: Mandatory + outcome: PASS + reason: Values file exist + - check: v1.0/contains-values-schema + type: Mandatory + outcome: PASS + reason: Values schema file exist + - check: v1.0/helm-lint + type: Mandatory + outcome: PASS + reason: Helm lint successful + - check: v1.0/not-contain-csi-objects + type: Mandatory + outcome: PASS + reason: CSI objects do not exist + - check: v1.0/is-helm-v3 + type: Mandatory + outcome: PASS + reason: API version is V2, used in Helm 3 + - check: v1.0/contains-test + type: Mandatory + outcome: FAIL + reason: Chart test files do not exist + - check: v1.0/not-contains-crds + type: Mandatory + outcome: PASS + reason: Chart does not contain CRDs + - check: v1.0/images-are-certified + type: Mandatory + outcome: FAIL + reason: 'Image is not Red Hat certified : testRelease:latest : Respository not + found: testRelease' + - check: v1.0/chart-testing + type: Mandatory + outcome: FAIL + reason: |- + Error running process: executing helm with args "install nodejs-3xh8usxv7m /root/.cache/chart-verifier/https___redhat_developer_github_io_redhat_helm_charts_charts_nodejs_0_0_1_tgz/nodejs --namespace davptest --wait --values /tmp/chart-testing-349700203/values.yaml": exit status 1 + --- + Error: timed out waiting for the condition + - check: v1.0/has-readme + type: Mandatory + outcome: PASS + reason: Chart has a README + - check: v1.0/has-kubeversion + type: Mandatory + outcome: FAIL + reason: Kubernetes version is not specified diff --git a/charts/redhat/redhat/redhat-nodejs/0.0.2/src/Chart.yaml b/charts/redhat/redhat/redhat-nodejs/0.0.2/src/Chart.yaml new file mode 100644 index 000000000..c794ea09d --- /dev/null +++ b/charts/redhat/redhat/redhat-nodejs/0.0.2/src/Chart.yaml @@ -0,0 +1,8 @@ +apiVersion: v2 +name: nodejs +version: 0.0.2 +kubeVersion: '>= 1.21.0-0' +description: A Helm chart to build and deploy Node.js applications +keywords: + - runtimes + - nodejs diff --git a/charts/redhat/redhat/redhat-nodejs/0.0.2/src/README.md b/charts/redhat/redhat/redhat-nodejs/0.0.2/src/README.md new file mode 100644 index 000000000..8873eda41 --- /dev/null +++ b/charts/redhat/redhat/redhat-nodejs/0.0.2/src/README.md @@ -0,0 +1,60 @@ +# Node.js Helm Chart +A Helm chart for building and deploying a [Node.js](https://nodejs.org/) application on OpenShift. + +## Prerequisites +Below are prerequisites that may apply to your use case. + +### Push Secret +You will need to create a push secret if you want to push your image to an external registry. Use the following command as a reference to create your push secret: +```bash +oc create secret docker-registry my-push-secret --docker-server=$SERVER_URL --docker-username=$USERNAME --docker-password=$PASSWORD --docker-email=$EMAIL +``` + +You can use this secret by passing `--set build.output.pushSecret=my-push-secret` and `--set build.output.kind=DockerImage` to `helm install`, or you can configure these in a values file: +```yaml +build: + output: + kind: DockerImage + pushSecret: my-push-secret +``` + +## Values +This section describes the Values used to configure this chart. + +Below is a table the values used to configure this chart. + +| Value | Description | Default | Additional Information | +| ----- | ----------- | ------- | ---------------------- | +| `image.name` | Name of the image you want to build/deploy | Defaults to the Helm release name. | The chart will create/reference an [ImageStream](https://docs.openshift.com/container-platform/4.6/openshift_images/image-streams-manage.html) based on this value. | +| `image.tag` | Tag that you want to build/deploy | `latest` | The chart will create/reference an [ImageStreamTag](https://docs.openshift.com/container-platform/4.6/openshift_images/image-streams-manage.html#images-using-imagestream-tags_image-streams-managing) based on the name provided | +| `build.enabled` | Determines if build-related resources should be created. | `true` | Set this to `false` if you want to deploy a previously built image. Leave this set to `true` if you want to build and deploy a new image. | +| `build.uri` | Git URI that references your git repo | https://github.com/nodeshift-starters/nodejs-rest-http | This value defaults to a sample application. Be sure to override this if you want to build and deploy your own application. | +| `build.ref` | Git ref containing the application you want to build | main | - | +| `build.contextDir` | The sub-directory where the application source code exists | - | - | +| `build.output.kind` | Determines if the image will be pushed to an ImageStreamTag or a DockerImage (external registry) | ImageStreamTag | More information: More information: https://docs.openshift.com/container-platform/4.6/builds/managing-build-output.html | +| `build.output.pushSecret` | Push secret name | - | Used only if build.output.kind == 'DockerImage' | +| `build.pullSecret` | Image pull secret | - | More information: https://docs.openshift.com/container-platform/4.6/openshift_images/managing_images/using-image-pull-secrets.html | +| `build.env` | Freeform `env` stanza | - | More information: https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/ | +| `build.resources` | Freeform `resources` stanza | - | More information: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ | +| `deploy.replicas` | Number of pod replicas to deploy | `1` | - | +| `deploy.resources` | Freeform `resources` stanza | - | More information: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ | +| `deploy.serviceType` | Type of service to create | `ClusterIP` | More information: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types | +| `deploy.ports` | Freeform service `ports` stanza. | See [values.yaml](./values.yaml) | More information: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service | +| `deploy.route.enabled` | Determines if a Route should be created | `true` | Allows clients outside of OpenShift to access your application | +| `deploy.route.targetPort` | The port that the Route should target traffic to | `http` | - | +| `deploy.route.tls.enabled` | Determines if the Route should be TLS-encrypted | `true` | More information: https://docs.openshift.com/container-platform/4.6/networking/routes/secured-routes.html | +| `deploy.route.tls.termination` | Determines the type of TLS termination to use | `edge` | Options: `edge`, `reencrypt`, `passthrough` | +| `deploy.route.tls.insecureEdgeTerminationPolicy` | Determines if insecure traffic should be redirected | `Redirect` | Options: "Allow", "Disable", "Redirect" | +| `deploy.route.tls.key` | Provides key file contents | - | This is a secret. Do not check this value into git. | +| `deploy.route.tls.caCertificate` | Provides the cert authority certificate contents | - | - | +| `deploy.route.tls.certificate` | Provides certificate contents | - | - | +| `deploy.route.tls.destinationCACertificate` | Provides the destination CA Certificate for reencrypt routes | - | - | +| `deploy.livenessProbe` | Freeform `livenessProbe` stanza. | See [values.yaml](./values.yaml) | More information: https://docs.openshift.com/container-platform/4.6/applications/application-health.html#application-health-about_application-health | +| `deploy.readinessProbe` | Freeform `readinessProbe` stanza. | See [values.yaml](./values.yaml) | More information: https://docs.openshift.com/container-platform/4.6/applications/application-health.html#application-health-about_application-health | +| `deploy.env` | Freeform `env` stanza | - | More information: https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/ | +| `deploy.envFrom` | Freeform `envFrom` stanza | - | More information: https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/#configure-all-key-value-pairs-in-a-configmap-as-container-environment-variables | +| `deploy.volumeMounts` | Freeform volume mounts | - | More information: https://kubernetes.io/docs/concepts/storage/volumes/ | +| `deploy.volumes` | Freeform volumes | - | More information: https://kubernetes.io/docs/concepts/storage/volumes/ | +| `deploy.initContainers` | Freeform init containers | - | More information: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ | +| `deploy.extraContainers` | Freeform containers | - | More information: https://kubernetes.io/docs/concepts/workloads/pods/#pod-templates | +| `global.nameOverride` | Overrides the release name | - | Resources are named after the release name. Set this value if you want to override the release name. | diff --git a/charts/redhat/redhat/redhat-nodejs/0.0.2/src/templates/NOTES.txt b/charts/redhat/redhat/redhat-nodejs/0.0.2/src/templates/NOTES.txt new file mode 100644 index 000000000..635c5bdf2 --- /dev/null +++ b/charts/redhat/redhat/redhat-nodejs/0.0.2/src/templates/NOTES.txt @@ -0,0 +1,7 @@ +{{- if .Release.IsInstall }} +Your Node.js app is building! To view the build logs, run: + +oc logs bc/{{ include "nodejs.name" . }} --follow + +Note that your Deployment will report "ErrImagePull" and "ImagePullBackOff" until the build is complete. Once the build is complete, your image will be automatically rolled out. +{{- end }} diff --git a/charts/redhat/redhat/redhat-nodejs/0.0.2/src/templates/_helpers.tpl b/charts/redhat/redhat/redhat-nodejs/0.0.2/src/templates/_helpers.tpl new file mode 100644 index 000000000..67a88b115 --- /dev/null +++ b/charts/redhat/redhat/redhat-nodejs/0.0.2/src/templates/_helpers.tpl @@ -0,0 +1,21 @@ +{{- define "nodejs.name" -}} +{{ default .Release.Name .Values.global.nameOverride }} +{{- end -}} + +{{- define "nodejs.labels" -}} +helm.sh/chart: {{ .Chart.Name }} +{{ include "nodejs.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{- define "nodejs.selectorLabels" -}} +app.kubernetes.io/name: {{ include "nodejs.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end -}} + +{{- define "nodejs.imageName" -}} +{{ default (include "nodejs.name" .) .Values.image.name }}:{{ .Values.image.tag }} +{{- end -}} diff --git a/charts/redhat/redhat/redhat-nodejs/0.0.2/src/templates/buildconfig.yaml b/charts/redhat/redhat/redhat-nodejs/0.0.2/src/templates/buildconfig.yaml new file mode 100644 index 000000000..7bb0879be --- /dev/null +++ b/charts/redhat/redhat/redhat-nodejs/0.0.2/src/templates/buildconfig.yaml @@ -0,0 +1,46 @@ +{{- if .Values.build.enabled }} +apiVersion: build.openshift.io/v1 +kind: BuildConfig +metadata: + name: {{ include "nodejs.name" . }} + labels: + {{- include "nodejs.labels" . | nindent 4 }} +spec: + source: + type: Git + git: + uri: {{ .Values.build.uri }} + ref: {{ .Values.build.ref }} +{{- if .Values.build.contextDir }} + contextDir: {{ .Values.build.contextDir }} +{{- end }} + strategy: + type: Source + sourceStrategy: + from: + kind: ImageStreamTag + namespace: {{ .Values.build.source.namespace }} + name: {{ .Values.build.source.name }} + {{- if .Values.build.pullSecret }} + pullSecret: + name: {{ .Values.build.pullSecret }} + {{- end }} + {{- if .Values.build.env }} + env: + {{- tpl (toYaml .Values.build.env) . | nindent 8 }} + {{- end }} + output: + to: + kind: {{ .Values.build.output.kind }} + name: {{ include "nodejs.imageName" . }} + {{- if and (eq .Values.build.output.kind "DockerImage") .Values.build.output.pushSecret }} + pushSecret: + name: {{ .Values.build.output.pushSecret }} + {{- end }} +{{- if .Values.build.resources }} + resources: + {{- toYaml .Values.build.resources | nindent 4 }} +{{- end }} + triggers: + - type: ConfigChange +{{- end }} diff --git a/charts/redhat/redhat/redhat-nodejs/0.0.2/src/templates/deployment.yaml b/charts/redhat/redhat/redhat-nodejs/0.0.2/src/templates/deployment.yaml new file mode 100644 index 000000000..34e4d4757 --- /dev/null +++ b/charts/redhat/redhat/redhat-nodejs/0.0.2/src/templates/deployment.yaml @@ -0,0 +1,78 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "nodejs.name" . }} + labels: + {{- include "nodejs.labels" . | nindent 4 }} +{{- if and .Values.build.enabled (eq .Values.build.output.kind "ImageStreamTag") }} + annotations: + image.openshift.io/triggers: |- + [ + { + "from":{ + "kind":"ImageStreamTag", + "name":"{{ include "nodejs.imageName" . }}" + }, + "fieldPath":"spec.template.spec.containers[0].image" + } + ] +{{- end }} +spec: + replicas: {{ .Values.deploy.replicas }} + selector: + matchLabels: + {{- include "nodejs.selectorLabels" . | nindent 6 }} + template: + metadata: + labels: + {{- include "nodejs.labels" . | nindent 8 }} + spec: +{{- if .Values.deploy.initContainers }} + initContainers: + {{- tpl (toYaml .Values.deploy.initContainers) . | nindent 8 }} +{{- end }} + containers: + - name: web + image: {{ include "nodejs.imageName" . }} + ports: +{{- range .Values.deploy.ports }} + - name: {{ .name }} + containerPort: {{ .targetPort }} + protocol: {{ .protocol }} +{{- end }} +{{- if .Values.deploy.resources }} + resources: + {{- toYaml .Values.deploy.resources | nindent 12 }} +{{- end }} +{{- if .Values.deploy.livenessProbe }} + livenessProbe: + {{- tpl (toYaml .Values.deploy.livenessProbe) . | nindent 12 }} +{{- end }} +{{- if .Values.deploy.readinessProbe }} + readinessProbe: + {{- tpl (toYaml .Values.deploy.readinessProbe) . | nindent 12 }} +{{- end }} +{{- if .Values.deploy.env }} + env: + {{- tpl (toYaml .Values.deploy.env) . | nindent 12 }} +{{- end }} +{{- if .Values.deploy.envFrom }} + envFrom: + {{- tpl (toYaml .Values.deploy.envFrom) . | nindent 12 }} +{{- end }} + volumeMounts: +{{- if .Values.deploy.volumeMounts }} + {{- tpl (toYaml .Values.deploy.volumeMounts) . | nindent 12 }} +{{- end }} +{{- if .Values.deploy.extraContainers }} + {{- tpl (toYaml .Values.deploy.extraContainers) . | nindent 8 }} +{{- end }} + volumes: +{{- if .Values.deploy.applicationProperties.enabled }} + - name: application-properties + configMap: + name: {{ include "nodejs.name" . }} +{{- end }} +{{- if .Values.deploy.volumes }} + {{- tpl (toYaml .Values.deploy.volumes) . | nindent 8 }} +{{- end }} diff --git a/charts/redhat/redhat/redhat-nodejs/0.0.2/src/templates/imagestream.yaml b/charts/redhat/redhat/redhat-nodejs/0.0.2/src/templates/imagestream.yaml new file mode 100644 index 000000000..f9fbf53be --- /dev/null +++ b/charts/redhat/redhat/redhat-nodejs/0.0.2/src/templates/imagestream.yaml @@ -0,0 +1,11 @@ +{{- if and .Values.build.enabled (eq .Values.build.output.kind "ImageStreamTag") }} +apiVersion: image.openshift.io/v1 +kind: ImageStream +metadata: + name: {{ include "nodejs.name" . }} + labels: + {{- include "nodejs.labels" . | nindent 4 }} +spec: + lookupPolicy: + local: true +{{- end }} diff --git a/charts/redhat/redhat/redhat-nodejs/0.0.2/src/templates/route.yaml b/charts/redhat/redhat/redhat-nodejs/0.0.2/src/templates/route.yaml new file mode 100644 index 000000000..a9769a781 --- /dev/null +++ b/charts/redhat/redhat/redhat-nodejs/0.0.2/src/templates/route.yaml @@ -0,0 +1,35 @@ +{{- if .Values.deploy.route.enabled }} +apiVersion: route.openshift.io/v1 +kind: Route +metadata: + name: {{ include "nodejs.name" . }} + labels: + {{- include "nodejs.labels" . | nindent 4 }} +spec: + to: + kind: Service + name: {{ include "nodejs.name" . }} + port: + targetPort: {{ tpl .Values.deploy.route.targetPort . }} +{{- if .Values.deploy.route.tls.enabled }} + tls: + termination: {{ .Values.deploy.route.tls.termination }} + insecureEdgeTerminationPolicy: {{ .Values.deploy.route.tls.insecureEdgeTerminationPolicy }} + {{- if .Values.deploy.route.tls.key }} + key: |- + {{- .Values.deploy.route.tls.key | nindent 6 }} + {{- end }} + {{- if .Values.deploy.route.tls.destinationCACertificate }} + destinationCACertificate: |- + {{- .Values.deploy.route.tls.destinationCACertificate | nindent 6 }} + {{- end }} + {{- if .Values.deploy.route.tls.caCertificate }} + caCertificate: |- + {{- .Values.deploy.route.tls.caCertificate | nindent 6 }} + {{- end }} + {{- if .Values.deploy.route.tls.certificate }} + certificate: |- + {{- .Values.deploy.route.tls.certificate | nindent 6 }} + {{- end }} +{{- end }} +{{- end }} diff --git a/charts/redhat/redhat/redhat-nodejs/0.0.2/src/templates/service.yaml b/charts/redhat/redhat/redhat-nodejs/0.0.2/src/templates/service.yaml new file mode 100644 index 000000000..e1c64a490 --- /dev/null +++ b/charts/redhat/redhat/redhat-nodejs/0.0.2/src/templates/service.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "nodejs.name" . }} + labels: + {{- include "nodejs.labels" . | nindent 4 }} +spec: + type: {{ .Values.deploy.serviceType }} + selector: + {{- include "nodejs.selectorLabels" . | nindent 4 }} + ports: + {{- tpl (toYaml .Values.deploy.ports) . | nindent 4 }} diff --git a/charts/redhat/redhat/redhat-nodejs/0.0.2/src/templates/tests/test-chart.yaml b/charts/redhat/redhat/redhat-nodejs/0.0.2/src/templates/tests/test-chart.yaml new file mode 100644 index 000000000..c70cb8db0 --- /dev/null +++ b/charts/redhat/redhat/redhat-nodejs/0.0.2/src/templates/tests/test-chart.yaml @@ -0,0 +1,31 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ .Release.Name }}-test" + namespace: {{ .Release.Namespace }} + annotations: + "helm.sh/hook": test +spec: +{{- if .Values.build.pullSecret }} + {{- include "imagePullSecrets" . | nindent 2 }} +{{- end }} + containers: + - name: {{ .Release.Name }}-test + image: image-registry.openshift-image-registry.svc:5000/default/{{ .Release.Name }}:{{ .Values.image.tag | default "latest" }} + imagePullPolicy: {{ .Values.image.pullPolicy }} + command: + - /bin/sh + - -c + - | + echo "Checking for node process" + npm start& + PROCESS=`ps -ef | grep node | grep -v grep` + echo "$PROCESS" + if [ -z "$PROCESS" ] + then + echo "Process not found" + exit 1 + fi + echo "Process Found" + exit 0 + restartPolicy: Never diff --git a/charts/redhat/redhat/redhat-nodejs/0.0.2/src/values.schema.json b/charts/redhat/redhat/redhat-nodejs/0.0.2/src/values.schema.json new file mode 100644 index 000000000..39da4929e --- /dev/null +++ b/charts/redhat/redhat/redhat-nodejs/0.0.2/src/values.schema.json @@ -0,0 +1,167 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema", + "properties": { + "image": { + "type": "object", + "description": "Defines the image you want to build/deploy", + "properties": { + "name": { + "type": ["string", "null"], + "description": "Name of the image you want to build/deploy. Defaults to the release name." + }, + "tag": { + "type": "string", + "description": "Tag that you want to build/deploy" + } + } + }, + "deploy": { + "type": "object", + "title": "Deploy", + "description": "Specifiy deployment settings", + "required": [ + "replicas" + ], + "replicas": { + "default": 1, + "description": "Define number of nodejs pods running", + "title": "Replica Count", + "type": "integer" + }, + "serviceType": { + "type": "string", + "title": "Service Type", + "description": "Select Service type", + "default": "ClusterIP" + }, + "ports": { + "type": "object", + "title": "ports", + "description": "Specify Deployment Ports for Container", + "required": [ + "name", + "port", + "targetPort", + "protocol" + ], + "name": { + "type": "string", + "title": "Name", + "default": "http" + }, + "port": { + "type": "integer", + "title": "Port", + "description": "Define Port", + "default": 8080 + }, + "targetPort": { + "type": "integer", + "title": "Target Port", + "description": "Define Target Port", + "default": 8080 + }, + "protocol": { + "type": "string", + "description": "Specify which protocol to use", + "title": "Protocol", + "default": "TCP" + } + } + }, + "build": { + "type": "object", + "title": "Build", + "description": "Specify what repo to build from", + "required": [ + "enabled", + "uri", + "ref" + ], + "additionalProperties": true, + "properties": { + "enabled": { + "type": "boolean", + "title": "Enabled", + "description": "Uncheck if you want to use an already built image", + "default": true + }, + "uri": { + "type": "string", + "title": "uri", + "description": "Define repository uri", + "examples": [ + "https://github.com/nodeshift-starters/nodejs-rest-http" + ] + }, + "ref": { + "type": "string", + "title": "ref", + "description": "Define repo ref", + "examples": [ + "main", + "master" + ] + }, + "contextDir": { + "type": ["string", "null"], + "title": "contextDir", + "description": "What directory in the repo should the image build from" + }, + "output": { + "type": "object", + "description": "Specifies where the image will be pushed to once built. More information: https://docs.openshift.com/container-platform/4.6/builds/managing-build-output.html", + "properties": { + "kind": { + "type": "string", + "description": "Determines how the image will be pushed", + "enum": ["ImageStreamTag", "DockerImage"] + }, + "pushSecret": { + "type": ["string", "null"], + "description": "Push secret name, used only if kind == 'DockerImage'" + } + } + }, + "pullSecret": { + "type": ["string", "null"], + "description": "The image pull secret. More information: https://docs.openshift.com/container-platform/4.6/openshift_images/managing_images/using-image-pull-secrets.html" + }, + "env": { + "type": ["array", "null"], + "description": "Freeform env field. More information: https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/" + }, + "resources": { + "type": ["object", "null"], + "description": "Freeform resources field. More information: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" + }, + "source": { + "type": "object", + "description": "Specifies details for the source imagestream", + "properties": { + "namespace": { + "type": "string", + "description": "Namespace for source imagestream", + "default": "openshift" + }, + "name": { + "type": "string", + "description": "Name of source image", + "default": "nodejs:12" + } + } + } + } + }, + "global": { + "type": "object", + "description": "Values that should be global across parent and dependent Helm charts", + "properties": { + "nameOverride": { + "type": ["string", "null"], + "description": "Overrides the release name. Impacts the image name (if image.name is left blank) and impacts the name of created OCP resources" + } + } + } + } +} diff --git a/charts/redhat/redhat/redhat-nodejs/0.0.2/src/values.yaml b/charts/redhat/redhat/redhat-nodejs/0.0.2/src/values.yaml new file mode 100644 index 000000000..837d85507 --- /dev/null +++ b/charts/redhat/redhat/redhat-nodejs/0.0.2/src/values.yaml @@ -0,0 +1,149 @@ +image: + ## Name of the image you want to build/deploy + ## Defaults to the release name + name: + ## Tag that you want to build/deploy + tag: latest + +## Build-specific values (for configuring BuildConfig and ImageStream) +build: + ## Should build-related resources such as BuildConfig and ImageStream be created? + ## Set this to false if you just want to deploy a previously built image. + enabled: true + + ## Git URI, Ref, and ContextDir + uri: https://github.com/nodeshift-starters/nodejs-rest-http + ref: main + contextDir: + + ## Specifies where the image will be pushed to once built + ## More information: https://docs.openshift.com/container-platform/4.6/builds/managing-build-output.html + output: + ## Choices: ImageStreamTag, DockerImage + ## ImageStreamTag publishes to the internal registry + ## DockerImage publishes to an external registry (referred to by image.name and image.tag) + kind: ImageStreamTag + ## Push secret name, used only if kind == "DockerImage" + pushSecret: + + ## Image pull secret. More information: https://docs.openshift.com/container-platform/4.6/openshift_images/managing_images/using-image-pull-secrets.html + pullSecret: + + ## Freeform env for the OCP build. More information: https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/ + env: + # - name: VAR_NAME + # value: var-value + + ## Freeform resources for the OCP build. More information: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + resources: + # limits: + # cpu: "4" + # memory: 6Gi + # requests: + # cpu: "2" + # memory: 4Gi + + source: + namespace: openshift + name: nodejs:12 + +## Application/Deployment-specific values (For configuring Deployment, Service, Route, ConfigMap, etc) +deploy: + ## Number of pod replicas to deploy + replicas: 1 + + ## Freeform resources for Node. More information: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + resources: + # limits: + # cpu: 100m + # memory: 256Mi + # requests: + # cpu: 50m + # memory: 128Mi + + ## Type of service to create. More information: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types + serviceType: ClusterIP + + ## Freeform service ports. More information: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service + ports: + - name: http + port: 8080 + targetPort: 8080 + protocol: TCP + + ## For creating a Route, allowing your application to be accessed from outside the OCP cluster + route: + enabled: true + targetPort: http + ## More information: https://docs.openshift.com/container-platform/4.6/networking/routes/secured-routes.html + tls: + enabled: true + termination: edge + insecureEdgeTerminationPolicy: Redirect + ## IMPORTANT: Do not check 'key' into git! + key: + caCertificate: + certificate: + destinationCACertificate: + + ## Freeform Liveness Probe. More information: https://docs.openshift.com/container-platform/4.6/applications/application-health.html#application-health-about_application-health + livenessProbe: + tcpSocket: + port: http + ## If you don't want a livenessProbe, override like this in your values file + # livenessProbe: '' + + ## Freeform Readiness Probe. More information: https://docs.openshift.com/container-platform/4.6/applications/application-health.html#application-health-about_application-health + readinessProbe: + httpGet: + path: / + port: http + ## If you don't want a readinessProbe, override like this in your values file + # readinessProve: '' + + ## Freeform env for the Quarkus app. More information: https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/ + env: + # - name: VAR_NAME + # value: var-value + + ## Freeform envFrom for the Quarkus app. More information: https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/#configure-all-key-value-pairs-in-a-configmap-as-container-environment-variables + envFrom: + # - configMapRef: + # name: special-config + + ## Application properties file for configuring the Quarkus app + applicationProperties: + ## Determines if application properties should be created in a configmap and mounted to the Quarkus container + enabled: false + ## Location to mount the properties file + mountPath: /deployments/config/ + ## Application properties file contents + properties: |- + ## Properties go here + + ## Freeform volume mounts. More information: https://kubernetes.io/docs/concepts/storage/volumes/ + volumeMounts: + # - name: my-config + # mountPath: /etc/config + + ## Freeform volumes. More information: https://kubernetes.io/docs/concepts/storage/volumes/ + volumes: + # - name: my-config + # configMap: + # name: my-configmap + + ## Freeform init containers: More information: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ + initContainers: + # - name: my-init-container + # command: ["echo", "hello"] + # image: registry.redhat.io/ubi8/ubi-minimal + + ## Freeform containers: More information: https://kubernetes.io/docs/concepts/workloads/pods/#pod-templates + extraContainers: + # - name: my-extra-container + # command: ["sleep", "infinity"] + # image: registry.redhat.io/ubi8/ubi-minimal + +global: + ## Override the release name + nameOverride: diff --git a/charts/redhat/redhat/redhat-nodejs/OWNERS b/charts/redhat/redhat/redhat-nodejs/OWNERS new file mode 100644 index 000000000..70f642cab --- /dev/null +++ b/charts/redhat/redhat/redhat-nodejs/OWNERS @@ -0,0 +1,10 @@ +chart: + name: redhat-nodejs + shortDescription: This is the Red Hat NodeJs chart +publicPgpKey: null +users: +- githubUsername: dperaza4dustbit +- githubUsername: AshCripps +vendor: + label: redhat + name: Red Hat diff --git a/charts/redhat/redhat/redhat-perl-dancer-template/0.0.1/src/Chart.yaml b/charts/redhat/redhat/redhat-perl-dancer-template/0.0.1/src/Chart.yaml new file mode 100644 index 000000000..1360fd042 --- /dev/null +++ b/charts/redhat/redhat/redhat-perl-dancer-template/0.0.1/src/Chart.yaml @@ -0,0 +1,16 @@ +description: |- + This content is experimental, do not use it in production. An example Dancer application with no database. For more information + about using this template, including OpenShift considerations, + see https://github.com/sclorg/dancer-ex/blob/master/README.md. +annotations: + charts.openshift.io/name: Red Hat Dancer application on UBI (experimental) + charts.openshift.io/provider: Red Hat + charts.openshift.io/providerType: redhat +name: perl-dancer-template +tags: quickstart,perl,dancer +apiVersion: v2 +appVersion: 0.0.1 +kubeVersion: '>=1.20.0' +sources: + - https://github.com/sclorg/helm-charts +version: 0.0.1 \ No newline at end of file diff --git a/charts/redhat/redhat/redhat-perl-dancer-template/0.0.1/src/README.md b/charts/redhat/redhat/redhat-perl-dancer-template/0.0.1/src/README.md new file mode 100644 index 000000000..2fa0ed104 --- /dev/null +++ b/charts/redhat/redhat/redhat-perl-dancer-template/0.0.1/src/README.md @@ -0,0 +1,26 @@ +# Perl application template with no database helm chart + +A Helm chart for building and deploying a [Dancer-ex](https://github/sclorg/dancer-ex) application on OpenShift. + +For more information about helm charts see the official [Helm Charts Documentation](https://helm.sh/). + +You need to have access to a cluster for each operation with OpenShift 4, like deploying and testing. + +## Values +Below is a table of each value used to configure this chart. + +| Value | Description | Default | Additional Information | +|--------------------------|---------------------------------------------------------------------------------------------------------|--------------------------------------------|------------------------| +| `name` | The name assigned to all of the frontend objects defined in this helm chart. | `dancer-example` | | +| `namespace` | The OpenShift Namespace where the ImageStream resides. | `dancer-example` | | +| `perl_version ` | Specify PERL imagestream tag. | `5.30-ubi8` | | +| `memory_limit` | Maximum amount of memory the container can use. | `521Mi` | | +| `application_domain` | The exposed hostname that will route to the httpd service, if left blank a value will be defaulted. | | | +| `context_dir` | Set this to the relative path to your project if it is not in the root of your repository. | | | +| `cpan_mirror` | The custom CPAN mirror URL. | | | +| `github_webhook_secret` | Github trigger secret. A difficult to guess string encoded as part of the webhook URL. Not encrypted. | | | +| `source_repository_url` | The URL of the repository with your application source code. | `https://github.com/sclorg/cakephp-ex.git` | | +| `source_repository_ref` | Set this to a branch name, tag or other ref of your repository if you are not using the default branch. | `master` | | +| `perl_apache2_reload` | Set this to \"true\" to enable automatic reloading of modified Perl modules. | | | +| `secret_key_base` | Your secret key for verifying the integrity of signed cookies. | | | + diff --git a/charts/redhat/redhat/redhat-perl-dancer-template/0.0.1/src/templates/buildconfig.yaml b/charts/redhat/redhat/redhat-perl-dancer-template/0.0.1/src/templates/buildconfig.yaml new file mode 100644 index 000000000..38b2d5b03 --- /dev/null +++ b/charts/redhat/redhat/redhat-perl-dancer-template/0.0.1/src/templates/buildconfig.yaml @@ -0,0 +1,38 @@ +apiVersion: build.openshift.io/v1 +kind: BuildConfig +metadata: + annotations: + description: Defines how to build the application + template.alpha.openshift.io/wait-for-ready: "true" + labels: + app: dancer-example + template: dancer-example + name: {{ .Values.name }} +spec: + output: + to: + kind: ImageStreamTag + name: {{ .Values.name }}:latest + postCommit: + script: perl -I extlib/lib/perl5 -I lib t/* + source: + contextDir: {{ .Values.context_dir }} + git: + ref: {{ .Values.source_repository_ref }} + uri: {{ .Values.source_repository_url }} + type: Git + strategy: + sourceStrategy: + env: + - name: CPAN_MIRROR + value: {{ .Values.cpan_mirror }} + from: + kind: ImageStreamTag + name: perl:{{ .Values.perl_version }} + type: Source + triggers: + - type: ImageChange + - type: ConfigChange + - github: + secret: {{ .Values.github_webhook_secret }} + type: GitHub diff --git a/charts/redhat/redhat/redhat-perl-dancer-template/0.0.1/src/templates/deployment.yaml b/charts/redhat/redhat/redhat-perl-dancer-template/0.0.1/src/templates/deployment.yaml new file mode 100644 index 000000000..b9d723f7a --- /dev/null +++ b/charts/redhat/redhat/redhat-perl-dancer-template/0.0.1/src/templates/deployment.yaml @@ -0,0 +1,56 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + annotations: + description: Defines how to deploy the application server + image.openshift.io/triggers: |- + [ + { + "from": { + "kind": "ImageStreamTag", + "name": "{{ .Values.name }}:latest" + }, + "fieldPath": "spec.template.spec.containers[0].image" + } + ] + template.alpha.openshift.io/wait-for-ready: "true" + labels: + app: dancer-example + template: dancer-example + name: {{ .Values.name }} +spec: + replicas: 1 + selector: + matchLabels: + name: {{ .Values.name }} + strategy: + type: RollingUpdate + template: + metadata: + labels: + name: {{ .Values.name }} + name: {{ .Values.name }} + spec: + containers: + - env: + - name: PERL_APACHE2_RELOAD + value: {{ .Values.perl_apache2_reload }} + image: " " + livenessProbe: + httpGet: + path: / + port: 8080 + initialDelaySeconds: 30 + timeoutSeconds: 3 + name: {{ .Values.name }} + ports: + - containerPort: 8080 + readinessProbe: + httpGet: + path: / + port: 8080 + initialDelaySeconds: 3 + timeoutSeconds: 3 + resources: + limits: + memory: {{ .Values.memory_limit }} diff --git a/charts/redhat/redhat/redhat-perl-dancer-template/0.0.1/src/templates/imagestream.yaml b/charts/redhat/redhat/redhat-perl-dancer-template/0.0.1/src/templates/imagestream.yaml new file mode 100644 index 000000000..cd14a8a14 --- /dev/null +++ b/charts/redhat/redhat/redhat-perl-dancer-template/0.0.1/src/templates/imagestream.yaml @@ -0,0 +1,9 @@ +apiVersion: image.openshift.io/v1 +kind: ImageStream +metadata: + annotations: + description: Keeps track of changes in the application image + labels: + app: dancer-example + template: dancer-example + name: {{ .Values.name }} \ No newline at end of file diff --git a/charts/redhat/redhat/redhat-perl-dancer-template/0.0.1/src/templates/route.yaml b/charts/redhat/redhat/redhat-perl-dancer-template/0.0.1/src/templates/route.yaml new file mode 100644 index 000000000..1dd2d5162 --- /dev/null +++ b/charts/redhat/redhat/redhat-perl-dancer-template/0.0.1/src/templates/route.yaml @@ -0,0 +1,12 @@ +apiVersion: route.openshift.io/v1 +kind: Route +metadata: + labels: + app: dancer-example + template: dancer-example + name: {{ .Values.name }} +spec: + host: {{ .Values.application_domain }} + to: + kind: Service + name: {{ .Values.name }} diff --git a/charts/redhat/redhat/redhat-perl-dancer-template/0.0.1/src/templates/service.yaml b/charts/redhat/redhat/redhat-perl-dancer-template/0.0.1/src/templates/service.yaml new file mode 100644 index 000000000..e82fd0203 --- /dev/null +++ b/charts/redhat/redhat/redhat-perl-dancer-template/0.0.1/src/templates/service.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: Service +metadata: + annotations: + description: Exposes and load balances the application pods + labels: + app: dancer-example + template: dancer-example + name: {{ .Values.name }} +spec: + ports: + - name: web + port: 8080 + targetPort: 8080 + selector: + name: {{ .Values.name }} diff --git a/charts/redhat/redhat/redhat-perl-dancer-template/0.0.1/src/templates/tests/test-dancer-connection.yaml b/charts/redhat/redhat/redhat-perl-dancer-template/0.0.1/src/templates/tests/test-dancer-connection.yaml new file mode 100644 index 000000000..5d36da4c3 --- /dev/null +++ b/charts/redhat/redhat/redhat-perl-dancer-template/0.0.1/src/templates/tests/test-dancer-connection.yaml @@ -0,0 +1,22 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ .Release.Name }}-connection-test" + annotations: + "helm.sh/hook": test + labels: + name: {{ .Values.name }} + template: {{ .Values.name }} +spec: + #serviceAccount: {{ .Values.serviceAccount }} + containers: + - name: "{{ .Release.Name }}-connection-test" + namespace: "{{ .Release.Namespace }}" + image: "registry.redhat.io/ubi8/perl-530:latest" + imagePullPolicy: IfNotPresent + command: + - '/bin/bash' + - '-exc' + - > + curl {{ .Values.name }}.{{ .Release.Namespace }}:8080 | grep "{{ .Values.expected_str }}" + restartPolicy: Never diff --git a/charts/redhat/redhat/redhat-perl-dancer-template/0.0.1/src/values.schema.json b/charts/redhat/redhat/redhat-perl-dancer-template/0.0.1/src/values.schema.json new file mode 100644 index 000000000..d2c40fe9a --- /dev/null +++ b/charts/redhat/redhat/redhat-perl-dancer-template/0.0.1/src/values.schema.json @@ -0,0 +1,60 @@ +{ + "$schema": "http://json-schema.org/schema#", + "type": "object", + "properties": { + "namespace": { + "type": "string" + }, + "name": { + "type": "string", + "description": "The name assigned to all of the frontend objects defined in this template." + }, + "memory_limit": { + "type": "string", + "title": "Memory limit", + "form": true, + "render": "slider", + "sliderMin": 512, + "sliderMax": 65536, + "sliderUnit": "Mi" + }, + "perl_version": { + "type": "string", + "description": "Specify PERL imagestream tag", + "enum": [ "latest", "5.30-el7", "5.26-ubi8", "5.30-ubi8", "5.30-ubi9", "5.32-ubi8", "5.32-ubi9" ] + }, + "application_domain": { + "type": "string", + "description": "The exposed hostname that will route to the httpd service, if left blank a value will be defaulted." + }, + "context_dir": { + "type": "string", + "description": "Set this to the relative path to your project if it is not in the root of your repository." + }, + "cpan_mirror": { + "type": "string", + "description": "The custom CPAN mirror URL" + }, + "github_webhook_secret": { + "type": "string", + "description": "Github trigger secret. A difficult to guess string encoded as part of the webhook URL. Not encrypted." + }, + "perl_apache2_reload": { + "type": "string", + "description": "Set this to \\\"true\\\" to enable automatic reloading of modified Perl modules." + }, + "secret_key_base": { + "type": "string", + "description": "Your secret key for verifying the integrity of signed cookies." + }, + "source_repository_url": { + "type": "string", + "description": "The URL of the repository with your application source code." + }, + "source_repository_ref": { + "type": "string", + "description": "Set this to a branch name, tag or other ref of your repository if you are not using the default branch." + } + } +} + diff --git a/charts/redhat/redhat/redhat-perl-dancer-template/0.0.1/src/values.yaml b/charts/redhat/redhat/redhat-perl-dancer-template/0.0.1/src/values.yaml new file mode 100644 index 000000000..6a1042942 --- /dev/null +++ b/charts/redhat/redhat/redhat-perl-dancer-template/0.0.1/src/values.yaml @@ -0,0 +1,12 @@ +application_domain: "" # TODO: must define a default value for .application_domain +context_dir: "" # TODO: must define a default value for .context_dir +cpan_mirror: "" # TODO: must define a default value for .cpan_mirror +github_webhook_secret: "SOMETHING" # TODO: must define a default value for .github_webhook_secret +memory_limit: 512Mi +name: dancer-example +namespace: openshift +perl_apache2_reload: "" # TODO: must define a default value for .perl_apache2_reload +perl_version: 5.30-ubi8 +secret_key_base: "" # TODO: must define a default value for .secret_key_base +source_repository_ref: master # TODO: must define a default value for .source_repository_ref +source_repository_url: https://github.com/sclorg/dancer-ex.git diff --git a/charts/redhat/redhat/redhat-perl-dancer-template/OWNERS b/charts/redhat/redhat/redhat-perl-dancer-template/OWNERS new file mode 100644 index 000000000..16c68da57 --- /dev/null +++ b/charts/redhat/redhat/redhat-perl-dancer-template/OWNERS @@ -0,0 +1,9 @@ +chart: + name: redhat-perl-dancer-template + description: This is the Red Hat quickstart Dancer application helm chart +publicPgpKey: null +users: + - githubUsername: phracek +vendor: + label: redhat + name: Red Hat diff --git a/charts/redhat/redhat/redhat-postgresql-imagestreams/0.0.1/src/Chart.yaml b/charts/redhat/redhat/redhat-postgresql-imagestreams/0.0.1/src/Chart.yaml new file mode 100644 index 000000000..92289fefd --- /dev/null +++ b/charts/redhat/redhat/redhat-postgresql-imagestreams/0.0.1/src/Chart.yaml @@ -0,0 +1,13 @@ +description: |- + Red Hat PostgreSQL database service imagestreams. + For more information about PostgreSQL container see https://github.com/sclorg/postgresql-container/. +annotations: + charts.openshift.io/name: Red Hat PostgreSQL database service imagestreams. +apiVersion: v2 +appVersion: 0.0.1 +kubeVersion: '>=1.20.0' +name: postgresql-imagestreams +tags: database,postgresql +sources: + - https://github.com/sclorg/helm-charts +version: 0.0.1 diff --git a/charts/redhat/redhat/redhat-postgresql-imagestreams/0.0.1/src/README.md b/charts/redhat/redhat/redhat-postgresql-imagestreams/0.0.1/src/README.md new file mode 100644 index 000000000..32e3ed993 --- /dev/null +++ b/charts/redhat/redhat/redhat-postgresql-imagestreams/0.0.1/src/README.md @@ -0,0 +1,50 @@ +# PostgreSQL Helm Chart imagestreams + +The file contains all supported PostgreSQL imagestreams. + +For more information about helm charts see the offical [Helm Charts Documentation](https://helm.sh/). + +You need to have access to a cluster for each operation with OpenShift 4, like deploying and testing. + +## How to start with helm charts + +The first download and install Helm. Follow instructions mentioned [here](https://helm.sh/docs/intro/install/). + +## How to work with PostgreSQL helm chart + +Before deploying helm chart to OpenShift, you have to create a package. +This can be done by command: + +```commandline +$ helm package ./ +``` + +that will create a helm package named, `postgresql-imagestreams-v0.0.1.tgz` in this directory. + +The next step is to upload Helm Chart to OpenShift. This is done by command: + +```commandline +$ helm install postgresql-imagestreams postgresql-imagestreams-v0.0.1.tgz +``` + +In order to check if everything is imported properly, run command: +```commandline +$ oc get is -o json +``` +that will print all support PostgreSQL imagestreams. + + +## Troubleshooting +For case you need a computer readable output you can add to command mentioned above option `-o json`. + +In case of installation failed for reason like: +```commandline +// Error: INSTALLATION FAILED: cannot re-use a name that is still in use +``` +you have to uninstall previous PostgreSQL Helm Chart by command: + +```commandline +$ helm uninstall postgresql-imagestreams +``` + + diff --git a/charts/redhat/redhat/redhat-postgresql-imagestreams/0.0.1/src/templates/imagestreams.yaml b/charts/redhat/redhat/redhat-postgresql-imagestreams/0.0.1/src/templates/imagestreams.yaml new file mode 100644 index 000000000..252121d38 --- /dev/null +++ b/charts/redhat/redhat/redhat-postgresql-imagestreams/0.0.1/src/templates/imagestreams.yaml @@ -0,0 +1,181 @@ +kind: ImageStream +apiVersion: image.openshift.io/v1 +metadata: + name: postgresql + annotations: + openshift.io/display-name: PostgreSQL +spec: + tags: + - name: latest + annotations: + openshift.io/display-name: PostgreSQL (Latest) + openshift.io/provider-display-name: 'Red Hat, Inc.' + description: >- + Provides a PostgreSQL database on RHEL. For more information about + using this database image, including OpenShift considerations, see + https://github.com/sclorg/postgresql-container/blob/master/README.md. + + + WARNING: By selecting this tag, your application will automatically + update to use the latest version of PostgreSQL available on OpenShift, + including major version updates. + iconClass: icon-postgresql + tags: 'database,postgresql' + from: + kind: ImageStreamTag + name: 13-el8 + referencePolicy: + type: Local + - name: 13-el9 + annotations: + openshift.io/display-name: PostgreSQL 13 (RHEL 9) + openshift.io/provider-display-name: 'Red Hat, Inc.' + description: >- + Provides a PostgreSQL 13 database on RHEL 9. For more information + about using this database image, including OpenShift considerations, + see + https://github.com/sclorg/postgresql-container/blob/master/README.md. + iconClass: icon-postgresql + tags: 'database,postgresql' + version: '13' + from: + kind: DockerImage + name: 'registry.redhat.io/rhel9/postgresql-13:latest' + referencePolicy: + type: Local + - name: 13-el8 + annotations: + openshift.io/display-name: PostgreSQL 13 (RHEL 8) + openshift.io/provider-display-name: 'Red Hat, Inc.' + description: >- + Provides a PostgreSQL 13 database on RHEL 8. For more information + about using this database image, including OpenShift considerations, + see + https://github.com/sclorg/postgresql-container/blob/master/README.md. + iconClass: icon-postgresql + tags: 'database,postgresql' + version: '13' + from: + kind: DockerImage + name: 'registry.redhat.io/rhel8/postgresql-13:latest' + referencePolicy: + type: Local + - name: 13-el7 + annotations: + openshift.io/display-name: PostgreSQL 13 (RHEL 7) + openshift.io/provider-display-name: 'Red Hat, Inc.' + description: >- + Provides a PostgreSQL 13 database on RHEL 7. For more information + about using this database image, including OpenShift considerations, + see + https://github.com/sclorg/postgresql-container/blob/master/README.md. + iconClass: icon-postgresql + tags: 'database,postgresql' + version: '13' + from: + kind: DockerImage + name: 'registry.redhat.io/rhscl/postgresql-13-rhel7:latest' + referencePolicy: + type: Local + - name: 12-el8 + annotations: + openshift.io/display-name: PostgreSQL 12 (RHEL 8) + openshift.io/provider-display-name: 'Red Hat, Inc.' + description: >- + Provides a PostgreSQL 12 database on RHEL 8. For more information + about using this database image, including OpenShift considerations, + see + https://github.com/sclorg/postgresql-container/blob/master/README.md. + iconClass: icon-postgresql + tags: 'database,postgresql' + version: '12' + from: + kind: DockerImage + name: 'registry.redhat.io/rhel8/postgresql-12:latest' + referencePolicy: + type: Local + - name: 12-el7 + annotations: + openshift.io/display-name: PostgreSQL 12 (RHEL 7) + openshift.io/provider-display-name: 'Red Hat, Inc.' + description: >- + Provides a PostgreSQL 12 database on RHEL 7. For more information + about using this database image, including OpenShift considerations, + see + https://github.com/sclorg/postgresql-container/blob/master/README.md. + iconClass: icon-postgresql + tags: 'database,postgresql' + version: '12' + from: + kind: DockerImage + name: 'registry.redhat.io/rhscl/postgresql-12-rhel7:latest' + referencePolicy: + type: Local + - name: '12' + annotations: + openshift.io/display-name: PostgreSQL (Ephemeral) 12 + openshift.io/provider-display-name: 'Red Hat, Inc.' + description: >- + Provides a PostgreSQL 12 database on RHEL 7. For more information + about using this database image, including OpenShift considerations, + see + https://github.com/sclorg/postgresql-container/blob/master/README.md. + iconClass: icon-postgresql + tags: 'database,postgresql,hidden' + version: '12' + from: + kind: DockerImage + name: 'registry.redhat.io/rhscl/postgresql-12-rhel7:latest' + referencePolicy: + type: Local + - name: 10-el8 + annotations: + openshift.io/display-name: PostgreSQL 10 (RHEL 8) + openshift.io/provider-display-name: 'Red Hat, Inc.' + description: >- + Provides a PostgreSQL 10 database on RHEL 8. For more information + about using this database image, including OpenShift considerations, + see + https://github.com/sclorg/postgresql-container/blob/master/README.md. + iconClass: icon-postgresql + tags: 'database,postgresql' + version: '10' + from: + kind: DockerImage + name: 'registry.redhat.io/rhel8/postgresql-10:latest' + referencePolicy: + type: Local + - name: 10-el7 + annotations: + openshift.io/display-name: PostgreSQL 10 (RHEL 7) + openshift.io/provider-display-name: 'Red Hat, Inc.' + description: >- + Provides a PostgreSQL 10 database on RHEL 7. For more information + about using this database image, including OpenShift considerations, + see + https://github.com/sclorg/postgresql-container/blob/master/README.md. + iconClass: icon-postgresql + tags: 'database,postgresql' + version: '10' + from: + kind: DockerImage + name: 'registry.redhat.io/rhscl/postgresql-10-rhel7:latest' + referencePolicy: + type: Local + - name: '10' + annotations: + openshift.io/display-name: PostgreSQL (Ephemeral) 10 + openshift.io/provider-display-name: 'Red Hat, Inc.' + description: >- + Provides a PostgreSQL 10 database on RHEL 7. For more information + about using this database image, including OpenShift considerations, + see + https://github.com/sclorg/postgresql-container/blob/master/README.md. + iconClass: icon-postgresql + tags: 'database,postgresql,hidden' + version: '10' + from: + kind: DockerImage + name: 'registry.redhat.io/rhscl/postgresql-10-rhel7:latest' + referencePolicy: + type: Local diff --git a/charts/redhat/redhat/redhat-postgresql-imagestreams/OWNERS b/charts/redhat/redhat/redhat-postgresql-imagestreams/OWNERS new file mode 100644 index 000000000..ad83eaf18 --- /dev/null +++ b/charts/redhat/redhat/redhat-postgresql-imagestreams/OWNERS @@ -0,0 +1,9 @@ +chart: + name: redhat-postgresql-imagestreams + description: The Red Hat PostgreSQL imagestreams +publicPgpKey: null +users: + - githubUsername: phracek +vendor: + label: redhat + name: Red Hat diff --git a/charts/redhat/redhat/redhat-postgresql-persistent/0.0.1/src/Chart.yaml b/charts/redhat/redhat/redhat-postgresql-persistent/0.0.1/src/Chart.yaml new file mode 100644 index 000000000..f687667b6 --- /dev/null +++ b/charts/redhat/redhat/redhat-postgresql-persistent/0.0.1/src/Chart.yaml @@ -0,0 +1,14 @@ +description: |- + PostgreSQL database service, with persistent storage. For more information about using this template, including OpenShift considerations, see https://github.com/sclorg/postgresql-container/. + + NOTE: Scaling to more than one replica is not supported. You must have persistent volumes available in your cluster to use this template. +annotations: + charts.openshift.io/name: Red Hat PostgreSQL database service, with persistent storage. +apiVersion: v2 +appVersion: 0.0.1 +name: postgresql-persistent +tags: database,postgresql +sources: + - https://github.com/sclorg/helm-charts +version: 0.0.1 + diff --git a/charts/redhat/redhat/redhat-postgresql-persistent/0.0.1/src/README.md b/charts/redhat/redhat/redhat-postgresql-persistent/0.0.1/src/README.md new file mode 100644 index 000000000..a76c76491 --- /dev/null +++ b/charts/redhat/redhat/redhat-postgresql-persistent/0.0.1/src/README.md @@ -0,0 +1,79 @@ +# PostgreSQL helm chart + +This repository contains helm chart for PostgreSQL image build and deployed on OpenShift. + +For more information about helm charts see the offical [Helm Charts Documentation](https://helm.sh/). + +You need to have access to a cluster for each operation with OpenShift 4, like deploying and testing. + +## How to start with helm charts + +The first download and install Helm. Follow instructions mentioned [here](https://helm.sh/docs/intro/install/). + +## Prerequisite for PostgreSQL-persistent helm chart +Before deploying helm chart to OpenShift, you have to create a package for postgresql-imagestream. +See details [postgresql-imagestreams](../postgresql-imagestreams/README.md) + + +## How to work with PostgreSQL-persistent helm chart + +The default PostgreSQL helm chart configuration is for RHEL7 PostgreSQL version 10. + +This can be done by command: + +```commandline +$ helm package ./ +``` + +that will create a helm package named, `postgresql-persistent-v0.0.1.tgz` in this directory. + +The next step is to upload Helm Chart to OpenShift. This is done by command: + +```commandline +$ helm install postgresql-persistent postgresql-persistent-v0.0.1.tgz +``` + +In case you would like to use this helm chart for different versions and even RHEL versions. +you need to modify installing command. + +E.g. For RHEL8 + +```commandline +$ helm install postgresql-persistent postgresql-persistent-v0.0.1.tgz --set image.repository=registry.redhat.io/rhel8/postgresql-13 --set image.version=13 +``` +The values that can be overwritten are specified in file [values.yaml](./values.yaml) + +To test in PostgreSQL helm chart is working properly run command: + +```commandline +$ helm test postgresql-persistent --logs +``` +that will print output like: +```commandline +NAME: postgresql-persistent +LAST DEPLOYED: Mon Mar 27 09:36:23 2023 +NAMESPACE: pgsql-13 +STATUS: deployed +REVISION: 1 +TEST SUITE: postgresql-persistent-connection-test +Last Started: Mon Mar 27 09:37:13 2023 +Last Completed: Mon Mar 27 09:37:19 2023 +Phase: Succeeded + +POD LOGS: postgresql-persistent-connection-test +postgresql-testing:5432 - accepting connections +``` +## Troubleshooting +For case you need a computer readable output you can add to command mentioned above option `-o json`. + +In case of installation failed for reason like: +```commandline +// Error: INSTALLATION FAILED: cannot re-use a name that is still in use +``` +you have to uninstall previous PostgreSQL Helm Chart by command: + +```commandline +$ helm uninstall postgresql-persistent +``` + + diff --git a/charts/redhat/redhat/redhat-postgresql-persistent/0.0.1/src/templates/deploymentconfig.yaml b/charts/redhat/redhat/redhat-postgresql-persistent/0.0.1/src/templates/deploymentconfig.yaml new file mode 100644 index 000000000..5107172ba --- /dev/null +++ b/charts/redhat/redhat/redhat-postgresql-persistent/0.0.1/src/templates/deploymentconfig.yaml @@ -0,0 +1,89 @@ +apiVersion: apps.openshift.io/v1 +kind: DeploymentConfig +metadata: + annotations: + template.alpha.openshift.io/wait-for-ready: "true" + labels: + template: postgresql-persistent-template + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + name: {{ .Release.Namespace }} +spec: + replicas: 1 + selector: + name: {{ .Values.database_service_name }} + strategy: + type: Recreate + template: + metadata: + labels: + name: {{ .Values.database_service_name }} + spec: + containers: + - capabilities: {} + env: + - name: POSTGRESQL_USER + valueFrom: + secretKeyRef: + key: database-user + name: {{ .Values.database_service_name }} + - name: POSTGRESQL_PASSWORD + valueFrom: + secretKeyRef: + key: database-password + name: {{ .Values.database_service_name }} + - name: POSTGRESQL_DATABASE + valueFrom: + secretKeyRef: + key: database-name + name: {{ .Values.database_service_name }} + image: "postgresql:{{ .Values.image.tag }}" + imagePullPolicy: IfNotPresent + livenessProbe: + exec: + command: + - /usr/libexec/check-container + - --live + initialDelaySeconds: 120 + timeoutSeconds: 10 + name: "postgresql-{{ .Values.image.tag }}-testing" + ports: + - containerPort: {{ .Values.config.port }} + protocol: TCP + readinessProbe: + exec: + command: + - /usr/libexec/check-container + initialDelaySeconds: 5 + timeoutSeconds: 1 + resources: + limits: + memory: {{ .Values.memory_limit }} + securityContext: + capabilities: {} + privileged: false + terminationMessagePath: /dev/termination-log + volumeMounts: + - mountPath: /var/lib/pgsql/data + name: {{ .Values.database_service_name }}-data + dnsPolicy: ClusterFirst + restartPolicy: Always + volumes: + - name: {{ .Values.database_service_name }}-data + persistentVolumeClaim: + claimName: {{ .Values.database_service_name }} + triggers: + - imageChangeParams: + automatic: true + containerNames: + - "postgresql-{{ .Values.image.tag }}-testing" + from: + kind: ImageStreamTag + {{- range .Values.image.tag }} + name: "postgresql:{{ . }}" + {{- end }} + namespace: {{ .Values.namespace }} + lastTriggeredImage: "" + type: ImageChange + - type: ConfigChange +status: {} diff --git a/charts/redhat/redhat/redhat-postgresql-persistent/0.0.1/src/templates/persistentvolumeclaim.yaml b/charts/redhat/redhat/redhat-postgresql-persistent/0.0.1/src/templates/persistentvolumeclaim.yaml new file mode 100644 index 000000000..cdb599d32 --- /dev/null +++ b/charts/redhat/redhat/redhat-postgresql-persistent/0.0.1/src/templates/persistentvolumeclaim.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + labels: + template: postgresql-persistent-template + name: {{ .Values.database_service_name }} +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: {{ .Values.volume_capacity }} diff --git a/charts/redhat/redhat/redhat-postgresql-persistent/0.0.1/src/templates/secret.yaml b/charts/redhat/redhat/redhat-postgresql-persistent/0.0.1/src/templates/secret.yaml new file mode 100644 index 000000000..1b5e8d4ad --- /dev/null +++ b/charts/redhat/redhat/redhat-postgresql-persistent/0.0.1/src/templates/secret.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: Secret +metadata: + annotations: + template.openshift.io/expose-database_name: '{.data[''database-name'']}' + template.openshift.io/expose-password: '{.data[''database-password'']}' + template.openshift.io/expose-username: '{.data[''database-user'']}' + labels: + template: postgresql-persistent-template + name: {{ .Values.database_service_name }} +stringData: + database-name: {{ .Values.config.postgresql_database }} + database-password: {{ .Values.config.postgresql_password }} + database-user: {{ .Values.config.postgresql_user }} diff --git a/charts/redhat/redhat/redhat-postgresql-persistent/0.0.1/src/templates/service.yaml b/charts/redhat/redhat/redhat-postgresql-persistent/0.0.1/src/templates/service.yaml new file mode 100644 index 000000000..cc0837187 --- /dev/null +++ b/charts/redhat/redhat/redhat-postgresql-persistent/0.0.1/src/templates/service.yaml @@ -0,0 +1,21 @@ +apiVersion: v1 +kind: Service +metadata: + annotations: + template.openshift.io/expose-uri: postgres://{.spec.clusterIP}:{.spec.ports[?(.name=="postgresql")].port} + labels: + template: postgresql-persistent-template + name: {{ .Values.database_service_name }} +spec: + ports: + - name: postgresql + nodePort: 0 + port: 5432 + protocol: TCP + targetPort: 5432 + selector: + name: {{ .Values.database_service_name }} + sessionAffinity: None + type: ClusterIP +status: + loadBalancer: {} diff --git a/charts/redhat/redhat/redhat-postgresql-persistent/0.0.1/src/templates/tests/test-postgresql-connection.yaml b/charts/redhat/redhat/redhat-postgresql-persistent/0.0.1/src/templates/tests/test-postgresql-connection.yaml new file mode 100644 index 000000000..5e655462a --- /dev/null +++ b/charts/redhat/redhat/redhat-postgresql-persistent/0.0.1/src/templates/tests/test-postgresql-connection.yaml @@ -0,0 +1,31 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ .Release.Name }}-connection-test" + namespace: "{{ .Release.Namespace }}" + annotations: + "helm.sh/hook": test + labels: + name: {{ .Values.database_service_name }} +spec: + #serviceAccount: {{ .Values.serviceAccount }} + containers: + - name: "postgresql-{{ .Values.image.tag }}-connection-test" + image: "image-registry.openshift-image-registry.svc:5000/{{ .Values.namespace}}/postgresql:{{ .Values.image.tag }}" + imagePullPolicy: IfNotPresent + env: + - name: POSTGRESQL_USER + value: "{{ .Values.config.postgresql_user }}" + - name: PGPASSWORD + value: "{{ .Values.config.postgresql_password }}" + - name: POSTGRESQL_DATABASE + value: "{{ .Values.config.postgresql_database }}" + - name: POSTGRESQL_PORT + value: "{{ .Values.config.port }}" + command: + - /bin/bash + - -ec + - "PGPASSWORD=$PGPASSWORD /usr/bin/pg_isready -d $POSTGRESQL_DATABASE -h {{ .Values.database_service_name }} -p $POSTGRESQL_PORT -U $POSTGRESQL_USER" + lookupPolicy: + local: true + restartPolicy: Never diff --git a/charts/redhat/redhat/redhat-postgresql-persistent/0.0.1/src/values.schema.json b/charts/redhat/redhat/redhat-postgresql-persistent/0.0.1/src/values.schema.json new file mode 100644 index 000000000..391ee08b6 --- /dev/null +++ b/charts/redhat/redhat/redhat-postgresql-persistent/0.0.1/src/values.schema.json @@ -0,0 +1,58 @@ +{ + "$schema": "http://json-schema.org/schema#", + "type": "object", + "properties": { + "database_service_name": { + "type": "string", + "pattern": "^[a-z0-9-_]+$" + }, + "namespace": { + "type": "string" + }, + "config": { + "type": "object", + "properties": { + "postgresql_database": { + "type": "string" + }, + "postgresql_password": { + "type": "string" + }, + "postgresql_user": { + "type": "string" + }, + "port": { + "type": "integer" + } + } + }, + "volume_capacity": { + "type": "string", + "title": "Persistent Volume Size", + "form": true, + "render": "slider", + "sliderMin": 1, + "sliderMax": 100, + "sliderUnit": "Gi" + }, + "memory_limit": { + "type": "string", + "title": "Database memory limit", + "form": true, + "render": "slider", + "sliderMin": 512, + "sliderMax": 65536, + "sliderUnit": "Mi" + }, + "image": { + "type": "object", + "properties": { + "tag": { + "type": "string", + "description": "Specify postgresql imagestream tag", + "enum": ["latest", "13-el9", "13-el8", "13-el7", "12-el8", "12-el7", "12", "10-el8", "10-el7", "10" ] + } + } + } + } +} \ No newline at end of file diff --git a/charts/redhat/redhat/redhat-postgresql-persistent/0.0.1/src/values.yaml b/charts/redhat/redhat/redhat-postgresql-persistent/0.0.1/src/values.yaml new file mode 100644 index 000000000..a0d54d416 --- /dev/null +++ b/charts/redhat/redhat/redhat-postgresql-persistent/0.0.1/src/values.yaml @@ -0,0 +1,21 @@ +database_service_name: postgresql-testing +memory_limit: 512Mi +namespace: postgresql-persistent-testing +volume_capacity: 1Gi +config: + postgresql_database: testdb + postgresql_password: testp + postgresql_user: testu + port: 5432 +image: + tag: + - "latest" + - "13-el9" + - "13-el8" + - "13-el7" + - "12-el8" + - "12-el7" + - "12" + - "10-el8" + - "10-el7" + - "10" diff --git a/charts/redhat/redhat/redhat-postgresql-persistent/0.0.2/src/Chart.yaml b/charts/redhat/redhat/redhat-postgresql-persistent/0.0.2/src/Chart.yaml new file mode 100644 index 000000000..6c4e22435 --- /dev/null +++ b/charts/redhat/redhat/redhat-postgresql-persistent/0.0.2/src/Chart.yaml @@ -0,0 +1,14 @@ +description: |- + PostgreSQL database service, with persistent storage. For more information about using this template, including OpenShift considerations, see https://github.com/sclorg/postgresql-container/. + + NOTE: Scaling to more than one replica is not supported. You must have persistent volumes available in your cluster to use this template. +annotations: + charts.openshift.io/name: Red Hat PostgreSQL database service, with persistent storage. +apiVersion: v2 +appVersion: 0.0.2 +name: postgresql-persistent +tags: database,postgresql +sources: + - https://github.com/sclorg/helm-charts +version: 0.0.2 + diff --git a/charts/redhat/redhat/redhat-postgresql-persistent/0.0.2/src/README.md b/charts/redhat/redhat/redhat-postgresql-persistent/0.0.2/src/README.md new file mode 100644 index 000000000..8c628a36f --- /dev/null +++ b/charts/redhat/redhat/redhat-postgresql-persistent/0.0.2/src/README.md @@ -0,0 +1,79 @@ +# PostgreSQL helm chart + +This repository contains helm chart for PostgreSQL image build and deployed on OpenShift. + +For more information about helm charts see the offical [Helm Charts Documentation](https://helm.sh/). + +You need to have access to a cluster for each operation with OpenShift 4, like deploying and testing. + +## How to start with helm charts + +The first download and install Helm. Follow instructions mentioned [here](https://helm.sh/docs/intro/install/). + +## Prerequisite for PostgreSQL-persistent helm chart +Before deploying helm chart to OpenShift, you have to create a package for postgresql-imagestream. +See details [postgresql-imagestreams](../postgresql-imagestreams/README.md) + + +## How to work with PostgreSQL-persistent helm chart + +The default PostgreSQL helm chart configuration is for RHEL7 PostgreSQL version 10. + +This can be done by command: + +```commandline +$ helm package ./ +``` + +that will create a helm package named, `postgresql-persistent-0.0.2.tgz` in this directory. + +The next step is to upload Helm Chart to OpenShift. This is done by command: + +```commandline +$ helm install postgresql-persistent postgresql-persistent-0.0.2.tgz +``` + +In case you would like to use this helm chart for different versions and even RHEL versions. +you need to modify installing command. + +E.g. For RHEL8 + +```commandline +$ helm install postgresql-persistent postgresql-persistent-0.0.2.tgz --set image.repository=registry.redhat.io/rhel8/postgresql-13 --set image.version=13 +``` +The values that can be overwritten are specified in file [values.yaml](./values.yaml) + +To test in PostgreSQL helm chart is working properly run command: + +```commandline +$ helm test postgresql-persistent --logs +``` +that will print output like: +```commandline +NAME: postgresql-persistent +LAST DEPLOYED: Mon Mar 27 09:36:23 2023 +NAMESPACE: pgsql-13 +STATUS: deployed +REVISION: 1 +TEST SUITE: postgresql-persistent-connection-test +Last Started: Mon Mar 27 09:37:13 2023 +Last Completed: Mon Mar 27 09:37:19 2023 +Phase: Succeeded + +POD LOGS: postgresql-persistent-connection-test +postgresql-testing:5432 - accepting connections +``` +## Troubleshooting +For case you need a computer readable output you can add to command mentioned above option `-o json`. + +In case of installation failed for reason like: +```commandline +// Error: INSTALLATION FAILED: cannot re-use a name that is still in use +``` +you have to uninstall previous PostgreSQL Helm Chart by command: + +```commandline +$ helm uninstall postgresql-persistent +``` + + diff --git a/charts/redhat/redhat/redhat-postgresql-persistent/0.0.2/src/templates/deploymentconfig.yaml b/charts/redhat/redhat/redhat-postgresql-persistent/0.0.2/src/templates/deploymentconfig.yaml new file mode 100644 index 000000000..764ae1dd9 --- /dev/null +++ b/charts/redhat/redhat/redhat-postgresql-persistent/0.0.2/src/templates/deploymentconfig.yaml @@ -0,0 +1,87 @@ +apiVersion: apps.openshift.io/v1 +kind: DeploymentConfig +metadata: + annotations: + template.alpha.openshift.io/wait-for-ready: "true" + labels: + template: postgresql-persistent-template + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + name: {{ .Release.Namespace }} +spec: + replicas: 1 + selector: + name: {{ .Values.database_service_name }} + strategy: + type: Recreate + template: + metadata: + labels: + name: {{ .Values.database_service_name }} + spec: + containers: + - capabilities: {} + env: + - name: POSTGRESQL_USER + valueFrom: + secretKeyRef: + key: database-user + name: {{ .Values.database_service_name }} + - name: POSTGRESQL_PASSWORD + valueFrom: + secretKeyRef: + key: database-password + name: {{ .Values.database_service_name }} + - name: POSTGRESQL_DATABASE + valueFrom: + secretKeyRef: + key: database-name + name: {{ .Values.database_service_name }} + image: "postgresql:{{ .Values.image.tag }}" + imagePullPolicy: IfNotPresent + livenessProbe: + exec: + command: + - /usr/libexec/check-container + - --live + initialDelaySeconds: 120 + timeoutSeconds: 10 + name: "postgresql-{{ .Values.image.tag }}-testing" + ports: + - containerPort: {{ .Values.config.port }} + protocol: TCP + readinessProbe: + exec: + command: + - /usr/libexec/check-container + initialDelaySeconds: 5 + timeoutSeconds: 1 + resources: + limits: + memory: {{ .Values.memory_limit }} + securityContext: + capabilities: {} + privileged: false + terminationMessagePath: /dev/termination-log + volumeMounts: + - mountPath: /var/lib/pgsql/data + name: {{ .Values.database_service_name }}-data + dnsPolicy: ClusterFirst + restartPolicy: Always + volumes: + - name: {{ .Values.database_service_name }}-data + persistentVolumeClaim: + claimName: {{ .Values.database_service_name }} + triggers: + - imageChangeParams: + automatic: true + containerNames: + - "postgresql-{{ .Values.image.tag }}-testing" + from: + kind: ImageStreamTag + name: "postgresql:{{ .Values.image.tag }}" + namespace: {{ .Values.namespace }} + lastTriggeredImage: "" + type: ImageChange + - type: ConfigChange +status: {} diff --git a/charts/redhat/redhat/redhat-postgresql-persistent/0.0.2/src/templates/persistentvolumeclaim.yaml b/charts/redhat/redhat/redhat-postgresql-persistent/0.0.2/src/templates/persistentvolumeclaim.yaml new file mode 100644 index 000000000..cdb599d32 --- /dev/null +++ b/charts/redhat/redhat/redhat-postgresql-persistent/0.0.2/src/templates/persistentvolumeclaim.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + labels: + template: postgresql-persistent-template + name: {{ .Values.database_service_name }} +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: {{ .Values.volume_capacity }} diff --git a/charts/redhat/redhat/redhat-postgresql-persistent/0.0.2/src/templates/secret.yaml b/charts/redhat/redhat/redhat-postgresql-persistent/0.0.2/src/templates/secret.yaml new file mode 100644 index 000000000..1b5e8d4ad --- /dev/null +++ b/charts/redhat/redhat/redhat-postgresql-persistent/0.0.2/src/templates/secret.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: Secret +metadata: + annotations: + template.openshift.io/expose-database_name: '{.data[''database-name'']}' + template.openshift.io/expose-password: '{.data[''database-password'']}' + template.openshift.io/expose-username: '{.data[''database-user'']}' + labels: + template: postgresql-persistent-template + name: {{ .Values.database_service_name }} +stringData: + database-name: {{ .Values.config.postgresql_database }} + database-password: {{ .Values.config.postgresql_password }} + database-user: {{ .Values.config.postgresql_user }} diff --git a/charts/redhat/redhat/redhat-postgresql-persistent/0.0.2/src/templates/service.yaml b/charts/redhat/redhat/redhat-postgresql-persistent/0.0.2/src/templates/service.yaml new file mode 100644 index 000000000..cc0837187 --- /dev/null +++ b/charts/redhat/redhat/redhat-postgresql-persistent/0.0.2/src/templates/service.yaml @@ -0,0 +1,21 @@ +apiVersion: v1 +kind: Service +metadata: + annotations: + template.openshift.io/expose-uri: postgres://{.spec.clusterIP}:{.spec.ports[?(.name=="postgresql")].port} + labels: + template: postgresql-persistent-template + name: {{ .Values.database_service_name }} +spec: + ports: + - name: postgresql + nodePort: 0 + port: 5432 + protocol: TCP + targetPort: 5432 + selector: + name: {{ .Values.database_service_name }} + sessionAffinity: None + type: ClusterIP +status: + loadBalancer: {} diff --git a/charts/redhat/redhat/redhat-postgresql-persistent/0.0.2/src/templates/tests/test-postgresql-connection.yaml b/charts/redhat/redhat/redhat-postgresql-persistent/0.0.2/src/templates/tests/test-postgresql-connection.yaml new file mode 100644 index 000000000..5e655462a --- /dev/null +++ b/charts/redhat/redhat/redhat-postgresql-persistent/0.0.2/src/templates/tests/test-postgresql-connection.yaml @@ -0,0 +1,31 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ .Release.Name }}-connection-test" + namespace: "{{ .Release.Namespace }}" + annotations: + "helm.sh/hook": test + labels: + name: {{ .Values.database_service_name }} +spec: + #serviceAccount: {{ .Values.serviceAccount }} + containers: + - name: "postgresql-{{ .Values.image.tag }}-connection-test" + image: "image-registry.openshift-image-registry.svc:5000/{{ .Values.namespace}}/postgresql:{{ .Values.image.tag }}" + imagePullPolicy: IfNotPresent + env: + - name: POSTGRESQL_USER + value: "{{ .Values.config.postgresql_user }}" + - name: PGPASSWORD + value: "{{ .Values.config.postgresql_password }}" + - name: POSTGRESQL_DATABASE + value: "{{ .Values.config.postgresql_database }}" + - name: POSTGRESQL_PORT + value: "{{ .Values.config.port }}" + command: + - /bin/bash + - -ec + - "PGPASSWORD=$PGPASSWORD /usr/bin/pg_isready -d $POSTGRESQL_DATABASE -h {{ .Values.database_service_name }} -p $POSTGRESQL_PORT -U $POSTGRESQL_USER" + lookupPolicy: + local: true + restartPolicy: Never diff --git a/charts/redhat/redhat/redhat-postgresql-persistent/0.0.2/src/values.schema.json b/charts/redhat/redhat/redhat-postgresql-persistent/0.0.2/src/values.schema.json new file mode 100644 index 000000000..391ee08b6 --- /dev/null +++ b/charts/redhat/redhat/redhat-postgresql-persistent/0.0.2/src/values.schema.json @@ -0,0 +1,58 @@ +{ + "$schema": "http://json-schema.org/schema#", + "type": "object", + "properties": { + "database_service_name": { + "type": "string", + "pattern": "^[a-z0-9-_]+$" + }, + "namespace": { + "type": "string" + }, + "config": { + "type": "object", + "properties": { + "postgresql_database": { + "type": "string" + }, + "postgresql_password": { + "type": "string" + }, + "postgresql_user": { + "type": "string" + }, + "port": { + "type": "integer" + } + } + }, + "volume_capacity": { + "type": "string", + "title": "Persistent Volume Size", + "form": true, + "render": "slider", + "sliderMin": 1, + "sliderMax": 100, + "sliderUnit": "Gi" + }, + "memory_limit": { + "type": "string", + "title": "Database memory limit", + "form": true, + "render": "slider", + "sliderMin": 512, + "sliderMax": 65536, + "sliderUnit": "Mi" + }, + "image": { + "type": "object", + "properties": { + "tag": { + "type": "string", + "description": "Specify postgresql imagestream tag", + "enum": ["latest", "13-el9", "13-el8", "13-el7", "12-el8", "12-el7", "12", "10-el8", "10-el7", "10" ] + } + } + } + } +} \ No newline at end of file diff --git a/charts/redhat/redhat/redhat-postgresql-persistent/0.0.2/src/values.yaml b/charts/redhat/redhat/redhat-postgresql-persistent/0.0.2/src/values.yaml new file mode 100644 index 000000000..f9502673c --- /dev/null +++ b/charts/redhat/redhat/redhat-postgresql-persistent/0.0.2/src/values.yaml @@ -0,0 +1,11 @@ +database_service_name: postgresql-testing +memory_limit: 512Mi +namespace: postgresql-persistent-testing +volume_capacity: 1Gi +config: + postgresql_database: testdb + postgresql_password: testp + postgresql_user: testu + port: 5432 +image: + tag: "latest" diff --git a/charts/redhat/redhat/redhat-postgresql-persistent/0.0.3/src/Chart.yaml b/charts/redhat/redhat/redhat-postgresql-persistent/0.0.3/src/Chart.yaml new file mode 100644 index 000000000..5cc99bd25 --- /dev/null +++ b/charts/redhat/redhat/redhat-postgresql-persistent/0.0.3/src/Chart.yaml @@ -0,0 +1,16 @@ +description: |- + This content is expermental, do not use it in production. PostgreSQL database service, with persistent storage. For more information about using this template, including OpenShift considerations, see https://github.com/sclorg/postgresql-container/. + + NOTE: Scaling to more than one replica is not supported. You must have persistent volumes available in your cluster to use this template. +annotations: + charts.openshift.io/name: Red Hat PostgreSQL database service, with persistent storage (experimental) + charts.openshift.io/provider: Red Hat + charts.openshift.io/providerType: redhat +apiVersion: v2 +appVersion: 0.0.3 +name: postgresql-persistent +tags: database,postgresql +sources: + - https://github.com/sclorg/helm-charts +version: 0.0.3 + diff --git a/charts/redhat/redhat/redhat-postgresql-persistent/0.0.3/src/README.md b/charts/redhat/redhat/redhat-postgresql-persistent/0.0.3/src/README.md new file mode 100644 index 000000000..53b3c5f72 --- /dev/null +++ b/charts/redhat/redhat/redhat-postgresql-persistent/0.0.3/src/README.md @@ -0,0 +1,23 @@ +# PostgreSQL helm chart + +# MariaDB helm chart + +A Helm chart for building and deploying a [PostgreSQL](https://github/sclorg/postgresql-container) application on OpenShift. + +For more information about helm charts see the official [Helm Charts Documentation](https://helm.sh/). + +You need to have access to a cluster for each operation with OpenShift 4, like deploying and testing. + +## Values +Below is a table of each value used to configure this chart. + +| Value | Description | Default | Additional Information | +|---------------------------------------------| ----------- | -- | ---------------------- | +| `database_service_name` | The name of the OpenShift Service exposed for the database. | `postgresql` | - | +| `postgresql_user` | Username for PostgreSQL user that will be used for accessing the database. | - | Expresion like: `user[A-Z0-9]{3}` | +| `postgresql_database` | Name of the PostgreSQL database accessed. | `sampledb` | | +| `postgresql_password` | Password for the PostgreSQL connection user. | | Expression like: `[a-zA-Z0-9]{16}` | +| `postgresql_version` | Version of PostgreSQL image to be used (10-el7, 10-el8, or latest). | `10-el8` | | +| `namespace` | The OpenShift Namespace where the ImageStream resides. | `openshift` | | +| `memory_limit` | Maximum amount of memory the container can use. | `521Mi` | | +| `volume_capacity` | Volume space available for data, e.g. 512Mi, 2Gi. | `1Gi` | | diff --git a/charts/redhat/redhat/redhat-postgresql-persistent/0.0.3/src/templates/deployment.yaml b/charts/redhat/redhat/redhat-postgresql-persistent/0.0.3/src/templates/deployment.yaml new file mode 100644 index 000000000..c1a21a57d --- /dev/null +++ b/charts/redhat/redhat/redhat-postgresql-persistent/0.0.3/src/templates/deployment.yaml @@ -0,0 +1,85 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + annotations: + template.alpha.openshift.io/wait-for-ready: "true" + image.openshift.io/triggers: |- + [ + { + "from": { + "kind": "ImageStreamTag", + "name": "postgresql:{{ .Values.image.tag }}" + }, + "fieldPath": "spec.template.spec.containers[0].image" + } + ] + labels: + template: postgresql-persistent-template + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + name: {{ .Release.Name }} +spec: + replicas: 1 + selector: + matchLabels: + name: {{ .Values.database_service_name }} + strategy: + type: Recreate + template: + metadata: + labels: + name: {{ .Values.database_service_name }} + spec: + containers: + - env: + - name: POSTGRESQL_USER + valueFrom: + secretKeyRef: + key: database-user + name: {{ .Values.database_service_name }} + - name: POSTGRESQL_PASSWORD + valueFrom: + secretKeyRef: + key: database-password + name: {{ .Values.database_service_name }} + - name: POSTGRESQL_DATABASE + valueFrom: + secretKeyRef: + key: database-name + name: {{ .Values.database_service_name }} + image: " " + imagePullPolicy: IfNotPresent + livenessProbe: + exec: + command: + - /usr/libexec/check-container + - --live + initialDelaySeconds: 120 + timeoutSeconds: 10 + name: "postgresql-persistent" + ports: + - containerPort: {{ .Values.config.port }} + protocol: TCP + readinessProbe: + exec: + command: + - /usr/libexec/check-container + initialDelaySeconds: 5 + timeoutSeconds: 1 + resources: + limits: + memory: {{ .Values.memory_limit }} + securityContext: + capabilities: {} + privileged: false + terminationMessagePath: /dev/termination-log + volumeMounts: + - mountPath: /var/lib/pgsql/data + name: {{ .Values.database_service_name }}-data + dnsPolicy: ClusterFirst + restartPolicy: Always + volumes: + - name: {{ .Values.database_service_name }}-data + persistentVolumeClaim: + claimName: {{ .Values.database_service_name }} +status: {} diff --git a/charts/redhat/redhat/redhat-postgresql-persistent/0.0.3/src/templates/persistentvolumeclaim.yaml b/charts/redhat/redhat/redhat-postgresql-persistent/0.0.3/src/templates/persistentvolumeclaim.yaml new file mode 100644 index 000000000..cdb599d32 --- /dev/null +++ b/charts/redhat/redhat/redhat-postgresql-persistent/0.0.3/src/templates/persistentvolumeclaim.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + labels: + template: postgresql-persistent-template + name: {{ .Values.database_service_name }} +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: {{ .Values.volume_capacity }} diff --git a/charts/redhat/redhat/redhat-postgresql-persistent/0.0.3/src/templates/secret.yaml b/charts/redhat/redhat/redhat-postgresql-persistent/0.0.3/src/templates/secret.yaml new file mode 100644 index 000000000..1b5e8d4ad --- /dev/null +++ b/charts/redhat/redhat/redhat-postgresql-persistent/0.0.3/src/templates/secret.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: Secret +metadata: + annotations: + template.openshift.io/expose-database_name: '{.data[''database-name'']}' + template.openshift.io/expose-password: '{.data[''database-password'']}' + template.openshift.io/expose-username: '{.data[''database-user'']}' + labels: + template: postgresql-persistent-template + name: {{ .Values.database_service_name }} +stringData: + database-name: {{ .Values.config.postgresql_database }} + database-password: {{ .Values.config.postgresql_password }} + database-user: {{ .Values.config.postgresql_user }} diff --git a/charts/redhat/redhat/redhat-postgresql-persistent/0.0.3/src/templates/service.yaml b/charts/redhat/redhat/redhat-postgresql-persistent/0.0.3/src/templates/service.yaml new file mode 100644 index 000000000..cc0837187 --- /dev/null +++ b/charts/redhat/redhat/redhat-postgresql-persistent/0.0.3/src/templates/service.yaml @@ -0,0 +1,21 @@ +apiVersion: v1 +kind: Service +metadata: + annotations: + template.openshift.io/expose-uri: postgres://{.spec.clusterIP}:{.spec.ports[?(.name=="postgresql")].port} + labels: + template: postgresql-persistent-template + name: {{ .Values.database_service_name }} +spec: + ports: + - name: postgresql + nodePort: 0 + port: 5432 + protocol: TCP + targetPort: 5432 + selector: + name: {{ .Values.database_service_name }} + sessionAffinity: None + type: ClusterIP +status: + loadBalancer: {} diff --git a/charts/redhat/redhat/redhat-postgresql-persistent/0.0.3/src/templates/tests/test-postgresql-connection.yaml b/charts/redhat/redhat/redhat-postgresql-persistent/0.0.3/src/templates/tests/test-postgresql-connection.yaml new file mode 100644 index 000000000..933246ec5 --- /dev/null +++ b/charts/redhat/redhat/redhat-postgresql-persistent/0.0.3/src/templates/tests/test-postgresql-connection.yaml @@ -0,0 +1,29 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ .Release.Name }}-connection-test" + namespace: "{{ .Release.Namespace }}" + annotations: + "helm.sh/hook": test + labels: + name: {{ .Values.database_service_name }} +spec: + #serviceAccount: {{ .Values.serviceAccount }} + containers: + - name: "postgresql-connection-test" + image: "registry.redhat.io/rhel8/postgresql-13:latest" + imagePullPolicy: IfNotPresent + env: + - name: POSTGRESQL_USER + value: "{{ .Values.config.postgresql_user }}" + - name: PGPASSWORD + value: "{{ .Values.config.postgresql_password }}" + - name: POSTGRESQL_DATABASE + value: "{{ .Values.config.postgresql_database }}" + - name: POSTGRESQL_PORT + value: "{{ .Values.config.port }}" + command: + - /bin/bash + - -exc + - "PGPASSWORD=$PGPASSWORD /usr/bin/pg_isready -d $POSTGRESQL_DATABASE -h {{ .Values.database_service_name }} -p $POSTGRESQL_PORT -U $POSTGRESQL_USER" + restartPolicy: Never diff --git a/charts/redhat/redhat/redhat-postgresql-persistent/0.0.3/src/values.schema.json b/charts/redhat/redhat/redhat-postgresql-persistent/0.0.3/src/values.schema.json new file mode 100644 index 000000000..391ee08b6 --- /dev/null +++ b/charts/redhat/redhat/redhat-postgresql-persistent/0.0.3/src/values.schema.json @@ -0,0 +1,58 @@ +{ + "$schema": "http://json-schema.org/schema#", + "type": "object", + "properties": { + "database_service_name": { + "type": "string", + "pattern": "^[a-z0-9-_]+$" + }, + "namespace": { + "type": "string" + }, + "config": { + "type": "object", + "properties": { + "postgresql_database": { + "type": "string" + }, + "postgresql_password": { + "type": "string" + }, + "postgresql_user": { + "type": "string" + }, + "port": { + "type": "integer" + } + } + }, + "volume_capacity": { + "type": "string", + "title": "Persistent Volume Size", + "form": true, + "render": "slider", + "sliderMin": 1, + "sliderMax": 100, + "sliderUnit": "Gi" + }, + "memory_limit": { + "type": "string", + "title": "Database memory limit", + "form": true, + "render": "slider", + "sliderMin": 512, + "sliderMax": 65536, + "sliderUnit": "Mi" + }, + "image": { + "type": "object", + "properties": { + "tag": { + "type": "string", + "description": "Specify postgresql imagestream tag", + "enum": ["latest", "13-el9", "13-el8", "13-el7", "12-el8", "12-el7", "12", "10-el8", "10-el7", "10" ] + } + } + } + } +} \ No newline at end of file diff --git a/charts/redhat/redhat/redhat-postgresql-persistent/0.0.3/src/values.yaml b/charts/redhat/redhat/redhat-postgresql-persistent/0.0.3/src/values.yaml new file mode 100644 index 000000000..625f1f3c6 --- /dev/null +++ b/charts/redhat/redhat/redhat-postgresql-persistent/0.0.3/src/values.yaml @@ -0,0 +1,11 @@ +database_service_name: postgresql-persistent +memory_limit: 512Mi +namespace: postgresql-persistent-testing +volume_capacity: 1Gi +config: + postgresql_database: testdb + postgresql_password: testp + postgresql_user: testu + port: 5432 +image: + tag: "13-el8" diff --git a/charts/redhat/redhat/redhat-postgresql-persistent/OWNERS b/charts/redhat/redhat/redhat-postgresql-persistent/OWNERS new file mode 100644 index 000000000..e34aad89c --- /dev/null +++ b/charts/redhat/redhat/redhat-postgresql-persistent/OWNERS @@ -0,0 +1,9 @@ +chart: + name: redhat-postgresql-persistent + description: This is the Red Hat PostgreSQL persistent storage +publicPgpKey: null +users: + - githubUsername: phracek +vendor: + label: redhat + name: Red Hat diff --git a/charts/redhat/redhat/redhat-psql-sed/1.0.0/psql-sed-1.0.0.tgz b/charts/redhat/redhat/redhat-psql-sed/1.0.0/psql-sed-1.0.0.tgz new file mode 100644 index 000000000..c4bc4d6ea Binary files /dev/null and b/charts/redhat/redhat/redhat-psql-sed/1.0.0/psql-sed-1.0.0.tgz differ diff --git a/charts/redhat/redhat/redhat-psql-sed/1.0.0/report.yaml b/charts/redhat/redhat/redhat-psql-sed/1.0.0/report.yaml new file mode 100644 index 000000000..4be9f4634 --- /dev/null +++ b/charts/redhat/redhat/redhat-psql-sed/1.0.0/report.yaml @@ -0,0 +1,83 @@ +apiversion: v1 +kind: verify-report +metadata: + tool: + verifier-version: 1.3.0 + profile: + VendorType: partner + version: v1.0 + chart-uri: /.kube/psql-sed-1.0.0.tgz + digest: sha256:9f6343df9aac5a44a06589169f912a9be9582df0e0ff9cb80865b0927e79c452 + digests: + chart: sha256:9f6343df9aac5a44a06589169f912a9be9582df0e0ff9cb80865b0927e79c452 + package: b775e389fc61719c9f6360c175f24dc0e1fc2465eab121db12725c0a7aebbc01 + lastCertifiedTimestamp: "2022-03-15T00:32:30.409953+00:00" + certifiedOpenShiftVersions: 4.9.0 + chart: + name: psql-sed + home: "" + sources: [] + version: 1.0.0 + description: A Helm chart for PostgreSQL Service Endpoint Definition (SED) + keywords: [] + maintainers: [] + icon: "" + apiversion: v2 + condition: "" + tags: "" + appversion: 1.0.0 + deprecated: false + annotations: + charts.openshift.io/archs: x86_64 + charts.openshift.io/name: PostgreSQL Service Endpoint Definition (SED) + charts.openshift.io/provider: RedHat + charts.openshift.io/supportURL: https://github.com/redhat-developer/service-endpoint-definition + kubeversion: '>=1.20.0' + dependencies: [] + type: application + chart-overrides: "" +results: + - check: v1.0/contains-test + type: Mandatory + outcome: PASS + reason: Chart test files exist + - check: v1.0/contains-values-schema + type: Mandatory + outcome: PASS + reason: Values schema file exist + - check: v1.0/has-kubeversion + type: Mandatory + outcome: PASS + reason: Kubernetes version specified + - check: v1.0/helm-lint + type: Mandatory + outcome: PASS + reason: Helm lint successful + - check: v1.0/images-are-certified + type: Mandatory + outcome: PASS + reason: 'Image is Red Hat certified : registry.access.redhat.com/rhscl/postgresql-10-rhel7:latest' + - check: v1.0/chart-testing + type: Mandatory + outcome: PASS + reason: Chart tests have passed + - check: v1.0/is-helm-v3 + type: Mandatory + outcome: PASS + reason: API version is V2, used in Helm 3 + - check: v1.0/contains-values + type: Mandatory + outcome: PASS + reason: Values file exist + - check: v1.0/not-contains-crds + type: Mandatory + outcome: PASS + reason: Chart does not contain CRDs + - check: v1.0/not-contain-csi-objects + type: Mandatory + outcome: PASS + reason: CSI objects do not exist + - check: v1.0/has-readme + type: Mandatory + outcome: PASS + reason: Chart has a README diff --git a/charts/redhat/redhat/redhat-psql-sed/OWNERS b/charts/redhat/redhat/redhat-psql-sed/OWNERS new file mode 100644 index 000000000..e16557ea1 --- /dev/null +++ b/charts/redhat/redhat/redhat-psql-sed/OWNERS @@ -0,0 +1,9 @@ +chart: + name: redhat-psql-sed + shortDescription: PostgreSQL Service Endpoint Definition +publicPgpKey: null +users: +- githubUsername: dperaza4dustbit +vendor: + label: redhat + name: Red Hat diff --git a/charts/redhat/redhat/redhat-python-django-application/0.0.1/src/Chart.yaml b/charts/redhat/redhat/redhat-python-django-application/0.0.1/src/Chart.yaml new file mode 100644 index 000000000..927916181 --- /dev/null +++ b/charts/redhat/redhat/redhat-python-django-application/0.0.1/src/Chart.yaml @@ -0,0 +1,14 @@ +description: This content is experimental, do not use it in production. An example Django application with no database. For more information + about using this template, including OpenShift considerations, see https://github.com/sclorg/django-ex/blob/master/README.md. +name: python-django-application +tags: quickstart,python,django +version: 0.0.1 +annotations: + charts.openshift.io/name: Red Hat Dancer application on UBI (experimental) + charts.openshift.io/provider: Red Hat + charts.openshift.io/providerType: redhat +apiVersion: v2 +appVersion: 0.0.1 +kubeVersion: '>=1.20.0' +sources: + - https://github.com/sclorg/helm-charts diff --git a/charts/redhat/redhat/redhat-python-django-application/0.0.1/src/README.md b/charts/redhat/redhat/redhat-python-django-application/0.0.1/src/README.md new file mode 100644 index 000000000..0ff9a72f0 --- /dev/null +++ b/charts/redhat/redhat/redhat-python-django-application/0.0.1/src/README.md @@ -0,0 +1,25 @@ +# Python application template with no database helm chart + +A Helm chart for building and deploying a [Django-ex](https://github/sclorg/django-ex) application on OpenShift. + +For more information about helm charts see the official [Helm Charts Documentation](https://helm.sh/). + +You need to have access to a cluster for each operation with OpenShift 4, like deploying and testing. + +## Values +Below is a table of each value used to configure this chart. + +| Value | Description | Default | Additional Information | +|-------------------------|---------------------------------------------------------------------------------------------------------|-------------------------------------------|------------------------| +| `name` | The name assigned to all of the frontend objects defined in this helm chart. | `django-example` | | +| `namespace` | The OpenShift Namespace where the ImageStream resides. | `openshift` | | +| `python_version ` | Specify Python imagestream tag. | `3.11-ubi8` | | +| `memory_limit` | Maximum amount of memory the container can use. | `521Mi` | | +| `source_repository_url` | The URL of the repository with your application source code. | `https://github.com/sclorg/django-ex.git` | | +| `source_repository_ref` | Set this to a branch name, tag or other ref of your repository if you are not using the default branch. | `2.2.x` | | +| `context_dir` | Set this to the relative path to your project if it is not in the root of your repository. | | | +| `application_domain` | The exposed hostname that will route to the httpd service, if left blank a value will be defaulted. | | | +| `github_webhook_secret` | Github trigger secret. A difficult to guess string encoded as part of the webhook URL. Not encrypted. | | | +| `django_secret_key` | Set this to a long random string. | | | +| `app_config` | Relative path to Gunicorn configuration file (optional). | | | +| `pip_index_url` | The custom PyPi index URL. | | | diff --git a/charts/redhat/redhat/redhat-python-django-application/0.0.1/src/templates/buildconfig.yaml b/charts/redhat/redhat/redhat-python-django-application/0.0.1/src/templates/buildconfig.yaml new file mode 100644 index 000000000..8ce3946cb --- /dev/null +++ b/charts/redhat/redhat/redhat-python-django-application/0.0.1/src/templates/buildconfig.yaml @@ -0,0 +1,39 @@ +apiVersion: build.openshift.io/v1 +kind: BuildConfig +metadata: + annotations: + description: Defines how to build the application + template.alpha.openshift.io/wait-for-ready: "true" + labels: + app: django-example + template: django-example + name: {{ .Values.name }} +spec: + output: + to: + kind: ImageStreamTag + name: {{ .Values.name }}:latest + postCommit: + script: ./manage.py test + source: + contextDir: {{ .Values.context_dir }} + git: + ref: {{ .Values.source_repository_ref }} + uri: {{ .Values.source_repository_url }} + type: Git + strategy: + sourceStrategy: + env: + - name: PIP_INDEX_URL + value: {{ .Values.pip_index_url }} + from: + kind: ImageStreamTag + name: python:{{ .Values.python_version }} + namespace: {{ .Values.namespace }} + type: Source + triggers: + - type: ImageChange + - type: ConfigChange + - github: + secret: {{ .Values.github_webhook_secret }} + type: GitHub diff --git a/charts/redhat/redhat/redhat-python-django-application/0.0.1/src/templates/deployment.yaml b/charts/redhat/redhat/redhat-python-django-application/0.0.1/src/templates/deployment.yaml new file mode 100644 index 000000000..fbe4846f0 --- /dev/null +++ b/charts/redhat/redhat/redhat-python-django-application/0.0.1/src/templates/deployment.yaml @@ -0,0 +1,61 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + annotations: + description: Defines how to deploy the application server + image.openshift.io/triggers: |- + [ + { + "from": { + "kind": "ImageStreamTag", + "name": "{{ .Values.name }}:latest" + }, + "fieldPath": "spec.template.spec.containers[0].image" + } + ] + template.alpha.openshift.io/wait-for-ready: "true" + labels: + app: django-example + template: django-example + name: {{ .Values.name }} +spec: + replicas: 1 + selector: + matchLabels: + name: {{ .Values.name }} + strategy: + type: RollingUpdate + template: + metadata: + labels: + name: {{ .Values.name }} + name: {{ .Values.name }} + spec: + containers: + - env: + - name: APP_CONFIG + value: {{ .Values.app_config }} + - name: DJANGO_SECRET_KEY + valueFrom: + secretKeyRef: + key: django-secret-key + name: {{ .Values.name }} + image: ' ' + livenessProbe: + httpGet: + path: / + port: 8080 + initialDelaySeconds: 30 + timeoutSeconds: 3 + name: django-example + ports: + - containerPort: 8080 + readinessProbe: + httpGet: + path: / + port: 8080 + initialDelaySeconds: 3 + timeoutSeconds: 3 + resources: + limits: + memory: {{ .Values.memory_limit }} diff --git a/charts/redhat/redhat/redhat-python-django-application/0.0.1/src/templates/imagestream.yaml b/charts/redhat/redhat/redhat-python-django-application/0.0.1/src/templates/imagestream.yaml new file mode 100644 index 000000000..a813d8245 --- /dev/null +++ b/charts/redhat/redhat/redhat-python-django-application/0.0.1/src/templates/imagestream.yaml @@ -0,0 +1,9 @@ +apiVersion: image.openshift.io/v1 +kind: ImageStream +metadata: + annotations: + description: Keeps track of changes in the application image + labels: + app: django-example + template: django-example + name: {{ .Values.name }} diff --git a/charts/redhat/redhat/redhat-python-django-application/0.0.1/src/templates/route.yaml b/charts/redhat/redhat/redhat-python-django-application/0.0.1/src/templates/route.yaml new file mode 100644 index 000000000..e4aae2cd9 --- /dev/null +++ b/charts/redhat/redhat/redhat-python-django-application/0.0.1/src/templates/route.yaml @@ -0,0 +1,12 @@ +apiVersion: route.openshift.io/v1 +kind: Route +metadata: + labels: + app: django-example + template: django-example + name: {{ .Values.name }} +spec: + host: {{ .Values.application_domain }} + to: + kind: Service + name: {{ .Values.name }} diff --git a/charts/redhat/redhat/redhat-python-django-application/0.0.1/src/templates/secret.yaml b/charts/redhat/redhat/redhat-python-django-application/0.0.1/src/templates/secret.yaml new file mode 100644 index 000000000..c0be61650 --- /dev/null +++ b/charts/redhat/redhat/redhat-python-django-application/0.0.1/src/templates/secret.yaml @@ -0,0 +1,9 @@ +apiVersion: v1 +kind: Secret +metadata: + labels: + app: django-example + template: django-example + name: {{ .Values.name }} +stringData: + django-secret-key: {{ .Values.django_secret_key }} diff --git a/charts/redhat/redhat/redhat-python-django-application/0.0.1/src/templates/service.yaml b/charts/redhat/redhat/redhat-python-django-application/0.0.1/src/templates/service.yaml new file mode 100644 index 000000000..ac2281e30 --- /dev/null +++ b/charts/redhat/redhat/redhat-python-django-application/0.0.1/src/templates/service.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: Service +metadata: + annotations: + description: Exposes and load balances the application pods + labels: + app: django-example + template: django-example + name: {{ .Values.name }} +spec: + ports: + - name: web + port: 8080 + targetPort: 8080 + selector: + name: {{ .Values.name }} diff --git a/charts/redhat/redhat/redhat-python-django-application/0.0.1/src/templates/tests/test-django-connection.yaml b/charts/redhat/redhat/redhat-python-django-application/0.0.1/src/templates/tests/test-django-connection.yaml new file mode 100644 index 000000000..dc38ac43a --- /dev/null +++ b/charts/redhat/redhat/redhat-python-django-application/0.0.1/src/templates/tests/test-django-connection.yaml @@ -0,0 +1,22 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ .Release.Name }}-connection-test" + annotations: + "helm.sh/hook": test + labels: + name: {{ .Values.name }} + template: {{ .Values.name }} +spec: + #serviceAccount: {{ .Values.serviceAccount }} + containers: + - name: "{{ .Release.Name }}-connection-test" + namespace: "{{ .Release.Namespace }}" + image: "registry.redhat.io/ubi8/ubi:latest" + imagePullPolicy: IfNotPresent + command: + - '/bin/bash' + - '-exc' + - > + curl {{ .Values.name }}.{{ .Release.Namespace }}:8080 | grep "Welcome to your Django application" + restartPolicy: Never diff --git a/charts/redhat/redhat/redhat-python-django-application/0.0.1/src/values.schema.json b/charts/redhat/redhat/redhat-python-django-application/0.0.1/src/values.schema.json new file mode 100644 index 000000000..b06ac071a --- /dev/null +++ b/charts/redhat/redhat/redhat-python-django-application/0.0.1/src/values.schema.json @@ -0,0 +1,60 @@ +{ + "$schema": "http://json-schema.org/schema#", + "type": "object", + "properties": { + "namespace": { + "type": "string" + }, + "name": { + "type": "string", + "description": "The name assigned to all of the frontend objects defined in this template." + }, + "memory_limit": { + "type": "string", + "title": "Memory limit", + "form": true, + "render": "slider", + "sliderMin": 512, + "sliderMax": 65536, + "sliderUnit": "Mi" + }, + "python_version": { + "type": "string", + "description": "Specify Python imagestream tag", + "enum": [ "latest", "2.7-ubi8", "3.6-ubi8", "3.8-ubi8", "3.8-ubi7", "3.9-ubi8", "3.9-ubi9", "3.11-ubi8", "3.11-ubi9" ] + }, + "application_domain": { + "type": "string", + "description": "The exposed hostname that will route to the httpd service, if left blank a value will be defaulted." + }, + "context_dir": { + "type": "string", + "description": "Set this to the relative path to your project if it is not in the root of your repository." + }, + "pip_index_url": { + "type": "string", + "description": "The custom PyPi index URL" + }, + "github_webhook_secret": { + "type": "string", + "description": "Github trigger secret. A difficult to guess string encoded as part of the webhook URL. Not encrypted." + }, + "app_config": { + "type": "string", + "description": "Relative path to Gunicorn configuration file (optional)." + }, + "django_secret_key": { + "type": "string", + "description": "Set this to a long random string." + }, + "source_repository_url": { + "type": "string", + "description": "The URL of the repository with your application source code." + }, + "source_repository_ref": { + "type": "string", + "description": "Set this to a branch name, tag or other ref of your repository if you are not using the default branch." + } + } +} + diff --git a/charts/redhat/redhat/redhat-python-django-application/0.0.1/src/values.yaml b/charts/redhat/redhat/redhat-python-django-application/0.0.1/src/values.yaml new file mode 100644 index 000000000..0ba583c3d --- /dev/null +++ b/charts/redhat/redhat/redhat-python-django-application/0.0.1/src/values.yaml @@ -0,0 +1,13 @@ +application_domain: "" # TODO: must define a default value for .application_domain +context_dir: "" # TODO: must define a default value for .context_dir +pip_index_url: "" # TODO: must define a default value for .cpan_mirror +github_webhook_secret: "SOMETHING" # TODO: must define a default value for .github_webhook_secret +memory_limit: 512Mi +name: django-example +namespace: openshift +django_secret_key: "FOOBAR" # TODO: must define a default value for .perl_apache2_reload +python_version: 3.11-ubi8 +source_repository_ref: 2.2.x # TODO: must define a default value for .source_repository_ref +source_repository_url: https://github.com/sclorg/django-ex.git +app_config: "" # TODO: must define a default value for .app_config + diff --git a/charts/redhat/redhat/redhat-python-django-application/OWNERS b/charts/redhat/redhat/redhat-python-django-application/OWNERS new file mode 100644 index 000000000..3f63ed45e --- /dev/null +++ b/charts/redhat/redhat/redhat-python-django-application/OWNERS @@ -0,0 +1,9 @@ +chart: + name: redhat-python-django-application + description: This is the Red Hat Django application template +publicPgpKey: null +users: + - githubUsername: phracek +vendor: + label: redhat + name: Red Hat diff --git a/charts/redhat/redhat/redhat-quarkus/0.0.3/quarkus-0.0.3.tgz b/charts/redhat/redhat/redhat-quarkus/0.0.3/quarkus-0.0.3.tgz new file mode 100644 index 000000000..a5ab0e375 Binary files /dev/null and b/charts/redhat/redhat/redhat-quarkus/0.0.3/quarkus-0.0.3.tgz differ diff --git a/charts/redhat/redhat/redhat-quarkus/0.0.3/report.yaml b/charts/redhat/redhat/redhat-quarkus/0.0.3/report.yaml new file mode 100644 index 000000000..c0c684390 --- /dev/null +++ b/charts/redhat/redhat/redhat-quarkus/0.0.3/report.yaml @@ -0,0 +1,85 @@ +apiversion: v1 +kind: verify-report +metadata: + tool: + verifier-version: 1.1.0 + profile: + VendorType: partner + version: v1.0 + chart-uri: https://redhat-developer.github.io/redhat-helm-charts/charts/quarkus-0.0.3.tgz + digest: sha256:fc2516e2e7350d9edc2dd491348ded34ee97085269b303f26b68eb2a8ec0ef88 + digests: + chart: sha256:fc2516e2e7350d9edc2dd491348ded34ee97085269b303f26b68eb2a8ec0ef88 + package: 6d8f1b945c037f1f252e532430c21ef723bc11fab369ef26d316fff69c4ffade + lastCertifiedTimestamp: "2021-07-09T21:36:27.096408+00:00" + certifiedOpenShiftVersions: 4.7.5 + chart: + name: quarkus + home: "" + sources: [] + version: 0.0.3 + description: A Helm chart to build and deploy Quarkus applications + keywords: + - runtimes + - quarkus + maintainers: [] + icon: "" + apiversion: v2 + condition: "" + tags: "" + appversion: "" + deprecated: false + annotations: {} + kubeversion: "" + dependencies: [] + type: "" + chart-overrides: "" +results: + - check: v1.0/has-kubeversion + type: Mandatory + outcome: FAIL + reason: Kubernetes version is not specified + - check: v1.0/images-are-certified + type: Mandatory + outcome: FAIL + reason: 'Image is not Red Hat certified : testRelease:latest : Respository not + found: testRelease' + - check: v1.0/chart-testing + type: Mandatory + outcome: FAIL + reason: |- + Error running process: executing helm with args "install quarkus-0nn685i6st /root/.cache/chart-verifier/https___redhat_developer_github_io_redhat_helm_charts_charts_quarkus_0_0_3_tgz/quarkus --namespace davptest --wait --values /tmp/chart-testing-077068075/values.yaml": exit status 1 + --- + Error: Unauthorized + - check: v1.0/is-helm-v3 + type: Mandatory + outcome: PASS + reason: API version is V2, used in Helm 3 + - check: v1.0/contains-values-schema + type: Mandatory + outcome: PASS + reason: Values schema file exist + - check: v1.0/contains-values + type: Mandatory + outcome: PASS + reason: Values file exist + - check: v1.0/not-contains-crds + type: Mandatory + outcome: PASS + reason: Chart does not contain CRDs + - check: v1.0/helm-lint + type: Mandatory + outcome: PASS + reason: Helm lint successful + - check: v1.0/not-contain-csi-objects + type: Mandatory + outcome: PASS + reason: CSI objects do not exist + - check: v1.0/has-readme + type: Mandatory + outcome: PASS + reason: Chart has a README + - check: v1.0/contains-test + type: Mandatory + outcome: FAIL + reason: Chart test files do not exist diff --git a/charts/redhat/redhat/redhat-quarkus/OWNERS b/charts/redhat/redhat/redhat-quarkus/OWNERS new file mode 100644 index 000000000..38ea8248b --- /dev/null +++ b/charts/redhat/redhat/redhat-quarkus/OWNERS @@ -0,0 +1,9 @@ +chart: + name: redhat-quarkus + shortDescription: This is the Red Hat Quarkus chart +publicPgpKey: null +users: +- githubUsername: dperaza4dustbit +vendor: + label: redhat + name: Red Hat diff --git a/charts/redhat/redhat/redhat-redis-imagestreams/0.0.1/src/Chart.yaml b/charts/redhat/redhat/redhat-redis-imagestreams/0.0.1/src/Chart.yaml new file mode 100644 index 000000000..ab39ace4b --- /dev/null +++ b/charts/redhat/redhat/redhat-redis-imagestreams/0.0.1/src/Chart.yaml @@ -0,0 +1,13 @@ +description: |- + This content is expermental, do not use it in production. Provides a Redis database on RHEL imagestreams. + For more information about Redis container see https://github.com/sclorg/redis-container/. +annotations: + charts.openshift.io/name: Provides a Redis database on RHEL imagestreams (experimental). +apiVersion: v2 +appVersion: 0.0.1 +kubeVersion: '>=1.20.0' +name: redis-imagestreams +tags: builder,redis +sources: + - https://github.com/sclorg/helm-charts +version: 0.0.1 diff --git a/charts/redhat/redhat/redhat-redis-imagestreams/0.0.1/src/templates/imagestreams.yaml b/charts/redhat/redhat/redhat-redis-imagestreams/0.0.1/src/templates/imagestreams.yaml new file mode 100644 index 000000000..0b95f2793 --- /dev/null +++ b/charts/redhat/redhat/redhat-redis-imagestreams/0.0.1/src/templates/imagestreams.yaml @@ -0,0 +1,76 @@ +apiVersion: image.openshift.io/v1 +kind: ImageStream +metadata: + annotations: + openshift.io/display-name: Redis + name: redis +spec: + tags: + - annotations: + description: >- + Provides a Redis database on RHEL. For more information about using + this database image, including OpenShift considerations, see + https://github.com/sclorg/redis-container/tree/master/6/README.md. + + + WARNING: By selecting this tag, your application will automatically + update to use the latest version of Redis available on OpenShift, + including major version updates. + iconClass: icon-redis + openshift.io/display-name: Redis (Latest) + openshift.io/provider-display-name: 'Red Hat, Inc.' + tags: redis + from: + kind: ImageStreamTag + name: 6-el8 + referencePolicy: + type: Local + name: latest + - annotations: + description: >- + Provides a Redis 6 database on RHEL 9. For more information about + using this database image, including OpenShift considerations, see + https://github.com/sclorg/redis-container/tree/master/6/README.md. + iconClass: icon-redis + openshift.io/display-name: Redis 6 (RHEL 9) + openshift.io/provider-display-name: 'Red Hat, Inc.' + tags: redis + version: '6' + from: + kind: DockerImage + name: 'registry.redhat.io/rhel9/redis-6:latest' + referencePolicy: + type: Local + name: 6-el9 + - annotations: + description: >- + Provides a Redis 6 database on RHEL 8. For more information about + using this database image, including OpenShift considerations, see + https://github.com/sclorg/redis-container/tree/master/6/README.md. + iconClass: icon-redis + openshift.io/display-name: Redis 6 (RHEL 8) + openshift.io/provider-display-name: 'Red Hat, Inc.' + tags: redis + version: '6' + from: + kind: DockerImage + name: 'registry.redhat.io/rhel8/redis-6:latest' + referencePolicy: + type: Local + name: 6-el8 + - annotations: + description: >- + Provides a Redis 6 database on RHEL 7. For more information about + using this database image, including OpenShift considerations, see + https://github.com/sclorg/redis-container/tree/master/6/README.md. + iconClass: icon-redis + openshift.io/display-name: Redis 6 (RHEL 7) + openshift.io/provider-display-name: 'Red Hat, Inc.' + tags: redis + version: '6' + from: + kind: DockerImage + name: 'registry.redhat.io/rhscl/redis-6-rhel7:latest' + referencePolicy: + type: Local + name: 6-el7 diff --git a/charts/redhat/redhat/redhat-redis-imagestreams/OWNERS b/charts/redhat/redhat/redhat-redis-imagestreams/OWNERS new file mode 100644 index 000000000..3ea936006 --- /dev/null +++ b/charts/redhat/redhat/redhat-redis-imagestreams/OWNERS @@ -0,0 +1,9 @@ +chart: + name: redhat-redis-imagestreams + description: This is the Red Hat Redis imagestreams chart +publicPgpKey: null +users: + - githubUsername: phracek +vendor: + label: redhat + name: Red Hat diff --git a/charts/redhat/redhat/redhat-redis-persistent/0.0.1/src/Chart.yaml b/charts/redhat/redhat/redhat-redis-persistent/0.0.1/src/Chart.yaml new file mode 100644 index 000000000..e44c492e3 --- /dev/null +++ b/charts/redhat/redhat/redhat-redis-persistent/0.0.1/src/Chart.yaml @@ -0,0 +1,13 @@ +description: |- + This content is expermental, do not use it in production. Redis in-memory data structure store, with persistent storage. For more information about using this template, including OpenShift considerations, see https://github.com/sclorg/redis-container/blob/master/5. + + NOTE: You must have persistent volumes available in your cluster to use this template. +name: redis-persistent +tags: database,redis +version: 0.0.1 +annotations: + charts.openshift.io/name: Red Hat Redis in-memory data structure store, with persistent storage (experimental). +apiVersion: v2 +appVersion: 0.0.1 +sources: + - https://github.com/sclorg/helm-charts diff --git a/charts/redhat/redhat/redhat-redis-persistent/0.0.1/src/README.md b/charts/redhat/redhat/redhat-redis-persistent/0.0.1/src/README.md new file mode 100644 index 000000000..fb1d95c66 --- /dev/null +++ b/charts/redhat/redhat/redhat-redis-persistent/0.0.1/src/README.md @@ -0,0 +1,19 @@ +# Redis helm chart + +A Helm chart for building and deploying a [Redis](https://github/sclorg/redis-container) application on OpenShift. + +For more information about helm charts see the official [Helm Charts Documentation](https://helm.sh/). + +You need to have access to a cluster for each operation with OpenShift 4, like deploying and testing. + +## Values +Below is a table of each value used to configure this chart. + +| Value | Description | Default | Additional Information | +|---------------------------------------------| ----------- | -- | ---------------------- | +| `database_service_name` | The name of the OpenShift Service exposed for the database. | `redis` | - | +| `redis_password` | Password for the Redis connection user. | | Expression like: `[a-zA-Z0-9]{16}` | +| `redis_version` | Version of Redis image to be used (6-el8, or latest). | `6-el8` | | +| `namespace` | The OpenShift Namespace where the ImageStream resides. | `redis-persistent-testing` | | +| `memory_limit` | Maximum amount of memory the container can use. | `521Mi` | | +| `volume_capacity` | Volume space available for data, e.g. 512Mi, 2Gi. | `1Gi` | | diff --git a/charts/redhat/redhat/redhat-redis-persistent/0.0.1/src/templates/deploymentconfig.yaml b/charts/redhat/redhat/redhat-redis-persistent/0.0.1/src/templates/deploymentconfig.yaml new file mode 100644 index 000000000..9de3c9a92 --- /dev/null +++ b/charts/redhat/redhat/redhat-redis-persistent/0.0.1/src/templates/deploymentconfig.yaml @@ -0,0 +1,74 @@ +apiVersion: apps.openshift.io/v1 +kind: DeploymentConfig +metadata: + annotations: + template.alpha.openshift.io/wait-for-ready: "true" + labels: + template: redis-persistent-template + name: {{ .Values.database_service_name }} +spec: + replicas: 1 + selector: + name: {{ .Values.database_service_name }} + strategy: + type: Recreate + template: + metadata: + labels: + name: {{ .Values.database_service_name }} + spec: + containers: + - env: + - name: REDIS_PASSWORD + valueFrom: + secretKeyRef: + key: database-password + name: {{ .Values.database_service_name }} + image: "redis:{{ .Values.redis_version }}" + imagePullPolicy: IfNotPresent + livenessProbe: + initialDelaySeconds: 30 + tcpSocket: + port: 6379 + timeoutSeconds: 1 + name: redis + ports: + - containerPort: 6379 + protocol: TCP + readinessProbe: + exec: + command: + - /bin/sh + - -i + - -c + - test "$(redis-cli -h 127.0.0.1 -a $REDIS_PASSWORD ping)" == "PONG" + initialDelaySeconds: 5 + timeoutSeconds: 1 + resources: + limits: + memory: {{ .Values.memory_limit }} + securityContext: + capabilities: {} + privileged: false + terminationMessagePath: /dev/termination-log + volumeMounts: + - mountPath: /var/lib/redis/data + name: {{ .Values.database_service_name }}-data + dnsPolicy: ClusterFirst + restartPolicy: Always + volumes: + - name: {{ .Values.database_service_name }}-data + persistentVolumeClaim: + claimName: {{ .Values.database_service_name }} + triggers: + - imageChangeParams: + automatic: true + containerNames: + - redis + from: + kind: ImageStreamTag + name: redis:{{ .Values.redis_version }} + lastTriggeredImage: "" + type: ImageChange + - type: ConfigChange +status: {} diff --git a/charts/redhat/redhat/redhat-redis-persistent/0.0.1/src/templates/persistentvolumeclaim.yaml b/charts/redhat/redhat/redhat-redis-persistent/0.0.1/src/templates/persistentvolumeclaim.yaml new file mode 100644 index 000000000..1d705b240 --- /dev/null +++ b/charts/redhat/redhat/redhat-redis-persistent/0.0.1/src/templates/persistentvolumeclaim.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + labels: + template: redis-persistent-template + name: {{ .Values.database_service_name }} +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: {{ .Values.volume_capacity }} diff --git a/charts/redhat/redhat/redhat-redis-persistent/0.0.1/src/templates/secret.yaml b/charts/redhat/redhat/redhat-redis-persistent/0.0.1/src/templates/secret.yaml new file mode 100644 index 000000000..a205fcab6 --- /dev/null +++ b/charts/redhat/redhat/redhat-redis-persistent/0.0.1/src/templates/secret.yaml @@ -0,0 +1,10 @@ +apiVersion: v1 +kind: Secret +metadata: + annotations: + template.openshift.io/expose-password: '{.data[''database-password'']}' + labels: + template: redis-persistent-template + name: {{ .Values.database_service_name }} +stringData: + database-password: {{ .Values.redis_password }} diff --git a/charts/redhat/redhat/redhat-redis-persistent/0.0.1/src/templates/service.yaml b/charts/redhat/redhat/redhat-redis-persistent/0.0.1/src/templates/service.yaml new file mode 100644 index 000000000..edad216d1 --- /dev/null +++ b/charts/redhat/redhat/redhat-redis-persistent/0.0.1/src/templates/service.yaml @@ -0,0 +1,21 @@ +apiVersion: v1 +kind: Service +metadata: + annotations: + template.openshift.io/expose-uri: redis://{.spec.clusterIP}:{.spec.ports[?(.name=="redis")].port} + labels: + template: redis-persistent-template + name: {{ .Values.database_service_name }} +spec: + ports: + - name: redis + nodePort: 0 + port: 6379 + protocol: TCP + targetPort: 6379 + selector: + name: {{ .Values.database_service_name }} + sessionAffinity: None + type: ClusterIP +status: + loadBalancer: {} diff --git a/charts/redhat/redhat/redhat-redis-persistent/0.0.1/src/templates/tests/test-redis-connection.yaml b/charts/redhat/redhat/redhat-redis-persistent/0.0.1/src/templates/tests/test-redis-connection.yaml new file mode 100644 index 000000000..e0a652505 --- /dev/null +++ b/charts/redhat/redhat/redhat-redis-persistent/0.0.1/src/templates/tests/test-redis-connection.yaml @@ -0,0 +1,23 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ .Release.Name }}-connection-test" + namespace: "{{ .Release.Namespace }}" + annotations: + "helm.sh/hook": test + labels: + name: {{ .Values.database_service_name }} +spec: + #serviceAccount: {{ .Values.serviceAccount }} + containers: + - name: "redis-connection-test" + image: "registry.redhat.io/rhel8/redis-6:latest" + imagePullPolicy: IfNotPresent + env: + - name: REDIS_PASSWORD + value: "{{ .Values.redis_password }}" + command: + - /bin/bash + - -ec + - "timeout 15 redis-cli -h {{ .Values.database_service_name }} -a $REDIS_PASSWORD ping" + restartPolicy: Never diff --git a/charts/redhat/redhat/redhat-redis-persistent/0.0.1/src/values.schema.json b/charts/redhat/redhat/redhat-redis-persistent/0.0.1/src/values.schema.json new file mode 100644 index 000000000..8f54d85ad --- /dev/null +++ b/charts/redhat/redhat/redhat-redis-persistent/0.0.1/src/values.schema.json @@ -0,0 +1,40 @@ +{ + "$schema": "http://json-schema.org/schema#", + "type": "object", + "properties": { + "database_service_name": { + "type": "string", + "pattern": "^[a-z0-9-_]+$" + }, + "namespace": { + "type": "string" + }, + "redis_password": { + "type": "string" + }, + "volume_capacity": { + "type": "string", + "title": "Persistent Volume Size", + "form": true, + "render": "slider", + "sliderMin": 1, + "sliderMax": 100, + "sliderUnit": "Gi" + }, + "memory_limit": { + "type": "string", + "title": "Database memory limit", + "form": true, + "render": "slider", + "sliderMin": 512, + "sliderMax": 65536, + "sliderUnit": "Mi" + }, + "redis_version": { + "type": "string", + "description": "Specify redis imagestream tag", + "enum": [ "latest", "6-el9", "6-el8", "6-el7" ] + } + } +} + diff --git a/charts/redhat/redhat/redhat-redis-persistent/0.0.1/src/values.yaml b/charts/redhat/redhat/redhat-redis-persistent/0.0.1/src/values.yaml new file mode 100644 index 000000000..93e3be81f --- /dev/null +++ b/charts/redhat/redhat/redhat-redis-persistent/0.0.1/src/values.yaml @@ -0,0 +1,6 @@ +database_service_name: redis +memory_limit: 512Mi +namespace: redis-persistent-testing +redis_password: testp # TODO: must define a default value for .redis_password' +redis_version: 6-el8 +volume_capacity: 1Gi diff --git a/charts/redhat/redhat/redhat-redis-persistent/0.0.2/src/Chart.yaml b/charts/redhat/redhat/redhat-redis-persistent/0.0.2/src/Chart.yaml new file mode 100644 index 000000000..2fa1eba24 --- /dev/null +++ b/charts/redhat/redhat/redhat-redis-persistent/0.0.2/src/Chart.yaml @@ -0,0 +1,16 @@ +description: |- + This content is expermental, do not use it in production. Redis in-memory data structure store, with persistent storage. For more information about using this template, including OpenShift considerations, see https://github.com/sclorg/redis-container/blob/master/5. + + NOTE: You must have persistent volumes available in your cluster to use this template. +name: redis-persistent +tags: database,redis +version: 0.0.2 +annotations: + charts.openshift.io/name: Red Hat Redis in-memory data structure store, with persistent storage (experimental) + charts.openshift.io/provider: Red Hat + charts.openshift.io/providerType: redhat +apiVersion: v2 +appVersion: 0.0.2 +kubeVersion: '>=1.20.0' +sources: + - https://github.com/sclorg/helm-charts diff --git a/charts/redhat/redhat/redhat-redis-persistent/0.0.2/src/README.md b/charts/redhat/redhat/redhat-redis-persistent/0.0.2/src/README.md new file mode 100644 index 000000000..fb1d95c66 --- /dev/null +++ b/charts/redhat/redhat/redhat-redis-persistent/0.0.2/src/README.md @@ -0,0 +1,19 @@ +# Redis helm chart + +A Helm chart for building and deploying a [Redis](https://github/sclorg/redis-container) application on OpenShift. + +For more information about helm charts see the official [Helm Charts Documentation](https://helm.sh/). + +You need to have access to a cluster for each operation with OpenShift 4, like deploying and testing. + +## Values +Below is a table of each value used to configure this chart. + +| Value | Description | Default | Additional Information | +|---------------------------------------------| ----------- | -- | ---------------------- | +| `database_service_name` | The name of the OpenShift Service exposed for the database. | `redis` | - | +| `redis_password` | Password for the Redis connection user. | | Expression like: `[a-zA-Z0-9]{16}` | +| `redis_version` | Version of Redis image to be used (6-el8, or latest). | `6-el8` | | +| `namespace` | The OpenShift Namespace where the ImageStream resides. | `redis-persistent-testing` | | +| `memory_limit` | Maximum amount of memory the container can use. | `521Mi` | | +| `volume_capacity` | Volume space available for data, e.g. 512Mi, 2Gi. | `1Gi` | | diff --git a/charts/redhat/redhat/redhat-redis-persistent/0.0.2/src/templates/deployment.yaml b/charts/redhat/redhat/redhat-redis-persistent/0.0.2/src/templates/deployment.yaml new file mode 100644 index 000000000..75af2fc9d --- /dev/null +++ b/charts/redhat/redhat/redhat-redis-persistent/0.0.2/src/templates/deployment.yaml @@ -0,0 +1,74 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + annotations: + template.alpha.openshift.io/wait-for-ready: "true" + image.openshift.io/triggers: |- + [ + { + "from": { + "kind": "ImageStreamTag", + "name": "redis:{{ .Values.redis_version }}" + }, + "fieldPath": "spec.template.spec.containers[0].image" + } + ] + labels: + template: redis-persistent-template + name: {{ .Values.database_service_name }} +spec: + replicas: 1 + selector: + matchLabels: + name: {{ .Values.database_service_name }} + strategy: + type: Recreate + template: + metadata: + labels: + name: {{ .Values.database_service_name }} + spec: + containers: + - env: + - name: REDIS_PASSWORD + valueFrom: + secretKeyRef: + key: database-password + name: {{ .Values.database_service_name }} + image: " " + imagePullPolicy: IfNotPresent + livenessProbe: + initialDelaySeconds: 30 + tcpSocket: + port: 6379 + timeoutSeconds: 1 + name: redis + ports: + - containerPort: 6379 + protocol: TCP + readinessProbe: + exec: + command: + - /bin/sh + - -i + - -c + - test "$(redis-cli -h 127.0.0.1 -a $REDIS_PASSWORD ping)" == "PONG" + initialDelaySeconds: 5 + timeoutSeconds: 1 + resources: + limits: + memory: {{ .Values.memory_limit }} + securityContext: + capabilities: {} + privileged: false + terminationMessagePath: /dev/termination-log + volumeMounts: + - mountPath: /var/lib/redis/data + name: {{ .Values.database_service_name }}-data + dnsPolicy: ClusterFirst + restartPolicy: Always + volumes: + - name: {{ .Values.database_service_name }}-data + persistentVolumeClaim: + claimName: {{ .Values.database_service_name }} +status: {} diff --git a/charts/redhat/redhat/redhat-redis-persistent/0.0.2/src/templates/persistentvolumeclaim.yaml b/charts/redhat/redhat/redhat-redis-persistent/0.0.2/src/templates/persistentvolumeclaim.yaml new file mode 100644 index 000000000..1d705b240 --- /dev/null +++ b/charts/redhat/redhat/redhat-redis-persistent/0.0.2/src/templates/persistentvolumeclaim.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + labels: + template: redis-persistent-template + name: {{ .Values.database_service_name }} +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: {{ .Values.volume_capacity }} diff --git a/charts/redhat/redhat/redhat-redis-persistent/0.0.2/src/templates/secret.yaml b/charts/redhat/redhat/redhat-redis-persistent/0.0.2/src/templates/secret.yaml new file mode 100644 index 000000000..a205fcab6 --- /dev/null +++ b/charts/redhat/redhat/redhat-redis-persistent/0.0.2/src/templates/secret.yaml @@ -0,0 +1,10 @@ +apiVersion: v1 +kind: Secret +metadata: + annotations: + template.openshift.io/expose-password: '{.data[''database-password'']}' + labels: + template: redis-persistent-template + name: {{ .Values.database_service_name }} +stringData: + database-password: {{ .Values.redis_password }} diff --git a/charts/redhat/redhat/redhat-redis-persistent/0.0.2/src/templates/service.yaml b/charts/redhat/redhat/redhat-redis-persistent/0.0.2/src/templates/service.yaml new file mode 100644 index 000000000..edad216d1 --- /dev/null +++ b/charts/redhat/redhat/redhat-redis-persistent/0.0.2/src/templates/service.yaml @@ -0,0 +1,21 @@ +apiVersion: v1 +kind: Service +metadata: + annotations: + template.openshift.io/expose-uri: redis://{.spec.clusterIP}:{.spec.ports[?(.name=="redis")].port} + labels: + template: redis-persistent-template + name: {{ .Values.database_service_name }} +spec: + ports: + - name: redis + nodePort: 0 + port: 6379 + protocol: TCP + targetPort: 6379 + selector: + name: {{ .Values.database_service_name }} + sessionAffinity: None + type: ClusterIP +status: + loadBalancer: {} diff --git a/charts/redhat/redhat/redhat-redis-persistent/0.0.2/src/templates/tests/test-redis-connection.yaml b/charts/redhat/redhat/redhat-redis-persistent/0.0.2/src/templates/tests/test-redis-connection.yaml new file mode 100644 index 000000000..e0a652505 --- /dev/null +++ b/charts/redhat/redhat/redhat-redis-persistent/0.0.2/src/templates/tests/test-redis-connection.yaml @@ -0,0 +1,23 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ .Release.Name }}-connection-test" + namespace: "{{ .Release.Namespace }}" + annotations: + "helm.sh/hook": test + labels: + name: {{ .Values.database_service_name }} +spec: + #serviceAccount: {{ .Values.serviceAccount }} + containers: + - name: "redis-connection-test" + image: "registry.redhat.io/rhel8/redis-6:latest" + imagePullPolicy: IfNotPresent + env: + - name: REDIS_PASSWORD + value: "{{ .Values.redis_password }}" + command: + - /bin/bash + - -ec + - "timeout 15 redis-cli -h {{ .Values.database_service_name }} -a $REDIS_PASSWORD ping" + restartPolicy: Never diff --git a/charts/redhat/redhat/redhat-redis-persistent/0.0.2/src/values.schema.json b/charts/redhat/redhat/redhat-redis-persistent/0.0.2/src/values.schema.json new file mode 100644 index 000000000..8f54d85ad --- /dev/null +++ b/charts/redhat/redhat/redhat-redis-persistent/0.0.2/src/values.schema.json @@ -0,0 +1,40 @@ +{ + "$schema": "http://json-schema.org/schema#", + "type": "object", + "properties": { + "database_service_name": { + "type": "string", + "pattern": "^[a-z0-9-_]+$" + }, + "namespace": { + "type": "string" + }, + "redis_password": { + "type": "string" + }, + "volume_capacity": { + "type": "string", + "title": "Persistent Volume Size", + "form": true, + "render": "slider", + "sliderMin": 1, + "sliderMax": 100, + "sliderUnit": "Gi" + }, + "memory_limit": { + "type": "string", + "title": "Database memory limit", + "form": true, + "render": "slider", + "sliderMin": 512, + "sliderMax": 65536, + "sliderUnit": "Mi" + }, + "redis_version": { + "type": "string", + "description": "Specify redis imagestream tag", + "enum": [ "latest", "6-el9", "6-el8", "6-el7" ] + } + } +} + diff --git a/charts/redhat/redhat/redhat-redis-persistent/0.0.2/src/values.yaml b/charts/redhat/redhat/redhat-redis-persistent/0.0.2/src/values.yaml new file mode 100644 index 000000000..93e3be81f --- /dev/null +++ b/charts/redhat/redhat/redhat-redis-persistent/0.0.2/src/values.yaml @@ -0,0 +1,6 @@ +database_service_name: redis +memory_limit: 512Mi +namespace: redis-persistent-testing +redis_password: testp # TODO: must define a default value for .redis_password' +redis_version: 6-el8 +volume_capacity: 1Gi diff --git a/charts/redhat/redhat/redhat-redis-persistent/OWNERS b/charts/redhat/redhat/redhat-redis-persistent/OWNERS new file mode 100644 index 000000000..dc07f1056 --- /dev/null +++ b/charts/redhat/redhat/redhat-redis-persistent/OWNERS @@ -0,0 +1,9 @@ +chart: + name: redhat-redis-persistent + description: This is the Red Hat Redis persistent storage chart +publicPgpKey: null +users: + - githubUsername: phracek +vendor: + label: redhat + name: Red Hat diff --git a/charts/redhat/redhat/redhat-redis-sed/1.0.0/redis-sed-1.0.0.tgz b/charts/redhat/redhat/redhat-redis-sed/1.0.0/redis-sed-1.0.0.tgz new file mode 100644 index 000000000..3662bc014 Binary files /dev/null and b/charts/redhat/redhat/redhat-redis-sed/1.0.0/redis-sed-1.0.0.tgz differ diff --git a/charts/redhat/redhat/redhat-redis-sed/1.0.0/report.yaml b/charts/redhat/redhat/redhat-redis-sed/1.0.0/report.yaml new file mode 100644 index 000000000..9f42e2a6a --- /dev/null +++ b/charts/redhat/redhat/redhat-redis-sed/1.0.0/report.yaml @@ -0,0 +1,87 @@ +apiversion: v1 +kind: verify-report +metadata: + tool: + verifier-version: 1.5.0 + profile: + VendorType: partner + version: v1.1 + chart-uri: /.kube/redis-sed-1.0.0.tgz + digests: + chart: sha256:ad07f47aa7fc3b2f0917ae0ded7d97dfc4e2107837504b743c9e83ff41130055 + package: e9484e32e141a9051e21dd8bff46958cb44ef371d8af193305a141a979e2b308 + lastCertifiedTimestamp: "2022-04-05T11:05:21.005229+00:00" + testedOpenShiftVersion: "4.9" + supportedOpenShiftVersions: '>=4.7' + chart: + name: redis-sed + home: "" + sources: [] + version: 1.0.0 + description: A Helm chart for Redis Service Endpoint Definition (SED) + keywords: [] + maintainers: [] + icon: "" + apiversion: v2 + condition: "" + tags: "" + appversion: 1.0.0 + deprecated: false + annotations: + charts.openshift.io/archs: x86_64 + charts.openshift.io/name: Redis Service Endpoint Definition (SED) + charts.openshift.io/provider: RedHat + charts.openshift.io/supportURL: https://github.com/redhat-developer/service-endpoint-definition + kubeversion: '>=1.20.0' + dependencies: [] + type: application + chart-overrides: "" +results: + - check: v1.0/contains-test + type: Mandatory + outcome: PASS + reason: Chart test files exist + - check: v1.0/helm-lint + type: Mandatory + outcome: PASS + reason: Helm lint successful + - check: v1.0/images-are-certified + type: Mandatory + outcome: PASS + reason: 'Image is Red Hat certified : registry.connect.redhat.com/armory/redis:1.0.0-ubi' + - check: v1.0/chart-testing + type: Mandatory + outcome: PASS + reason: Chart tests have passed + - check: v1.0/required-annotations-present + type: Mandatory + outcome: PASS + reason: All required annotations present + - check: v1.0/has-readme + type: Mandatory + outcome: PASS + reason: Chart has a README + - check: v1.0/is-helm-v3 + type: Mandatory + outcome: PASS + reason: API version is V2, used in Helm 3 + - check: v1.1/has-kubeversion + type: Mandatory + outcome: PASS + reason: Kubernetes version specified + - check: v1.0/not-contains-crds + type: Mandatory + outcome: PASS + reason: Chart does not contain CRDs + - check: v1.0/not-contain-csi-objects + type: Mandatory + outcome: PASS + reason: CSI objects do not exist + - check: v1.0/contains-values + type: Mandatory + outcome: PASS + reason: Values file exist + - check: v1.0/contains-values-schema + type: Mandatory + outcome: PASS + reason: Values schema file exist \ No newline at end of file diff --git a/charts/redhat/redhat/redhat-redis-sed/1.0.1/redis-sed-1.0.1.tgz b/charts/redhat/redhat/redhat-redis-sed/1.0.1/redis-sed-1.0.1.tgz new file mode 100644 index 000000000..0ac7ab77c Binary files /dev/null and b/charts/redhat/redhat/redhat-redis-sed/1.0.1/redis-sed-1.0.1.tgz differ diff --git a/charts/redhat/redhat/redhat-redis-sed/1.0.1/report.yaml b/charts/redhat/redhat/redhat-redis-sed/1.0.1/report.yaml new file mode 100644 index 000000000..0130d1a4e --- /dev/null +++ b/charts/redhat/redhat/redhat-redis-sed/1.0.1/report.yaml @@ -0,0 +1,87 @@ +apiversion: v1 +kind: verify-report +metadata: + tool: + verifier-version: 1.5.0 + profile: + VendorType: partner + version: v1.1 + chart-uri: /.kube/redis-sed-1.0.1.tgz + digests: + chart: sha256:639de96ec12341cab72ca4aa1f539dcf475e3a5c82c0871e3798418004fd36c8 + package: 3115a6b272e34d7afe44bf2d25dc8eef34b10df9042fa858f597be3306ab1a25 + lastCertifiedTimestamp: "2022-05-05T07:17:43.075639+00:00" + testedOpenShiftVersion: "4.9" + supportedOpenShiftVersions: '>=4.7' + chart: + name: redis-sed + home: "" + sources: [] + version: 1.0.1 + description: A Helm chart for Redis Service Endpoint Definition (SED) + keywords: [] + maintainers: [] + icon: "" + apiversion: v2 + condition: "" + tags: "" + appversion: 1.0.1 + deprecated: false + annotations: + charts.openshift.io/archs: x86_64 + charts.openshift.io/name: Redis Service Endpoint Definition (SED) + charts.openshift.io/provider: RedHat + charts.openshift.io/supportURL: https://github.com/redhat-developer/service-endpoint-definition + kubeversion: '>=1.20.0' + dependencies: [] + type: application + chart-overrides: "" +results: + - check: v1.0/contains-values + type: Mandatory + outcome: PASS + reason: Values file exist + - check: v1.0/contains-values-schema + type: Mandatory + outcome: PASS + reason: Values schema file exist + - check: v1.1/has-kubeversion + type: Mandatory + outcome: PASS + reason: Kubernetes version specified + - check: v1.0/helm-lint + type: Mandatory + outcome: PASS + reason: Helm lint successful + - check: v1.0/images-are-certified + type: Mandatory + outcome: PASS + reason: 'Image is Red Hat certified : registry.connect.redhat.com/armory/redis:1.0.0-ubi' + - check: v1.0/chart-testing + type: Mandatory + outcome: PASS + reason: Chart tests have passed + - check: v1.0/required-annotations-present + type: Mandatory + outcome: PASS + reason: All required annotations present + - check: v1.0/has-readme + type: Mandatory + outcome: PASS + reason: Chart has a README + - check: v1.0/is-helm-v3 + type: Mandatory + outcome: PASS + reason: API version is V2, used in Helm 3 + - check: v1.0/contains-test + type: Mandatory + outcome: PASS + reason: Chart test files exist + - check: v1.0/not-contains-crds + type: Mandatory + outcome: PASS + reason: Chart does not contain CRDs + - check: v1.0/not-contain-csi-objects + type: Mandatory + outcome: PASS + reason: CSI objects do not exist diff --git a/charts/redhat/redhat/redhat-redis-sed/OWNERS b/charts/redhat/redhat/redhat-redis-sed/OWNERS new file mode 100644 index 000000000..4b71a0a10 --- /dev/null +++ b/charts/redhat/redhat/redhat-redis-sed/OWNERS @@ -0,0 +1,9 @@ +chart: + name: redhat-redis-sed + shortDescription: Redis Service Endpoint Definition +publicPgpKey: null +users: +- githubUsername: fbm3307 +vendor: + label: redhat + name: Red Hat \ No newline at end of file diff --git a/charts/redhat/redhat/redhat-ruby-rails-application/0.0.1/src/Chart.yaml b/charts/redhat/redhat/redhat-ruby-rails-application/0.0.1/src/Chart.yaml new file mode 100644 index 000000000..2ad423cea --- /dev/null +++ b/charts/redhat/redhat/redhat-ruby-rails-application/0.0.1/src/Chart.yaml @@ -0,0 +1,14 @@ +description: This content is experimental, do not use it in production. An example Rails application with no database. For more information about + using this template, including OpenShift considerations, see https://github.com/sclorg/rails-ex/blob/master/README.md. +name: ruby-rails-application +tags: quickstart,ruby,rails +version: 0.0.1 +kubeVersion: '>=1.20.0' +annotations: + charts.openshift.io/name: Red Hat Apache Rails application with no database (experimental) + charts.openshift.io/provider: Red Hat + charts.openshift.io/providerType: redhat +apiVersion: v2 +appVersion: 0.0.1 +sources: + - https://github.com/sclorg/helm-charts diff --git a/charts/redhat/redhat/redhat-ruby-rails-application/0.0.1/src/README.md b/charts/redhat/redhat/redhat-ruby-rails-application/0.0.1/src/README.md new file mode 100644 index 000000000..47ef1933f --- /dev/null +++ b/charts/redhat/redhat/redhat-ruby-rails-application/0.0.1/src/README.md @@ -0,0 +1,25 @@ +# Rails application template with no database helm chart + +A Helm chart for building and deploying a [Rails-ex](https://github/sclorg/rails-ex) application on OpenShift. + +For more information about helm charts see the official [Helm Charts Documentation](https://helm.sh/). + +You need to have access to a cluster for each operation with OpenShift 4, like deploying and testing. + +## Values +Below is a table of each value used to configure this chart. + +| Value | Description | Default | Additional Information | +|-------------------------|-----------------------------------------------------------------------------------------------------------|------------------------------------------|------------------------| +| `name` | The name assigned to all of the frontend objects defined in this helm chart. | `django-example` | | +| `namespace` | The OpenShift Namespace where the ImageStream resides. | `openshift` | | +| `ruby_version ` | Specify Ruby imagestream tag. | `3.1-ubi8` | | +| `memory_limit` | Maximum amount of memory the container can use. | `521Mi` | | +| `source_repository_url` | The URL of the repository with your application source code. | `https://github.com/sclorg/rails-ex.git` | | +| `source_repository_ref` | Set this to a branch name, tag or other ref of your repository if you are not using the default branch. | `master` | | +| `context_dir` | Set this to the relative path to your project if it is not in the root of your repository. | | | +| `application_domain` | The exposed hostname that will route to the httpd service, if left blank a value will be defaulted. | | | +| `github_webhook_secret` | Github trigger secret. A difficult to guess string encoded as part of the webhook URL. Not encrypted. | | | +| `rails_env` | Environment under which the sample application will run. Could be set to production, development or test. | | | +| `secret_key_base` | Your secret key for verifying the integrity of signed cookies. | | | +| `rubygem_mirror` | The custom RubyGems mirror URL. | | | diff --git a/charts/redhat/redhat/redhat-ruby-rails-application/0.0.1/src/templates/buildconfig.yaml b/charts/redhat/redhat/redhat-ruby-rails-application/0.0.1/src/templates/buildconfig.yaml new file mode 100644 index 000000000..e92678ddf --- /dev/null +++ b/charts/redhat/redhat/redhat-ruby-rails-application/0.0.1/src/templates/buildconfig.yaml @@ -0,0 +1,37 @@ +apiVersion: build.openshift.io/v1 +kind: BuildConfig +metadata: + annotations: + description: Defines how to build the application + template.alpha.openshift.io/wait-for-ready: "true" + labels: + app: rails-example + template: rails-example + name: {{ .Values.name }} +spec: + output: + to: + kind: ImageStreamTag + name: {{ .Values.name }}:latest + source: + contextDir: {{ .Values.context_dir }} + git: + ref: {{ .Values.source_repository_ref }} + uri: {{ .Values.source_repository_url }} + type: Git + strategy: + sourceStrategy: + env: + - name: RUBYGEM_MIRROR + value: {{ .Values.rubygem_mirror }} + from: + kind: ImageStreamTag + name: ruby:{{ .Values.ruby_version }} + namespace: {{ .Values.namespace }} + type: Source + triggers: + - type: ImageChange + - type: ConfigChange + - github: + secret: {{ .Values.github_webhook_secret }} + type: GitHub diff --git a/charts/redhat/redhat/redhat-ruby-rails-application/0.0.1/src/templates/deployment.yaml b/charts/redhat/redhat/redhat-ruby-rails-application/0.0.1/src/templates/deployment.yaml new file mode 100644 index 000000000..100c4631e --- /dev/null +++ b/charts/redhat/redhat/redhat-ruby-rails-application/0.0.1/src/templates/deployment.yaml @@ -0,0 +1,56 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + annotations: + description: Defines how to deploy the application server + image.openshift.io/triggers: |- + [ + { + "from": { + "kind": "ImageStreamTag", + "name": "{{ .Values.name }}:latest" + }, + "fieldPath": "spec.template.spec.containers[0].image" + } + ] + template.alpha.openshift.io/wait-for-ready: "true" + labels: + app: rails-example + template: rails-example + name: {{ .Values.name }} +spec: + replicas: 1 + selector: + matchLabels: + name: {{ .Values.name }} + strategy: + type: RollingUpdate + template: + metadata: + labels: + name: {{ .Values.name }} + name: {{ .Values.name }} + spec: + containers: + - env: + - name: RAILS_ENV + value: {{ .Values.rails_env }} + image: ' ' + livenessProbe: + httpGet: + path: / + port: 8080 + initialDelaySeconds: 30 + timeoutSeconds: 3 + name: rails-example + ports: + - containerPort: 8080 + readinessProbe: + httpGet: + path: / + port: 8080 + initialDelaySeconds: 3 + timeoutSeconds: 3 + resources: + limits: + memory: {{ .Values.memory_limit }} diff --git a/charts/redhat/redhat/redhat-ruby-rails-application/0.0.1/src/templates/imagestream.yaml b/charts/redhat/redhat/redhat-ruby-rails-application/0.0.1/src/templates/imagestream.yaml new file mode 100644 index 000000000..f17d7084a --- /dev/null +++ b/charts/redhat/redhat/redhat-ruby-rails-application/0.0.1/src/templates/imagestream.yaml @@ -0,0 +1,9 @@ +apiVersion: image.openshift.io/v1 +kind: ImageStream +metadata: + annotations: + description: Keeps track of changes in the application image + labels: + app: rails-example + template: rails-example + name: {{ .Values.name }} diff --git a/charts/redhat/redhat/redhat-ruby-rails-application/0.0.1/src/templates/route.yaml b/charts/redhat/redhat/redhat-ruby-rails-application/0.0.1/src/templates/route.yaml new file mode 100644 index 000000000..a0f1a6e4b --- /dev/null +++ b/charts/redhat/redhat/redhat-ruby-rails-application/0.0.1/src/templates/route.yaml @@ -0,0 +1,12 @@ +apiVersion: route.openshift.io/v1 +kind: Route +metadata: + labels: + app: rails-example + template: rails-example + name: {{ .Values.name }} +spec: + host: {{ .Values.application_domain }} + to: + kind: Service + name: {{ .Values.name }} diff --git a/charts/redhat/redhat/redhat-ruby-rails-application/0.0.1/src/templates/service.yaml b/charts/redhat/redhat/redhat-ruby-rails-application/0.0.1/src/templates/service.yaml new file mode 100644 index 000000000..23fd87035 --- /dev/null +++ b/charts/redhat/redhat/redhat-ruby-rails-application/0.0.1/src/templates/service.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: Service +metadata: + annotations: + description: Exposes and load balances the application pods + labels: + app: rails-example + template: rails-example + name: {{ .Values.name }} +spec: + ports: + - name: web + port: 8080 + targetPort: 8080 + selector: + name: {{ .Values.name }} diff --git a/charts/redhat/redhat/redhat-ruby-rails-application/0.0.1/src/templates/tests/test-ruby-rails-connection.yaml b/charts/redhat/redhat/redhat-ruby-rails-application/0.0.1/src/templates/tests/test-ruby-rails-connection.yaml new file mode 100644 index 000000000..af674ec82 --- /dev/null +++ b/charts/redhat/redhat/redhat-ruby-rails-application/0.0.1/src/templates/tests/test-ruby-rails-connection.yaml @@ -0,0 +1,20 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ .Release.Name }}-connection-test" + annotations: + "helm.sh/hook": test + labels: + name: {{ .Values.name }} + template: {{ .Values.name }} +spec: + containers: + - name: "{{ .Release.Name }}-connection-test" + image: "registry.redhat.io/ubi8/ubi:latest" + imagePullPolicy: IfNotPresent + command: + - '/bin/bash' + - '-exc' + - > + curl {{ .Values.name }}.{{ .Release.Namespace }}:8080 | grep "Welcome to your Rails application" + restartPolicy: Never diff --git a/charts/redhat/redhat/redhat-ruby-rails-application/0.0.1/src/values.schema.json b/charts/redhat/redhat/redhat-ruby-rails-application/0.0.1/src/values.schema.json new file mode 100644 index 000000000..ce0bf51a9 --- /dev/null +++ b/charts/redhat/redhat/redhat-ruby-rails-application/0.0.1/src/values.schema.json @@ -0,0 +1,58 @@ +{ + "$schema": "http://json-schema.org/schema#", + "type": "object", + "properties": { + "name": { + "type": "string", + "pattern": "^[a-z0-9-_]+$" + }, + "namespace": { + "type": "string", + "title": "The URL of the repository with your application source code." + }, + "ruby_version": { + "type": "string", + "description": "Version of Ruby image to be used (3.0-ubi8 by default).", + "enum": [ "latest", "3.0-ubi8", "3.1-ubi8", "3.0-ubi9", "3.1-ubi9" ] + }, + "memory_limit": { + "type": "string", + "title": "Maximum amount of memory the container can use.", + "form": true, + "render": "slider", + "sliderMin": 512, + "sliderMax": 65536, + "sliderUnit": "Mi" + }, + "source_repository_url": { + "type": "string" + }, + "source_repository_ref": { + "type": "string" + }, + "context_dir": { + "type": "string", + "description": "Set this to the relative path to your project if it is not in the root of your repository." + }, + "application_domain": { + "type": "string", + "description": "The exposed hostname that will route to the httpd service, if left blank a value will be defaulted." + }, + "github_webhook_secret": { + "type": "string", + "description": "Github trigger secret. A difficult to guess string encoded as part of the webhook URL. Not encrypted." + }, + "secret_key_base": { + "type": "string", + "description": "Your secret key for verifying the integrity of signed cookies." + }, + "rails_env": { + "type": "string", + "description": "Environment under which the sample application will run. Could be set to production, development or test." + }, + "rubygem_mirror": { + "type": "string", + "description": "The custom RubyGems mirror URL." + } + } +} diff --git a/charts/redhat/redhat/redhat-ruby-rails-application/0.0.1/src/values.yaml b/charts/redhat/redhat/redhat-ruby-rails-application/0.0.1/src/values.yaml new file mode 100644 index 000000000..898838d90 --- /dev/null +++ b/charts/redhat/redhat/redhat-ruby-rails-application/0.0.1/src/values.yaml @@ -0,0 +1,12 @@ +application_domain: "" # TODO: must define a default value for .application_domain +context_dir: "" # TODO: must define a default value for .context_dir +github_webhook_secret: "SOMETHING" # TODO: must define a default value for .github_webhook_secret +memory_limit: 512Mi +name: rails-example +namespace: openshift +rails_env: production +ruby_version: 3.1-ubi8 +rubygem_mirror: "" # TODO: must define a default value for .rubygem_mirror +secret_key_base: "" # TODO: must define a default value for .secret_key_base +source_repository_ref: "master" # TODO: must define a default value for .source_repository_ref +source_repository_url: https://github.com/sclorg/rails-ex.git diff --git a/charts/redhat/redhat/redhat-ruby-rails-application/OWNERS b/charts/redhat/redhat/redhat-ruby-rails-application/OWNERS new file mode 100644 index 000000000..d8eb3093d --- /dev/null +++ b/charts/redhat/redhat/redhat-ruby-rails-application/OWNERS @@ -0,0 +1,10 @@ +chart: + name: redhat-ruby-rails-application + description: This is the Red Hat quickstart Rails application with no database helm chart +publicPgpKey: null +users: + - githubUsername: phracek +vendor: + label: redhat + name: Red Hat + diff --git a/charts/redhat/redhat/redhat-spring-boot-rest-http/0.0.1/report.yaml b/charts/redhat/redhat/redhat-spring-boot-rest-http/0.0.1/report.yaml new file mode 100644 index 000000000..fab54531c --- /dev/null +++ b/charts/redhat/redhat/redhat-spring-boot-rest-http/0.0.1/report.yaml @@ -0,0 +1,85 @@ +apiversion: v1 +kind: verify-report +metadata: + tool: + verifier-version: 1.4.1 + profile: + VendorType: partner + version: v1.0 + chart-uri: https://redhat-developer.github.io/redhat-helm-charts/charts/spring-boot-rest-http-0.0.1.tgz + digest: sha256:60118356338a1d932de598436cf5b482bfe59fe3344fa90db55db359f9ec0a86 + digests: + chart: sha256:5d312abe9fb8e5a3255036e0b9f4f53f480fc2c12ed0c0f36f03c72ab9af9038 + package: 60118356338a1d932de598436cf5b482bfe59fe3344fa90db55db359f9ec0a86 + lastCertifiedTimestamp: "2021-07-09T21:36:27.096408+00:00" + certifiedOpenShiftVersions: 4.7.5 + chart: + name: spring-boot-rest-http + home: "" + sources: [] + version: 0.0.1 + description: A Helm chart to build and deploy Spring Boot application with REST endpoints + keywords: + - runtimes + - spring-boot + maintainers: [] + icon: "https://avatars.githubusercontent.com/u/558276?s=400&u=19efc68c74844b2e092698a8a7a752921edcdc19&v=4" + apiversion: v2 + condition: "" + tags: "" + appversion: "" + deprecated: false + annotations: {} + kubeversion: "" + dependencies: + - name: spring-boot-example-app + version: 0.0.3 + repository: http://snowdrop.github.io/helm + type: "" + chart-overrides: "" +results: + - check: v1.0/has-readme + type: Mandatory + outcome: FAIL + reason: Chart does not have a README + - check: v1.0/contains-test + type: Mandatory + outcome: FAIL + reason: Chart test files do not exist + - check: v1.0/contains-values + type: Mandatory + outcome: PASS + reason: Values file exist + - check: v1.0/has-kubeversion + type: Mandatory + outcome: FAIL + reason: Kubernetes version is not specified + - check: v1.0/not-contains-crds + type: Mandatory + outcome: PASS + reason: Chart does not contain CRDs + - check: v1.0/helm-lint + type: Mandatory + outcome: PASS + reason: Helm lint successful + - check: v1.0/not-contain-csi-objects + type: Mandatory + outcome: PASS + reason: CSI objects do not exist + - check: v1.0/chart-testing + type: Mandatory + outcome: PASS + reason: Chart tests have passed + - check: v1.0/is-helm-v3 + type: Mandatory + outcome: PASS + reason: API version is V2, used in Helm 3 + - check: v1.0/contains-values-schema + type: Mandatory + outcome: PASS + reason: Values schema file exist + - check: v1.0/images-are-certified + type: Mandatory + outcome: FAIL + reason: 'Image is not Red Hat certified : : Bad response code from Pyxis: 400 + : https://catalog.redhat.com/api/containers/v1/repositories?filter=repository%3D%3D+' diff --git a/charts/redhat/redhat/redhat-spring-boot-rest-http/0.0.1/spring-boot-rest-http-0.0.1.tgz b/charts/redhat/redhat/redhat-spring-boot-rest-http/0.0.1/spring-boot-rest-http-0.0.1.tgz new file mode 100644 index 000000000..8c67a0f82 Binary files /dev/null and b/charts/redhat/redhat/redhat-spring-boot-rest-http/0.0.1/spring-boot-rest-http-0.0.1.tgz differ diff --git a/charts/redhat/redhat/redhat-spring-boot-rest-http/OWNERS b/charts/redhat/redhat/redhat-spring-boot-rest-http/OWNERS new file mode 100644 index 000000000..cbd73e251 --- /dev/null +++ b/charts/redhat/redhat/redhat-spring-boot-rest-http/OWNERS @@ -0,0 +1,9 @@ +chart: + name: redhat-spring-boot-rest-http + shortDescription: A Helm chart to build and deploy Spring Boot application with REST endpoints +publicPgpKey: null +users: +- githubUsername: Sgitario +vendor: + label: redhat + name: Red Hat diff --git a/charts/redhat/redhat/redhat-trusted-application-pipeline/1.0.0/redhat-trusted-application-pipeline-1.0.0.tgz b/charts/redhat/redhat/redhat-trusted-application-pipeline/1.0.0/redhat-trusted-application-pipeline-1.0.0.tgz new file mode 100644 index 000000000..36913743f Binary files /dev/null and b/charts/redhat/redhat/redhat-trusted-application-pipeline/1.0.0/redhat-trusted-application-pipeline-1.0.0.tgz differ diff --git a/charts/redhat/redhat/redhat-trusted-application-pipeline/1.0.0/report.yaml b/charts/redhat/redhat/redhat-trusted-application-pipeline/1.0.0/report.yaml new file mode 100644 index 000000000..2b85aabde --- /dev/null +++ b/charts/redhat/redhat/redhat-trusted-application-pipeline/1.0.0/report.yaml @@ -0,0 +1,97 @@ +apiversion: v1 +kind: verify-report +metadata: + tool: + verifier-version: 1.13.3 + profile: + VendorType: redhat + version: v1.2 + reportDigest: uint64:11909867160483348597 + chart-uri: /workspace/tmp/charts/redhat-trusted-application-pipeline-1.0.0.tgz + digests: + chart: sha256:bb3b2f45e9033c37c27524b5870ec38d6e32c26d66329712aaf30ef34a66fc2c + package: 4ab84a1c3e790d783123dd848474ff6e25acd85710b2fb5d6f682a186cea33be + lastCertifiedTimestamp: "2024-05-15T18:23:28.928832+00:00" + testedOpenShiftVersion: "4.15" + supportedOpenShiftVersions: '>=4.12' + webCatalogOnly: false + chart: + name: redhat-trusted-application-pipeline + home: "" + sources: + - https://github.com/redhat-appstudio/rhtap-installer + version: 1.0.0 + description: A Helm chart for deploying Red Hat Trusted Application Pipeline + keywords: [] + maintainers: + - name: Red Hat Trusted Application Pipeline Team + email: "" + url: https://github.com/redhat-appstudio/rhtap-installer + icon: "" + apiversion: v2 + condition: "" + tags: "" + appversion: 1.1.x + deprecated: false + annotations: + charts.openshift.io/name: Trusted Application Pipeline + charts.openshift.io/provider: Red Hat + charts.openshift.io/supportURL: https://github.com/redhat-appstudio/rhtap-installer/issues + kubeversion: '>= 1.25.0-0' + dependencies: [] + type: application + chart-overrides: "" +results: + - check: v1.0/required-annotations-present + type: Mandatory + outcome: PASS + reason: All required annotations present + - check: v1.0/signature-is-valid + type: Mandatory + outcome: SKIPPED + reason: 'Chart is not signed : Signature verification not required' + - check: v1.1/images-are-certified + type: Mandatory + outcome: PASS + reason: No images to certify + - check: v1.1/has-kubeversion + type: Mandatory + outcome: PASS + reason: Kubernetes version specified + - check: v1.0/helm-lint + type: Mandatory + outcome: PASS + reason: Helm lint successful + - check: v1.0/contains-values-schema + type: Mandatory + outcome: FAIL + reason: Values schema file does not exist + - check: v1.0/contains-values + type: Mandatory + outcome: PASS + reason: Values file exist + - check: v1.0/not-contains-crds + type: Mandatory + outcome: PASS + reason: Chart does not contain CRDs + - check: v1.0/chart-testing + type: Mandatory + outcome: PASS + reason: Chart tests have passed + - check: v1.0/contains-test + type: Mandatory + outcome: PASS + reason: Chart test files exist + - check: v1.0/has-readme + type: Mandatory + outcome: PASS + reason: Chart has a README + - check: v1.0/is-helm-v3 + type: Mandatory + outcome: PASS + reason: API version is V2, used in Helm 3 + - check: v1.0/not-contain-csi-objects + type: Mandatory + outcome: PASS + reason: CSI objects do not exist + diff --git a/charts/redhat/redhat/redhat-trusted-application-pipeline/OWNERS b/charts/redhat/redhat/redhat-trusted-application-pipeline/OWNERS new file mode 100644 index 000000000..11877ef6b --- /dev/null +++ b/charts/redhat/redhat/redhat-trusted-application-pipeline/OWNERS @@ -0,0 +1,11 @@ +chart: + name: redhat-trusted-application-pipeline + shortDescription: A Helm chart for deploying Red Hat Trusted Application Pipeline +publicPgpKey: null +users: + - githubUsername: jduimovich + - githubUsername: otaviof + - githubUsername: Roming22 +vendor: + label: redhat + name: Red Hat diff --git a/charts/redhat/redhat/redhat-trusted-artifact-signer/OWNERS b/charts/redhat/redhat/redhat-trusted-artifact-signer/OWNERS new file mode 100644 index 000000000..1c22d1004 --- /dev/null +++ b/charts/redhat/redhat/redhat-trusted-artifact-signer/OWNERS @@ -0,0 +1,13 @@ +chart: + name: redhat-trusted-artifact-signer + shortDescription: A Helm chart for deploying Red Hat Trusted Artifact Signer +publicPgpKey: null +users: + - githubUsername: JasonPowr + - githubUsername: lance + - githubUsername: sabre1041 + - githubUsername: sallyom + - githubUsername: tommyd450 +vendor: + label: redhat + name: Red Hat diff --git a/charts/redhat/redhat/redhat-trusted-profile-analyzer/0.0.1-TP1/report.yaml b/charts/redhat/redhat/redhat-trusted-profile-analyzer/0.0.1-TP1/report.yaml new file mode 100644 index 000000000..ebe397ae9 --- /dev/null +++ b/charts/redhat/redhat/redhat-trusted-profile-analyzer/0.0.1-TP1/report.yaml @@ -0,0 +1,97 @@ +apiversion: v1 +kind: verify-report +metadata: + tool: + verifier-version: 1.13.3 + profile: + VendorType: redhat + version: v1.2 + reportDigest: uint64:8465219122869025116 + chart-uri: ./trusted-profile-analyzer-0.0.1-TP1.tgz + digests: + chart: sha256:6ddfa9cf010bb99e7667102a7250b4875e4090388cc40d6e19e7e8e8668ed5b8 + package: 5fc96086fc1242a116578333ca52fae72a7d7c7c24170e109ad37b34a9aa54d0 + lastCertifiedTimestamp: "2024-03-18T19:29:08.341233+01:00" + testedOpenShiftVersion: "4.13" + supportedOpenShiftVersions: '>=4.12' + webCatalogOnly: false + chart: + name: trusted-profile-analyzer + home: https://developers.redhat.com/products/trusted-software-supply-chain/overview + sources: [] + version: 0.0.1-TP1 + description: An Helm chart for deploying Red Hat Trusted Profile Analyzer (RHTPA) + keywords: [] + maintainers: + - name: Red Hat + email: rhtpa-support@redhat.com + url: https://www.redhat.com + icon: data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjM4IiBoZWlnaHQ9IjM4IiB2aWV3Qm94PSIwIDAgMzggMzgiPjxkZWZzPjxzdHlsZT4uZHtmaWxsOiNlMDA7fS5le2ZpbGw6I2ZmZjt9LmZ7ZmlsbDojZTBlMGUwO308L3N0eWxlPjwvZGVmcz48ZyBpZD0iYSI+PHJlY3QgY2xhc3M9ImUiIHg9IjEiIHk9IjEiIHdpZHRoPSIzNiIgaGVpZ2h0PSIzNiIgcng9IjkiIHJ5PSI5Ii8+PHBhdGggY2xhc3M9ImYiIGQ9Im0yOCwyLjI1YzQuMjczNCwwLDcuNzUsMy40NzY2LDcuNzUsNy43NXYxOGMwLDQuMjczNC0zLjQ3NjYsNy43NS03Ljc1LDcuNzVIMTBjLTQuMjczNCwwLTcuNzUtMy40NzY2LTcuNzUtNy43NVYxMGMwLTQuMjczNCwzLjQ3NjYtNy43NSw3Ljc1LTcuNzVoMThtMC0xLjI1SDEwQzUuMDI5NCwxLDEsNS4wMjk0LDEsMTB2MThjMCw0Ljk3MDYsNC4wMjk0LDksOSw5aDE4YzQuOTcwNiwwLDktNC4wMjk0LDktOVYxMGMwLTQuOTcwNi00LjAyOTQtOS05LTloMFoiLz48L2c+PGcgaWQ9ImIiPjxwYXRoIGNsYXNzPSJkIiBkPSJtMjguNDQyNCwyNy41NTgxbC00LjgxODUtNC44MTg1Yy43MTM1LS42OTQ2LDEuMjc3Ni0xLjU1MjcsMS42MjMyLTIuNTMxNi4xMTUyLS4zMjUyLS4wNTU3LS42ODIxLS4zODA5LS43OTc0LS4zMjIzLS4xMTYyLS42ODI2LjA1NTItLjc5NjkuMzgxMy0uNzU3OCwyLjE0MzEtMi43OTQ5LDMuNTgzLTUuMDY5MywzLjU4My0yLjk2MzksMC01LjM3NS0yLjQxMTEtNS4zNzUtNS4zNzVzMi40MTExLTUuMzc1LDUuMzc1LTUuMzc1Yy4zNDQ3LDAsLjYyNS0uMjc5OC42MjUtLjYyNXMtLjI4MDMtLjYyNS0uNjI1LS42MjVjLTMuNjUzMywwLTYuNjI1LDIuOTcyMi02LjYyNSw2LjYyNXMyLjk3MTcsNi42MjUsNi42MjUsNi42MjVjMS4zMjUxLDAsMi41Nzc3LS40MDc0LDMuNjM2Mi0xLjEwNDVsNC45MjE0LDQuOTIxNGMuMTIyMS4xMjIxLjI4MjIuMTgzMS40NDI0LjE4MzFzLjMyMDMtLjA2MS40NDI0LS4xODMxYy4yNDMyLS4yNDQxLjI0MzItLjYzOTYsMC0uODgzOFoiLz48cGF0aCBkPSJtMjAuNDQyNCwyNy41NTgxbC0yLTJjLS4yNDQxLS4yNDQxLS42NDA2LS4yNDQxLS44ODQ4LDAtLjI0MzIuMjQ0MS0uMjQzMi42Mzk2LDAsLjg4MzhsLjkwNjIuOTA1OWMtNC45MTkxLS4yODA0LTguODM4OC00LjM1OTQtOC44Mzg4LTkuMzQ3OCwwLTUuMTY5NCw0LjIwNjEtOS4zNzUsOS4zNzUtOS4zNzUuMzQ0NywwLC42MjUtLjI3OTguNjI1LS42MjVzLS4yODAzLS42MjUtLjYyNS0uNjI1Yy01Ljg1ODQsMC0xMC42MjUsNC43NjY2LTEwLjYyNSwxMC42MjUsMCw1LjY5NDksNC41MDc3LDEwLjM0NDUsMTAuMTQwNiwxMC42MDA1bC0uOTU3OS45NTc2Yy0uMjQzMi4yNDQxLS4yNDMyLjYzOTYsMCwuODgzOC4xMjIxLjEyMjEuMjgyMi4xODMxLjQ0MjQuMTgzMXMuMzIwMy0uMDYxLjQ0MjQtLjE4MzFsMi0yYy4yNDMyLS4yNDQxLjI0MzItLjYzOTYsMC0uODgzOFoiLz48cGF0aCBkPSJtMjUuNSwxNy42MjVjLTIuMjc0NCwwLTQuMTI1LTEuODUwNi00LjEyNS00LjEyNXYtNC4wMjg4YzAtLjI5NDkuMjA2MS0uNTQ5OC40OTUxLS42MTEzbDMuNS0uNzQ0MWMuMDg1OS0uMDE4Ni4xNzM4LS4wMTg2LjI1OTgsMGwzLjUuNzQ0MWMuMjg5MS4wNjEuNDk1MS4zMTY0LjQ5NTEuNjExM3Y0LjAyODhjMCwyLjI3NDQtMS44NTA2LDQuMTI1LTQuMTI1LDQuMTI1Wm0tMi44NzUtNy42NDc5djMuNTIyOWMwLDEuNTg1NCwxLjI5LDIuODc1LDIuODc1LDIuODc1czIuODc1LTEuMjg5NiwyLjg3NS0yLjg3NXYtMy41MjI5bC0yLjg3NS0uNjEwOC0yLjg3NS42MTA4WiIvPjxwYXRoIGNsYXNzPSJkIiBkPSJtMjUsMTQuMzUyMWMtLjE2MDIsMC0uMzIwMy0uMDYxLS40NDI0LS4xODMxbC0xLTFjLS4yNDMyLS4yNDQxLS4yNDMyLS42Mzk2LDAtLjg4MzguMjQ0MS0uMjQ0MS42NDA2LS4yNDQxLjg4NDgsMGwuNTU3Ni41NTgxLDEuNTU3Ni0xLjU1ODFjLjI0NDEtLjI0NDEuNjQwNi0uMjQ0MS44ODQ4LDAsLjI0MzIuMjQ0MS4yNDMyLjYzOTYsMCwuODgzOGwtMiwyYy0uMTIyMS4xMjIxLS4yODIyLjE4MzEtLjQ0MjQuMTgzMVoiLz48L2c+PC9zdmc+ + apiversion: v2 + condition: "" + tags: "" + appversion: 1.0.0-TP1 + deprecated: false + annotations: + charts.openshift.io/archs: x86_64 + charts.openshift.io/name: Red Hat Trusted Profile Analyzer + charts.openshift.io/provider: Red Hat + charts.openshift.io/supportURL: https://access.redhat.com/support + kubeversion: ^1.25.0 + dependencies: [] + type: application + chart-overrides: "" +results: + - check: v1.0/required-annotations-present + type: Mandatory + outcome: PASS + reason: All required annotations present + - check: v1.0/signature-is-valid + type: Mandatory + outcome: SKIPPED + reason: 'Chart is not signed : Signature verification not required' + - check: v1.0/chart-testing + type: Mandatory + outcome: PASS + reason: Chart tests have passed + - check: v1.0/contains-values-schema + type: Mandatory + outcome: PASS + reason: Values schema file exist + - check: v1.1/images-are-certified + type: Mandatory + outcome: PASS + reason: No images to certify + - check: v1.0/not-contains-crds + type: Mandatory + outcome: PASS + reason: Chart does not contain CRDs + - check: v1.0/helm-lint + type: Mandatory + outcome: PASS + reason: Helm lint successful + - check: v1.0/not-contain-csi-objects + type: Mandatory + outcome: PASS + reason: CSI objects do not exist + - check: v1.1/has-kubeversion + type: Mandatory + outcome: PASS + reason: Kubernetes version specified + - check: v1.0/has-readme + type: Mandatory + outcome: PASS + reason: Chart has a README + - check: v1.0/contains-values + type: Mandatory + outcome: PASS + reason: Values file exist + - check: v1.0/is-helm-v3 + type: Mandatory + outcome: PASS + reason: API version is V2, used in Helm 3 + - check: v1.0/contains-test + type: Mandatory + outcome: PASS + reason: Chart test files exist + diff --git a/charts/redhat/redhat/redhat-trusted-profile-analyzer/0.0.1-TP1/trusted-profile-analyzer-0.0.1-TP1.tgz b/charts/redhat/redhat/redhat-trusted-profile-analyzer/0.0.1-TP1/trusted-profile-analyzer-0.0.1-TP1.tgz new file mode 100644 index 000000000..2d570c40c Binary files /dev/null and b/charts/redhat/redhat/redhat-trusted-profile-analyzer/0.0.1-TP1/trusted-profile-analyzer-0.0.1-TP1.tgz differ diff --git a/charts/redhat/redhat/redhat-trusted-profile-analyzer/0.0.1/redhat-trusted-profile-analyzer-0.0.1.tgz b/charts/redhat/redhat/redhat-trusted-profile-analyzer/0.0.1/redhat-trusted-profile-analyzer-0.0.1.tgz new file mode 100644 index 000000000..1fc4bd2bc Binary files /dev/null and b/charts/redhat/redhat/redhat-trusted-profile-analyzer/0.0.1/redhat-trusted-profile-analyzer-0.0.1.tgz differ diff --git a/charts/redhat/redhat/redhat-trusted-profile-analyzer/0.0.1/report.yaml b/charts/redhat/redhat/redhat-trusted-profile-analyzer/0.0.1/report.yaml new file mode 100644 index 000000000..9d70d6f1e --- /dev/null +++ b/charts/redhat/redhat/redhat-trusted-profile-analyzer/0.0.1/report.yaml @@ -0,0 +1,101 @@ +apiversion: v1 +kind: verify-report +metadata: + tool: + verifier-version: 1.13.4 + profile: + VendorType: redhat + version: v1.3 + reportDigest: uint64:1925808838182636847 + chart-uri: ./redhat-trusted-profile-analyzer-0.0.1.tgz + digests: + chart: sha256:1f3b611fe107ed3858d8135be22f9576c2eb4c1aa71860a9157157766f9ffb88 + package: 556d54694e1817024ba6975a382ef4d3cfb1b401a545ec76b3e4b29d6b02c992 + lastCertifiedTimestamp: "2024-05-02T10:54:55.128491+02:00" + testedOpenShiftVersion: "4.14" + supportedOpenShiftVersions: '>=4.12' + webCatalogOnly: false + chart: + name: redhat-trusted-profile-analyzer + home: https://developers.redhat.com/products/trusted-software-supply-chain/overview + sources: [] + version: 0.0.1 + description: An Helm chart for deploying Red Hat Trusted Profile Analyzer (RHTPA) + keywords: [] + maintainers: + - name: Red Hat + email: rhtpa-support@redhat.com + url: https://www.redhat.com + icon: data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjM4IiBoZWlnaHQ9IjM4IiB2aWV3Qm94PSIwIDAgMzggMzgiPjxkZWZzPjxzdHlsZT4uZHtmaWxsOiNlMDA7fS5le2ZpbGw6I2ZmZjt9LmZ7ZmlsbDojZTBlMGUwO308L3N0eWxlPjwvZGVmcz48ZyBpZD0iYSI+PHJlY3QgY2xhc3M9ImUiIHg9IjEiIHk9IjEiIHdpZHRoPSIzNiIgaGVpZ2h0PSIzNiIgcng9IjkiIHJ5PSI5Ii8+PHBhdGggY2xhc3M9ImYiIGQ9Im0yOCwyLjI1YzQuMjczNCwwLDcuNzUsMy40NzY2LDcuNzUsNy43NXYxOGMwLDQuMjczNC0zLjQ3NjYsNy43NS03Ljc1LDcuNzVIMTBjLTQuMjczNCwwLTcuNzUtMy40NzY2LTcuNzUtNy43NVYxMGMwLTQuMjczNCwzLjQ3NjYtNy43NSw3Ljc1LTcuNzVoMThtMC0xLjI1SDEwQzUuMDI5NCwxLDEsNS4wMjk0LDEsMTB2MThjMCw0Ljk3MDYsNC4wMjk0LDksOSw5aDE4YzQuOTcwNiwwLDktNC4wMjk0LDktOVYxMGMwLTQuOTcwNi00LjAyOTQtOS05LTloMFoiLz48L2c+PGcgaWQ9ImIiPjxwYXRoIGNsYXNzPSJkIiBkPSJtMjguNDQyNCwyNy41NTgxbC00LjgxODUtNC44MTg1Yy43MTM1LS42OTQ2LDEuMjc3Ni0xLjU1MjcsMS42MjMyLTIuNTMxNi4xMTUyLS4zMjUyLS4wNTU3LS42ODIxLS4zODA5LS43OTc0LS4zMjIzLS4xMTYyLS42ODI2LjA1NTItLjc5NjkuMzgxMy0uNzU3OCwyLjE0MzEtMi43OTQ5LDMuNTgzLTUuMDY5MywzLjU4My0yLjk2MzksMC01LjM3NS0yLjQxMTEtNS4zNzUtNS4zNzVzMi40MTExLTUuMzc1LDUuMzc1LTUuMzc1Yy4zNDQ3LDAsLjYyNS0uMjc5OC42MjUtLjYyNXMtLjI4MDMtLjYyNS0uNjI1LS42MjVjLTMuNjUzMywwLTYuNjI1LDIuOTcyMi02LjYyNSw2LjYyNXMyLjk3MTcsNi42MjUsNi42MjUsNi42MjVjMS4zMjUxLDAsMi41Nzc3LS40MDc0LDMuNjM2Mi0xLjEwNDVsNC45MjE0LDQuOTIxNGMuMTIyMS4xMjIxLjI4MjIuMTgzMS40NDI0LjE4MzFzLjMyMDMtLjA2MS40NDI0LS4xODMxYy4yNDMyLS4yNDQxLjI0MzItLjYzOTYsMC0uODgzOFoiLz48cGF0aCBkPSJtMjAuNDQyNCwyNy41NTgxbC0yLTJjLS4yNDQxLS4yNDQxLS42NDA2LS4yNDQxLS44ODQ4LDAtLjI0MzIuMjQ0MS0uMjQzMi42Mzk2LDAsLjg4MzhsLjkwNjIuOTA1OWMtNC45MTkxLS4yODA0LTguODM4OC00LjM1OTQtOC44Mzg4LTkuMzQ3OCwwLTUuMTY5NCw0LjIwNjEtOS4zNzUsOS4zNzUtOS4zNzUuMzQ0NywwLC42MjUtLjI3OTguNjI1LS42MjVzLS4yODAzLS42MjUtLjYyNS0uNjI1Yy01Ljg1ODQsMC0xMC42MjUsNC43NjY2LTEwLjYyNSwxMC42MjUsMCw1LjY5NDksNC41MDc3LDEwLjM0NDUsMTAuMTQwNiwxMC42MDA1bC0uOTU3OS45NTc2Yy0uMjQzMi4yNDQxLS4yNDMyLjYzOTYsMCwuODgzOC4xMjIxLjEyMjEuMjgyMi4xODMxLjQ0MjQuMTgzMXMuMzIwMy0uMDYxLjQ0MjQtLjE4MzFsMi0yYy4yNDMyLS4yNDQxLjI0MzItLjYzOTYsMC0uODgzOFoiLz48cGF0aCBkPSJtMjUuNSwxNy42MjVjLTIuMjc0NCwwLTQuMTI1LTEuODUwNi00LjEyNS00LjEyNXYtNC4wMjg4YzAtLjI5NDkuMjA2MS0uNTQ5OC40OTUxLS42MTEzbDMuNS0uNzQ0MWMuMDg1OS0uMDE4Ni4xNzM4LS4wMTg2LjI1OTgsMGwzLjUuNzQ0MWMuMjg5MS4wNjEuNDk1MS4zMTY0LjQ5NTEuNjExM3Y0LjAyODhjMCwyLjI3NDQtMS44NTA2LDQuMTI1LTQuMTI1LDQuMTI1Wm0tMi44NzUtNy42NDc5djMuNTIyOWMwLDEuNTg1NCwxLjI5LDIuODc1LDIuODc1LDIuODc1czIuODc1LTEuMjg5NiwyLjg3NS0yLjg3NXYtMy41MjI5bC0yLjg3NS0uNjEwOC0yLjg3NS42MTA4WiIvPjxwYXRoIGNsYXNzPSJkIiBkPSJtMjUsMTQuMzUyMWMtLjE2MDIsMC0uMzIwMy0uMDYxLS40NDI0LS4xODMxbC0xLTFjLS4yNDMyLS4yNDQxLS4yNDMyLS42Mzk2LDAtLjg4MzguMjQ0MS0uMjQ0MS42NDA2LS4yNDQxLjg4NDgsMGwuNTU3Ni41NTgxLDEuNTU3Ni0xLjU1ODFjLjI0NDEtLjI0NDEuNjQwNi0uMjQ0MS44ODQ4LDAsLjI0MzIuMjQ0MS4yNDMyLjYzOTYsMCwuODgzOGwtMiwyYy0uMTIyMS4xMjIxLS4yODIyLjE4MzEtLjQ0MjQuMTgzMVoiLz48L2c+PC9zdmc+ + apiversion: v2 + condition: "" + tags: "" + appversion: 1.0.0 + deprecated: false + annotations: + charts.openshift.io/archs: x86_64 + charts.openshift.io/name: Red Hat Trusted Profile Analyzer + charts.openshift.io/provider: Red Hat + charts.openshift.io/supportURL: https://access.redhat.com/support + kubeversion: ^1.25.0 + dependencies: [] + type: application + chart-overrides: "" +results: + - check: v1.0/required-annotations-present + type: Mandatory + outcome: PASS + reason: All required annotations present + - check: v1.1/has-kubeversion + type: Mandatory + outcome: PASS + reason: Kubernetes version specified + - check: v1.0/is-helm-v3 + type: Mandatory + outcome: PASS + reason: API version is V2, used in Helm 3 + - check: v1.0/contains-values + type: Mandatory + outcome: PASS + reason: Values file exist + - check: v1.0/contains-test + type: Mandatory + outcome: PASS + reason: Chart test files exist + - check: v1.0/contains-values-schema + type: Mandatory + outcome: PASS + reason: Values schema file exist + - check: v1.0/has-notes + type: Optional + outcome: PASS + reason: Chart does contain NOTES.txt + - check: v1.0/not-contain-csi-objects + type: Mandatory + outcome: PASS + reason: CSI objects do not exist + - check: v1.1/images-are-certified + type: Mandatory + outcome: PASS + reason: No images to certify + - check: v1.0/signature-is-valid + type: Mandatory + outcome: SKIPPED + reason: 'Chart is not signed : Signature verification not required' + - check: v1.0/chart-testing + type: Mandatory + outcome: PASS + reason: Chart tests have passed + - check: v1.0/not-contains-crds + type: Mandatory + outcome: PASS + reason: Chart does not contain CRDs + - check: v1.0/has-readme + type: Mandatory + outcome: PASS + reason: Chart has a README + - check: v1.0/helm-lint + type: Mandatory + outcome: PASS + reason: Helm lint successful + diff --git a/charts/redhat/redhat/redhat-trusted-profile-analyzer/0.0.2/redhat-trusted-profile-analyzer-0.0.2.tgz b/charts/redhat/redhat/redhat-trusted-profile-analyzer/0.0.2/redhat-trusted-profile-analyzer-0.0.2.tgz new file mode 100644 index 000000000..4e46e1e1b Binary files /dev/null and b/charts/redhat/redhat/redhat-trusted-profile-analyzer/0.0.2/redhat-trusted-profile-analyzer-0.0.2.tgz differ diff --git a/charts/redhat/redhat/redhat-trusted-profile-analyzer/0.0.2/report.yaml b/charts/redhat/redhat/redhat-trusted-profile-analyzer/0.0.2/report.yaml new file mode 100644 index 000000000..0fcf535bf --- /dev/null +++ b/charts/redhat/redhat/redhat-trusted-profile-analyzer/0.0.2/report.yaml @@ -0,0 +1,101 @@ +apiversion: v1 +kind: verify-report +metadata: + tool: + verifier-version: 1.13.4 + profile: + VendorType: redhat + version: v1.3 + reportDigest: uint64:10343817969499070975 + chart-uri: ./redhat-trusted-profile-analyzer-0.0.2.tgz + digests: + chart: sha256:a199139a9a70db24f42f55ed3dad6d067757971a451c71092b425ba62fc1ea70 + package: cc6edec75b980c52559567990275d22113220f094eb70b718b2e8acfe3833888 + lastCertifiedTimestamp: "2024-05-03T13:58:27.151246+02:00" + testedOpenShiftVersion: "4.14" + supportedOpenShiftVersions: '>=4.12' + webCatalogOnly: false + chart: + name: redhat-trusted-profile-analyzer + home: https://access.redhat.com/products/red-hat-trusted-profile-analyzer + sources: [] + version: 0.0.2 + description: An Helm chart for deploying Red Hat Trusted Profile Analyzer (RHTPA) + keywords: [] + maintainers: + - name: Red Hat + email: rhtpa-support@redhat.com + url: https://www.redhat.com + icon: data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjM4IiBoZWlnaHQ9IjM4IiB2aWV3Qm94PSIwIDAgMzggMzgiPjxkZWZzPjxzdHlsZT4uZHtmaWxsOiNlMDA7fS5le2ZpbGw6I2ZmZjt9LmZ7ZmlsbDojZTBlMGUwO308L3N0eWxlPjwvZGVmcz48ZyBpZD0iYSI+PHJlY3QgY2xhc3M9ImUiIHg9IjEiIHk9IjEiIHdpZHRoPSIzNiIgaGVpZ2h0PSIzNiIgcng9IjkiIHJ5PSI5Ii8+PHBhdGggY2xhc3M9ImYiIGQ9Im0yOCwyLjI1YzQuMjczNCwwLDcuNzUsMy40NzY2LDcuNzUsNy43NXYxOGMwLDQuMjczNC0zLjQ3NjYsNy43NS03Ljc1LDcuNzVIMTBjLTQuMjczNCwwLTcuNzUtMy40NzY2LTcuNzUtNy43NVYxMGMwLTQuMjczNCwzLjQ3NjYtNy43NSw3Ljc1LTcuNzVoMThtMC0xLjI1SDEwQzUuMDI5NCwxLDEsNS4wMjk0LDEsMTB2MThjMCw0Ljk3MDYsNC4wMjk0LDksOSw5aDE4YzQuOTcwNiwwLDktNC4wMjk0LDktOVYxMGMwLTQuOTcwNi00LjAyOTQtOS05LTloMFoiLz48L2c+PGcgaWQ9ImIiPjxwYXRoIGNsYXNzPSJkIiBkPSJtMjguNDQyNCwyNy41NTgxbC00LjgxODUtNC44MTg1Yy43MTM1LS42OTQ2LDEuMjc3Ni0xLjU1MjcsMS42MjMyLTIuNTMxNi4xMTUyLS4zMjUyLS4wNTU3LS42ODIxLS4zODA5LS43OTc0LS4zMjIzLS4xMTYyLS42ODI2LjA1NTItLjc5NjkuMzgxMy0uNzU3OCwyLjE0MzEtMi43OTQ5LDMuNTgzLTUuMDY5MywzLjU4My0yLjk2MzksMC01LjM3NS0yLjQxMTEtNS4zNzUtNS4zNzVzMi40MTExLTUuMzc1LDUuMzc1LTUuMzc1Yy4zNDQ3LDAsLjYyNS0uMjc5OC42MjUtLjYyNXMtLjI4MDMtLjYyNS0uNjI1LS42MjVjLTMuNjUzMywwLTYuNjI1LDIuOTcyMi02LjYyNSw2LjYyNXMyLjk3MTcsNi42MjUsNi42MjUsNi42MjVjMS4zMjUxLDAsMi41Nzc3LS40MDc0LDMuNjM2Mi0xLjEwNDVsNC45MjE0LDQuOTIxNGMuMTIyMS4xMjIxLjI4MjIuMTgzMS40NDI0LjE4MzFzLjMyMDMtLjA2MS40NDI0LS4xODMxYy4yNDMyLS4yNDQxLjI0MzItLjYzOTYsMC0uODgzOFoiLz48cGF0aCBkPSJtMjAuNDQyNCwyNy41NTgxbC0yLTJjLS4yNDQxLS4yNDQxLS42NDA2LS4yNDQxLS44ODQ4LDAtLjI0MzIuMjQ0MS0uMjQzMi42Mzk2LDAsLjg4MzhsLjkwNjIuOTA1OWMtNC45MTkxLS4yODA0LTguODM4OC00LjM1OTQtOC44Mzg4LTkuMzQ3OCwwLTUuMTY5NCw0LjIwNjEtOS4zNzUsOS4zNzUtOS4zNzUuMzQ0NywwLC42MjUtLjI3OTguNjI1LS42MjVzLS4yODAzLS42MjUtLjYyNS0uNjI1Yy01Ljg1ODQsMC0xMC42MjUsNC43NjY2LTEwLjYyNSwxMC42MjUsMCw1LjY5NDksNC41MDc3LDEwLjM0NDUsMTAuMTQwNiwxMC42MDA1bC0uOTU3OS45NTc2Yy0uMjQzMi4yNDQxLS4yNDMyLjYzOTYsMCwuODgzOC4xMjIxLjEyMjEuMjgyMi4xODMxLjQ0MjQuMTgzMXMuMzIwMy0uMDYxLjQ0MjQtLjE4MzFsMi0yYy4yNDMyLS4yNDQxLjI0MzItLjYzOTYsMC0uODgzOFoiLz48cGF0aCBkPSJtMjUuNSwxNy42MjVjLTIuMjc0NCwwLTQuMTI1LTEuODUwNi00LjEyNS00LjEyNXYtNC4wMjg4YzAtLjI5NDkuMjA2MS0uNTQ5OC40OTUxLS42MTEzbDMuNS0uNzQ0MWMuMDg1OS0uMDE4Ni4xNzM4LS4wMTg2LjI1OTgsMGwzLjUuNzQ0MWMuMjg5MS4wNjEuNDk1MS4zMTY0LjQ5NTEuNjExM3Y0LjAyODhjMCwyLjI3NDQtMS44NTA2LDQuMTI1LTQuMTI1LDQuMTI1Wm0tMi44NzUtNy42NDc5djMuNTIyOWMwLDEuNTg1NCwxLjI5LDIuODc1LDIuODc1LDIuODc1czIuODc1LTEuMjg5NiwyLjg3NS0yLjg3NXYtMy41MjI5bC0yLjg3NS0uNjEwOC0yLjg3NS42MTA4WiIvPjxwYXRoIGNsYXNzPSJkIiBkPSJtMjUsMTQuMzUyMWMtLjE2MDIsMC0uMzIwMy0uMDYxLS40NDI0LS4xODMxbC0xLTFjLS4yNDMyLS4yNDQxLS4yNDMyLS42Mzk2LDAtLjg4MzguMjQ0MS0uMjQ0MS42NDA2LS4yNDQxLjg4NDgsMGwuNTU3Ni41NTgxLDEuNTU3Ni0xLjU1ODFjLjI0NDEtLjI0NDEuNjQwNi0uMjQ0MS44ODQ4LDAsLjI0MzIuMjQ0MS4yNDMyLjYzOTYsMCwuODgzOGwtMiwyYy0uMTIyMS4xMjIxLS4yODIyLjE4MzEtLjQ0MjQuMTgzMVoiLz48L2c+PC9zdmc+ + apiversion: v2 + condition: "" + tags: "" + appversion: 1.0.0 + deprecated: false + annotations: + charts.openshift.io/archs: x86_64 + charts.openshift.io/name: Red Hat Trusted Profile Analyzer + charts.openshift.io/provider: Red Hat + charts.openshift.io/supportURL: https://access.redhat.com/support + kubeversion: ^1.25.0 + dependencies: [] + type: application + chart-overrides: "" +results: + - check: v1.0/helm-lint + type: Mandatory + outcome: PASS + reason: Helm lint successful + - check: v1.0/has-notes + type: Optional + outcome: PASS + reason: Chart does contain NOTES.txt + - check: v1.0/signature-is-valid + type: Mandatory + outcome: SKIPPED + reason: 'Chart is not signed : Signature verification not required' + - check: v1.0/required-annotations-present + type: Mandatory + outcome: PASS + reason: All required annotations present + - check: v1.0/contains-values-schema + type: Mandatory + outcome: PASS + reason: Values schema file exist + - check: v1.0/not-contain-csi-objects + type: Mandatory + outcome: PASS + reason: CSI objects do not exist + - check: v1.0/contains-test + type: Mandatory + outcome: PASS + reason: Chart test files exist + - check: v1.0/not-contains-crds + type: Mandatory + outcome: PASS + reason: Chart does not contain CRDs + - check: v1.0/chart-testing + type: Mandatory + outcome: PASS + reason: Chart tests have passed + - check: v1.0/is-helm-v3 + type: Mandatory + outcome: PASS + reason: API version is V2, used in Helm 3 + - check: v1.1/has-kubeversion + type: Mandatory + outcome: PASS + reason: Kubernetes version specified + - check: v1.1/images-are-certified + type: Mandatory + outcome: PASS + reason: No images to certify + - check: v1.0/contains-values + type: Mandatory + outcome: PASS + reason: Values file exist + - check: v1.0/has-readme + type: Mandatory + outcome: PASS + reason: Chart has a README + diff --git a/charts/redhat/redhat/redhat-trusted-profile-analyzer/OWNERS b/charts/redhat/redhat/redhat-trusted-profile-analyzer/OWNERS new file mode 100644 index 000000000..780c24d48 --- /dev/null +++ b/charts/redhat/redhat/redhat-trusted-profile-analyzer/OWNERS @@ -0,0 +1,11 @@ +chart: + name: redhat-trusted-profile-analyzer + shortDescription: A Helm chart for deploying Red Hat Trusted Profile Analyzer +publicPgpKey: null +users: + - githubUsername: desmax74 + - githubUsername: ctron + - githubUsername: mrizzi +vendor: + label: redhat + name: Red Hat diff --git a/charts/redhat/redhat/redhat-vertx/0.0.1/src/Chart.yaml b/charts/redhat/redhat/redhat-vertx/0.0.1/src/Chart.yaml new file mode 100644 index 000000000..b46bdb8b0 --- /dev/null +++ b/charts/redhat/redhat/redhat-vertx/0.0.1/src/Chart.yaml @@ -0,0 +1,7 @@ +apiVersion: v2 +name: vertx +version: 0.0.1 +description: A Helm chart to build and deploy Vert.x applications +keywords: + - runtimes + - vertx \ No newline at end of file diff --git a/charts/redhat/redhat/redhat-vertx/0.0.1/src/README.md b/charts/redhat/redhat/redhat-vertx/0.0.1/src/README.md new file mode 100644 index 000000000..2716d836d --- /dev/null +++ b/charts/redhat/redhat/redhat-vertx/0.0.1/src/README.md @@ -0,0 +1,77 @@ +# Vert.x Helm Chart +A Helm chart for building and deploying a [Vert.x](https://vertx.io/) application on OpenShift. + +## Prerequisites +Below are prerequisites that may apply to your use case. + +### Pull Secret +You will need to create a pull secret if you pull an S2I builder or Docker base image from an external registry. Use the following command as a reference to create your pull secret: +```bash +oc create secret docker-registry my-pull-secret --docker-server=$SERVER_URL --docker-username=$USERNAME --docker-password=$PASSWORD --docker-email=$EMAIL +``` + +You can use this secret by passing `--set build.pullSecret=my-pull-secret` to `helm install`, or you can configure this in a values file: +```yaml +build: + pullSecret: my-pull-secret +``` +and apply by passing `--values $VALUES_FILE`. + +### Push Secret +You will need to create a push secret if you want to push your image to an external registry. Use the following command as a reference to create your push secret: +```bash +oc create secret docker-registry my-push-secret --docker-server=$SERVER_URL --docker-username=$USERNAME --docker-password=$PASSWORD --docker-email=$EMAIL +``` + +You can use this secret by passing `--set build.output.pushSecret=my-push-secret` and `--set build.output.kind=DockerImage` to `helm install`, or you can configure these in a values file: +```yaml +build: + output: + kind: DockerImage + pushSecret: my-push-secret +``` + +## Values +Below is a table of each value used to configure this chart. + +| Value | Description | Default | Additional Information | +| ----- | ----------- | ------- | ---------------------- | +| `image.name` | Name of the image you want to build/deploy | Defaults to the Helm release name. | The chart will create/reference an [ImageStream](https://docs.openshift.com/container-platform/4.6/openshift_images/image-streams-manage.html) based on this value. | +| `image.tag` | Tag that you want to build/deploy | `latest` | The chart will create/reference an [ImageStreamTag](https://docs.openshift.com/container-platform/4.6/openshift_images/image-streams-manage.html#images-using-imagestream-tags_image-streams-managing) based on the name provided | +| `build.enabled` | Determines if build-related resources should be created. | `true` | Set this to `false` if you want to deploy a previously built image. Leave this set to `true` if you want to build and deploy a new image. | +| `build.uri` | Git URI that references your git repo | https://github.com/redhat-developer-helm-quickstarts/vertx-getting-started | This value defaults to a sample application. Be sure to override this if you want to build and deploy your own application. | +| `build.ref` | Git ref containing the application you want to build | main | - | +| `build.contextDir` | The sub-directory where the application source code exists | - | - | +| `build.jvm.imageStreamTag.name` | The ImageStreamTag name of the desired builder image | `java:11` | - | +| `build.jvm.imageStreamTag.useReleaseNamespace` | Determines if the builder ImageStreamTag referenced by `build.jvm.imageStreamTag.name` is in the same namespace you are installing this Helm chart to | `false` | - | +| `build.jvm.imageStreamTag.namespace` | The namespace containing the builder ImageStreamTag | `openshift` | Only has an effect if `build.jvm.imageStreamTag.useReleaseNamespace` is `false` | +| `build.output.kind` | Determines if the image will be pushed to an ImageStreamTag or a DockerImage (external registry) | ImageStreamTag | More information: More information: https://docs.openshift.com/container-platform/4.6/builds/managing-build-output.html | +| `build.output.pushSecret` | Push secret name | - | Used only if build.output.kind == 'DockerImage' | +| `build.pullSecret` | Image pull secret | - | More information: https://docs.openshift.com/container-platform/4.6/openshift_images/managing_images/using-image-pull-secrets.html | +| `build.env` | Freeform `env` stanza | - | More information: https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/ | +| `build.resources` | Freeform `resources` stanza | - | More information: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ | +| `deploy.replicas` | Number of pod replicas to deploy | `1` | - | +| `deploy.resources` | Freeform `resources` stanza | - | More information: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ | +| `deploy.serviceType` | Type of service to create | `ClusterIP` | More information: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types | +| `deploy.ports` | Freeform service `ports` stanza. | See [values.yaml](./values.yaml) | More information: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service | +| `deploy.route.enabled` | Determines if a Route should be created | `true` | Allows clients outside of OpenShift to access your application | +| `deploy.route.targetPort` | The port that the Route should target traffic to | `http` | - | +| `deploy.route.tls.enabled` | Determines if the Route should be TLS-encrypted | `true` | More information: https://docs.openshift.com/container-platform/4.6/networking/routes/secured-routes.html | +| `deploy.route.tls.termination` | Determines the type of TLS termination to use | `edge` | Options: `edge`, `reencrypt`, `passthrough` | +| `deploy.route.tls.insecureEdgeTerminationPolicy` | Determines if insecure traffic should be redirected | `Redirect` | Options: "Allow", "Disable", "Redirect" | +| `deploy.route.tls.key` | Provides key file contents | - | This is a secret. Do not check this value into git. | +| `deploy.route.tls.caCertificate` | Provides the cert authority certificate contents | - | - | +| `deploy.route.tls.certificate` | Provides certificate contents | - | - | +| `deploy.route.tls.destinationCACertificate` | Provides the destination CA Certificate for reencrypt routes | - | - | +| `deploy.livenessProbe` | Freeform `livenessProbe` stanza. | See [values.yaml](./values.yaml) | More information: https://docs.openshift.com/container-platform/4.6/applications/application-health.html#application-health-about_application-health | +| `deploy.readinessProbe` | Freeform `readinessProbe` stanza. | See [values.yaml](./values.yaml) | More information: https://docs.openshift.com/container-platform/4.6/applications/application-health.html#application-health-about_application-health | +| `deploy.env` | Freeform `env` stanza | - | More information: https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/ | +| `deploy.envFrom` | Freeform `envFrom` stanza | - | More information: https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/#configure-all-key-value-pairs-in-a-configmap-as-container-environment-variables | +| `deploy.applicationProperties.enabled` | Determines if application properties should be externalized in a ConfigMap | `false` | - | +| `deploy.applicationProperties.mountPath` | Location to mount the application.properties file | `/deployments/config/` | - | +| `deploy.applicationProperties.properties` | The application.properties file contents | - | - | +| `deploy.volumeMounts` | Freeform volume mounts | - | More information: https://kubernetes.io/docs/concepts/storage/volumes/ | +| `deploy.volumes` | Freeform volumes | - | More information: https://kubernetes.io/docs/concepts/storage/volumes/ | +| `deploy.initContainers` | Freeform init containers | - | More information: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ | +| `deploy.extraContainers` | Freeform containers | - | More information: https://kubernetes.io/docs/concepts/workloads/pods/#pod-templates | +| `global.nameOverride` | Overrides the release name | - | Resources are named after the release name. Set this value if you want to override the release name. | diff --git a/charts/redhat/redhat/redhat-vertx/0.0.1/src/templates/NOTES.txt b/charts/redhat/redhat/redhat-vertx/0.0.1/src/templates/NOTES.txt new file mode 100644 index 000000000..769843cea --- /dev/null +++ b/charts/redhat/redhat/redhat-vertx/0.0.1/src/templates/NOTES.txt @@ -0,0 +1,7 @@ +{{- if .Release.IsInstall }} +Your Vert.x app is building! To view the build logs, run: + +oc logs bc/{{ include "vertx.name" . }} --follow + +Note that your Deployment will report "ErrImagePull" and "ImagePullBackOff" until the build is complete. Once the build is complete, your image will be automatically rolled out. +{{- end }} \ No newline at end of file diff --git a/charts/redhat/redhat/redhat-vertx/0.0.1/src/templates/_helpers.tpl b/charts/redhat/redhat/redhat-vertx/0.0.1/src/templates/_helpers.tpl new file mode 100644 index 000000000..62922b357 --- /dev/null +++ b/charts/redhat/redhat/redhat-vertx/0.0.1/src/templates/_helpers.tpl @@ -0,0 +1,22 @@ +{{- define "vertx.name" -}} +{{ default .Release.Name .Values.global.nameOverride }} +{{- end -}} + +{{- define "vertx.labels" -}} +helm.sh/chart: {{ .Chart.Name }} +{{ include "vertx.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +app.openshift.io/runtime: vertx +{{- end }} + +{{- define "vertx.selectorLabels" -}} +app.kubernetes.io/name: {{ include "vertx.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end -}} + +{{- define "vertx.imageName" -}} +{{ default (include "vertx.name" .) .Values.image.name }}:{{ .Values.image.tag }} +{{- end -}} \ No newline at end of file diff --git a/charts/redhat/redhat/redhat-vertx/0.0.1/src/templates/buildconfig.yaml b/charts/redhat/redhat/redhat-vertx/0.0.1/src/templates/buildconfig.yaml new file mode 100644 index 000000000..0a6671a8c --- /dev/null +++ b/charts/redhat/redhat/redhat-vertx/0.0.1/src/templates/buildconfig.yaml @@ -0,0 +1,50 @@ +{{- if .Values.build.enabled }} +apiVersion: build.openshift.io/v1 +kind: BuildConfig +metadata: + name: {{ include "vertx.name" . }} + labels: + {{- include "vertx.labels" . | nindent 4 }} +spec: + output: + to: + kind: {{ .Values.build.output.kind }} + name: {{ include "vertx.imageName" . }} +{{- if and (eq .Values.build.output.kind "DockerImage") .Values.build.output.pushSecret }} + pushSecret: + name: {{ .Values.build.output.pushSecret }} +{{- end }} + source: + type: Git + git: + uri: {{ .Values.build.uri }} + ref: {{ .Values.build.ref }} +{{- if .Values.build.contextDir }} + contextDir: {{ .Values.build.contextDir }} +{{- end }} + strategy: + type: Source + sourceStrategy: + from: + kind: ImageStreamTag + name: {{ .Values.build.jvm.imageStreamTag.name }} + {{- if .Values.build.jvm.imageStreamTag.useReleaseNamespace }} + namespace: {{ .Release.Namespace }} + {{- else }} + namespace: {{ .Values.build.jvm.imageStreamTag.namespace }} + {{- end }} + {{- if .Values.build.pullSecret }} + pullSecret: + name: {{ .Values.build.pullSecret }} + {{- end }} + {{- if .Values.build.env }} + env: + {{- tpl (toYaml .Values.build.env) . | nindent 8 }} + {{- end }} +{{- if .Values.build.resources }} + resources: + {{- toYaml .Values.build.resources | nindent 4 }} +{{- end }} + triggers: + - type: ConfigChange +{{- end }} \ No newline at end of file diff --git a/charts/redhat/redhat/redhat-vertx/0.0.1/src/templates/configmap.yaml b/charts/redhat/redhat/redhat-vertx/0.0.1/src/templates/configmap.yaml new file mode 100644 index 000000000..ec9b35624 --- /dev/null +++ b/charts/redhat/redhat/redhat-vertx/0.0.1/src/templates/configmap.yaml @@ -0,0 +1,11 @@ +{{- if .Values.deploy.applicationProperties.enabled }} +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "vertx.name" . }} + labels: + {{- include "vertx.labels" . | nindent 4 }} +data: + application.properties: |- + {{- tpl .Values.deploy.applicationProperties.properties . | nindent 4 }} +{{- end }} \ No newline at end of file diff --git a/charts/redhat/redhat/redhat-vertx/0.0.1/src/templates/deployment.yaml b/charts/redhat/redhat/redhat-vertx/0.0.1/src/templates/deployment.yaml new file mode 100644 index 000000000..1a8d17168 --- /dev/null +++ b/charts/redhat/redhat/redhat-vertx/0.0.1/src/templates/deployment.yaml @@ -0,0 +1,82 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "vertx.name" . }} + labels: + {{- include "vertx.labels" . | nindent 4 }} +{{- if and .Values.build.enabled (eq .Values.build.output.kind "ImageStreamTag") }} + annotations: + image.openshift.io/triggers: |- + [ + { + "from":{ + "kind":"ImageStreamTag", + "name":"{{ include "vertx.imageName" . }}" + }, + "fieldPath":"spec.template.spec.containers[0].image" + } + ] +{{- end }} +spec: + replicas: {{ .Values.deploy.replicas }} + selector: + matchLabels: + {{- include "vertx.selectorLabels" . | nindent 6 }} + template: + metadata: + labels: + {{- include "vertx.labels" . | nindent 8 }} + spec: +{{- if .Values.deploy.initContainers }} + initContainers: + {{- tpl (toYaml .Values.deploy.initContainers) . | nindent 8 }} +{{- end }} + containers: + - name: web + image: {{ include "vertx.imageName" . }} + ports: +{{- range .Values.deploy.ports }} + - name: {{ .name }} + containerPort: {{ .targetPort }} + protocol: {{ .protocol }} +{{- end }} +{{- if .Values.deploy.resources }} + resources: + {{- toYaml .Values.deploy.resources | nindent 12 }} +{{- end }} +{{- if .Values.deploy.livenessProbe }} + livenessProbe: + {{- tpl (toYaml .Values.deploy.livenessProbe) . | nindent 12 }} +{{- end }} +{{- if .Values.deploy.readinessProbe }} + readinessProbe: + {{- tpl (toYaml .Values.deploy.readinessProbe) . | nindent 12 }} +{{- end }} +{{- if .Values.deploy.env }} + env: + {{- tpl (toYaml .Values.deploy.env) . | nindent 12 }} +{{- end }} +{{- if .Values.deploy.envFrom }} + envFrom: + {{- tpl (toYaml .Values.deploy.envFrom) . | nindent 12 }} +{{- end }} + volumeMounts: +{{- if .Values.deploy.applicationProperties.enabled }} + - name: application-properties + mountPath: {{ .Values.deploy.applicationProperties.mountPath }} +{{- end }} +{{- if .Values.deploy.volumeMounts }} + {{- tpl (toYaml .Values.deploy.volumeMounts) . | nindent 12 }} +{{- end }} +{{- if .Values.deploy.extraContainers }} + {{- tpl (toYaml .Values.deploy.extraContainers) . | nindent 8 }} +{{- end }} + volumes: +{{- if .Values.deploy.applicationProperties.enabled }} + - name: application-properties + configMap: + name: {{ include "vertx.name" . }} +{{- end }} +{{- if .Values.deploy.volumes }} + {{- tpl (toYaml .Values.deploy.volumes) . | nindent 8 }} +{{- end }} \ No newline at end of file diff --git a/charts/redhat/redhat/redhat-vertx/0.0.1/src/templates/imagestream.yaml b/charts/redhat/redhat/redhat-vertx/0.0.1/src/templates/imagestream.yaml new file mode 100644 index 000000000..d023719f7 --- /dev/null +++ b/charts/redhat/redhat/redhat-vertx/0.0.1/src/templates/imagestream.yaml @@ -0,0 +1,11 @@ +{{- if and .Values.build.enabled (eq .Values.build.output.kind "ImageStreamTag") }} +apiVersion: image.openshift.io/v1 +kind: ImageStream +metadata: + name: {{ include "vertx.name" . }} + labels: + {{- include "vertx.labels" . | nindent 4 }} +spec: + lookupPolicy: + local: true +{{- end }} \ No newline at end of file diff --git a/charts/redhat/redhat/redhat-vertx/0.0.1/src/templates/route.yaml b/charts/redhat/redhat/redhat-vertx/0.0.1/src/templates/route.yaml new file mode 100644 index 000000000..1c300ae93 --- /dev/null +++ b/charts/redhat/redhat/redhat-vertx/0.0.1/src/templates/route.yaml @@ -0,0 +1,35 @@ +{{- if .Values.deploy.route.enabled }} +apiVersion: route.openshift.io/v1 +kind: Route +metadata: + name: {{ include "vertx.name" . }} + labels: + {{- include "vertx.labels" . | nindent 4 }} +spec: + to: + kind: Service + name: {{ include "vertx.name" . }} + port: + targetPort: {{ tpl .Values.deploy.route.targetPort . }} +{{- if .Values.deploy.route.tls.enabled }} + tls: + termination: {{ .Values.deploy.route.tls.termination }} + insecureEdgeTerminationPolicy: {{ .Values.deploy.route.tls.insecureEdgeTerminationPolicy }} + {{- if .Values.deploy.route.tls.key }} + key: |- + {{- .Values.deploy.route.tls.key | nindent 6 }} + {{- end }} + {{- if .Values.deploy.route.tls.destinationCACertificate }} + destinationCACertificate: |- + {{- .Values.deploy.route.tls.destinationCACertificate | nindent 6 }} + {{- end }} + {{- if .Values.deploy.route.tls.caCertificate }} + caCertificate: |- + {{- .Values.deploy.route.tls.caCertificate | nindent 6 }} + {{- end }} + {{- if .Values.deploy.route.tls.certificate }} + certificate: |- + {{- .Values.deploy.route.tls.certificate | nindent 6 }} + {{- end }} +{{- end }} +{{- end }} \ No newline at end of file diff --git a/charts/redhat/redhat/redhat-vertx/0.0.1/src/templates/service.yaml b/charts/redhat/redhat/redhat-vertx/0.0.1/src/templates/service.yaml new file mode 100644 index 000000000..eb5d10470 --- /dev/null +++ b/charts/redhat/redhat/redhat-vertx/0.0.1/src/templates/service.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "vertx.name" . }} + labels: + {{- include "vertx.labels" . | nindent 4 }} +spec: + type: {{ .Values.deploy.serviceType }} + selector: + {{- include "vertx.selectorLabels" . | nindent 4 }} + ports: + {{- tpl (toYaml .Values.deploy.ports) . | nindent 4 }} \ No newline at end of file diff --git a/charts/redhat/redhat/redhat-vertx/0.0.1/src/values.schema.json b/charts/redhat/redhat/redhat-vertx/0.0.1/src/values.schema.json new file mode 100644 index 000000000..027b222ad --- /dev/null +++ b/charts/redhat/redhat/redhat-vertx/0.0.1/src/values.schema.json @@ -0,0 +1,222 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema", + "properties": { + "image": { + "type": "object", + "description": "Defines the image you want to build/deploy", + "properties": { + "name": { + "type": ["string", "null"], + "description": "Name of the image you want to build/deploy. Defaults to the release name." + }, + "tag": { + "type": "string", + "description": "Tag that you want to build/deploy" + } + } + }, + "build": { + "type": "object", + "description": "Values related to the build", + "properties": { + "enabled": { + "type": "boolean", + "description": "Enable/disable the OCP Build" + }, + "uri": { + "type": "string", + "description": "URI of GitHub repository" + }, + "ref": { + "type": "string", + "description": "Git ref" + }, + "contextDir": { + "type": ["string", "null"], + "description": "Context directory within your Git repo to use as the root for the build" + }, + "jvm": { + "type": "object", + "description": "Values related to a jvm mode build", + "properties": { + "imageStreamTag": { + "type": "object", + "description": "Values related to the s2i builder's ImageStreamTag", + "properties": { + "name": { + "type": "string", + "description": "Name of the ImageStreamTag" + }, + "useReleaseNamespace": { + "type": "boolean", + "description": "Determines if the ImageStreamTag is in the namespace you are releasing to" + }, + "namespace": { + "type": "string", + "description": "The namespace that contains the ImageStreamTag" + } + } + } + } + }, + "output": { + "type": "object", + "description": "Specifies where the image will be pushed to once built. More information: https://docs.openshift.com/container-platform/4.6/builds/managing-build-output.html", + "properties": { + "kind": { + "type": "string", + "description": "Determines how the image will be pushed", + "enum": ["ImageStreamTag", "DockerImage"] + }, + "pushSecret": { + "type": ["string", "null"], + "description": "Push secret name, used only if kind == 'DockerImage'" + } + } + }, + "pullSecret": { + "type": ["string", "null"], + "description": "The image pull secret. More information: https://docs.openshift.com/container-platform/4.6/openshift_images/managing_images/using-image-pull-secrets.html" + }, + "env": { + "type": ["array", "null"], + "description": "Freeform env field. More information: https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/" + }, + "resources": { + "type": ["object", "null"], + "description": "Freeform resources field. More information: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" + } + } + }, + "deploy": { + "type": "object", + "description": "Values related to the deployment of your application", + "properties": { + "replicas": { + "type": "integer", + "description": "Number of pod replicas to deploy" + }, + "resources": { + "type": ["object", "null"], + "description": "Freeform resources field. More information: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" + }, + "serviceType": { + "type": "string", + "description": "The type of service to create. More information: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types" + }, + "ports": { + "type": "array", + "description": "Freeform service ports field. More information: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service" + }, + "route": { + "type": "object", + "description": "Values for creating an OCP route", + "properties": { + "enabled": { + "type": "boolean", + "description": "Determines if the route should be created" + }, + "targetPort": { + "type": "string", + "description": "The port on pods this route points to" + }, + "tls": { + "type": "object", + "description": "Values for configuring TLS on an OCP route. More information: https://docs.openshift.com/container-platform/4.6/networking/routes/secured-routes.html", + "properties": { + "enabled": { + "type": "boolean", + "description": "Determines if TLS should be enabled" + }, + "termination": { + "type": "string", + "description": "Indicates the termination type" + }, + "insecureEdgeTerminationPolicy": { + "type": "string", + "description": "Indicates the desired behavior for insecure connections" + }, + "key": { + "type": ["string", "null"], + "description": "Key file contents" + }, + "caCertificate": { + "type": ["string", "null"], + "description": "Certificate authority certificate contents" + }, + "certificate": { + "type": ["string", "null"], + "description": "Certificate contents" + }, + "destinationCACertificate": { + "type": ["string", "null"], + "description": "Contents of the CA certificate of the final destination" + } + } + } + } + }, + "livenessProbe": { + "type": ["object", "null"], + "description": "Freeform livenessProbe field. More information: https://docs.openshift.com/container-platform/4.6/applications/application-health.html#application-health-about_application-health" + }, + "readinessProbe": { + "type": ["object", "null"], + "description": "Freeform readinessProbe field. More information: https://docs.openshift.com/container-platform/4.6/applications/application-health.html#application-health-about_application-health" + }, + "env": { + "type": ["array", "null"], + "description": "Freeform env field. More information: https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/" + }, + "envFrom": { + "type": ["array", "null"], + "description": "Freeform envFrom field. More information: https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/#configure-all-key-value-pairs-in-a-configmap-as-container-environment-variables" + }, + "applicationProperties": { + "type": "object", + "description": "Values for externalizing an application.properties file", + "properties": { + "enabled": { + "type": "boolean", + "description": "Determines if the application.properties file should be externalized in a ConfigMap" + }, + "mountPath": { + "type": "string", + "description": "The location to mount the properties file to" + }, + "properties": { + "type": ["string", "null"], + "description": "application.properties file contents" + } + } + }, + "volumeMounts": { + "type": ["array", "null"], + "description": "Freeform volumeMounts field. More information: https://kubernetes.io/docs/concepts/storage/volumes/" + }, + "volumes": { + "type": ["array", "null"], + "description": "Freeform volumes field. More information: https://kubernetes.io/docs/concepts/storage/volumes/" + }, + "initContainers": { + "type": ["array", "null"], + "description": "Freeform initContainers field. More information: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/" + }, + "extraContainers": { + "type": ["array", "null"], + "description": "Adds extra containers to your pod, provided as a list of pod templates. More information: https://kubernetes.io/docs/concepts/workloads/pods/#pod-templates" + } + } + }, + "global": { + "type": "object", + "description": "Values that should be global across parent and dependent Helm charts", + "properties": { + "nameOverride": { + "type": ["string", "null"], + "description": "Overrides the release name. Impacts the image name (if image.name is left blank) and impacts the name of created OCP resources" + } + } + } + } + } \ No newline at end of file diff --git a/charts/redhat/redhat/redhat-vertx/0.0.1/src/values.yaml b/charts/redhat/redhat/redhat-vertx/0.0.1/src/values.yaml new file mode 100644 index 000000000..158b8b395 --- /dev/null +++ b/charts/redhat/redhat/redhat-vertx/0.0.1/src/values.yaml @@ -0,0 +1,157 @@ +image: + ## Name of the image you want to build/deploy + ## Defaults to the release name + name: + ## Tag that you want to build/deploy + tag: latest + +## Build-specific values (for configuring BuildConfig and ImageStream) +build: + ## Should build-related resources such as BuildConfig and ImageStream be created? + ## Set this to false if you just want to deploy a previously built image. + enabled: true + + ## Git URI, Ref, and ContextDir + uri: https://github.com/openshift-vertx-examples/vertx-http-example-redhat + ref: main + contextDir: + + ## Used if mode == 'jvm' + ## Creates an S2I build to produce a Vert.x Jar that runs in the JVM + jvm: + ## The ImageStreamTag of the desired builder image + imageStreamTag: + ## Name of the ImageStreamTag + name: java:11 + ## Is this ImageStreamTag in the same namespace you are releasing to? + useReleaseNamespace: false + ## Namespace containing the ImageStreamTag, is useReleaseNamespace == false + namespace: openshift + + ## Specifies where the image will be pushed to once built + ## More information: https://docs.openshift.com/container-platform/4.6/builds/managing-build-output.html + output: + ## Choices: ImageStreamTag, DockerImage + ## ImageStreamTag publishes to the internal registry + ## DockerImage publishes to an external registry (referred to by image.name and image.tag) + kind: ImageStreamTag + ## Push secret name, used only if kind == "DockerImage" + pushSecret: + + ## Image pull secret. More information: https://docs.openshift.com/container-platform/4.6/openshift_images/managing_images/using-image-pull-secrets.html + pullSecret: + + ## Freeform env for the OCP build. More information: https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/ + env: + # - name: VAR_NAME + # value: var-value + + ## Freeform resources for the OCP build. More information: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + resources: + # limits: + # cpu: "4" + # memory: 6Gi + # requests: + # cpu: "2" + # memory: 4Gi + +## Application/Deployment-specific values (For configuring Deployment, Service, Route, ConfigMap, etc) +deploy: + ## Number of pod replicas to deploy + replicas: 1 + + ## Freeform resources for Vert.x. More information: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + resources: + # limits: + # cpu: 100m + # memory: 256Mi + # requests: + # cpu: 50m + # memory: 128Mi + + ## Type of service to create. More information: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types + serviceType: ClusterIP + + ## Freeform service ports. More information: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service + ports: + - name: http + port: 8080 + targetPort: 8080 + protocol: TCP + + ## For creating a Route, allowing your application to be accessed from outside the OCP cluster + route: + enabled: true + targetPort: http + ## More information: https://docs.openshift.com/container-platform/4.6/networking/routes/secured-routes.html + tls: + enabled: true + termination: edge + insecureEdgeTerminationPolicy: Redirect + ## IMPORTANT: Do not check 'key' into git! + key: + caCertificate: + certificate: + destinationCACertificate: + + ## Freeform Liveness Probe. More information: https://docs.openshift.com/container-platform/4.6/applications/application-health.html#application-health-about_application-health + livenessProbe: + tcpSocket: + port: http + ## If you don't want a livenessProbe, override like this in your values file + # livenessProbe: '' + + ## Freeform Readiness Probe. More information: https://docs.openshift.com/container-platform/4.6/applications/application-health.html#application-health-about_application-health + readinessProbe: + httpGet: + path: / + port: http + ## If you don't want a readinessProbe, override like this in your values file + # readinessProve: '' + + ## Freeform env for the Vert.x app. More information: https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/ + env: + # - name: VAR_NAME + # value: var-value + + ## Freeform envFrom for the Vert.x app. More information: https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/#configure-all-key-value-pairs-in-a-configmap-as-container-environment-variables + envFrom: + # - configMapRef: + # name: special-config + + ## Application properties file for configuring the Vert.x app + applicationProperties: + ## Determines if application properties should be created in a configmap and mounted to the Vert.x container + enabled: false + ## Location to mount the properties file + mountPath: /deployments/config/ + ## Application properties file contents + properties: |- + ## Properties go here + + ## Freeform volume mounts. More information: https://kubernetes.io/docs/concepts/storage/volumes/ + volumeMounts: + # - name: my-config + # mountPath: /etc/config + + ## Freeform volumes. More information: https://kubernetes.io/docs/concepts/storage/volumes/ + volumes: + # - name: my-config + # configMap: + # name: my-configmap + + ## Freeform init containers: More information: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ + initContainers: + # - name: my-init-container + # command: ["echo", "hello"] + # image: registry.redhat.io/ubi8/ubi-minimal + + ## Freeform containers: More information: https://kubernetes.io/docs/concepts/workloads/pods/#pod-templates + extraContainers: + # - name: my-extra-container + # command: ["sleep", "infinity"] + # image: registry.redhat.io/ubi8/ubi-minimal + +global: + ## Override the release name + nameOverride: diff --git a/charts/redhat/redhat/redhat-vertx/OWNERS b/charts/redhat/redhat/redhat-vertx/OWNERS new file mode 100644 index 000000000..f604b93c4 --- /dev/null +++ b/charts/redhat/redhat/redhat-vertx/OWNERS @@ -0,0 +1,10 @@ +chart: + name: redhat-vertx + shortDescription: This is the Red Hat Vert.x chart +publicPgpKey: null +users: +- githubUsername: dperaza4dustbit +- githubUsername: jponge +vendor: + label: redhat + name: Red Hat