Merge "[MARIADB][SO] Connect MariaDB Galera via master node"
authorLukasz Rajewski <lukasz.rajewski@t-mobile.pl>
Thu, 11 Jan 2024 15:44:51 +0000 (15:44 +0000)
committerGerrit Code Review <gerrit@onap.org>
Thu, 11 Jan 2024 15:44:51 +0000 (15:44 +0000)
kubernetes/aai/components/aai-resources/resources/config/application.properties
kubernetes/aai/components/aai-resources/resources/config/janusgraph-realtime.properties
kubernetes/aai/components/aai-resources/resources/config/localhost-access-logback.xml
kubernetes/aai/components/aai-resources/values.yaml
kubernetes/aai/components/aai-traversal/resources/config/application.properties
kubernetes/aai/components/aai-traversal/resources/config/janusgraph-realtime.properties
kubernetes/aai/components/aai-traversal/resources/config/localhost-access-logback.xml
kubernetes/aai/components/aai-traversal/values.yaml

index 805f3cd..817849f 100644 (file)
@@ -101,10 +101,10 @@ schema.service.client=no-auth
 management.port=8448
 management.endpoints.enabled-by-default=false
 management.security.enabled=false
-endpoints.enabled=false
-endpoints.info.enabled=false
-endpoints.prometheus.enabled=false
-endpoints.health.enabled=false
+endpoints.enabled={{ .Values.endpoints.enabled }}
+endpoints.info.enabled={{ .Values.endpoints.info.enabled }}
+endpoints.prometheus.enabled={{ .Values.metrics.serviceMonitor.enabled }}
+endpoints.health.enabled={{ .Values.endpoints.health.enabled }}
 management.metrics.web.server.auto-time-requests=false
 management.metrics.distribution.percentiles-histogram[http.server.requests]=true
 management.metrics.distribution.sla[http.server.requests]=20ms, 30ms, 40ms, 50ms, 60ms, 70ms, 80ms, 90ms, 100ms, 500ms, 1000ms, 5000ms, 7000ms
index 836dc7b..4835560 100644 (file)
@@ -90,7 +90,17 @@ log.tx.key-consistent={{ .Values.global.config.storage.keyConsistent }}
 {{ end }}
 
 storage.lock.wait-time=300
-# Setting db-cache to false ensure the fastest propagation of changes across servers
-cache.db-cache = false
+
+# https://docs.janusgraph.org/operations/cache/#database-level-caching
+# Setting db-cache to false will ensure the fastest propagation of changes across servers
+# Setting db-cache to true will ensure fastest response times
+cache.db-cache={{ .Values.config.janusgraph.caching.enabled }}
+{{ if .Values.config.janusgraph.caching.enabled }}
+# cache-time in milliseconds
+cache.db-cache-time={{ .Values.config.janusgraph.caching.dbCacheTime }}
+cache.db-cache-size={{ .Values.config.janusgraph.caching.dbCacheSize }}
+cache.db-cache-clean-wait={{ .Values.config.janusgraph.caching.dbCacheCleanWait }}
+{{ end }}
+
 #load graphson file on startup
 load.snapshot.file=false
index 5ddd293..07919a9 100644 (file)
 <configuration>\r
   <property name="AJSC_HOME" value="${AJSC_HOME:-.}" />\r
 \r
-  <property name="logToFileEnabled" value='{{.Values.accessLogback.logToFileEnabled}}'/>\r
+  <property name="logToFileEnabled" value='{{.Values.accessLogback.logToFileEnabled}}' />\r
   <property name="maxHistory" value='{{.Values.accessLogback.maxHistory}}' />\r
   <property name="totalSizeCap" value='{{.Values.accessLogback.totalSizeCap}}' />\r
+  <property name="livenessAccessLogEnabled"\r
+    value='{{.Values.accessLogback.livenessAccessLogEnabled}}' />\r
+\r
 \r
   <if condition='property("logToFileEnabled").contains("true")'>\r
     <then>\r
       <appender name="ACCESS"\r
-                class="ch.qos.logback.core.rolling.RollingFileAppender">\r
+        class="ch.qos.logback.core.rolling.RollingFileAppender">\r
         <file>${AJSC_HOME}/logs/ajsc-jetty/localhost_access.log</file>\r
         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">\r
           <fileNamePattern>${AJSC_HOME}/logs/ajsc-jetty/localhost_access.log.%d{yyyy-MM-dd}.zip\r
           <totalSizeCap>${totalSizeCap}</totalSizeCap>\r
         </rollingPolicy>\r
         <encoder class="org.onap.aai.logging.CustomLogPatternLayoutEncoder">\r
-          <Pattern>%a %u %z [%t] "%m %U%q" %s %b %y %i{X-TransactionId} %i{X-FromAppId} %i{X-Forwarded-For} %i{X-AAI-SSL-Client-CN} %i{X-AAI-SSL-Client-OU} %i{X-AAI-SSL-Client-O} %i{X-AAI-SSL-Client-L} %i{X-AAI-SSL-Client-ST} %i{X-AAI-SSL-Client-C} %i{X-AAI-SSL-Client-NotBefore} %i{X-AAI-SSL-Client-NotAfter} %i{X-AAI-SSL-Client-DN} %D</Pattern>\r
+          <Pattern>%a %u %z [%t] "%m %U%q" %s %b %y %i{X-TransactionId} %i{X-FromAppId}\r
+            %i{X-Forwarded-For} %i{X-AAI-SSL-Client-CN} %i{X-AAI-SSL-Client-OU}\r
+            %i{X-AAI-SSL-Client-O} %i{X-AAI-SSL-Client-L} %i{X-AAI-SSL-Client-ST}\r
+            %i{X-AAI-SSL-Client-C} %i{X-AAI-SSL-Client-NotBefore} %i{X-AAI-SSL-Client-NotAfter}\r
+            %i{X-AAI-SSL-Client-DN} %D</Pattern>\r
         </encoder>\r
       </appender>\r
-      <appender-ref ref="ACCESS"/>\r
+      <appender-ref ref="ACCESS" />\r
     </then>\r
   </if>\r
 \r
   <appender name="STDOUTACCESS" class="ch.qos.logback.core.ConsoleAppender">\r
     <encoder class="org.onap.aai.logging.CustomLogPatternLayoutEncoder">\r
-      <Pattern>%a %u %z [%t] "%m %U%q" %s %b %y %i{X-TransactionId} %i{X-FromAppId} %i{X-Forwarded-For} %i{X-AAI-SSL-Client-CN} %i{X-AAI-SSL-Client-OU} %i{X-AAI-SSL-Client-O} %i{X-AAI-SSL-Client-L} %i{X-AAI-SSL-Client-ST} %i{X-AAI-SSL-Client-C} %i{X-AAI-SSL-Client-NotBefore} %i{X-AAI-SSL-Client-NotAfter} %i{X-AAI-SSL-Client-DN} %D - "logType": "access"</Pattern>\r
+      <Pattern>%a %u %z [%t] "%m %U%q" %s %b %y %i{X-TransactionId} %i{X-FromAppId}\r
+        %i{X-Forwarded-For} %i{X-AAI-SSL-Client-CN} %i{X-AAI-SSL-Client-OU} %i{X-AAI-SSL-Client-O}\r
+        %i{X-AAI-SSL-Client-L} %i{X-AAI-SSL-Client-ST} %i{X-AAI-SSL-Client-C}\r
+        %i{X-AAI-SSL-Client-NotBefore} %i{X-AAI-SSL-Client-NotAfter} %i{X-AAI-SSL-Client-DN} %D -\r
+        "logType": "access"</Pattern>\r
     </encoder>\r
+    <if condition='property("livenessAccessLogEnabled").contains("false")'>\r
+      <then>\r
+        <filter class="ch.qos.logback.core.filter.EvaluatorFilter">\r
+          <evaluator class="ch.qos.logback.access.net.URLEvaluator">\r
+            <URL>/aai/util/echo</URL>\r
+          </evaluator>\r
+          <OnMismatch>NEUTRAL</OnMismatch>\r
+          <OnMatch>DENY</OnMatch>\r
+        </filter>\r
+      </then>\r
+    </if>\r
   </appender>\r
 \r
   <appender-ref ref="STDOUTACCESS" />\r
 %z - Custom pattern that parses the cert for the subject\r
 %y - Custom pattern determines rest or dme2\r
 -->\r
-*/}}\r
-\r
+*/}}
\ No newline at end of file
index 3a4d568..ba0897e 100644 (file)
@@ -154,6 +154,18 @@ config:
     # to the user in keycloak
     multiTenancy:
       enabled: true
+  janusgraph:
+    caching:
+      # enable when running read-heavy workloads
+      # modifications to graph done by this service/janusgraph instance will immediately invalidate the cache
+      # modifications to graph done by other services (traversal) will only be visible
+      # after time specified in db-cache-time
+      enabled: false
+      # Documentation: https://docs.janusgraph.org/operations/cache/#database-level-caching
+      dbCacheTime: 180000 # in milliseconds
+      dbCacheSize: 0.1 # percentage (expressed as a decimal between 0 and 1) of the total heap space available to the JVM running
+      dbCacheCleanWait: 20 # in milliseconds
+
 
   # Specifies crud related operation timeouts and overrides
   crud:
@@ -259,6 +271,13 @@ tracing:
   ignorePatterns:
     - /aai/util.*
 
+endpoints:
+  enabled: true
+  health:
+    enabled: true
+  info:
+    enabled: true
+
 metrics:
   serviceMonitor:
     enabled: false
@@ -330,6 +349,7 @@ logback:
   queueSize: 1000
 
 accessLogback:
+  livenessAccessLogEnabled: false # false: do not log kubernetes liveness probes
   logToFileEnabled: false
   maxHistory: 7
   totalSizeCap: 1GB
index caed645..67fefd2 100644 (file)
@@ -1,7 +1,7 @@
 {{/*
 # Copyright © 2018 Amdocs, Bell Canada, AT&T
 # Modifications Copyright © 2020 Orange
-# Modifications Copyright © 2023 Nordix Foundation
+# Modifications Copyright  2023 Nordix Foundation
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -95,10 +95,10 @@ schema.service.client=no-auth
 management.port=8448
 management.endpoints.enabled-by-default=false
 management.security.enabled=false
-endpoints.enabled=false
-endpoints.info.enabled=false
-endpoints.prometheus.enabled=false
-endpoints.health.enabled=false
+endpoints.enabled={{ .Values.endpoints.enabled }}
+endpoints.info.enabled={{ .Values.endpoints.info.enabled }}
+endpoints.prometheus.enabled={{ .Values.metrics.serviceMonitor.enabled }}
+endpoints.health.enabled={{ .Values.endpoints.health.enabled }}
 management.metrics.web.server.auto-time-requests=false
 management.metrics.distribution.percentiles-histogram[http.server.requests]=true
 management.metrics.distribution.sla[http.server.requests]=20ms, 30ms, 40ms, 50ms, 60ms, 70ms, 80ms, 90ms, 100ms, 500ms, 1000ms, 5000ms, 7000ms
index 836dc7b..4835560 100644 (file)
@@ -90,7 +90,17 @@ log.tx.key-consistent={{ .Values.global.config.storage.keyConsistent }}
 {{ end }}
 
 storage.lock.wait-time=300
-# Setting db-cache to false ensure the fastest propagation of changes across servers
-cache.db-cache = false
+
+# https://docs.janusgraph.org/operations/cache/#database-level-caching
+# Setting db-cache to false will ensure the fastest propagation of changes across servers
+# Setting db-cache to true will ensure fastest response times
+cache.db-cache={{ .Values.config.janusgraph.caching.enabled }}
+{{ if .Values.config.janusgraph.caching.enabled }}
+# cache-time in milliseconds
+cache.db-cache-time={{ .Values.config.janusgraph.caching.dbCacheTime }}
+cache.db-cache-size={{ .Values.config.janusgraph.caching.dbCacheSize }}
+cache.db-cache-clean-wait={{ .Values.config.janusgraph.caching.dbCacheCleanWait }}
+{{ end }}
+
 #load graphson file on startup
 load.snapshot.file=false
index 1d32a52..5e3a15c 100644 (file)
 -->\r
 */}}\r
 <configuration scan="true" scanPeriod="60 seconds" debug="false">\r
-    <property name="AJSC_HOME" value="${AJSC_HOME:-.}" />\r
-    <property name="maxHistory" value='{{.Values.accessLogback.maxHistory}}' />\r
-    <property name="totalSizeCap" value='{{.Values.accessLogback.totalSizeCap}}' />\r
-    <property name="logToFileEnabled" value='{{.Values.accessLogback.logToFileEnabled}}'/>\r
+  <property name="AJSC_HOME" value="${AJSC_HOME:-.}" />\r
+  <property name="maxHistory" value='{{.Values.accessLogback.maxHistory}}' />\r
+  <property name="totalSizeCap" value='{{.Values.accessLogback.totalSizeCap}}' />\r
+  <property name="logToFileEnabled" value='{{.Values.accessLogback.logToFileEnabled}}' />\r
+  <property name="livenessAccessLogEnabled"\r
+    value='{{.Values.accessLogback.livenessAccessLogEnabled}}' />\r
 \r
-    <if condition='property("logToFileEnabled").contains("true")'>\r
-        <then>\r
-            <appender name="ACCESS" class="ch.qos.logback.core.rolling.RollingFileAppender">\r
-                <file>${AJSC_HOME}/logs/ajsc-jetty/localhost_access.log</file>\r
-                <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">\r
-                    <fileNamePattern>${AJSC_HOME}/logs/ajsc-jetty/localhost_access.log.%d{yyyy-MM-dd}\r
-                    </fileNamePattern>\r
-                    <maxHistory>${maxHistory}</maxHistory>\r
-                    <totalSizeCap>${totalSizeCap}</totalSizeCap>\r
-                </rollingPolicy>\r
-                <encoder class="org.onap.aai.logging.CustomLogPatternLayoutEncoder">\r
-                    <Pattern>%a %u %z [%t] "%m %U%q" %s %b %y %i{X-TransactionId} %i{X-FromAppId} %i{X-Forwarded-For} %i{X-AAI-SSL-Client-CN} %i{X-AAI-SSL-Client-OU} %i{X-AAI-SSL-Client-O} %i{X-AAI-SSL-Client-L} %i{X-AAI-SSL-Client-ST} %i{X-AAI-SSL-Client-C} %i{X-AAI-SSL-Client-NotBefore} %i{X-AAI-SSL-Client-NotAfter} %i{X-AAI-SSL-Client-DN} %D</Pattern>\r
-                </encoder>\r
-            </appender>\r
-            <appender-ref ref="ACCESS" />\r
-        </then>\r
-    </if>\r
-\r
-    <appender name="STDOUTACCESS" class="ch.qos.logback.core.ConsoleAppender">\r
+  <if condition='property("logToFileEnabled").contains("true")'>\r
+    <then>\r
+      <appender name="ACCESS" class="ch.qos.logback.core.rolling.RollingFileAppender">\r
+        <file>${AJSC_HOME}/logs/ajsc-jetty/localhost_access.log</file>\r
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">\r
+          <fileNamePattern>${AJSC_HOME}/logs/ajsc-jetty/localhost_access.log.%d{yyyy-MM-dd}\r
+          </fileNamePattern>\r
+          <maxHistory>${maxHistory}</maxHistory>\r
+          <totalSizeCap>${totalSizeCap}</totalSizeCap>\r
+        </rollingPolicy>\r
         <encoder class="org.onap.aai.logging.CustomLogPatternLayoutEncoder">\r
-            <Pattern>%a %u %z [%t] "%m %U%q" %s %b %y %i{X-TransactionId} %i{X-FromAppId} %i{X-Forwarded-For} %i{X-AAI-SSL-Client-CN} %i{X-AAI-SSL-Client-OU} %i{X-AAI-SSL-Client-O} %i{X-AAI-SSL-Client-L} %i{X-AAI-SSL-Client-ST} %i{X-AAI-SSL-Client-C} %i{X-AAI-SSL-Client-NotBefore} %i{X-AAI-SSL-Client-NotAfter} %i{X-AAI-SSL-Client-DN} %D - "logType": "access"</Pattern>\r
+          <Pattern>%a %u %z [%t] "%m %U%q" %s %b %y %i{X-TransactionId} %i{X-FromAppId}\r
+            %i{X-Forwarded-For} %i{X-AAI-SSL-Client-CN} %i{X-AAI-SSL-Client-OU}\r
+            %i{X-AAI-SSL-Client-O} %i{X-AAI-SSL-Client-L} %i{X-AAI-SSL-Client-ST}\r
+            %i{X-AAI-SSL-Client-C} %i{X-AAI-SSL-Client-NotBefore} %i{X-AAI-SSL-Client-NotAfter}\r
+            %i{X-AAI-SSL-Client-DN} %D</Pattern>\r
         </encoder>\r
-    </appender>\r
-    <appender-ref ref="STDOUTACCESS" />\r
+      </appender>\r
+      <appender-ref ref="ACCESS" />\r
+    </then>\r
+  </if>\r
+\r
+  <appender name="STDOUTACCESS" class="ch.qos.logback.core.ConsoleAppender">\r
+    <encoder class="org.onap.aai.logging.CustomLogPatternLayoutEncoder">\r
+      <Pattern>%a %u %z [%t] "%m %U%q" %s %b %y %i{X-TransactionId} %i{X-FromAppId}\r
+        %i{X-Forwarded-For} %i{X-AAI-SSL-Client-CN} %i{X-AAI-SSL-Client-OU} %i{X-AAI-SSL-Client-O}\r
+        %i{X-AAI-SSL-Client-L} %i{X-AAI-SSL-Client-ST} %i{X-AAI-SSL-Client-C}\r
+        %i{X-AAI-SSL-Client-NotBefore} %i{X-AAI-SSL-Client-NotAfter} %i{X-AAI-SSL-Client-DN} %D -\r
+        "logType": "access"</Pattern>\r
+    </encoder>\r
+    <if condition='property("livenessAccessLogEnabled").contains("false")'>\r
+      <then>\r
+        <filter class="ch.qos.logback.core.filter.EvaluatorFilter">\r
+          <evaluator class="ch.qos.logback.access.net.URLEvaluator">\r
+            <URL>/aai/util/echo</URL>\r
+          </evaluator>\r
+          <OnMismatch>NEUTRAL</OnMismatch>\r
+          <OnMatch>DENY</OnMatch>\r
+        </filter>\r
+      </then>\r
+    </if>\r
+  </appender>\r
+  <appender-ref ref="STDOUTACCESS" />\r
 </configuration>\r
 {{/*<!--\r
 %a - Remote IP address\r
index 2b7e78f..88f81e3 100644 (file)
@@ -142,7 +142,6 @@ aai_enpoints:
 
 # application configuration
 config:
-
   # configure keycloak according to your environment.
   # don't forget to add keycloak in active profiles above (global.config.profiles)
   keycloak:
@@ -156,6 +155,18 @@ config:
     # the data-owner property with the given role to the user in keycloak
     multiTenancy:
       enabled: true
+  janusgraph:
+    caching:
+      # enable when running read-heavy workloads
+      # modifications to graph done by this service/janusgraph instance will immediately invalidate the cache
+      # modifications to graph done by other services (resources) will only be visible
+      # after time specified in db-cache-time
+      enabled: false
+      # Documentation: https://docs.janusgraph.org/operations/cache/#database-level-caching
+      dbCacheTime: 180000 # in milliseconds
+      dbCacheSize: 0.1 # percentage (expressed as a decimal between 0 and 1) of the total heap space available to the JVM running
+      dbCacheCleanWait: 20 # in milliseconds
+
 
   # Specifies timeout information such as application specific and limits
   timeout:
@@ -248,6 +259,7 @@ logback:
   queueSize: 1000
 
 accessLogback:
+  livenessAccessLogEnabled: false # false: do not log kubernetes liveness probes
   logToFileEnabled: false
   maxHistory: 7
   totalSizeCap: 6GB
@@ -271,6 +283,13 @@ resources:
       memory: 4Gi
   unlimited: {}
 
+endpoints:
+  enabled: true
+  health:
+    enabled: true
+  info:
+    enabled: true
+
 metrics:
   serviceMonitor:
     enabled: false