Charts CI

```
Updated:
  btp/chronicle:
    - 0.1.25
  external-secrets/external-secrets:
    - 0.9.17
  jfrog/artifactory-ha:
    - 107.77.11
  jfrog/artifactory-jcr:
    - 107.77.11
  redpanda/redpanda:
    - 5.8.3
  speedscale/speedscale-operator:
    - 2.1.301
```
pull/1013/head
github-actions[bot] 2024-05-02 00:52:48 +00:00
parent 96f29dd271
commit 970ef5928f
54 changed files with 852 additions and 134 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -3,7 +3,7 @@ annotations:
catalog.cattle.io/display-name: Chronicle catalog.cattle.io/display-name: Chronicle
catalog.cattle.io/release-name: chronicle catalog.cattle.io/release-name: chronicle
apiVersion: v2 apiVersion: v2
appVersion: 0.7.3 appVersion: 0.7.6
dependencies: dependencies:
- name: standard-defs - name: standard-defs
repository: file://./charts/standard-defs repository: file://./charts/standard-defs
@ -22,4 +22,4 @@ keywords:
- blockchain - blockchain
name: chronicle name: chronicle
type: application type: application
version: 0.1.15 version: 0.1.25

View File

@ -1,9 +1,10 @@
# Chronicle # Chronicle on Hyperledger Sawtooth
| field | description | default | | field | description | default |
|-|-|-| |-|-|-|
| `affinity`| custom affinity rules for the chronicle pod | {} | | `affinity`| custom affinity rules for the chronicle pod | {} |
| `auth.required` | if true require authentication | false | | `auth.required` | if true require authentication, rejecting 'anonymous' requests | false |
| `auth.id.claims` | Chronicle provides default values ["iss", "sub"] | nil |
| `backtraceLevel` | backtrace level for Chronicle | nil | | `backtraceLevel` | backtrace level for Chronicle | nil |
| `devIdProvider.image` | the image to use for the id-provider container | blockchaintp/id-provider | | `devIdProvider.image` | the image to use for the id-provider container | blockchaintp/id-provider |
| `devIdProvider.image.pullPolicy` | the image pull policy | IfNotPresent | | `devIdProvider.image.pullPolicy` | the image pull policy | IfNotPresent |
@ -44,11 +45,15 @@
| `replicas` | number of Chronicle replicas to run | 1 | | `replicas` | number of Chronicle replicas to run | 1 |
| `serviceAccount.create` | true to create a service account | false | | `serviceAccount.create` | true to create a service account | false |
| `serviceAccount.name` | name of the service account | nil (defaults to based on release name) | | `serviceAccount.name` | name of the service account | nil (defaults to based on release name) |
| `test.enabled` | true to enable test Jobs and Services | true | | `test.api` | test the chronicle GraphQL server API |
| `api-test-container.image` | the image to use for the api-test container | blockchaintp/chronicle-api-test | | `test.api.enabled` | true to enable api-test Jobs and Services | true |
| `test.api.image` | the image to use for the api-test container | blockchaintp/chronicle-helm-api-test |
| `test.api.image.pullPolicy` | the image pull policy | IfNotPresent | | `test.api.image.pullPolicy` | the image pull policy | IfNotPresent |
| `test.api.image.repository` | the image repository | blockchaintp/chronicle-helm-api-test | | `test.api.image.repository` | the image repository | blockchaintp/chronicle-helm-api-test |
| `test.api.image.tag` | the image tag | latest | | `test.api.image.tag` | the image tag | latest |
| `test.auth` | test the chronicle auth server API |
| `test.auth.enabled` | true to enable auth-related testing | true |
| `test.auth.token` | provide a token for auth-related testing | nil |
| `postgres.enabled` | if true create an internal postgres instance | boolean | true | | `postgres.enabled` | if true create an internal postgres instance | boolean | true |
| `postgres.env` | postgres environment variables | map | N/A | | `postgres.env` | postgres environment variables | map | N/A |
| `postgres.image.repository` | postgres image repository | string | "postgres" | | `postgres.image.repository` | postgres image repository | string | "postgres" |
@ -82,3 +87,19 @@
| `tp.maxUnavailable` | maximum unavailable nodes during a rolling upgrade | | `tp.maxUnavailable` | maximum unavailable nodes during a rolling upgrade |
| `tp.minReadySeconds` | minimum time before node becomes available | | `tp.minReadySeconds` | minimum time before node becomes available |
| `sawtooth` | sawtooth options may be configured | see [Sawtooth](../sawtooth/README.md) | | `sawtooth` | sawtooth options may be configured | see [Sawtooth](../sawtooth/README.md) |
| `livenessProbe.enabled` | if true, enables the liveness probe | false |
| `livenessProbe.initialDelaySeconds` | delay before liveness probe is initiated | 30 |
| `livenessProbe.periodSeconds` | how often to perform the probe | 10 |
| `livenessProbe.timeoutSeconds` | when the probe times out | 1 |
| `livenessProbe.failureThreshold` | how many times to retry the probe before giving up | 3 |
| `livenessProbe.successThreshold` | how many times the probe must report success to be considered successful after having failed | 1 |
| `livenessProbe.namespaceName` | the namespace name for the liveness probe | "default" |
| `livenessProbe.namespaceUuid` | the namespace UUID for the liveness probe | "fd717fd6-70f1-44c1-81de-287d5e101089" |
| `startupProbe.enabled` | if true, enables the startup probe | false |
| `startupProbe.initialDelaySeconds` | delay before startup probe is initiated | 10 |
| `startupProbe.periodSeconds` | how often to perform the probe | 10 |
| `startupProbe.timeoutSeconds` | when the probe times out | 1 |
| `startupProbe.failureThreshold` | how many times to retry the probe before giving up | 3 |
| `startupProbe.successThreshold` | how many times the probe must report success to be considered successful after having failed | 1 |
| `startupProbe.namespaceName` | the namespace name for the startup probe | "default" |
| `startupProbe.namespaceUuid` | the namespace UUID for the startup probe | "fd717fd6-70f1-44c1-81de-287d5e101089" |

View File

@ -1,10 +1,12 @@
# Chronicle on Hyperledger Sawtooth
Chronicle records provenance information of any physical or digital asset on a distributed ledger. Chronicle records provenance information of any physical or digital asset on a distributed ledger.
- Chronicle is available with Hyperledger Sawtooth as its default backing ledger. - Chronicle is available with Hyperledger Sawtooth as its default backing ledger.
- Chronicle is built on the established W3C PROV Ontology standard; it uses the lightweight JSON-LD linked data format, and the data query language GraphQL. - Chronicle is built on the established W3C PROV Ontology standard; it uses the lightweight JSON-LD linked data format, and the data query language GraphQL.
- Chronicle is easily adaptable to enable users to model, capture, and query provenance information pertinent to their industry, application and use case. - Chronicle is easily adaptable to enable users to model, capture, and query provenance information pertinent to their industry, application and use case.
You can find example domains and further instructions at https://examples.btp.works You can find example domains and further instructions at <https://examples.chronicle.works>
## *Important* ## *Important*

View File

@ -55,21 +55,75 @@ chronicle: {{ include "common.names.fullname" . }}
{{ include "common.names.fullname" . }}-test-id-provider {{ include "common.names.fullname" . }}-test-id-provider
{{- end -}} {{- end -}}
{{- define "chronicle.jwksUrl" -}} {{- define "chronicle.id-provider.service.jwks.url" -}}
http://{{ include "chronicle.id-provider.service" . }}:8090/jwks
{{- end -}}
{{- define "chronicle.id-provider.service.userinfo.url" -}}
http://{{ include "chronicle.id-provider.service" . }}:8090/userinfo
{{- end -}}
{{- define "chronicle.id-claims" -}}
{{- if .Values.auth.id.claims -}}
--id-claims {{ .Values.auth.id.claims }} \
{{- else -}}
{{- /* Do nothing */ -}}
{{- end -}}
{{- end -}}
{{/* The JWKS and userinfo URLs are connected. */}}
{{/* If either is provided Chronicle will use the user-provided options. */}}
{{/* If neither is provided Chronicle should fall back to using the 'devIdProvider'.*/}}
{{- define "chronicle.jwks-url.url" -}}
{{- if or (.Values.auth.jwks.url) (.Values.auth.userinfo.url) -}}
{{- if .Values.auth.jwks.url -}} {{- if .Values.auth.jwks.url -}}
{{ .Values.auth.jwks.url }} {{ .Values.auth.jwks.url }}
{{- end -}}
{{- else -}} {{- else -}}
{{- if .Values.devIdProvider.enabled -}} {{- if .Values.devIdProvider.enabled -}}
http://{{ include "chronicle.id-provider.service" . }}:8090/jwks {{ include "chronicle.id-provider.service.jwks.url" . }}
{{- else -}}
{{ required "devIdProvider.enabled must be true or auth.jwks.url must be set!" .Values.auth.jwks.url }}
{{- end -}} {{- end -}}
{{- end -}} {{- end -}}
{{- end -}} {{- end -}}
{{- define "chronicle.userinfoUrl" -}} {{- define "chronicle.jwks-url.cli" -}}
{{- if or (.Values.auth.jwks.url) (.Values.auth.userinfo.url) -}}
{{- if .Values.auth.jwks.url -}}
--jwks-address {{ include "chronicle.jwks-url.url" . }} \
{{- end -}}
{{- else -}}
{{- if .Values.devIdProvider.enabled -}}
--jwks-address {{ include "chronicle.jwks-url.url" . }} \
{{- end -}}
{{- end -}}
{{- end -}}
{{/* The JWKS and userinfo URLs are connected. */}}
{{/* If either is provided Chronicle will use the user-provided options. */}}
{{/* If neither is provided Chronicle should fall back to using the 'devIdProvider'.*/}}
{{- define "chronicle.userinfo-url" -}}
{{- if or (.Values.auth.jwks.url) (.Values.auth.userinfo.url) -}}
{{- if .Values.auth.userinfo.url -}}
{{ .Values.auth.userinfo.url }} {{ .Values.auth.userinfo.url }}
{{- end -}} {{- end -}}
{{- else -}}
{{- if .Values.devIdProvider.enabled -}}
{{ include "chronicle.id-provider.service.userinfo.url" . }}
{{- end -}}
{{- end -}}
{{- end -}}
{{- define "chronicle.userinfo-url.cli" -}}
{{- if or (.Values.auth.jwks.url) (.Values.auth.userinfo.url) -}}
{{- if .Values.auth.userinfo.url -}}
--userinfo-address {{ include "chronicle.userinfo-url" . }} \
{{- end -}}
{{- else -}}
{{- if .Values.devIdProvider.enabled -}}
--userinfo-address {{ include "chronicle.userinfo-url" . }} \
{{- end -}}
{{- end -}}
{{- end -}}
{{- define "chronicle.root-key.secret" -}} {{- define "chronicle.root-key.secret" -}}
{{ include "common.names.fullname" . }}-root-key {{ include "common.names.fullname" . }}-root-key

View File

@ -3,12 +3,11 @@
apiVersion: batch/v1 apiVersion: batch/v1
kind: Job kind: Job
metadata: metadata:
annotations:
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
name: {{ include "common.names.fullname" . }}-init name: {{ include "common.names.fullname" . }}-init
labels: {{ include "chronicle.labels" . | nindent 4 }} labels: {{ include "chronicle.labels" . | nindent 4 }}
component: chronicle component: chronicle
spec: spec:
ttlSecondsAfterFinished: 100
template: template:
metadata: metadata:
labels: {{ include "chronicle.labels" . | nindent 8 }} labels: {{ include "chronicle.labels" . | nindent 8 }}
@ -159,13 +158,17 @@ spec:
command: [ "bash", "-ec"] command: [ "bash", "-ec"]
args: args:
- | - |
if opactl \ echo "Attempting to get policy."
--sawtooth-address tcp://$HOST:$PORT \ opactl \
get-policy \ --sawtooth-address tcp://$HOST:$PORT \
--id {{ .Values.opa.policy.id }} \ get-policy \
--output policy.bin >/dev/null 2>&1; then --id {{ .Values.opa.policy.id }} \
--output /shared-data/policy.bin || true
if [ -f "/shared-data/policy.bin" ]; then
echo "Policy already set." echo "Policy already set."
touch /shared-data/policy-already-set touch /shared-data/policy-already-set
exit 0
else else
echo "Policy not found." echo "Policy not found."
exit 0 exit 0
@ -197,7 +200,7 @@ spec:
set-policy \ set-policy \
--id {{ .Values.opa.policy.id }} \ --id {{ .Values.opa.policy.id }} \
-p {{ .Values.opa.policy.url }} \ -p {{ .Values.opa.policy.url }} \
--root-key /shared-data/root.pem --root-key /shared-data/root.pem || true
fi fi
env: {{ include "lib.safeToYaml" .Values.env | nindent 12 }} env: {{ include "lib.safeToYaml" .Values.env | nindent 12 }}
- name: HOST - name: HOST

View File

@ -104,7 +104,7 @@ spec:
- | - |
{{ if .Values.auth.required }} {{ if .Values.auth.required }}
{{ if and (not .Values.auth.jwks.url) (not .Values.auth.userinfo.url) (not .Values.devIdProvider.enabled) }} {{ if and (not .Values.auth.jwks.url) (not .Values.auth.userinfo.url) (not .Values.devIdProvider.enabled) }}
{{ required "If auth.required you need to provide at least auth.jwks.url or auth.userinfo.url" .Values.auth.jwks.url }} {{ required "If 'auth.required' you need to provide at least 'auth.jwks.url' or 'auth.userinfo.url', or 'devIdProvider.enabled' must be 'true'!" .Values.auth.jwks.url }}
{{ end }} {{ end }}
{{ end }} {{ end }}
@ -122,17 +122,13 @@ spec:
--embedded-opa-policy \ --embedded-opa-policy \
{{- end }} {{- end }}
serve-api \ serve-api \
--interface 0.0.0.0:{{ .Values.port}} \ --interface 0.0.0.0:{{ .Values.port }} \
{{- if .Values.auth.required }} {{- if .Values.auth.required }}
--require-auth \ --require-auth \
--id-claims {{ .Values.auth.id.claims }} \
{{- if .Values.auth.jwks.enabled }}
--jwks-address {{ include "chronicle.jwksUrl" . }} \
{{- end }}
{{- if .Values.auth.userinfo.url }}
--userinfo-address {{ include "chronicle.userinfoUrl" . }} \
{{- end }}
{{- end }} {{- end }}
{{ include "chronicle.jwks-url.cli" . }}
{{ include "chronicle.userinfo-url.cli" . }}
{{ include "chronicle.id-claims" . }}
; ;
env: {{ include "lib.safeToYaml" .Values.env | nindent 12 }} env: {{ include "lib.safeToYaml" .Values.env | nindent 12 }}
- name: RUST_LOG - name: RUST_LOG
@ -157,6 +153,106 @@ spec:
- name: chronicle-data - name: chronicle-data
mountPath: /var/lib/chronicle/store/ mountPath: /var/lib/chronicle/store/
{{- include "lib.volumeMounts" .Values.extraVolumeMounts | nindent 12 }} {{- include "lib.volumeMounts" .Values.extraVolumeMounts | nindent 12 }}
{{- if .Values.livenessProbe.enabled }}
livenessProbe:
exec:
command:
- bash
- -c
- |
PROBE_ID="liveness_$(LC_ALL=C tr -dc A-Za-z0-9 </dev/urandom | head -c 13)" &&
TIMESTAMP=$(date -u +"%Y-%m-%dT%H:%M:%SZ") &&
echo '[
{
"@id": "_:n1",
"@type": [
"http://btp.works/chronicleoperations/ns#ActivityExists"
],
"http://btp.works/chronicleoperations/ns#activityName": [
{
"@value": "'"$PROBE_ID"'"
}
],
"http://btp.works/chronicleoperations/ns#namespaceName": [
{
"@value": "{{ .Values.livenessProbe.namespaceName }}"
}
],
"http://btp.works/chronicleoperations/ns#namespaceUuid": [
{
"@value": "{{ .Values.livenessProbe.namespaceUuid }}"
}
]
}
]' > /tmp/import.json &&
echo "Probe ID: $PROBE_ID" &&
RUST_LOG=error chronicle \
-c /etc/chronicle/config/config.toml \
--console-logging json \
--sawtooth tcp://{{ include "chronicle.sawtooth.service" . }}:{{ include "chronicle.sawtooth.sawcomp" . }} \
--remote-database \
--database-name {{ .Values.postgres.database }} \
--database-username {{ .Values.postgres.user }} \
--database-host {{ .Values.postgres.host }} \
{{- if not .Values.opa.enabled }}
--embedded-opa-policy \
{{- end }}
import {{ .Values.livenessProbe.namespaceName }} {{ .Values.livenessProbe.namespaceUuid }} /tmp/import.json
initialDelaySeconds: {{ .Values.livenessProbe.initialDelaySeconds }}
periodSeconds: {{ .Values.livenessProbe.periodSeconds }}
timeoutSeconds: {{ .Values.livenessProbe.timeoutSeconds }}
failureThreshold: {{ .Values.livenessProbe.failureThreshold }}
{{- end }}
{{- if .Values.startUpProbe.enabled }}
startupProbe:
exec:
command:
- bash
- -c
- |
PROBE_ID="startup_$(LC_ALL=C tr -dc A-Za-z0-9 </dev/urandom | head -c 13)" &&
TIMESTAMP=$(date -u +"%Y-%m-%dT%H:%M:%SZ") &&
echo '[
{
"@id": "_:n1",
"@type": [
"http://btp.works/chronicleoperations/ns#ActivityExists"
],
"http://btp.works/chronicleoperations/ns#activityName": [
{
"@value": "'"$PROBE_ID"'"
}
],
"http://btp.works/chronicleoperations/ns#namespaceName": [
{
"@value": "{{ .Values.startUpProbe.namespaceName }}"
}
],
"http://btp.works/chronicleoperations/ns#namespaceUuid": [
{
"@value": "{{ .Values.startUpProbe.namespaceUuid }}"
}
]
}
]' > /tmp/import.json &&
echo "Probe ID: $PROBE_ID" &&
RUST_LOG=error chronicle \
-c /etc/chronicle/config/config.toml \
--console-logging json \
--sawtooth tcp://{{ include "chronicle.sawtooth.service" . }}:{{ include "chronicle.sawtooth.sawcomp" . }} \
--remote-database \
--database-name {{ .Values.postgres.database }} \
--database-username {{ .Values.postgres.user }} \
--database-host {{ .Values.postgres.host }} \
{{- if not .Values.opa.enabled }}
--embedded-opa-policy \
{{- end }}
import {{ .Values.startUpProbe.namespaceName }} {{ .Values.startUpProbe.namespaceUuid }} /tmp/import.json
initialDelaySeconds: {{ .Values.startUpProbe.initialDelaySeconds }}
periodSeconds: {{ .Values.startUpProbe.periodSeconds }}
timeoutSeconds: {{ .Values.startUpProbe.timeoutSeconds }}
failureThreshold: {{ .Values.startUpProbe.failureThreshold }}
{{- end }}
volumes: volumes:
- name: chronicle-secrets - name: chronicle-secrets
persistentVolumeClaim: persistentVolumeClaim:
@ -167,10 +263,10 @@ spec:
- name: chronicle-config - name: chronicle-config
configMap: configMap:
name: {{ .Release.Name }}-chronicle-config name: {{ .Release.Name }}-chronicle-config
{{- if not .Values.postgres.persistence.enabled }} {{- if not .Values.postgres.persistence.enabled }}
- name: "pgdata" - name: "pgdata"
emptyDir: {} emptyDir: {}
{{- end }} {{- end }}
volumeClaimTemplates: volumeClaimTemplates:
- metadata: - metadata:
name: chronicle-data name: chronicle-data
@ -180,7 +276,7 @@ spec:
resources: resources:
requests: requests:
storage: 6Gi storage: 6Gi
{{- if .Values.postgres.persistence.enabled }} {{- if .Values.postgres.persistence.enabled }}
- metadata: - metadata:
name: "pgdata" name: "pgdata"
annotations: {{- include "lib.safeToYaml" .Values.postgres.persistence.annotations | nindent 10 }} annotations: {{- include "lib.safeToYaml" .Values.postgres.persistence.annotations | nindent 10 }}
@ -190,4 +286,4 @@ spec:
resources: resources:
requests: requests:
storage: {{ .Values.postgres.persistence.size | quote }} storage: {{ .Values.postgres.persistence.size | quote }}
{{- end }} {{- end }}

View File

@ -1,5 +1,4 @@
{{- if .Values.test.enabled }} {{- if or (.Values.test.api.enabled) (.Values.test.auth.enabled) }}
{{- if .Values.auth.required }}
--- ---
apiVersion: rbac.authorization.k8s.io/v1 apiVersion: rbac.authorization.k8s.io/v1
kind: Role kind: Role
@ -34,4 +33,3 @@ subjects:
name: {{ include "lib.serviceAccountName" . }} name: {{ include "lib.serviceAccountName" . }}
namespace: {{ .Release.Namespace }} namespace: {{ .Release.Namespace }}
{{- end }} {{- end }}
{{- end }}

View File

@ -1,4 +1,4 @@
{{- if .Values.test.enabled }} {{- if .Values.test.api.enabled }}
apiVersion: batch/v1 apiVersion: batch/v1
kind: Job kind: Job
metadata: metadata:
@ -15,29 +15,52 @@ spec:
restartPolicy: Never restartPolicy: Never
serviceAccountName: {{ include "lib.serviceAccountName" . }} serviceAccountName: {{ include "lib.serviceAccountName" . }}
automountServiceAccountToken: true automountServiceAccountToken: true
initContainers:
{{- if .Values.auth.required }} {{- if .Values.auth.required }}
{{ if not .Values.test.auth.token }}
{{ if not .Values.devIdProvider.enabled }}
{{ required "If 'auth.required' when using the api-test 'test.auth.token' must be provided or 'devIdProvider.enabled' must be set to 'true'!" .Values.devIdProvider.enabled }}
{{ end }}
initContainers:
- name: wait-for-id-provider - name: wait-for-id-provider
{{- include "lib.image" (dict "imageRoot" .Values.test.api.image "global" .Values.global ) | nindent 10 }} {{- include "lib.image" (dict "imageRoot" .Values.test.api.image "global" .Values.global ) | nindent 10 }}
command: [ "sh", "-ec" ] command: [ "sh", "-c" ]
args: args:
- | - |
URL={{ include "chronicle.jwksUrl" . }} URL="{{ include "chronicle.id-provider.service.jwks.url" . }}"
scheme=$(echo $URL | cut -f 1 -d :)
hostAndPort=$(echo $URL | cut -f 3 -d /) wait_for_url() {
HOST=$(echo $hostAndPort | cut -f 1 -d :) local url=$1
port=$(echo $hostAndPort | awk -F: '{print $2}') scheme=$(echo "$url" | cut -f 1 -d :)
if [ "$scheme" = "http" ]; then hostAndPort=$(echo "$url" | cut -f 3 -d /)
defaultPort=80 HOST=$(echo "$hostAndPort" | cut -f 1 -d :)
elif [ "$scheme" = "https" ]; then port=$(echo "$hostAndPort" | awk -F: '{print $2}')
defaultPort=443
else case $scheme in
defaultPort=80 "http")
fi defaultPort=80
PORT=${port:-$defaultPort} ;;
"https")
defaultPort=443
;;
*)
defaultPort=80
;;
esac
PORT=${port:-$defaultPort}
wait-for-it "$HOST:$PORT" --timeout=120
}
echo "Waiting for id-provider to be ready ..." echo "Waiting for id-provider to be ready ..."
wait-for-it $HOST:$PORT --timeout=0 wait_for_url "$URL"
echo "Id-provider is ready. Exiting."
if [ $? -eq 0 ]; then
echo "Id-provider is ready. Exiting."
exit 0
else
echo "Timeout occurred. Please check if the correct URL has been provided."
exit 1
fi
- name: token-loader - name: token-loader
image: alpine/k8s:1.24.13 image: alpine/k8s:1.24.13
command: [ "sh", "-ec" ] command: [ "sh", "-ec" ]
@ -51,6 +74,7 @@ spec:
volumeMounts: volumeMounts:
- name: shared-data - name: shared-data
mountPath: /shared-data mountPath: /shared-data
{{ end }}
{{- end }} {{- end }}
containers: containers:
- name: test - name: test
@ -58,6 +82,14 @@ spec:
command: [ "sh", "-ec" ] command: [ "sh", "-ec" ]
args: args:
- | - |
{{ if not .Values.test.auth.token }}
{{ if or .Values.auth.jwks.url .Values.auth.userinfo.url }}
echo "Auth endpoints provided but no token provided."
echo "Please provide 'test.auth.token' in the values.yaml file."
exit 1
{{ end }}
{{ end }}
API={{ include "chronicle.api.service" . }} API={{ include "chronicle.api.service" . }}
export PORT={{ .Values.port }} export PORT={{ .Values.port }}
echo "Waiting for API to be ready ..." echo "Waiting for API to be ready ..."
@ -65,13 +97,16 @@ spec:
echo "Getting IP address for API ..." echo "Getting IP address for API ..."
getent hosts $API | cut -f 1 -d \ | head -n 1 > /shared-data/api-ip || exit 1 getent hosts $API | cut -f 1 -d \ | head -n 1 > /shared-data/api-ip || exit 1
{{- if .Values.auth.required }} {{- if .Values.test.auth.token }}
echo "{{ .Values.test.auth.token }}" > /shared-data/jwks-token
{{- end }}
if [ -f "/shared-data/jwks-token" ]; then if [ -f "/shared-data/jwks-token" ]; then
echo "Found token." echo "Found token."
sleep 5 sleep 5
export TOKEN=$(cat "/shared-data/jwks-token") export TOKEN=$(cat "/shared-data/jwks-token")
fi fi
{{- end }}
export HOST=$(cat /shared-data/api-ip) export HOST=$(cat /shared-data/api-ip)
echo "Testing API with subscribe-submit-test..." echo "Testing API with subscribe-submit-test..."
subscribe-submit-test subscribe-submit-test

View File

@ -0,0 +1,160 @@
{{- if .Values.test.auth.enabled }}
{{ if not (or (.Values.devIdProvider.enabled) (or (.Values.auth.jwks.url) (.Values.auth.userinfo.url)))}}
{{ required "If 'test.auth.enabled' you need to provide 'auth.jwks.url', 'auth.userinfo.url', or enable the `devIdProvider`!" .Values.devIdProvider.enabled }}
{{ end }}
apiVersion: batch/v1
kind: Job
metadata:
name: {{ include "common.names.fullname" . }}-auth-endpoints-test
labels: {{ include "chronicle.labels" . | nindent 4 }}
component: auth-endpoints-test
annotations:
"helm.sh/hook": test
"helm.sh/hook-delete-policy": hook-succeeded
spec:
backoffLimit: 0
template:
spec:
restartPolicy: Never
serviceAccountName: {{ include "lib.serviceAccountName" . }}
{{- if .Values.devIdProvider.enabled }}
automountServiceAccountToken: true
initContainers:
- name: wait
{{- include "lib.image" (dict "imageRoot" .Values.test.api.image "global" .Values.global ) | nindent 10 }}
command: [ "sh", "-c" ]
args:
- |
URL="{{ include "chronicle.id-provider.service.jwks.url" . }}"
wait_for_url() {
local url=$1
scheme=$(echo "$url" | cut -f 1 -d :)
hostAndPort=$(echo "$url" | cut -f 3 -d /)
HOST=$(echo "$hostAndPort" | cut -f 1 -d :)
port=$(echo "$hostAndPort" | awk -F: '{print $2}')
case $scheme in
"http")
defaultPort=80
;;
"https")
defaultPort=443
;;
*)
defaultPort=80
;;
esac
PORT=${port:-$defaultPort}
wait-for-it "$HOST:$PORT" --timeout=120
}
echo "Waiting for id-provider to be ready ..."
wait_for_url "$URL"
if [ $? -eq 0 ]; then
echo "Id-provider is ready. Exiting."
exit 0
else
echo "Timeout occurred. Please check if the correct URL has been provided."
exit 1
fi
- name: tok
image: alpine/k8s:1.24.13
command: [ "sh", "-ec" ]
args:
- |
echo "Waiting to ensure id-provider is ready ..."
sleep 20
echo "Getting token from id-provider ..."
kubectl exec {{ include "chronicle.id-provider.service" . }}-0 -c id-provider -- oauth-token > /shared-data/jwks-token
echo "Token loaded. Exiting."
volumeMounts:
- name: shared-data
mountPath: /shared-data
{{- end }}
containers:
- name: jwks
image: alpine/k8s:1.24.13
command: [ "sh", "-c"]
args:
- |
{{ if or (.Values.auth.jwks.url) (.Values.devIdProvider.enabled) }}
{{ if .Values.auth.jwks.url }}
echo "Checking provided JWKS endpoint: {{ .Values.auth.jwks.url }}."
endPoint="{{ .Values.auth.jwks.url }}"
{{ else if .Values.auth.userinfo.url }}
echo "JWKS endpoint not set but userinfo url is set - skipping JWKS check."
exit 0
{{ else }}
echo "Checking JWKS endpoint from id-provider: {{ include "chronicle.id-provider.service.jwks.url" . }}."
endPoint="{{ include "chronicle.id-provider.service.jwks.url" . }}"
{{ end }}
time curl -s -o /shared-data/jwks.json $endPoint
cat /shared-data/jwks.json | jq . > /dev/null \
|| { echo "JWKS endpoint did not return a valid JSON object."; echo "DEBUG: $(cat /shared-data/jwks.json)"; exit 1; }
echo "JWKS endpoint returned a valid JSON object:"
cat /shared-data/jwks.json
echo
{{ else }}
echo "Skipping JWKS endpoint check."
{{ end }}
echo -e "Exiting."
volumeMounts:
- name: shared-data
mountPath: /shared-data
- name: userinfo
image: alpine/k8s:1.24.13
command: [ "sh", "-c"]
args:
- |
{{ if or (.Values.auth.userinfo.url) (.Values.devIdProvider.enabled) }}
{{ if .Values.auth.userinfo.url }}
{{ if not .Values.test.auth.token }}
{{ required "If providing 'auth.userinfo.url' you need to provide a 'test.auth.token'!" .Values.test.auth.token}}
{{ end }}
echo "Checking user-provided userinfo endpoint: $endPoint"
endPoint="{{ .Values.auth.userinfo.url }}"
{{ else if .Values.auth.jwks.url }}
echo "Userinfo endpoint not set but JWKS url is set - skipping userinfo check."
exit 0
{{ else }}
echo "Checking id-provider userinfo endpoint: $endPoint"
endPoint="{{ include "chronicle.id-provider.service.userinfo.url" . }}"
{{ end }}
{{ if .Values.test.auth.token }}
{{ if not .Values.auth.userinfo.url }}
{{ required "If providing 'test.auth.token' you need to provide a 'auth.userinfo.url'!" .Values.auth.userinfo.url }}
{{ end }}
echo "Using 'test.auth.token' to check userinfo endpoint."
time curl -s -H "Authorization: Bearer {{ .Values.test.auth.token }}" -o /shared-data/userinfo.json $endPoint
{{ else }}
echo "Using token from id-provider to check userinfo endpoint."
time curl -s -H "Authorization: Bearer $(cat /shared-data/jwks-token)" -o /shared-data/userinfo.json $endPoint
{{ end }}
if jq -e 'has("error")' /shared-data/userinfo.json > /dev/null; then
echo "Userinfo endpoint returned an error:"
echo "DEBUG: $(cat /shared-data/userinfo.json)"
exit 1
else
echo "Userinfo endpoint returned a valid JSON object: $(cat /shared-data/userinfo.json)"
echo
fi
{{ else }}
echo "Skipping userinfo endpoint check."
{{ end }}
echo -e "Exiting."
volumeMounts:
- name: shared-data
mountPath: /shared-data
volumes:
- name: shared-data
emptyDir: {}
{{- end }}

View File

@ -12,16 +12,46 @@ global:
affinity: {} affinity: {}
auth: auth:
## @md | `auth.required` | if true require authentication | false | ## @md | `auth.required` | if true require authentication, rejecting 'anonymous' requests | false |
required: false required: false
id: id:
claims: email ## @md | `auth.id.claims` | Chronicle provides default values ["iss", "sub"] | nil |
claims:
jwks: jwks:
enabled: true
url: url:
userinfo: userinfo:
url: url:
## @md | `livenessProbe.enabled` | if true, enables the liveness probe | false |
livenessProbe:
enabled: false
## @md | `livenessProbe.timeoutSeconds` | number of seconds after which the probe times out | 10 |
timeoutSeconds: 20
## @md | `livenessProbe.periodSeconds` | how often (in seconds) to perform the probe | 60 |
periodSeconds: 60
## @md | `livenessProbe.failureThreshold` | when a probe fails, Kubernetes will try failureThreshold times before giving up | 1 |
failureThreshold: 1
## @md | `livenessProbe.namespaceName` | the Chronicle namespace in which the probe operates | default |
namespaceName: default
## @md | `livenessProbe.namespaceUuid` | the UUID of the Chronicle namespace in which the probe operates | fd717fd6-70f1-44c1-81de-287d5e101089 |
namespaceUuid: fd717fd6-70f1-44c1-81de-287d5e101089
## @md | `startUpProbe.enabled` | if true, enables the startup probe | true |
startUpProbe:
enabled: false
## @md | `startUpProbe.initialDelaySeconds` | number of seconds after which the probe starts | 5 |
initialDelaySeconds: 5
## @md | `startUpProbe.failureThreshold` | when a probe fails, Kubernetes will try failureThreshold times before giving up | 30 |
failureThreshold: 30
## @md | `startUpProbe.periodSeconds` | how often (in seconds) to perform the probe | 10 |
periodSeconds: 10
## @md | `startUpProbe.timeoutSeconds` | number of seconds after which the probe times out | 3 |
timeoutSeconds: 3
## @md | `startUpProbe.namespaceName` | the Chronicle namespace in which the probe operates | default |
namespaceName: default
## @md | `startUpProbe.namespaceUuid` | the UUID of the Chronicle namespace in which the probe operates | fd717fd6-70f1-44c1-81de-287d5e101089 |
namespaceUuid: fd717fd6-70f1-44c1-81de-287d5e101089
## @md | `backtraceLevel` | backtrace level for Chronicle | nil | ## @md | `backtraceLevel` | backtrace level for Chronicle | nil |
backtraceLevel: full backtraceLevel: full
@ -34,7 +64,7 @@ devIdProvider:
## @md | `devIdProvider.image.repository` | the image repository | blockchaintp/id-provider | ## @md | `devIdProvider.image.repository` | the image repository | blockchaintp/id-provider |
repository: blockchaintp/id-provider-amd64 repository: blockchaintp/id-provider-amd64
## @md | `devIdProvider.image.tag` | the image tag | latest | ## @md | `devIdProvider.image.tag` | the image tag | latest |
tag: BTP2.1.0-0.7.3 tag: BTP2.1.0-0.7.6
## @md | `extraVolumes` | a list of additional volumes to add to chronicle | [] | ## @md | `extraVolumes` | a list of additional volumes to add to chronicle | [] |
extraVolumes: [] extraVolumes: []
@ -45,7 +75,7 @@ image:
## @md | `image.repository` | the repository of the image | blockchaintp/chronicle | ## @md | `image.repository` | the repository of the image | blockchaintp/chronicle |
repository: blockchaintp/chronicle-amd64 repository: blockchaintp/chronicle-amd64
## @md | `image.tag`| the tag of the image to use | latest | ## @md | `image.tag`| the tag of the image to use | latest |
tag: BTP2.1.0-0.7.3 tag: BTP2.1.0-0.7.6
## @md | `image.pullPolicy` | the image pull policy to use | IfNotPresent | ## @md | `image.pullPolicy` | the image pull policy to use | IfNotPresent |
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
@ -89,7 +119,7 @@ logLevel: info
opa: opa:
## @md | `opa.enabled` | if true set up a full OPA enabled setup | true | ## @md | `opa.enabled` | if true set up a full OPA enabled setup | true |
enabled: true enabled: false
opaInit: opaInit:
## @md | `opa.init.image` | the image to use for the chronicle-init container | blockchaintp/chronicle-opa-init | ## @md | `opa.init.image` | the image to use for the chronicle-init container | blockchaintp/chronicle-opa-init |
image: image:
@ -98,7 +128,7 @@ opa:
## @md | `image.repository` | the repository of the image | blockchaintp/chronicle | ## @md | `image.repository` | the repository of the image | blockchaintp/chronicle |
repository: blockchaintp/opactl-amd64 repository: blockchaintp/opactl-amd64
## @md | `image.tag`| the tag of the image to use | latest | ## @md | `image.tag`| the tag of the image to use | latest |
tag: BTP2.1.0-0.7.3 tag: BTP2.1.0-0.7.6
policy: policy:
entrypoint: allow_transactions.allowed_users entrypoint: allow_transactions.allowed_users
id: allow_transactions id: allow_transactions
@ -108,7 +138,7 @@ opa:
## @md | `image.repository` | the repository of the image | blockchaintp/chronicle | ## @md | `image.repository` | the repository of the image | blockchaintp/chronicle |
repository: blockchaintp/opa-tp-amd64 repository: blockchaintp/opa-tp-amd64
## @md | `image.tag`| the tag of the image to use | latest | ## @md | `image.tag`| the tag of the image to use | latest |
tag: BTP2.1.0-0.7.3 tag: BTP2.1.0-0.7.6
## @md | `image.pullPolicy` | the image pull policy to use | IfNotPresent | ## @md | `image.pullPolicy` | the image pull policy to use | IfNotPresent |
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
## @md | `opa.tp.resources` | resources | map | nil | ## @md | `opa.tp.resources` | resources | map | nil |
@ -131,17 +161,24 @@ serviceAccount:
name: name:
test: test:
## @md | `test.enabled` | true to enable test Jobs and Services | true | ## @md | `test.api` | test the chronicle GraphQL server API |
enabled: true
api: api:
## @md | `api-test-container.image` | the image to use for the api-test container | blockchaintp/chronicle-api-test | ## @md | `test.api.enabled` | true to enable api-test Jobs and Services | true |
enabled: false
## @md | `test.api.image` | the image to use for the api-test container | blockchaintp/chronicle-helm-api-test |
image: image:
## @md | `test.api.image.pullPolicy` | the image pull policy | IfNotPresent | ## @md | `test.api.image.pullPolicy` | the image pull policy | IfNotPresent |
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
## @md | `test.api.image.repository` | the image repository | blockchaintp/chronicle-helm-api-test | ## @md | `test.api.image.repository` | the image repository | blockchaintp/chronicle-helm-api-test |
repository: blockchaintp/chronicle-helm-api-test-amd64 repository: blockchaintp/chronicle-helm-api-test-amd64
## @md | `test.api.image.tag` | the image tag | latest | ## @md | `test.api.image.tag` | the image tag | latest |
tag: BTP2.1.0-0.7.3 tag: BTP2.1.0-0.7.6
## @md | `test.auth` | test the chronicle auth server API |
auth:
## @md | `test.auth.enabled` | true to enable auth-related testing | true |
enabled: true
## @md | `test.auth.token` | provide a token for auth-related testing | nil |
token:
postgres: postgres:
# if enabled we allocate a postgres database here # if enabled we allocate a postgres database here
@ -211,7 +248,7 @@ tp:
## @md | `tp.image.repository` | the image repository | blockchaintp/chronicle-tp | ## @md | `tp.image.repository` | the image repository | blockchaintp/chronicle-tp |
repository: blockchaintp/chronicle-tp-amd64 repository: blockchaintp/chronicle-tp-amd64
## @md | `tp.image.tag` | the image tag | latest | ## @md | `tp.image.tag` | the image tag | latest |
tag: BTP2.1.0-0.7.3 tag: BTP2.1.0-0.7.6
## @md | `tp.extraVolumes` | extra volumes declarations for the chronicle-tp deployment | list | nil ## @md | `tp.extraVolumes` | extra volumes declarations for the chronicle-tp deployment | list | nil
extraVolumes: extraVolumes:
## @md | `tp.extraVolumeMounts` | extra volume mounts for chronicle-tp deployment | list | nil ## @md | `tp.extraVolumeMounts` | extra volume mounts for chronicle-tp deployment | list | nil

View File

@ -4,7 +4,7 @@ annotations:
catalog.cattle.io/kube-version: '>= 1.19.0-0' catalog.cattle.io/kube-version: '>= 1.19.0-0'
catalog.cattle.io/release-name: external-secrets catalog.cattle.io/release-name: external-secrets
apiVersion: v2 apiVersion: v2
appVersion: v0.9.16 appVersion: v0.9.17
description: External secret management for Kubernetes description: External secret management for Kubernetes
home: https://github.com/external-secrets/external-secrets home: https://github.com/external-secrets/external-secrets
icon: https://raw.githubusercontent.com/external-secrets/external-secrets/main/assets/eso-logo-large.png icon: https://raw.githubusercontent.com/external-secrets/external-secrets/main/assets/eso-logo-large.png
@ -17,4 +17,4 @@ maintainers:
name: mcavoyk name: mcavoyk
name: external-secrets name: external-secrets
type: application type: application
version: 0.9.16 version: 0.9.17

View File

@ -4,7 +4,7 @@
[//]: # (README.md generated by gotmpl. DO NOT EDIT.) [//]: # (README.md generated by gotmpl. DO NOT EDIT.)
![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![Version: 0.9.16](https://img.shields.io/badge/Version-0.9.16-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![Version: 0.9.17](https://img.shields.io/badge/Version-0.9.17-informational?style=flat-square)
External secret management for Kubernetes External secret management for Kubernetes
@ -58,7 +58,7 @@ The command removes all the Kubernetes components associated with the chart and
| certController.podAnnotations | object | `{}` | Annotations to add to Pod | | certController.podAnnotations | object | `{}` | Annotations to add to Pod |
| certController.podDisruptionBudget | object | `{"enabled":false,"minAvailable":1}` | Pod disruption budget - for more details see https://kubernetes.io/docs/concepts/workloads/pods/disruptions/ | | certController.podDisruptionBudget | object | `{"enabled":false,"minAvailable":1}` | Pod disruption budget - for more details see https://kubernetes.io/docs/concepts/workloads/pods/disruptions/ |
| certController.podLabels | object | `{}` | | | certController.podLabels | object | `{}` | |
| certController.podSecurityContext | object | `{}` | | | certController.podSecurityContext.enabled | bool | `true` | |
| certController.priorityClassName | string | `""` | Pod priority class name. | | certController.priorityClassName | string | `""` | Pod priority class name. |
| certController.rbac.create | bool | `true` | Specifies whether role and rolebinding resources should be created. | | certController.rbac.create | bool | `true` | Specifies whether role and rolebinding resources should be created. |
| certController.readinessProbe.address | string | `""` | Address for readiness probe | | certController.readinessProbe.address | string | `""` | Address for readiness probe |
@ -69,6 +69,7 @@ The command removes all the Kubernetes components associated with the chart and
| certController.revisionHistoryLimit | int | `10` | Specifies the amount of historic ReplicaSets k8s should keep (see https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#clean-up-policy) | | certController.revisionHistoryLimit | int | `10` | Specifies the amount of historic ReplicaSets k8s should keep (see https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#clean-up-policy) |
| certController.securityContext.allowPrivilegeEscalation | bool | `false` | | | certController.securityContext.allowPrivilegeEscalation | bool | `false` | |
| certController.securityContext.capabilities.drop[0] | string | `"ALL"` | | | certController.securityContext.capabilities.drop[0] | string | `"ALL"` | |
| certController.securityContext.enabled | bool | `true` | |
| certController.securityContext.readOnlyRootFilesystem | bool | `true` | | | certController.securityContext.readOnlyRootFilesystem | bool | `true` | |
| certController.securityContext.runAsNonRoot | bool | `true` | | | certController.securityContext.runAsNonRoot | bool | `true` | |
| certController.securityContext.runAsUser | int | `1000` | | | certController.securityContext.runAsUser | int | `1000` | |
@ -95,10 +96,12 @@ The command removes all the Kubernetes components associated with the chart and
| extraArgs | object | `{}` | | | extraArgs | object | `{}` | |
| extraContainers | list | `[]` | | | extraContainers | list | `[]` | |
| extraEnv | list | `[]` | | | extraEnv | list | `[]` | |
| extraObjects | list | `[]` | |
| extraVolumeMounts | list | `[]` | | | extraVolumeMounts | list | `[]` | |
| extraVolumes | list | `[]` | | | extraVolumes | list | `[]` | |
| fullnameOverride | string | `""` | | | fullnameOverride | string | `""` | |
| global.affinity | object | `{}` | | | global.affinity | object | `{}` | |
| global.compatibility.openshift.adaptSecurityContext | string | `"auto"` | Manages the securityContext properties to make them compatible with OpenShift. Possible values: auto - Apply configurations if it is detected that OpenShift is the target platform. force - Always apply configurations. disabled - No modification applied. |
| global.nodeSelector | object | `{}` | | | global.nodeSelector | object | `{}` | |
| global.tolerations | list | `[]` | | | global.tolerations | list | `[]` | |
| global.topologySpreadConstraints | list | `[]` | | | global.topologySpreadConstraints | list | `[]` | |
@ -120,7 +123,7 @@ The command removes all the Kubernetes components associated with the chart and
| podAnnotations | object | `{}` | Annotations to add to Pod | | podAnnotations | object | `{}` | Annotations to add to Pod |
| podDisruptionBudget | object | `{"enabled":false,"minAvailable":1}` | Pod disruption budget - for more details see https://kubernetes.io/docs/concepts/workloads/pods/disruptions/ | | podDisruptionBudget | object | `{"enabled":false,"minAvailable":1}` | Pod disruption budget - for more details see https://kubernetes.io/docs/concepts/workloads/pods/disruptions/ |
| podLabels | object | `{}` | | | podLabels | object | `{}` | |
| podSecurityContext | object | `{}` | | | podSecurityContext.enabled | bool | `true` | |
| podSpecExtra | object | `{}` | Any extra pod spec on the deployment | | podSpecExtra | object | `{}` | Any extra pod spec on the deployment |
| priorityClassName | string | `""` | Pod priority class name. | | priorityClassName | string | `""` | Pod priority class name. |
| processClusterExternalSecret | bool | `true` | if true, the operator will process cluster external secret. Else, it will ignore them. | | processClusterExternalSecret | bool | `true` | if true, the operator will process cluster external secret. Else, it will ignore them. |
@ -135,6 +138,7 @@ The command removes all the Kubernetes components associated with the chart and
| scopedRBAC | bool | `false` | Must be used with scopedNamespace. If true, create scoped RBAC roles under the scoped namespace and implicitly disable cluster stores and cluster external secrets | | scopedRBAC | bool | `false` | Must be used with scopedNamespace. If true, create scoped RBAC roles under the scoped namespace and implicitly disable cluster stores and cluster external secrets |
| securityContext.allowPrivilegeEscalation | bool | `false` | | | securityContext.allowPrivilegeEscalation | bool | `false` | |
| securityContext.capabilities.drop[0] | string | `"ALL"` | | | securityContext.capabilities.drop[0] | string | `"ALL"` | |
| securityContext.enabled | bool | `true` | |
| securityContext.readOnlyRootFilesystem | bool | `true` | | | securityContext.readOnlyRootFilesystem | bool | `true` | |
| securityContext.runAsNonRoot | bool | `true` | | | securityContext.runAsNonRoot | bool | `true` | |
| securityContext.runAsUser | int | `1000` | | | securityContext.runAsUser | int | `1000` | |
@ -190,7 +194,7 @@ The command removes all the Kubernetes components associated with the chart and
| webhook.podAnnotations | object | `{}` | Annotations to add to Pod | | webhook.podAnnotations | object | `{}` | Annotations to add to Pod |
| webhook.podDisruptionBudget | object | `{"enabled":false,"minAvailable":1}` | Pod disruption budget - for more details see https://kubernetes.io/docs/concepts/workloads/pods/disruptions/ | | webhook.podDisruptionBudget | object | `{"enabled":false,"minAvailable":1}` | Pod disruption budget - for more details see https://kubernetes.io/docs/concepts/workloads/pods/disruptions/ |
| webhook.podLabels | object | `{}` | | | webhook.podLabels | object | `{}` | |
| webhook.podSecurityContext | object | `{}` | | | webhook.podSecurityContext.enabled | bool | `true` | |
| webhook.port | int | `10250` | The port the webhook will listen to | | webhook.port | int | `10250` | The port the webhook will listen to |
| webhook.priorityClassName | string | `""` | Pod priority class name. | | webhook.priorityClassName | string | `""` | Pod priority class name. |
| webhook.rbac.create | bool | `true` | Specifies whether role and rolebinding resources should be created. | | webhook.rbac.create | bool | `true` | Specifies whether role and rolebinding resources should be created. |
@ -202,6 +206,7 @@ The command removes all the Kubernetes components associated with the chart and
| webhook.secretAnnotations | object | `{}` | Annotations to add to Secret | | webhook.secretAnnotations | object | `{}` | Annotations to add to Secret |
| webhook.securityContext.allowPrivilegeEscalation | bool | `false` | | | webhook.securityContext.allowPrivilegeEscalation | bool | `false` | |
| webhook.securityContext.capabilities.drop[0] | string | `"ALL"` | | | webhook.securityContext.capabilities.drop[0] | string | `"ALL"` | |
| webhook.securityContext.enabled | bool | `true` | |
| webhook.securityContext.readOnlyRootFilesystem | bool | `true` | | | webhook.securityContext.readOnlyRootFilesystem | bool | `true` | |
| webhook.securityContext.runAsNonRoot | bool | `true` | | | webhook.securityContext.runAsNonRoot | bool | `true` | |
| webhook.securityContext.runAsUser | int | `1000` | | | webhook.securityContext.runAsUser | int | `1000` | |

View File

@ -154,3 +154,48 @@ Determine the image to use, including if using a flavour.
{{ printf "%s:%s" .image.repository (.image.tag | default .chartAppVersion) }} {{ printf "%s:%s" .image.repository (.image.tag | default .chartAppVersion) }}
{{- end }} {{- end }}
{{- end }} {{- end }}
<<<<<<< HEAD
{{/*
Renders a complete tree, even values that contains template.
*/}}
{{- define "external-secrets.render" -}}
{{- if typeIs "string" .value }}
{{- tpl .value .context }}
{{ else }}
{{- tpl (.value | toYaml) .context }}
{{- end }}
{{- end -}}
=======
{{/*
Return true if the OpenShift is the detected platform
Usage:
{{- include "external-secrets.isOpenShift" . -}}
*/}}
{{- define "external-secrets.isOpenShift" -}}
{{- if .Capabilities.APIVersions.Has "security.openshift.io/v1" -}}
{{- true -}}
{{- end -}}
{{- end -}}
{{/*
Render the securityContext based on the provided securityContext
{{- include "external-secrets.renderSecurityContext" (dict "securityContext" .Values.securityContext "context" $) -}}
*/}}
{{- define "external-secrets.renderSecurityContext" -}}
{{- $adaptedContext := .securityContext -}}
{{- if .context.Values.global.compatibility -}}
{{- if .context.Values.global.compatibility.openshift -}}
{{- if or (eq .context.Values.global.compatibility.openshift.adaptSecurityContext "force") (and (eq .context.Values.global.compatibility.openshift.adaptSecurityContext "auto") (include "external-secrets.isOpenShift" .context)) -}}
{{/* Remove OpenShift managed fields */}}
{{- $adaptedContext = omit $adaptedContext "fsGroup" "runAsUser" "runAsGroup" -}}
{{- if not .securityContext.seLinuxOptions -}}
{{- $adaptedContext = omit $adaptedContext "seLinuxOptions" -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- omit $adaptedContext "enabled" | toYaml -}}
{{- end -}}
>>>>>>> 2218c78b (Methods for managing securityContext and OpenShift support)

View File

@ -35,15 +35,19 @@ spec:
serviceAccountName: {{ include "external-secrets-cert-controller.serviceAccountName" . }} serviceAccountName: {{ include "external-secrets-cert-controller.serviceAccountName" . }}
automountServiceAccountToken: {{ .Values.certController.serviceAccount.automount }} automountServiceAccountToken: {{ .Values.certController.serviceAccount.automount }}
{{- with .Values.certController.podSecurityContext }} {{- with .Values.certController.podSecurityContext }}
{{- if and (.enabled) (gt (keys . | len) 1) }}
securityContext: securityContext:
{{- toYaml . | nindent 8 }} {{- include "external-secrets.renderSecurityContext" (dict "securityContext" . "context" $) | nindent 8 }}
{{- end }}
{{- end }} {{- end }}
hostNetwork: {{ .Values.certController.hostNetwork }} hostNetwork: {{ .Values.certController.hostNetwork }}
containers: containers:
- name: cert-controller - name: cert-controller
{{- with .Values.certController.securityContext }} {{- with .Values.certController.securityContext }}
{{- if and (.enabled) (gt (keys . | len) 1) }}
securityContext: securityContext:
{{- toYaml . | nindent 12 }} {{- include "external-secrets.renderSecurityContext" (dict "securityContext" . "context" $) | nindent 12 }}
{{- end }}
{{- end }} {{- end }}
image: {{ include "external-secrets.image" (dict "chartAppVersion" .Chart.AppVersion "image" .Values.certController.image) | trim }} image: {{ include "external-secrets.image" (dict "chartAppVersion" .Chart.AppVersion "image" .Values.certController.image) | trim }}
imagePullPolicy: {{ .Values.certController.image.pullPolicy }} imagePullPolicy: {{ .Values.certController.image.pullPolicy }}

View File

@ -9,7 +9,7 @@ metadata:
{{- if and .Values.crds.conversion.enabled .Values.webhook.certManager.enabled .Values.webhook.certManager.addInjectorAnnotations }} {{- if and .Values.crds.conversion.enabled .Values.webhook.certManager.enabled .Values.webhook.certManager.addInjectorAnnotations }}
cert-manager.io/inject-ca-from: {{ .Release.Namespace }}/{{ include "external-secrets.fullname" . }}-webhook cert-manager.io/inject-ca-from: {{ .Release.Namespace }}/{{ include "external-secrets.fullname" . }}-webhook
{{- end }} {{- end }}
controller-gen.kubebuilder.io/version: v0.14.0 controller-gen.kubebuilder.io/version: v0.15.0
name: acraccesstokens.generators.external-secrets.io name: acraccesstokens.generators.external-secrets.io
spec: spec:
group: generators.external-secrets.io group: generators.external-secrets.io

View File

@ -9,7 +9,7 @@ metadata:
{{- if and .Values.crds.conversion.enabled .Values.webhook.certManager.enabled .Values.webhook.certManager.addInjectorAnnotations }} {{- if and .Values.crds.conversion.enabled .Values.webhook.certManager.enabled .Values.webhook.certManager.addInjectorAnnotations }}
cert-manager.io/inject-ca-from: {{ .Release.Namespace }}/{{ include "external-secrets.fullname" . }}-webhook cert-manager.io/inject-ca-from: {{ .Release.Namespace }}/{{ include "external-secrets.fullname" . }}-webhook
{{- end }} {{- end }}
controller-gen.kubebuilder.io/version: v0.14.0 controller-gen.kubebuilder.io/version: v0.15.0
name: clusterexternalsecrets.external-secrets.io name: clusterexternalsecrets.external-secrets.io
spec: spec:
group: external-secrets.io group: external-secrets.io
@ -526,11 +526,13 @@ spec:
items: items:
type: string type: string
type: array type: array
x-kubernetes-list-type: atomic
required: required:
- key - key
- operator - operator
type: object type: object
type: array type: array
x-kubernetes-list-type: atomic
matchLabels: matchLabels:
additionalProperties: additionalProperties:
type: string type: string
@ -573,11 +575,13 @@ spec:
items: items:
type: string type: string
type: array type: array
x-kubernetes-list-type: atomic
required: required:
- key - key
- operator - operator
type: object type: object
type: array type: array
x-kubernetes-list-type: atomic
matchLabels: matchLabels:
additionalProperties: additionalProperties:
type: string type: string
@ -590,7 +594,7 @@ spec:
x-kubernetes-map-type: atomic x-kubernetes-map-type: atomic
type: array type: array
namespaces: namespaces:
description: Choose namespaces by name. This field is ORed with anything that NamespaceSelector ends up choosing. description: Choose namespaces by name. This field is ORed with anything that NamespaceSelectors ends up choosing.
items: items:
type: string type: string
type: array type: array

View File

@ -9,7 +9,7 @@ metadata:
{{- if and .Values.crds.conversion.enabled .Values.webhook.certManager.enabled .Values.webhook.certManager.addInjectorAnnotations }} {{- if and .Values.crds.conversion.enabled .Values.webhook.certManager.enabled .Values.webhook.certManager.addInjectorAnnotations }}
cert-manager.io/inject-ca-from: {{ .Release.Namespace }}/{{ include "external-secrets.fullname" . }}-webhook cert-manager.io/inject-ca-from: {{ .Release.Namespace }}/{{ include "external-secrets.fullname" . }}-webhook
{{- end }} {{- end }}
controller-gen.kubebuilder.io/version: v0.14.0 controller-gen.kubebuilder.io/version: v0.15.0
name: clustersecretstores.external-secrets.io name: clustersecretstores.external-secrets.io
spec: spec:
group: external-secrets.io group: external-secrets.io
@ -1577,11 +1577,13 @@ spec:
items: items:
type: string type: string
type: array type: array
x-kubernetes-list-type: atomic
required: required:
- key - key
- operator - operator
type: object type: object
type: array type: array
x-kubernetes-list-type: atomic
matchLabels: matchLabels:
additionalProperties: additionalProperties:
type: string type: string

View File

@ -9,7 +9,7 @@ metadata:
{{- if and .Values.crds.conversion.enabled .Values.webhook.certManager.enabled .Values.webhook.certManager.addInjectorAnnotations }} {{- if and .Values.crds.conversion.enabled .Values.webhook.certManager.enabled .Values.webhook.certManager.addInjectorAnnotations }}
cert-manager.io/inject-ca-from: {{ .Release.Namespace }}/{{ include "external-secrets.fullname" . }}-webhook cert-manager.io/inject-ca-from: {{ .Release.Namespace }}/{{ include "external-secrets.fullname" . }}-webhook
{{- end }} {{- end }}
controller-gen.kubebuilder.io/version: v0.14.0 controller-gen.kubebuilder.io/version: v0.15.0
name: ecrauthorizationtokens.generators.external-secrets.io name: ecrauthorizationtokens.generators.external-secrets.io
spec: spec:
group: generators.external-secrets.io group: generators.external-secrets.io

View File

@ -9,7 +9,7 @@ metadata:
{{- if and .Values.crds.conversion.enabled .Values.webhook.certManager.enabled .Values.webhook.certManager.addInjectorAnnotations }} {{- if and .Values.crds.conversion.enabled .Values.webhook.certManager.enabled .Values.webhook.certManager.addInjectorAnnotations }}
cert-manager.io/inject-ca-from: {{ .Release.Namespace }}/{{ include "external-secrets.fullname" . }}-webhook cert-manager.io/inject-ca-from: {{ .Release.Namespace }}/{{ include "external-secrets.fullname" . }}-webhook
{{- end }} {{- end }}
controller-gen.kubebuilder.io/version: v0.14.0 controller-gen.kubebuilder.io/version: v0.15.0
name: externalsecrets.external-secrets.io name: externalsecrets.external-secrets.io
spec: spec:
group: external-secrets.io group: external-secrets.io

View File

@ -9,7 +9,7 @@ metadata:
{{- if and .Values.crds.conversion.enabled .Values.webhook.certManager.enabled .Values.webhook.certManager.addInjectorAnnotations }} {{- if and .Values.crds.conversion.enabled .Values.webhook.certManager.enabled .Values.webhook.certManager.addInjectorAnnotations }}
cert-manager.io/inject-ca-from: {{ .Release.Namespace }}/{{ include "external-secrets.fullname" . }}-webhook cert-manager.io/inject-ca-from: {{ .Release.Namespace }}/{{ include "external-secrets.fullname" . }}-webhook
{{- end }} {{- end }}
controller-gen.kubebuilder.io/version: v0.14.0 controller-gen.kubebuilder.io/version: v0.15.0
name: fakes.generators.external-secrets.io name: fakes.generators.external-secrets.io
spec: spec:
group: generators.external-secrets.io group: generators.external-secrets.io

View File

@ -9,7 +9,7 @@ metadata:
{{- if and .Values.crds.conversion.enabled .Values.webhook.certManager.enabled .Values.webhook.certManager.addInjectorAnnotations }} {{- if and .Values.crds.conversion.enabled .Values.webhook.certManager.enabled .Values.webhook.certManager.addInjectorAnnotations }}
cert-manager.io/inject-ca-from: {{ .Release.Namespace }}/{{ include "external-secrets.fullname" . }}-webhook cert-manager.io/inject-ca-from: {{ .Release.Namespace }}/{{ include "external-secrets.fullname" . }}-webhook
{{- end }} {{- end }}
controller-gen.kubebuilder.io/version: v0.14.0 controller-gen.kubebuilder.io/version: v0.15.0
name: gcraccesstokens.generators.external-secrets.io name: gcraccesstokens.generators.external-secrets.io
spec: spec:
group: generators.external-secrets.io group: generators.external-secrets.io

View File

@ -9,7 +9,7 @@ metadata:
{{- if and .Values.crds.conversion.enabled .Values.webhook.certManager.enabled .Values.webhook.certManager.addInjectorAnnotations }} {{- if and .Values.crds.conversion.enabled .Values.webhook.certManager.enabled .Values.webhook.certManager.addInjectorAnnotations }}
cert-manager.io/inject-ca-from: {{ .Release.Namespace }}/{{ include "external-secrets.fullname" . }}-webhook cert-manager.io/inject-ca-from: {{ .Release.Namespace }}/{{ include "external-secrets.fullname" . }}-webhook
{{- end }} {{- end }}
controller-gen.kubebuilder.io/version: v0.14.0 controller-gen.kubebuilder.io/version: v0.15.0
name: githubaccesstokens.generators.external-secrets.io name: githubaccesstokens.generators.external-secrets.io
spec: spec:
group: generators.external-secrets.io group: generators.external-secrets.io

View File

@ -9,7 +9,7 @@ metadata:
{{- if and .Values.crds.conversion.enabled .Values.webhook.certManager.enabled .Values.webhook.certManager.addInjectorAnnotations }} {{- if and .Values.crds.conversion.enabled .Values.webhook.certManager.enabled .Values.webhook.certManager.addInjectorAnnotations }}
cert-manager.io/inject-ca-from: {{ .Release.Namespace }}/{{ include "external-secrets.fullname" . }}-webhook cert-manager.io/inject-ca-from: {{ .Release.Namespace }}/{{ include "external-secrets.fullname" . }}-webhook
{{- end }} {{- end }}
controller-gen.kubebuilder.io/version: v0.14.0 controller-gen.kubebuilder.io/version: v0.15.0
name: passwords.generators.external-secrets.io name: passwords.generators.external-secrets.io
spec: spec:
group: generators.external-secrets.io group: generators.external-secrets.io

View File

@ -9,7 +9,7 @@ metadata:
{{- if and .Values.crds.conversion.enabled .Values.webhook.certManager.enabled .Values.webhook.certManager.addInjectorAnnotations }} {{- if and .Values.crds.conversion.enabled .Values.webhook.certManager.enabled .Values.webhook.certManager.addInjectorAnnotations }}
cert-manager.io/inject-ca-from: {{ .Release.Namespace }}/{{ include "external-secrets.fullname" . }}-webhook cert-manager.io/inject-ca-from: {{ .Release.Namespace }}/{{ include "external-secrets.fullname" . }}-webhook
{{- end }} {{- end }}
controller-gen.kubebuilder.io/version: v0.14.0 controller-gen.kubebuilder.io/version: v0.15.0
name: pushsecrets.external-secrets.io name: pushsecrets.external-secrets.io
spec: spec:
group: external-secrets.io group: external-secrets.io
@ -140,11 +140,13 @@ spec:
items: items:
type: string type: string
type: array type: array
x-kubernetes-list-type: atomic
required: required:
- key - key
- operator - operator
type: object type: object
type: array type: array
x-kubernetes-list-type: atomic
matchLabels: matchLabels:
additionalProperties: additionalProperties:
type: string type: string

View File

@ -9,7 +9,7 @@ metadata:
{{- if and .Values.crds.conversion.enabled .Values.webhook.certManager.enabled .Values.webhook.certManager.addInjectorAnnotations }} {{- if and .Values.crds.conversion.enabled .Values.webhook.certManager.enabled .Values.webhook.certManager.addInjectorAnnotations }}
cert-manager.io/inject-ca-from: {{ .Release.Namespace }}/{{ include "external-secrets.fullname" . }}-webhook cert-manager.io/inject-ca-from: {{ .Release.Namespace }}/{{ include "external-secrets.fullname" . }}-webhook
{{- end }} {{- end }}
controller-gen.kubebuilder.io/version: v0.14.0 controller-gen.kubebuilder.io/version: v0.15.0
name: secretstores.external-secrets.io name: secretstores.external-secrets.io
spec: spec:
group: external-secrets.io group: external-secrets.io
@ -1577,11 +1577,13 @@ spec:
items: items:
type: string type: string
type: array type: array
x-kubernetes-list-type: atomic
required: required:
- key - key
- operator - operator
type: object type: object
type: array type: array
x-kubernetes-list-type: atomic
matchLabels: matchLabels:
additionalProperties: additionalProperties:
type: string type: string

View File

@ -9,7 +9,7 @@ metadata:
{{- if and .Values.crds.conversion.enabled .Values.webhook.certManager.enabled .Values.webhook.certManager.addInjectorAnnotations }} {{- if and .Values.crds.conversion.enabled .Values.webhook.certManager.enabled .Values.webhook.certManager.addInjectorAnnotations }}
cert-manager.io/inject-ca-from: {{ .Release.Namespace }}/{{ include "external-secrets.fullname" . }}-webhook cert-manager.io/inject-ca-from: {{ .Release.Namespace }}/{{ include "external-secrets.fullname" . }}-webhook
{{- end }} {{- end }}
controller-gen.kubebuilder.io/version: v0.14.0 controller-gen.kubebuilder.io/version: v0.15.0
name: vaultdynamicsecrets.generators.external-secrets.io name: vaultdynamicsecrets.generators.external-secrets.io
spec: spec:
group: generators.external-secrets.io group: generators.external-secrets.io

View File

@ -9,7 +9,7 @@ metadata:
{{- if and .Values.crds.conversion.enabled .Values.webhook.certManager.enabled .Values.webhook.certManager.addInjectorAnnotations }} {{- if and .Values.crds.conversion.enabled .Values.webhook.certManager.enabled .Values.webhook.certManager.addInjectorAnnotations }}
cert-manager.io/inject-ca-from: {{ .Release.Namespace }}/{{ include "external-secrets.fullname" . }}-webhook cert-manager.io/inject-ca-from: {{ .Release.Namespace }}/{{ include "external-secrets.fullname" . }}-webhook
{{- end }} {{- end }}
controller-gen.kubebuilder.io/version: v0.14.0 controller-gen.kubebuilder.io/version: v0.15.0
name: webhooks.generators.external-secrets.io name: webhooks.generators.external-secrets.io
spec: spec:
group: generators.external-secrets.io group: generators.external-secrets.io

View File

@ -35,15 +35,19 @@ spec:
serviceAccountName: {{ include "external-secrets.serviceAccountName" . }} serviceAccountName: {{ include "external-secrets.serviceAccountName" . }}
automountServiceAccountToken: {{ .Values.serviceAccount.automount }} automountServiceAccountToken: {{ .Values.serviceAccount.automount }}
{{- with .Values.podSecurityContext }} {{- with .Values.podSecurityContext }}
{{- if and (.enabled) (gt (keys . | len) 1) }}
securityContext: securityContext:
{{- toYaml . | nindent 8 }} {{- include "external-secrets.renderSecurityContext" (dict "securityContext" . "context" $) | nindent 8 }}
{{- end }}
{{- end }} {{- end }}
hostNetwork: {{ .Values.hostNetwork }} hostNetwork: {{ .Values.hostNetwork }}
containers: containers:
- name: {{ .Chart.Name }} - name: {{ .Chart.Name }}
{{- with .Values.securityContext }} {{- with .Values.securityContext }}
{{- if and (.enabled) (gt (keys . | len) 1) }}
securityContext: securityContext:
{{- toYaml . | nindent 12 }} {{- include "external-secrets.renderSecurityContext" (dict "securityContext" . "context" $) | nindent 12 }}
{{- end }}
{{- end }} {{- end }}
image: {{ include "external-secrets.image" (dict "chartAppVersion" .Chart.AppVersion "image" .Values.image) | trim }} image: {{ include "external-secrets.image" (dict "chartAppVersion" .Chart.AppVersion "image" .Values.image) | trim }}
imagePullPolicy: {{ .Values.image.pullPolicy }} imagePullPolicy: {{ .Values.image.pullPolicy }}

View File

@ -0,0 +1,4 @@
{{- range .Values.extraObjects }}
---
{{ include "external-secrets.render" (dict "value" . "context" $) }}
{{- end }}

View File

@ -36,14 +36,18 @@ spec:
serviceAccountName: {{ include "external-secrets-webhook.serviceAccountName" . }} serviceAccountName: {{ include "external-secrets-webhook.serviceAccountName" . }}
automountServiceAccountToken: {{ .Values.webhook.serviceAccount.automount }} automountServiceAccountToken: {{ .Values.webhook.serviceAccount.automount }}
{{- with .Values.webhook.podSecurityContext }} {{- with .Values.webhook.podSecurityContext }}
{{- if and (.enabled) (gt (keys . | len) 1) }}
securityContext: securityContext:
{{- toYaml . | nindent 8 }} {{- include "external-secrets.renderSecurityContext" (dict "securityContext" . "context" $) | nindent 8 }}
{{- end }}
{{- end }} {{- end }}
containers: containers:
- name: webhook - name: webhook
{{- with .Values.webhook.securityContext }} {{- with .Values.webhook.securityContext }}
{{- if and (.enabled) (gt (keys . | len) 1) }}
securityContext: securityContext:
{{- toYaml . | nindent 12 }} {{- include "external-secrets.renderSecurityContext" (dict "securityContext" . "context" $) | nindent 12 }}
{{- end }}
{{- end }} {{- end }}
image: {{ include "external-secrets.image" (dict "chartAppVersion" .Chart.AppVersion "image" .Values.webhook.image) | trim }} image: {{ include "external-secrets.image" (dict "chartAppVersion" .Chart.AppVersion "image" .Values.webhook.image) | trim }}
imagePullPolicy: {{ .Values.webhook.image.pullPolicy }} imagePullPolicy: {{ .Values.webhook.image.pullPolicy }}

View File

@ -7,8 +7,8 @@ should match snapshot of default values:
app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/instance: RELEASE-NAME
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: external-secrets-cert-controller app.kubernetes.io/name: external-secrets-cert-controller
app.kubernetes.io/version: v0.9.16 app.kubernetes.io/version: v0.9.17
helm.sh/chart: external-secrets-0.9.16 helm.sh/chart: external-secrets-0.9.17
name: RELEASE-NAME-external-secrets-cert-controller name: RELEASE-NAME-external-secrets-cert-controller
namespace: NAMESPACE namespace: NAMESPACE
spec: spec:
@ -24,8 +24,8 @@ should match snapshot of default values:
app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/instance: RELEASE-NAME
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: external-secrets-cert-controller app.kubernetes.io/name: external-secrets-cert-controller
app.kubernetes.io/version: v0.9.16 app.kubernetes.io/version: v0.9.17
helm.sh/chart: external-secrets-0.9.16 helm.sh/chart: external-secrets-0.9.17
spec: spec:
automountServiceAccountToken: true automountServiceAccountToken: true
containers: containers:
@ -38,7 +38,7 @@ should match snapshot of default values:
- --secret-namespace=NAMESPACE - --secret-namespace=NAMESPACE
- --metrics-addr=:8080 - --metrics-addr=:8080
- --healthz-addr=:8081 - --healthz-addr=:8081
image: ghcr.io/external-secrets/external-secrets:v0.9.16 image: ghcr.io/external-secrets/external-secrets:v0.9.17
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
name: cert-controller name: cert-controller
ports: ports:

View File

@ -7,8 +7,8 @@ should match snapshot of default values:
app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/instance: RELEASE-NAME
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: external-secrets app.kubernetes.io/name: external-secrets
app.kubernetes.io/version: v0.9.16 app.kubernetes.io/version: v0.9.17
helm.sh/chart: external-secrets-0.9.16 helm.sh/chart: external-secrets-0.9.17
name: RELEASE-NAME-external-secrets name: RELEASE-NAME-external-secrets
namespace: NAMESPACE namespace: NAMESPACE
spec: spec:
@ -24,15 +24,15 @@ should match snapshot of default values:
app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/instance: RELEASE-NAME
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: external-secrets app.kubernetes.io/name: external-secrets
app.kubernetes.io/version: v0.9.16 app.kubernetes.io/version: v0.9.17
helm.sh/chart: external-secrets-0.9.16 helm.sh/chart: external-secrets-0.9.17
spec: spec:
automountServiceAccountToken: true automountServiceAccountToken: true
containers: containers:
- args: - args:
- --concurrent=1 - --concurrent=1
- --metrics-addr=:8080 - --metrics-addr=:8080
image: ghcr.io/external-secrets/external-secrets:v0.9.16 image: ghcr.io/external-secrets/external-secrets:v0.9.17
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
name: external-secrets name: external-secrets
ports: ports:

View File

@ -4,7 +4,7 @@ should match snapshot of default values:
kind: CustomResourceDefinition kind: CustomResourceDefinition
metadata: metadata:
annotations: annotations:
controller-gen.kubebuilder.io/version: v0.14.0 controller-gen.kubebuilder.io/version: v0.15.0
name: secretstores.external-secrets.io name: secretstores.external-secrets.io
spec: spec:
conversion: conversion:
@ -1582,11 +1582,13 @@ should match snapshot of default values:
items: items:
type: string type: string
type: array type: array
x-kubernetes-list-type: atomic
required: required:
- key - key
- operator - operator
type: object type: object
type: array type: array
x-kubernetes-list-type: atomic
matchLabels: matchLabels:
additionalProperties: additionalProperties:
type: string type: string

View File

@ -7,8 +7,8 @@ should match snapshot of default values:
app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/instance: RELEASE-NAME
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: external-secrets-webhook app.kubernetes.io/name: external-secrets-webhook
app.kubernetes.io/version: v0.9.16 app.kubernetes.io/version: v0.9.17
helm.sh/chart: external-secrets-0.9.16 helm.sh/chart: external-secrets-0.9.17
name: RELEASE-NAME-external-secrets-webhook name: RELEASE-NAME-external-secrets-webhook
namespace: NAMESPACE namespace: NAMESPACE
spec: spec:
@ -24,8 +24,8 @@ should match snapshot of default values:
app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/instance: RELEASE-NAME
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: external-secrets-webhook app.kubernetes.io/name: external-secrets-webhook
app.kubernetes.io/version: v0.9.16 app.kubernetes.io/version: v0.9.17
helm.sh/chart: external-secrets-0.9.16 helm.sh/chart: external-secrets-0.9.17
spec: spec:
automountServiceAccountToken: true automountServiceAccountToken: true
containers: containers:
@ -37,7 +37,7 @@ should match snapshot of default values:
- --check-interval=5m - --check-interval=5m
- --metrics-addr=:8080 - --metrics-addr=:8080
- --healthz-addr=:8081 - --healthz-addr=:8081
image: ghcr.io/external-secrets/external-secrets:v0.9.16 image: ghcr.io/external-secrets/external-secrets:v0.9.17
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
name: webhook name: webhook
ports: ports:
@ -81,8 +81,8 @@ should match snapshot of default values:
app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/instance: RELEASE-NAME
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: external-secrets-webhook app.kubernetes.io/name: external-secrets-webhook
app.kubernetes.io/version: v0.9.16 app.kubernetes.io/version: v0.9.17
external-secrets.io/component: webhook external-secrets.io/component: webhook
helm.sh/chart: external-secrets-0.9.16 helm.sh/chart: external-secrets-0.9.17
name: RELEASE-NAME-external-secrets-webhook name: RELEASE-NAME-external-secrets-webhook
namespace: NAMESPACE namespace: NAMESPACE

View File

@ -0,0 +1,15 @@
suite: test adding extra kubernetes objects
templates:
- extra-manifests.yaml
tests:
- it: should load extra manifests
set:
extraObjects:
- apiVersion: v1
kind: ServiceAccount
metadata:
name: random
asserts:
- equal:
path: kind
value: ServiceAccount

View File

@ -3,6 +3,14 @@ global:
tolerations: [] tolerations: []
topologySpreadConstraints: [] topologySpreadConstraints: []
affinity: {} affinity: {}
compatibility:
openshift:
# -- Manages the securityContext properties to make them compatible with OpenShift.
# Possible values:
# auto - Apply configurations if it is detected that OpenShift is the target platform.
# force - Always apply configurations.
# disabled - No modification applied.
adaptSecurityContext: auto
replicaCount: 1 replicaCount: 1
@ -114,6 +122,9 @@ extraArgs: {}
## -- Extra volumes to pass to pod. ## -- Extra volumes to pass to pod.
extraVolumes: [] extraVolumes: []
## -- Extra Kubernetes objects to deploy with the helm chart
extraObjects: []
## -- Extra volumes to mount to the container. ## -- Extra volumes to mount to the container.
extraVolumeMounts: [] extraVolumeMounts: []
@ -128,7 +139,8 @@ podAnnotations: {}
podLabels: {} podLabels: {}
podSecurityContext: {} podSecurityContext:
enabled: true
# fsGroup: 2000 # fsGroup: 2000
securityContext: securityContext:
@ -136,6 +148,7 @@ securityContext:
capabilities: capabilities:
drop: drop:
- ALL - ALL
enabled: true
readOnlyRootFilesystem: true readOnlyRootFilesystem: true
runAsNonRoot: true runAsNonRoot: true
runAsUser: 1000 runAsUser: 1000
@ -361,7 +374,8 @@ webhook:
podLabels: {} podLabels: {}
podSecurityContext: {} podSecurityContext:
enabled: true
# fsGroup: 2000 # fsGroup: 2000
securityContext: securityContext:
@ -369,6 +383,7 @@ webhook:
capabilities: capabilities:
drop: drop:
- ALL - ALL
enabled: true
readOnlyRootFilesystem: true readOnlyRootFilesystem: true
runAsNonRoot: true runAsNonRoot: true
runAsUser: 1000 runAsUser: 1000
@ -474,7 +489,8 @@ certController:
podLabels: {} podLabels: {}
podSecurityContext: {} podSecurityContext:
enabled: true
# fsGroup: 2000 # fsGroup: 2000
securityContext: securityContext:
@ -482,6 +498,7 @@ certController:
capabilities: capabilities:
drop: drop:
- ALL - ALL
enabled: true
readOnlyRootFilesystem: true readOnlyRootFilesystem: true
runAsNonRoot: true runAsNonRoot: true
runAsUser: 1000 runAsUser: 1000

View File

@ -1,7 +1,7 @@
# JFrog Artifactory-ha Chart Changelog # JFrog Artifactory-ha Chart Changelog
All changes to this chart will be documented in this file All changes to this chart will be documented in this file
## [107.77.10] - April 22, 2024 ## [107.77.11] - April 22, 2024
* Removed integration service * Removed integration service
* Added recommended postgresql sizing configurations under sizing directory * Added recommended postgresql sizing configurations under sizing directory
* Updated artifactory-federation (probes, port, embedded mode) * Updated artifactory-federation (probes, port, embedded mode)

View File

@ -4,7 +4,7 @@ annotations:
catalog.cattle.io/kube-version: '>= 1.19.0-0' catalog.cattle.io/kube-version: '>= 1.19.0-0'
catalog.cattle.io/release-name: artifactory-ha catalog.cattle.io/release-name: artifactory-ha
apiVersion: v2 apiVersion: v2
appVersion: 7.77.10 appVersion: 7.77.11
dependencies: dependencies:
- condition: postgresql.enabled - condition: postgresql.enabled
name: postgresql name: postgresql
@ -26,4 +26,4 @@ name: artifactory-ha
sources: sources:
- https://github.com/jfrog/charts - https://github.com/jfrog/charts
type: application type: application
version: 107.77.10 version: 107.77.11

View File

@ -1,7 +1,7 @@
# JFrog Container Registry Chart Changelog # JFrog Container Registry Chart Changelog
All changes to this chart will be documented in this file. All changes to this chart will be documented in this file.
## [107.77.10] - Nov 23, 2023 ## [107.77.11] - Nov 23, 2023
* **IMPORTANT** * **IMPORTANT**
* Added min kubeVersion ">= 1.19.0-0" in chart.yaml * Added min kubeVersion ">= 1.19.0-0" in chart.yaml

View File

@ -4,11 +4,11 @@ annotations:
catalog.cattle.io/kube-version: '>= 1.19.0-0' catalog.cattle.io/kube-version: '>= 1.19.0-0'
catalog.cattle.io/release-name: artifactory-jcr catalog.cattle.io/release-name: artifactory-jcr
apiVersion: v2 apiVersion: v2
appVersion: 7.77.10 appVersion: 7.77.11
dependencies: dependencies:
- name: artifactory - name: artifactory
repository: file://./charts/artifactory repository: file://./charts/artifactory
version: 107.77.10 version: 107.77.11
description: JFrog Container Registry description: JFrog Container Registry
home: https://jfrog.com/container-registry/ home: https://jfrog.com/container-registry/
icon: https://raw.githubusercontent.com/jfrog/charts/ea5c3112c24a973f64f3ccd99747323db292a369/stable/artifactory-jcr/logo/jcr-logo.png icon: https://raw.githubusercontent.com/jfrog/charts/ea5c3112c24a973f64f3ccd99747323db292a369/stable/artifactory-jcr/logo/jcr-logo.png
@ -27,4 +27,4 @@ name: artifactory-jcr
sources: sources:
- https://github.com/jfrog/charts - https://github.com/jfrog/charts
type: application type: application
version: 107.77.10 version: 107.77.11

View File

@ -1,7 +1,7 @@
# JFrog Artifactory Chart Changelog # JFrog Artifactory Chart Changelog
All changes to this chart will be documented in this file. All changes to this chart will be documented in this file.
## [107.77.10] - April 22, 2024 ## [107.77.11] - April 22, 2024
* Removed integration service * Removed integration service
* Added recommended postgresql sizing configurations under sizing directory * Added recommended postgresql sizing configurations under sizing directory
* Updated artifactory-federation (probes, port, embedded mode) * Updated artifactory-federation (probes, port, embedded mode)

View File

@ -1,5 +1,5 @@
apiVersion: v2 apiVersion: v2
appVersion: 7.77.10 appVersion: 7.77.11
dependencies: dependencies:
- condition: postgresql.enabled - condition: postgresql.enabled
name: postgresql name: postgresql
@ -21,4 +21,4 @@ name: artifactory
sources: sources:
- https://github.com/jfrog/charts - https://github.com/jfrog/charts
type: application type: application
version: 107.77.10 version: 107.77.11

View File

@ -1,7 +1,7 @@
annotations: annotations:
artifacthub.io/images: | artifacthub.io/images: |
- name: redpanda - name: redpanda
image: docker.redpanda.com/redpandadata/redpanda:v23.3.11 image: docker.redpanda.com/redpandadata/redpanda:v24.1.1
- name: busybox - name: busybox
image: busybox:latest image: busybox:latest
- name: mintel/docker-alpine-bash-curl-jq - name: mintel/docker-alpine-bash-curl-jq
@ -17,7 +17,7 @@ annotations:
catalog.cattle.io/kube-version: '>=1.21-0' catalog.cattle.io/kube-version: '>=1.21-0'
catalog.cattle.io/release-name: redpanda catalog.cattle.io/release-name: redpanda
apiVersion: v2 apiVersion: v2
appVersion: v23.3.11 appVersion: v24.1.1
dependencies: dependencies:
- condition: console.enabled - condition: console.enabled
name: console name: console
@ -37,4 +37,4 @@ name: redpanda
sources: sources:
- https://github.com/redpanda-data/helm-charts - https://github.com/redpanda-data/helm-charts
type: application type: application
version: 5.8.2 version: 5.8.3

View File

@ -3,7 +3,7 @@
description: Find the default values and descriptions of settings in the Redpanda Helm chart. description: Find the default values and descriptions of settings in the Redpanda Helm chart.
--- ---
![Version: 5.8.2](https://img.shields.io/badge/Version-5.8.2-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v23.3.11](https://img.shields.io/badge/AppVersion-v23.3.11-informational?style=flat-square) ![Version: 5.8.3](https://img.shields.io/badge/Version-5.8.3-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v24.1.1](https://img.shields.io/badge/AppVersion-v24.1.1-informational?style=flat-square)
This page describes the official Redpanda Helm Chart. In particular, this page describes the contents of the charts [`values.yaml` file](https://github.com/redpanda-data/helm-charts/blob/main/charts/redpanda/values.yaml). Each of the settings is listed and described on this page, along with any default values. This page describes the official Redpanda Helm Chart. In particular, this page describes the contents of the charts [`values.yaml` file](https://github.com/redpanda-data/helm-charts/blob/main/charts/redpanda/values.yaml). Each of the settings is listed and described on this page, along with any default values.

View File

@ -174,8 +174,15 @@ stringData:
set -e set -e
# rpk cluster health can exit non-zero if it's unable to dial brokers. This
# can happen for many reasons but we never want this script to crash as it
# would take down yet another broker and make a bad situation worse.
# Instead, just wait for the command to eventually exit zero.
echo "Waiting for cluster to be ready" echo "Waiting for cluster to be ready"
rpk cluster health --watch --exit-when-healthy until rpk cluster health --watch --exit-when-healthy; do
echo "rpk cluster health failed. Waiting 5 seconds before trying again..."
sleep 5
done
{{- if and $sasl.enabled (not (empty $sasl.secretRef )) }} {{- if and $sasl.enabled (not (empty $sasl.secretRef )) }}
while true; do while true; do

View File

@ -4,7 +4,7 @@ annotations:
catalog.cattle.io/kube-version: '>= 1.17.0-0' catalog.cattle.io/kube-version: '>= 1.17.0-0'
catalog.cattle.io/release-name: speedscale-operator catalog.cattle.io/release-name: speedscale-operator
apiVersion: v1 apiVersion: v1
appVersion: 2.1.296 appVersion: 2.1.301
description: Stress test your APIs with real world scenarios. Collect and replay description: Stress test your APIs with real world scenarios. Collect and replay
traffic without scripting. traffic without scripting.
home: https://speedscale.com home: https://speedscale.com
@ -24,4 +24,4 @@ maintainers:
- email: support@speedscale.com - email: support@speedscale.com
name: Speedscale Support name: Speedscale Support
name: speedscale-operator name: speedscale-operator
version: 2.1.296 version: 2.1.301

View File

@ -20,7 +20,7 @@ clusterName: "my-cluster"
# Speedscale components image settings. # Speedscale components image settings.
image: image:
registry: gcr.io/speedscale registry: gcr.io/speedscale
tag: v2.1.296 tag: v2.1.301
pullPolicy: Always pullPolicy: Always
# Log level for Speedscale components. # Log level for Speedscale components.

View File

@ -4274,6 +4274,39 @@ entries:
- assets/argo/argo-cd-5.8.0.tgz - assets/argo/argo-cd-5.8.0.tgz
version: 5.8.0 version: 5.8.0
artifactory-ha: artifactory-ha:
- annotations:
catalog.cattle.io/certified: partner
catalog.cattle.io/display-name: JFrog Artifactory HA
catalog.cattle.io/kube-version: '>= 1.19.0-0'
catalog.cattle.io/release-name: artifactory-ha
apiVersion: v2
appVersion: 7.77.11
created: "2024-05-02T00:52:10.96066079Z"
dependencies:
- condition: postgresql.enabled
name: postgresql
repository: file://./charts/postgresql
version: 10.3.18
description: Universal Repository Manager supporting all major packaging formats,
build tools and CI servers.
digest: 67ad9a81300436a465fd0a1f4de0bb319c77b19f9513876691e1421da4bb7584
home: https://www.jfrog.com/artifactory/
icon: https://raw.githubusercontent.com/jfrog/charts/ea5c3112c24a973f64f3ccd99747323db292a369/stable/artifactory-ha/logo/artifactory-logo.png
keywords:
- artifactory
- jfrog
- devops
kubeVersion: '>= 1.19.0-0'
maintainers:
- email: installers@jfrog.com
name: Chart Maintainers at JFrog
name: artifactory-ha
sources:
- https://github.com/jfrog/charts
type: application
urls:
- assets/jfrog/artifactory-ha-107.77.11.tgz
version: 107.77.11
- annotations: - annotations:
catalog.cattle.io/certified: partner catalog.cattle.io/certified: partner
catalog.cattle.io/display-name: JFrog Artifactory HA catalog.cattle.io/display-name: JFrog Artifactory HA
@ -5918,6 +5951,40 @@ entries:
- assets/jfrog/artifactory-ha-3.0.1400.tgz - assets/jfrog/artifactory-ha-3.0.1400.tgz
version: 3.0.1400 version: 3.0.1400
artifactory-jcr: artifactory-jcr:
- annotations:
catalog.cattle.io/certified: partner
catalog.cattle.io/display-name: JFrog Container Registry
catalog.cattle.io/kube-version: '>= 1.19.0-0'
catalog.cattle.io/release-name: artifactory-jcr
apiVersion: v2
appVersion: 7.77.11
created: "2024-05-02T00:52:11.339981268Z"
dependencies:
- name: artifactory
repository: file://./charts/artifactory
version: 107.77.11
description: JFrog Container Registry
digest: 720367b8720b82d341c645b7f980a3f353302f7b356c370241131f56fa5282e1
home: https://jfrog.com/container-registry/
icon: https://raw.githubusercontent.com/jfrog/charts/ea5c3112c24a973f64f3ccd99747323db292a369/stable/artifactory-jcr/logo/jcr-logo.png
keywords:
- artifactory
- jfrog
- container
- registry
- devops
- jfrog-container-registry
kubeVersion: '>= 1.19.0-0'
maintainers:
- email: helm@jfrog.com
name: Chart Maintainers at JFrog
name: artifactory-jcr
sources:
- https://github.com/jfrog/charts
type: application
urls:
- assets/jfrog/artifactory-jcr-107.77.11.tgz
version: 107.77.11
- annotations: - annotations:
catalog.cattle.io/certified: partner catalog.cattle.io/certified: partner
catalog.cattle.io/display-name: JFrog Container Registry catalog.cattle.io/display-name: JFrog Container Registry
@ -10997,6 +11064,35 @@ entries:
- assets/codefresh/cf-runtime-0.1.401.tgz - assets/codefresh/cf-runtime-0.1.401.tgz
version: 0.1.401 version: 0.1.401
chronicle: chronicle:
- annotations:
catalog.cattle.io/certified: partner
catalog.cattle.io/display-name: Chronicle
catalog.cattle.io/release-name: chronicle
apiVersion: v2
appVersion: 0.7.6
created: "2024-05-02T00:52:09.318693502Z"
dependencies:
- name: standard-defs
repository: file://./charts/standard-defs
version: ~0.1.0
- name: sawtooth
repository: file://./charts/sawtooth
version: ~0.2.0
description: 'Chronicle is an open-source, blockchain-backed, domain-agnostic
provenance product. Chronicle makes it easy for users to record and query immutable
provenance information on a distributed ledger - about any asset, in any domain,
and across multiple parties. '
digest: ce9635e88b9e96cb91a36c33c292876860348ac780eedf7fac7c56e5f3106b8d
home: https://docs.btp.works/chronicle
icon: https://chronicle-resources.s3.amazonaws.com/icons/chronicle-transparent-bg-dark.png
keywords:
- provenance
- blockchain
name: chronicle
type: application
urls:
- assets/btp/chronicle-0.1.25.tgz
version: 0.1.25
- annotations: - annotations:
catalog.cattle.io/certified: partner catalog.cattle.io/certified: partner
catalog.cattle.io/display-name: Chronicle catalog.cattle.io/display-name: Chronicle
@ -18031,6 +18127,30 @@ entries:
- assets/dynatrace/dynatrace-operator-0.7.2.tgz - assets/dynatrace/dynatrace-operator-0.7.2.tgz
version: 0.7.2 version: 0.7.2
external-secrets: external-secrets:
- annotations:
catalog.cattle.io/certified: partner
catalog.cattle.io/display-name: External Secrets Operator
catalog.cattle.io/kube-version: '>= 1.19.0-0'
catalog.cattle.io/release-name: external-secrets
apiVersion: v2
appVersion: v0.9.17
created: "2024-05-02T00:52:09.820419345Z"
description: External secret management for Kubernetes
digest: d34abc8443a9db6ebb7023fed829c49c47402c05df9975b620f214856aba5b07
home: https://github.com/external-secrets/external-secrets
icon: https://raw.githubusercontent.com/external-secrets/external-secrets/main/assets/eso-logo-large.png
keywords:
- kubernetes-external-secrets
- secrets
kubeVersion: '>= 1.19.0-0'
maintainers:
- email: kellinmcavoy@gmail.com
name: mcavoyk
name: external-secrets
type: application
urls:
- assets/external-secrets/external-secrets-0.9.17.tgz
version: 0.9.17
- annotations: - annotations:
catalog.cattle.io/certified: partner catalog.cattle.io/certified: partner
catalog.cattle.io/display-name: External Secrets Operator catalog.cattle.io/display-name: External Secrets Operator
@ -44857,6 +44977,50 @@ entries:
- assets/quobyte/quobyte-cluster-0.1.5.tgz - assets/quobyte/quobyte-cluster-0.1.5.tgz
version: 0.1.5 version: 0.1.5
redpanda: redpanda:
- annotations:
artifacthub.io/images: |
- name: redpanda
image: docker.redpanda.com/redpandadata/redpanda:v24.1.1
- name: busybox
image: busybox:latest
- name: mintel/docker-alpine-bash-curl-jq
image: mintel/docker-alpine-bash-curl-jq:latest
artifacthub.io/license: Apache-2.0
artifacthub.io/links: |
- name: Documentation
url: https://docs.redpanda.com
- name: "Helm (>= 3.10.0)"
url: https://helm.sh/docs/intro/install/
catalog.cattle.io/certified: partner
catalog.cattle.io/display-name: Redpanda
catalog.cattle.io/kube-version: '>=1.21-0'
catalog.cattle.io/release-name: redpanda
apiVersion: v2
appVersion: v24.1.1
created: "2024-05-02T00:52:14.193477918Z"
dependencies:
- condition: console.enabled
name: console
repository: file://./charts/console
version: '>=0.5 <1.0'
- condition: connectors.enabled
name: connectors
repository: file://./charts/connectors
version: '>=0.1.2 <1.0'
description: Redpanda is the real-time engine for modern apps.
digest: f4eeddbb7743528cbb3aeebd209b79e2d35d916e6fb4807b720714370bd98791
icon: https://images.ctfassets.net/paqvtpyf8rwu/3cYHw5UzhXCbKuR24GDFGO/73fb682e6157d11c10d5b2b5da1d5af0/skate-stand-panda.svg
kubeVersion: '>=1.21-0'
maintainers:
- name: redpanda-data
url: https://github.com/orgs/redpanda-data/people
name: redpanda
sources:
- https://github.com/redpanda-data/helm-charts
type: application
urls:
- assets/redpanda/redpanda-5.8.3.tgz
version: 5.8.3
- annotations: - annotations:
artifacthub.io/images: | artifacthub.io/images: |
- name: redpanda - name: redpanda
@ -49638,6 +49802,37 @@ entries:
- assets/shipa/shipa-1.4.0.tgz - assets/shipa/shipa-1.4.0.tgz
version: 1.4.0 version: 1.4.0
speedscale-operator: speedscale-operator:
- annotations:
catalog.cattle.io/certified: partner
catalog.cattle.io/display-name: Speedscale Operator
catalog.cattle.io/kube-version: '>= 1.17.0-0'
catalog.cattle.io/release-name: speedscale-operator
apiVersion: v1
appVersion: 2.1.301
created: "2024-05-02T00:52:14.283828726Z"
description: Stress test your APIs with real world scenarios. Collect and replay
traffic without scripting.
digest: 71da5fc8f4d63a8ae94eb7d3e20a53904b0aac7921b57b0c41e14fdfedd4cd74
home: https://speedscale.com
icon: https://raw.githubusercontent.com/speedscale/assets/main/logo/gold_logo_only.png
keywords:
- speedscale
- test
- testing
- regression
- reliability
- load
- replay
- network
- traffic
kubeVersion: '>= 1.17.0-0'
maintainers:
- email: support@speedscale.com
name: Speedscale Support
name: speedscale-operator
urls:
- assets/speedscale/speedscale-operator-2.1.301.tgz
version: 2.1.301
- annotations: - annotations:
catalog.cattle.io/certified: partner catalog.cattle.io/certified: partner
catalog.cattle.io/display-name: Speedscale Operator catalog.cattle.io/display-name: Speedscale Operator