Open
Description
Hi team,
it turned out, that APISpec values is required for testing api-firewall. I changed my values.yaml by providing api spec as a separate file (mounted to the pod), but it looks like now I'm getting an error with render:
$ helm upgrade --install apifw . -n apifw
Error: UPGRADE FAILED: YAML parse error on api-firewall/templates/deployment.yaml: error converting YAML to JSON: yaml: line 58: did not find expected key
my values.yaml
is very close to the default one:
manifest:
enabled: false
## API Firewall chart
## https://docs.wallarm.com/api-firewall/overview/
##
apiFirewall:
## Chart name to use instead of the automatically generated name
nameOverride: ""
## Docker image of API Firewall
## https://kubernetes.io/docs/concepts/containers/images/
##
image:
pullPolicy: IfNotPresent
registry: ""
name: "wallarm/api-firewall"
### You can set a specific version or set it automaticaly from appVersion
###
tag: ""
## Array of private container registry credentials
## (If you forked the official API Firewall image and pushed it to a private registry)
## https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
##
imagePullSecrets: []
# - name: secretName
## Main settings of API Firewall
config:
mode: proxy
listenAddress: 0.0.0.0
listenPort: 8080
maxConnsPerHost: 512
timeouts:
dial: "200ms"
readFromBackend: "5s"
writeToBackend: "5s"
validationMode:
request: block
response: block
shadowAPI:
excludeList: "404"
unknownParametersDetection: true
passOptions: false
## Number of deployment replicas for the API Firewall container
## https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.21/#deploymentspec-v1-apps
##
replicaCount: 3
## Settings for automated rolling updates of the API Firewall container
## https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.21/#deploymentstrategy-v1-apps
##
updateStrategy: {}
# type: RollingUpdate
# rollingUpdate:
# maxUnavailable: 1
# maxSurge: 25%
## Minimum number of seconds for which a newly created pod should be ready without the API Firewall container crashing
## https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.21/#deploymentspec-v1-apps
##
minReadySeconds: 0
## The number of old ReplicaSets to retain to allow rollback
## https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.21/#deploymentspec-v1-apps
##
revisionHistoryLimit: 10
## Labels to add to the Pod with the API Firewall container
##
podLabels: {}
# key: value
## Annotations to add to the Pod with the API Firewall container
##
podAnnotations: {}
# key: value
## Additional command line arguments to pass to API Firewall
## These arguments override environment variables values passed to the Docker container
##
extraArgs:
log-level: DEBUG
extraEnvs:
- name: APIFW_API_SPECS
value: /etc/api-firewall/manifests/openapi-manifest.yaml
- name: APIFW_SERVER_INSECURE_CONNECTION
value: "true"
- name: APIFW_LOG_FORMAT
value: JSON
- name: APIFW_RESPONSE_VALIDATION
value: DISABLE
- name: APIFW_PASS_OPTIONS
value: "true"
extraVolumeMounts:
- name: openapi-manifest
mountPath: /etc/api-firewall/manifests
extraVolumes:
- name: openapi-manifest
configMap:
name: api-firewall-manifest
# tls-certs-path: certs
# tls-cert-file: localhost.crt
# tls-cert-key: localhost.key
# server-read-timeout: 5s
# server-write-timeout: 5s
# log-level: DEBUG
# api-specs: swagger.json
## Additional environment variables to pass to the API Firewall container
## (If you forked and customize the official API Firewall image)
##
# - name: FOO
# value: FOO
# - name: BAR
# valueFrom:
# secretKeyRef:
# key: BAR
# name: bar-secret
## Setting to allow this Pod to schedule onto nodes with matching taints
## https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/
##
tolerations: []
# - key: "key"
# operator: "Equal|Exists"
# value: "value"
# effect: "NoSchedule|PreferNoSchedule"
## Affinity and anti-affinity settings of this Pod
## https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
##
## Prefered podAntiAffinity will be applied if no one affinity configured
##
affinity: {}
# podAntiAffinity:
# preferredDuringSchedulingIgnoredDuringExecution:
# - weight: 100
# podAffinityTerm:
# labelSelector:
# matchExpressions:
# - key: component
# operator: In
# values:
# - api-firewall
# - key: app
# operator: In
# values:
# - api-firewall
# topologyKey: kubernetes.io/hostname
# podAntiAffinity:
# requiredDuringSchedulingIgnoredDuringExecution:
# - labelSelector:
# matchExpressions:
# - key: component
# operator: In
# values:
# - api-firewall
# - key: app
# operator: In
# values:
# - api-firewall
# topologyKey: "kubernetes.io/hostname"
## Lables of the node this Pod should be assigned to
## https://kubernetes.io/docs/user-guide/node-selection/
##
nodeSelector: {}
## Settings for the API Firewall container lifecycle hooks
## https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/
##
lifecycle: {}
## Liveness and readiness probe values for the API Firewall container
## https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes
##
livenessProbe:
httpGet:
path: /v1/liveness
port: 9667
scheme: HTTP
failureThreshold: 3
initialDelaySeconds: 10
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
readinessProbe:
httpGet:
path: /v1/readiness
port: 9667
scheme: HTTP
failureThreshold: 3
initialDelaySeconds: 10
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
## Grace period for this Pod termination in seconds
##
terminationGracePeriodSeconds: 60
## One of the PriorityClass names applied to this Pod
## This setting indicates the importance of the Pod relative to other Pods
## https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/
##
priorityClassName: ""
## One of the RuntimeClass names applied to this Pod
## This setting selects the API Firewall container runtime configuration
## https://kubernetes.io/docs/concepts/containers/runtime-class/
##
runtimeClassName: ""
## privilege and access control settings for the API Firewall container
## https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
## https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.21/#securitycontext-v1-core
##
securityContext: {}
## The number of resources required for the API Firewall container
## https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
##
resources: {}
# limits:
# cpu: 1000m
# memory: 400Mi
# requests:
# cpu: 700m
# memory: 250Mi
## Additional containers to be added to this Pod
##
extraContainers: []
# - name: some-container
# image: some/image:latest
# env:
# - name: FOO
# value: "123"
# volumeMounts:
# - name: bar-volume
# mountPath: /mnt
## Containers that should be started before the API Firewall container start
##
extraInitContainers: []
# - name: init
# image: busybox
# command: ['sh', '-c', 'until nslookup myservice; do echo waiting for myservice; sleep 2; done;']
## Volumes that should be mounted to the API Firewall container
##
# - name: something
# mountPath: /mnt/something
## Volumes that should be mounted to this pod
##
# - name: something
# emptyDir: {}
## Target backend configuration
##
target:
## Type of a target backend Service
## API Firewall will protect this Service and proxy requests to this Service
## "service" - use an existing Service or static IP of a load balacer
## "endpoints" - create a Service with specified endpoints
##
type: "service"
## A name of an existing Service or a Service that should be created
##
name: "backend"
## Destination port of a backend Service
## If a Service type is "service", this setting will not be applied
##
port: 80
## Endpoints to be attached to the created Service
## If a Service type is "service", this setting will not be applied
##
## https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.21/#endpointaddress-v1-core
##
endpoints: []
# - hostname: some.hostname.example-1.tld
# - hostname: some.hostname.example-2.tld
# - ip: 1.1.1.1
# - ip: 2.2.2.2
## Annotations for the created backend Service
## If a Service type is "service", this setting will not be applied
##
annotations: {}
## Cluster IP for the created Service
## If a Service type is "service", this setting will not be applied
##
clusterIP: ""
service:
## Service type
## https://kubernetes.io/docs/concepts/services-networking/service/
## https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.21/#service-v1-core
##
type: ClusterIP
## Service port
##
port: 80
## Service node port (if the service type if "NodePort")
##
nodePort: 0
## Load balancer IP address
## https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer
##
loadBalancerIP: ""
## Load balancer source ranges
## https://kubernetes.io/docs/concepts/services-networking/service/#aws-nlb-support
##
loadBalancerSourceRanges: []
# - "192.168.0.0/16"
# - "10.0.0.0/8"
# - "172.16.0.0/12"
## Kubernetes external traffic policy
## https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/
##
externalTrafficPolicy: ""
## Annotations for this Service
##
annotations: {}
## IP address of this Service cluster
##
clusterIP: ""
ingress:
enabled: false
## Ingress class name used to expose this Service
## https://kubernetes.io/docs/concepts/services-networking/ingress/#ingress-class
##
ingressClass: ""
## Ingress hosts
##
hosts: []
# - my.example-1.tld
# - my.example-2.tld
## Ingress route
##
path: /
## TLS configuration
##
tls: []
# - hosts:
# - my.example-1.tld
# - my.example-2.tld
# secretName: my-example-1-tld-tls-secret
## Annotations for the Ingress resource
##
annotations: {}
## Pod Security Policy settings
## https://kubernetes.io/docs/concepts/policy/pod-security-policy/
##
podSecurityPolicy:
enabled: false
allowedCapabilities: []
privileged: false
allowPrivilegeEscalation: false
volumes:
- 'configMap'
- 'emptyDir'
- 'downwardAPI'
- 'secret'
hostNetwork: false
hostIPC: false
hostPID: false
runAsUser:
rule: 'MustRunAsNonRoot'
supplementalGroups:
rule: 'MustRunAs'
ranges:
- min: 1000
max: 65535
fsGroup:
rule: 'MustRunAs'
ranges:
- min: 1000
max: 65535
seLinux:
rule: RunAsAny
## Just for additional entries in ".spec" if PodSecurityPolicy
##
additionalRestrictions: {}
# requiredDropCapabilities:
# - ALL
# readOnlyRootFilesystem: false
## Pod Disturion Budget settings
## https://kubernetes.io/docs/tasks/run-application/configure-pdb/
##
podDisruptionBudget:
enabled: false
maxUnavailable: 1
## Pod autoscaling policy
## https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/
##
autoscaling:
enabled: false
minReplicas: 3
maxReplicas: 11
targetCPUUtilizationPercentage: 70
targetMemoryUtilizationPercentage: 70
## Service Account for this Pod
## https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
##
serviceAccount:
## Name of the existing Service Account
## If not specified, new Service Account will be created
##
name: ""
## Annotations for the created Service Account
##
annotations: {}
Metadata
Metadata
Assignees
Labels
No labels