From f1d84a9b36d0a2722ab45b8a13051380c3939ebc Mon Sep 17 00:00:00 2001 From: Keshav Prasad <keshavprasadms@gmail.com> Date: Fri, 7 Jan 2022 09:17:40 +0530 Subject: [PATCH] fix: opa and envoy changes to support logging and hpa (#3126) * fix: updated envoy logging and connections * fix: changes to support hpa and test cases * fix: updated envoy timeouts * fix: updated envoy configs to workaround grpc limits * fix: add option to enable decision logs in opa * fix: remove pack_as_bytes to allow only UTF-8 contents * fix: change back to google_grpc --- ansible/roles/stack-sunbird/defaults/main.yml | 23 ------------- .../core/analytics/templates/deployment.yaml | 3 ++ .../analytics/templates/envoy-config.yaml | 34 ++++++++----------- .../helm_charts/core/analytics/values.j2 | 25 +++++++++++++- .../certregistry/templates/envoy-config.yaml | 31 +++++++---------- .../helm_charts/core/certregistry/values.j2 | 24 ++++++++++++- .../core/content/templates/deployment.yaml | 3 ++ .../core/content/templates/envoy-config.yaml | 31 +++++++---------- kubernetes/helm_charts/core/content/values.j2 | 25 +++++++++++++- .../knowledgemw/templates/deployment.yaml | 3 ++ .../knowledgemw/templates/envoy-config.yaml | 31 +++++++---------- .../helm_charts/core/knowledgemw/values.j2 | 25 +++++++++++++- .../core/learner/templates/deployment.yaml | 3 ++ .../core/learner/templates/envoy-config.yaml | 31 +++++++---------- kubernetes/helm_charts/core/learner/values.j2 | 25 +++++++++++++- .../core/lms/templates/deployment.yaml | 3 ++ .../core/lms/templates/envoy-config.yaml | 31 +++++++---------- kubernetes/helm_charts/core/lms/values.j2 | 25 +++++++++++++- kubernetes/opa/common/common.rego | 2 +- 19 files changed, 238 insertions(+), 140 deletions(-) diff --git a/ansible/roles/stack-sunbird/defaults/main.yml b/ansible/roles/stack-sunbird/defaults/main.yml index 9906574d2..20e18b979 100644 --- a/ansible/roles/stack-sunbird/defaults/main.yml +++ b/ansible/roles/stack-sunbird/defaults/main.yml @@ -1034,29 +1034,6 @@ common_opa_policy_files: - main.rego - common.rego -opa_envoy_resources: - envoy_resources: - requests: - cpu: "{{ envoy_cpu_req | default('100m') }}" - memory: "{{ envoy_mem_req | default('100Mi') }}" - limits: - cpu: "{{ envoy_cpu_limit | default('1') }}" - memory: "{{ envoy_mem_limit | default('1024Mi') }}" - opa_resources: - requests: - cpu: "{{ opa_cpu_req | default('100m') }}" - memory: "{{ opa_mem_req | default('100Mi') }}" - limits: - cpu: "{{ opa_cpu_limit | default('1') }}" - memory: "{{ opa_mem_limit | default('1024Mi') }}" - initcontainer_resources: - requests: - cpu: "{{ initcontainer_cpu_req | default('100m') }}" - memory: "{{ initcontainer_mem_req | default('100Mi') }}" - limits: - cpu: "{{ initcontainer_cpu_limit | default('200m') }}" - memory: "{{ initcontainer_mem_limit | default('200Mi') }}" - analytics_opa_enabled: true certregistry_opa_enabled: true content_opa_enabled: true diff --git a/kubernetes/helm_charts/core/analytics/templates/deployment.yaml b/kubernetes/helm_charts/core/analytics/templates/deployment.yaml index 39b7ab1b6..a23c754a5 100644 --- a/kubernetes/helm_charts/core/analytics/templates/deployment.yaml +++ b/kubernetes/helm_charts/core/analytics/templates/deployment.yaml @@ -93,6 +93,9 @@ spec: - --diagnostic-addr=0.0.0.0:8282 - --set=plugins.envoy_ext_authz_grpc.addr=:9191 - --set=plugins.envoy_ext_authz_grpc.path=main/allow + {{- if .Values.opa_decision_logs }} + - --set=decision_logs.console=true + {{- end }} - --log-level=error - --ignore=.* image: openpolicyagent/opa:0.34.2-envoy-2 diff --git a/kubernetes/helm_charts/core/analytics/templates/envoy-config.yaml b/kubernetes/helm_charts/core/analytics/templates/envoy-config.yaml index 443ef91e6..562c0770d 100644 --- a/kubernetes/helm_charts/core/analytics/templates/envoy-config.yaml +++ b/kubernetes/helm_charts/core/analytics/templates/envoy-config.yaml @@ -5,10 +5,12 @@ data: envoy-config.yaml: | static_resources: listeners: - - address: + - name: listener_0 + address: socket_address: address: 0.0.0.0 port_value: 9999 + per_connection_buffer_limit_bytes: 62914560 filter_chains: - filters: - name: envoy.http_connection_manager @@ -16,6 +18,10 @@ data: "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager codec_type: auto stat_prefix: ingress_http + access_log: + - name: envoy.access_loggers.stdout + typed_config: + "@type": type.googleapis.com/envoy.extensions.access_loggers.stream.v3.StdoutAccessLog route_config: name: local_route virtual_hosts: @@ -43,19 +49,18 @@ data: with_request_body: max_request_bytes: 62914560 allow_partial_message: true - pack_as_bytes: true - failure_mode_allow: false + failure_mode_allow: true grpc_service: google_grpc: target_uri: 127.0.0.1:9191 stat_prefix: ext_authz - timeout: 0.5s + timeout: 5s - name: envoy.filters.http.router clusters: - name: service - connect_timeout: 0.25s - type: strict_dns - lb_policy: round_robin + connect_timeout: 30s + per_connection_buffer_limit_bytes: 62914560 + type: static load_assignment: cluster_name: service endpoints: @@ -66,24 +71,13 @@ data: address: 127.0.0.1 port_value: {{ .Values.network.targetport }} admin: - access_log_path: "/dev/null" + access_log_path: "/dev/stdout" address: socket_address: address: 0.0.0.0 port_value: 10000 - layered_runtime: - layers: - - name: static_layer_0 - static_layer: - envoy: - resource_limits: - listener: - example_listener_name: - connection_limit: 10000 - overload: - global_downstream_max_connections: 50000 kind: ConfigMap metadata: name: {{ .Chart.Name }}-envoy-config namespace: {{ .Values.namespace }} -{{ end }} \ No newline at end of file +{{ end }} diff --git a/kubernetes/helm_charts/core/analytics/values.j2 b/kubernetes/helm_charts/core/analytics/values.j2 index 796187a19..c7966e6ca 100644 --- a/kubernetes/helm_charts/core/analytics/values.j2 +++ b/kubernetes/helm_charts/core/analytics/values.j2 @@ -36,8 +36,31 @@ strategy: {{ envoy_liveness_readiness | to_nice_yaml }} analytics_opa_enabled: {{ analytics_opa_enabled | default('true') }} +opa_decision_logs: {{ analytics_opa_decision_logs | default('false') }} -{{ opa_envoy_resources | to_nice_yaml }} +envoy_resources: + requests: + cpu: "{{ analytics_envoy_cpu_req | default('100m') }}" + memory: "{{ analytics_envoy_mem_req | default('100Mi') }}" + limits: + cpu: "{{ analytics_envoy_cpu_limit | default('1') }}" + memory: "{{ analytics_envoy_mem_limit | default('1024Mi') }}" + +opa_resources: + requests: + cpu: "{{ analytics_opa_cpu_req | default('100m') }}" + memory: "{{ analytics_opa_mem_req | default('100Mi') }}" + limits: + cpu: "{{ analytics_opa_cpu_limit | default('1') }}" + memory: "{{ analytics_opa_mem_limit | default('1024Mi') }}" + +initcontainer_resources: + requests: + cpu: "{{ analytics_initcontainer_cpu_req | default('100m') }}" + memory: "{{ analytics_initcontainer_mem_req | default('100Mi') }}" + limits: + cpu: "{{ analytics_initcontainer_cpu_limit | default('100m') }}" + memory: "{{ analytics_initcontainer_mem_limit | default('100Mi') }}" serviceMonitor: enabled: true diff --git a/kubernetes/helm_charts/core/certregistry/templates/envoy-config.yaml b/kubernetes/helm_charts/core/certregistry/templates/envoy-config.yaml index 5f7f9e507..5c75bb2a8 100644 --- a/kubernetes/helm_charts/core/certregistry/templates/envoy-config.yaml +++ b/kubernetes/helm_charts/core/certregistry/templates/envoy-config.yaml @@ -5,10 +5,12 @@ data: envoy-config.yaml: | static_resources: listeners: - - address: + - name: listener_0 + address: socket_address: address: 0.0.0.0 port_value: 9999 + per_connection_buffer_limit_bytes: 62914560 filter_chains: - filters: - name: envoy.http_connection_manager @@ -16,6 +18,10 @@ data: "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager codec_type: auto stat_prefix: ingress_http + access_log: + - name: envoy.access_loggers.stdout + typed_config: + "@type": type.googleapis.com/envoy.extensions.access_loggers.stream.v3.StdoutAccessLog route_config: name: local_route virtual_hosts: @@ -43,18 +49,18 @@ data: with_request_body: max_request_bytes: 62914560 allow_partial_message: true - pack_as_bytes: true - failure_mode_allow: false + failure_mode_allow: true grpc_service: google_grpc: target_uri: 127.0.0.1:9191 stat_prefix: ext_authz - timeout: 0.5s + timeout: 5s - name: envoy.filters.http.router clusters: - name: service - connect_timeout: 0.25s - type: strict_dns + connect_timeout: 30s + per_connection_buffer_limit_bytes: 62914560 + type: static lb_policy: round_robin load_assignment: cluster_name: service @@ -66,22 +72,11 @@ data: address: 127.0.0.1 port_value: {{ .Values.network.targetport }} admin: - access_log_path: "/dev/null" + access_log_path: "/dev/stdout" address: socket_address: address: 0.0.0.0 port_value: 10000 - layered_runtime: - layers: - - name: static_layer_0 - static_layer: - envoy: - resource_limits: - listener: - example_listener_name: - connection_limit: 10000 - overload: - global_downstream_max_connections: 50000 kind: ConfigMap metadata: name: {{ .Chart.Name }}-envoy-config diff --git a/kubernetes/helm_charts/core/certregistry/values.j2 b/kubernetes/helm_charts/core/certregistry/values.j2 index 41c41e80a..7eda1d499 100644 --- a/kubernetes/helm_charts/core/certregistry/values.j2 +++ b/kubernetes/helm_charts/core/certregistry/values.j2 @@ -31,7 +31,29 @@ strategy: certregistry_opa_enabled: {{ certregistry_opa_enabled | default('true') }} -{{ opa_envoy_resources | to_nice_yaml }} +envoy_resources: + requests: + cpu: "{{ certregistry_envoy_cpu_req | default('100m') }}" + memory: "{{ certregistry_envoy_mem_req | default('100Mi') }}" + limits: + cpu: "{{ certregistry_envoy_cpu_limit | default('1') }}" + memory: "{{ certregistry_envoy_mem_limit | default('1024Mi') }}" + +opa_resources: + requests: + cpu: "{{ certregistry_opa_cpu_req | default('100m') }}" + memory: "{{ certregistry_opa_mem_req | default('100Mi') }}" + limits: + cpu: "{{ certregistry_opa_cpu_limit | default('1') }}" + memory: "{{ certregistry_opa_mem_limit | default('1024Mi') }}" + +initcontainer_resources: + requests: + cpu: "{{ certregistry_initcontainer_cpu_req | default('100m') }}" + memory: "{{ certregistry_initcontainer_mem_req | default('100Mi') }}" + limits: + cpu: "{{ certregistry_initcontainer_cpu_limit | default('100m') }}" + memory: "{{ certregistry_initcontainer_mem_limit | default('100Mi') }}" autoscaling: enabled: {{ certregistry_autoscaling_enabled | default('false') }} diff --git a/kubernetes/helm_charts/core/content/templates/deployment.yaml b/kubernetes/helm_charts/core/content/templates/deployment.yaml index f363e3dc7..fb121ac7b 100644 --- a/kubernetes/helm_charts/core/content/templates/deployment.yaml +++ b/kubernetes/helm_charts/core/content/templates/deployment.yaml @@ -84,6 +84,9 @@ spec: - --diagnostic-addr=0.0.0.0:8282 - --set=plugins.envoy_ext_authz_grpc.addr=:9191 - --set=plugins.envoy_ext_authz_grpc.path=main/allow + {{- if .Values.opa_decision_logs }} + - --set=decision_logs.console=true + {{- end }} - --log-level=error - --ignore=.* image: openpolicyagent/opa:0.34.2-envoy-2 diff --git a/kubernetes/helm_charts/core/content/templates/envoy-config.yaml b/kubernetes/helm_charts/core/content/templates/envoy-config.yaml index d37c1f264..5bc3e6034 100644 --- a/kubernetes/helm_charts/core/content/templates/envoy-config.yaml +++ b/kubernetes/helm_charts/core/content/templates/envoy-config.yaml @@ -5,10 +5,12 @@ data: envoy-config.yaml: | static_resources: listeners: - - address: + - name: listener_0 + address: socket_address: address: 0.0.0.0 port_value: 9999 + per_connection_buffer_limit_bytes: 62914560 filter_chains: - filters: - name: envoy.http_connection_manager @@ -16,6 +18,10 @@ data: "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager codec_type: auto stat_prefix: ingress_http + access_log: + - name: envoy.access_loggers.stdout + typed_config: + "@type": type.googleapis.com/envoy.extensions.access_loggers.stream.v3.StdoutAccessLog route_config: name: local_route virtual_hosts: @@ -43,18 +49,18 @@ data: with_request_body: max_request_bytes: 62914560 allow_partial_message: true - pack_as_bytes: true - failure_mode_allow: false + failure_mode_allow: true grpc_service: google_grpc: target_uri: 127.0.0.1:9191 stat_prefix: ext_authz - timeout: 0.5s + timeout: 5s - name: envoy.filters.http.router clusters: - name: service - connect_timeout: 0.25s - type: strict_dns + connect_timeout: 30s + per_connection_buffer_limit_bytes: 62914560 + type: static lb_policy: round_robin load_assignment: cluster_name: service @@ -66,22 +72,11 @@ data: address: 127.0.0.1 port_value: {{ .Values.network.targetport }} admin: - access_log_path: "/dev/null" + access_log_path: "/dev/stdout" address: socket_address: address: 0.0.0.0 port_value: 10000 - layered_runtime: - layers: - - name: static_layer_0 - static_layer: - envoy: - resource_limits: - listener: - example_listener_name: - connection_limit: 10000 - overload: - global_downstream_max_connections: 50000 kind: ConfigMap metadata: name: {{ .Chart.Name }}-envoy-config diff --git a/kubernetes/helm_charts/core/content/values.j2 b/kubernetes/helm_charts/core/content/values.j2 index 5f0c04b98..505a2b90d 100644 --- a/kubernetes/helm_charts/core/content/values.j2 +++ b/kubernetes/helm_charts/core/content/values.j2 @@ -30,8 +30,31 @@ strategy: {{ envoy_liveness_readiness | to_nice_yaml }} content_opa_enabled: {{ content_opa_enabled | default('true') }} +opa_decision_logs: {{ content_opa_decision_logs | default('false') }} -{{ opa_envoy_resources | to_nice_yaml }} +envoy_resources: + requests: + cpu: "{{ content_envoy_cpu_req | default('100m') }}" + memory: "{{ content_envoy_mem_req | default('100Mi') }}" + limits: + cpu: "{{ content_envoy_cpu_limit | default('1') }}" + memory: "{{ content_envoy_mem_limit | default('1024Mi') }}" + +opa_resources: + requests: + cpu: "{{ content_opa_cpu_req | default('100m') }}" + memory: "{{ content_opa_mem_req | default('100Mi') }}" + limits: + cpu: "{{ content_opa_cpu_limit | default('1') }}" + memory: "{{ content_opa_mem_limit | default('1024Mi') }}" + +initcontainer_resources: + requests: + cpu: "{{ content_initcontainer_cpu_req | default('100m') }}" + memory: "{{ content_initcontainer_mem_req | default('100Mi') }}" + limits: + cpu: "{{ content_initcontainer_cpu_limit | default('100m') }}" + memory: "{{ content_initcontainer_mem_limit | default('100Mi') }}" autoscaling: enabled: {{ content_autoscaling_enabled | default('false') }} diff --git a/kubernetes/helm_charts/core/knowledgemw/templates/deployment.yaml b/kubernetes/helm_charts/core/knowledgemw/templates/deployment.yaml index b0b4e68f2..5432b2579 100644 --- a/kubernetes/helm_charts/core/knowledgemw/templates/deployment.yaml +++ b/kubernetes/helm_charts/core/knowledgemw/templates/deployment.yaml @@ -77,6 +77,9 @@ spec: - --diagnostic-addr=0.0.0.0:8282 - --set=plugins.envoy_ext_authz_grpc.addr=:9191 - --set=plugins.envoy_ext_authz_grpc.path=main/allow + {{- if .Values.opa_decision_logs }} + - --set=decision_logs.console=true + {{- end }} - --log-level=error - --ignore=.* image: openpolicyagent/opa:0.34.2-envoy-2 diff --git a/kubernetes/helm_charts/core/knowledgemw/templates/envoy-config.yaml b/kubernetes/helm_charts/core/knowledgemw/templates/envoy-config.yaml index d9705aa80..53bdbf026 100644 --- a/kubernetes/helm_charts/core/knowledgemw/templates/envoy-config.yaml +++ b/kubernetes/helm_charts/core/knowledgemw/templates/envoy-config.yaml @@ -5,10 +5,12 @@ data: envoy-config.yaml: | static_resources: listeners: - - address: + - name: listener_0 + address: socket_address: address: 0.0.0.0 port_value: 9999 + per_connection_buffer_limit_bytes: 62914560 filter_chains: - filters: - name: envoy.http_connection_manager @@ -16,6 +18,10 @@ data: "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager codec_type: auto stat_prefix: ingress_http + access_log: + - name: envoy.access_loggers.stdout + typed_config: + "@type": type.googleapis.com/envoy.extensions.access_loggers.stream.v3.StdoutAccessLog route_config: name: local_route virtual_hosts: @@ -43,18 +49,18 @@ data: with_request_body: max_request_bytes: 62914560 allow_partial_message: true - pack_as_bytes: true - failure_mode_allow: false + failure_mode_allow: true grpc_service: google_grpc: target_uri: 127.0.0.1:9191 stat_prefix: ext_authz - timeout: 0.5s + timeout: 5s - name: envoy.filters.http.router clusters: - name: service - connect_timeout: 0.25s - type: strict_dns + connect_timeout: 30s + per_connection_buffer_limit_bytes: 62914560 + type: static lb_policy: round_robin load_assignment: cluster_name: service @@ -66,22 +72,11 @@ data: address: 127.0.0.1 port_value: {{ .Values.network.targetport }} admin: - access_log_path: "/dev/null" + access_log_path: "/dev/stdout" address: socket_address: address: 0.0.0.0 port_value: 10000 - layered_runtime: - layers: - - name: static_layer_0 - static_layer: - envoy: - resource_limits: - listener: - example_listener_name: - connection_limit: 10000 - overload: - global_downstream_max_connections: 50000 kind: ConfigMap metadata: name: {{ .Chart.Name }}-envoy-config diff --git a/kubernetes/helm_charts/core/knowledgemw/values.j2 b/kubernetes/helm_charts/core/knowledgemw/values.j2 index 864288cc8..a1dba6944 100644 --- a/kubernetes/helm_charts/core/knowledgemw/values.j2 +++ b/kubernetes/helm_charts/core/knowledgemw/values.j2 @@ -27,8 +27,31 @@ strategy: {{ envoy_liveness_readiness | to_nice_yaml }} knowledgemw_opa_enabled: {{ knowledgemw_opa_enabled | default('true') }} +opa_decision_logs: {{ knowledgemw_opa_decision_logs | default('false') }} -{{ opa_envoy_resources | to_nice_yaml }} +envoy_resources: + requests: + cpu: "{{ knowledgemw_envoy_cpu_req | default('100m') }}" + memory: "{{ knowledgemw_envoy_mem_req | default('100Mi') }}" + limits: + cpu: "{{ knowledgemw_envoy_cpu_limit | default('1') }}" + memory: "{{ knowledgemw_envoy_mem_limit | default('1024Mi') }}" + +opa_resources: + requests: + cpu: "{{ knowledgemw_opa_cpu_req | default('100m') }}" + memory: "{{ knowledgemw_opa_mem_req | default('100Mi') }}" + limits: + cpu: "{{ knowledgemw_opa_cpu_limit | default('1') }}" + memory: "{{ knowledgemw_opa_mem_limit | default('1024Mi') }}" + +initcontainer_resources: + requests: + cpu: "{{ knowledgemw_initcontainer_cpu_req | default('100m') }}" + memory: "{{ knowledgemw_initcontainer_mem_req | default('100Mi') }}" + limits: + cpu: "{{ knowledgemw_initcontainer_cpu_limit | default('100m') }}" + memory: "{{ knowledgemw_initcontainer_mem_limit | default('100Mi') }}" knowledgemw_access_basepath: {{ knowledgemw_access_basepath | default('/home/sunbird/mw/content/keys/') }} diff --git a/kubernetes/helm_charts/core/learner/templates/deployment.yaml b/kubernetes/helm_charts/core/learner/templates/deployment.yaml index a863eba6c..fcf765e76 100644 --- a/kubernetes/helm_charts/core/learner/templates/deployment.yaml +++ b/kubernetes/helm_charts/core/learner/templates/deployment.yaml @@ -86,6 +86,9 @@ spec: - --diagnostic-addr=0.0.0.0:8282 - --set=plugins.envoy_ext_authz_grpc.addr=:9191 - --set=plugins.envoy_ext_authz_grpc.path=main/allow + {{- if .Values.opa_decision_logs }} + - --set=decision_logs.console=true + {{- end }} - --log-level=error - --ignore=.* image: openpolicyagent/opa:0.34.2-envoy-2 diff --git a/kubernetes/helm_charts/core/learner/templates/envoy-config.yaml b/kubernetes/helm_charts/core/learner/templates/envoy-config.yaml index d571252eb..99873787f 100644 --- a/kubernetes/helm_charts/core/learner/templates/envoy-config.yaml +++ b/kubernetes/helm_charts/core/learner/templates/envoy-config.yaml @@ -5,10 +5,12 @@ data: envoy-config.yaml: | static_resources: listeners: - - address: + - name: listener_0 + address: socket_address: address: 0.0.0.0 port_value: 9999 + per_connection_buffer_limit_bytes: 62914560 filter_chains: - filters: - name: envoy.http_connection_manager @@ -16,6 +18,10 @@ data: "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager codec_type: auto stat_prefix: ingress_http + access_log: + - name: envoy.access_loggers.stdout + typed_config: + "@type": type.googleapis.com/envoy.extensions.access_loggers.stream.v3.StdoutAccessLog route_config: name: local_route virtual_hosts: @@ -43,18 +49,18 @@ data: with_request_body: max_request_bytes: 62914560 allow_partial_message: true - pack_as_bytes: true - failure_mode_allow: false + failure_mode_allow: true grpc_service: google_grpc: target_uri: 127.0.0.1:9191 stat_prefix: ext_authz - timeout: 0.5s + timeout: 5s - name: envoy.filters.http.router clusters: - name: service - connect_timeout: 0.25s - type: strict_dns + connect_timeout: 30s + per_connection_buffer_limit_bytes: 62914560 + type: static lb_policy: round_robin load_assignment: cluster_name: service @@ -66,22 +72,11 @@ data: address: 127.0.0.1 port_value: {{ .Values.network.targetport }} admin: - access_log_path: "/dev/null" + access_log_path: "/dev/stdout" address: socket_address: address: 0.0.0.0 port_value: 10000 - layered_runtime: - layers: - - name: static_layer_0 - static_layer: - envoy: - resource_limits: - listener: - example_listener_name: - connection_limit: 10000 - overload: - global_downstream_max_connections: 50000 kind: ConfigMap metadata: name: {{ .Chart.Name }}-envoy-config diff --git a/kubernetes/helm_charts/core/learner/values.j2 b/kubernetes/helm_charts/core/learner/values.j2 index b7de6f529..9a463b202 100644 --- a/kubernetes/helm_charts/core/learner/values.j2 +++ b/kubernetes/helm_charts/core/learner/values.j2 @@ -31,8 +31,31 @@ strategy: {{ envoy_liveness_readiness | to_nice_yaml }} learner_opa_enabled: {{ learner_opa_enabled | default('true') }} +opa_decision_logs: {{ learner_opa_decision_logs | default('false') }} -{{ opa_envoy_resources | to_nice_yaml }} +envoy_resources: + requests: + cpu: "{{ learner_envoy_cpu_req | default('100m') }}" + memory: "{{ learner_envoy_mem_req | default('100Mi') }}" + limits: + cpu: "{{ learner_envoy_cpu_limit | default('1') }}" + memory: "{{ learner_envoy_mem_limit | default('1024Mi') }}" + +opa_resources: + requests: + cpu: "{{ learner_opa_cpu_req | default('100m') }}" + memory: "{{ learner_opa_mem_req | default('100Mi') }}" + limits: + cpu: "{{ learner_opa_cpu_limit | default('1') }}" + memory: "{{ learner_opa_mem_limit | default('1024Mi') }}" + +initcontainer_resources: + requests: + cpu: "{{ learner_initcontainer_cpu_req | default('100m') }}" + memory: "{{ learner_initcontainer_mem_req | default('100Mi') }}" + limits: + cpu: "{{ learner_initcontainer_cpu_limit | default('100m') }}" + memory: "{{ learner_initcontainer_mem_limit | default('100Mi') }}" learner_access_basepath: {{ learner_access_basepath | default('/keys/') }} diff --git a/kubernetes/helm_charts/core/lms/templates/deployment.yaml b/kubernetes/helm_charts/core/lms/templates/deployment.yaml index 1c455207e..d394b5f75 100644 --- a/kubernetes/helm_charts/core/lms/templates/deployment.yaml +++ b/kubernetes/helm_charts/core/lms/templates/deployment.yaml @@ -90,6 +90,9 @@ spec: - --diagnostic-addr=0.0.0.0:8282 - --set=plugins.envoy_ext_authz_grpc.addr=:9191 - --set=plugins.envoy_ext_authz_grpc.path=main/allow + {{- if .Values.opa_decision_logs }} + - --set=decision_logs.console=true + {{- end }} - --log-level=error - --ignore=.* image: openpolicyagent/opa:0.34.2-envoy-2 diff --git a/kubernetes/helm_charts/core/lms/templates/envoy-config.yaml b/kubernetes/helm_charts/core/lms/templates/envoy-config.yaml index ca5b325c5..c1cdfd8f6 100644 --- a/kubernetes/helm_charts/core/lms/templates/envoy-config.yaml +++ b/kubernetes/helm_charts/core/lms/templates/envoy-config.yaml @@ -5,10 +5,12 @@ data: envoy-config.yaml: | static_resources: listeners: - - address: + - name: listener_0 + address: socket_address: address: 0.0.0.0 port_value: 9999 + per_connection_buffer_limit_bytes: 62914560 filter_chains: - filters: - name: envoy.http_connection_manager @@ -16,6 +18,10 @@ data: "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager codec_type: auto stat_prefix: ingress_http + access_log: + - name: envoy.access_loggers.stdout + typed_config: + "@type": type.googleapis.com/envoy.extensions.access_loggers.stream.v3.StdoutAccessLog route_config: name: local_route virtual_hosts: @@ -43,18 +49,18 @@ data: with_request_body: max_request_bytes: 62914560 allow_partial_message: true - pack_as_bytes: true - failure_mode_allow: false + failure_mode_allow: true grpc_service: google_grpc: target_uri: 127.0.0.1:9191 stat_prefix: ext_authz - timeout: 0.5s + timeout: 5s - name: envoy.filters.http.router clusters: - name: service - connect_timeout: 0.25s - type: strict_dns + connect_timeout: 30s + per_connection_buffer_limit_bytes: 62914560 + type: static lb_policy: round_robin load_assignment: cluster_name: service @@ -66,22 +72,11 @@ data: address: 127.0.0.1 port_value: {{ .Values.network.targetport }} admin: - access_log_path: "/dev/null" + access_log_path: "/dev/stdout" address: socket_address: address: 0.0.0.0 port_value: 10000 - layered_runtime: - layers: - - name: static_layer_0 - static_layer: - envoy: - resource_limits: - listener: - example_listener_name: - connection_limit: 10000 - overload: - global_downstream_max_connections: 50000 kind: ConfigMap metadata: name: {{ .Chart.Name }}-envoy-config diff --git a/kubernetes/helm_charts/core/lms/values.j2 b/kubernetes/helm_charts/core/lms/values.j2 index 43589dc13..519736aaa 100644 --- a/kubernetes/helm_charts/core/lms/values.j2 +++ b/kubernetes/helm_charts/core/lms/values.j2 @@ -30,8 +30,31 @@ strategy: {{ envoy_liveness_readiness | to_nice_yaml }} lms_opa_enabled: {{ lms_opa_enabled | default('true') }} +opa_decision_logs: {{ lms_opa_decision_logs | default('false') }} -{{ opa_envoy_resources | to_nice_yaml }} +envoy_resources: + requests: + cpu: "{{ lms_envoy_cpu_req | default('100m') }}" + memory: "{{ lms_envoy_mem_req | default('100Mi') }}" + limits: + cpu: "{{ lms_envoy_cpu_limit | default('1') }}" + memory: "{{ lms_envoy_mem_limit | default('1024Mi') }}" + +opa_resources: + requests: + cpu: "{{ lms_opa_cpu_req | default('100m') }}" + memory: "{{ lms_opa_mem_req | default('100Mi') }}" + limits: + cpu: "{{ lms_opa_cpu_limit | default('1') }}" + memory: "{{ lms_opa_mem_limit | default('1024Mi') }}" + +initcontainer_resources: + requests: + cpu: "{{ lms_initcontainer_cpu_req | default('100m') }}" + memory: "{{ lms_initcontainer_mem_req | default('100Mi') }}" + limits: + cpu: "{{ lms_initcontainer_cpu_limit | default('100m') }}" + memory: "{{ lms_initcontainer_mem_limit | default('100Mi') }}" lms_access_basepath: {{ lms_access_basepath | default('/keys/') }} diff --git a/kubernetes/opa/common/common.rego b/kubernetes/opa/common/common.rego index 384a67b65..f6267368d 100644 --- a/kubernetes/opa/common/common.rego +++ b/kubernetes/opa/common/common.rego @@ -72,7 +72,7 @@ org_check(roles) = token_organisationids { } federation_id_check { - federation_id := token_federation_id + federation_id == token_federation_id } parent_id_check { -- GitLab