Skip to content
Snippets Groups Projects
Commit 0b9a28f3 authored by Vasilis Katopodis's avatar Vasilis Katopodis
Browse files

feat(automation/policy): Enabling metrics collection

parent 8065cee7
No related branches found
No related tags found
2 merge requests!142Release TeraFlowSDN 2.1,!84feat(automation/policy): Enabling metrics collection
../src/automation/target/kubernetes/kubernetes.yml
\ No newline at end of file
# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
---
apiVersion: v1
kind: Service
metadata:
annotations:
app.quarkus.io/build-timestamp: 2022-09-19 - 10:48:18 +0000
labels:
app.kubernetes.io/name: automationservice
app: automationservice
name: automationservice
spec:
ports:
- name: grpc
port: 5050
targetPort: 5050
- name: metrics
protocol: TCP
port: 9192
targetPort: 8080
selector:
app.kubernetes.io/name: automationservice
type: ClusterIP
---
apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
app.quarkus.io/build-timestamp: 2022-09-19 - 10:48:18 +0000
labels:
app: automationservice
app.kubernetes.io/name: automationservice
name: automationservice
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: automationservice
template:
metadata:
annotations:
app.quarkus.io/build-timestamp: 2022-09-19 - 10:48:18 +0000
labels:
app: automationservice
app.kubernetes.io/name: automationservice
spec:
containers:
- env:
- name: KUBERNETES_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: CONTEXT_SERVICE_HOST
value: contextservice
- name: DEVICE_SERVICE_HOST
value: deviceservice
image: labs.etsi.org:5050/tfs/controller/automation:0.2.0
imagePullPolicy: Always
livenessProbe:
failureThreshold: 3
httpGet:
path: /q/health/live
port: 8080
scheme: HTTP
initialDelaySeconds: 2
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 10
name: automationservice
ports:
- containerPort: 5050
name: grpc
protocol: TCP
- containerPort: 8080
name: metrics
protocol: TCP
readinessProbe:
failureThreshold: 3
httpGet:
path: /q/health/ready
port: 8080
scheme: HTTP
initialDelaySeconds: 2
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 10
resources:
requests:
cpu: 50m
memory: 512Mi
limits:
cpu: 500m
memory: 2048Mi
---
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: automationservice-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: automationservice
minReplicas: 1
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 80
../src/policy/target/kubernetes/kubernetes.yml
\ No newline at end of file
# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
---
apiVersion: v1
kind: Service
metadata:
annotations:
app.quarkus.io/commit-id: 8065cee75be759e14af792737179537096de5e11
app.quarkus.io/build-timestamp: 2023-03-30 - 13:49:59 +0000
labels:
app.kubernetes.io/name: policyservice
app: policyservice
name: policyservice
spec:
ports:
- name: metrics
port: 9192
targetPort: 8080
- name: grpc
port: 6060
targetPort: 6060
selector:
app.kubernetes.io/name: policyservice
type: ClusterIP
---
apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
app.quarkus.io/commit-id: 8065cee75be759e14af792737179537096de5e11
app.quarkus.io/build-timestamp: 2023-03-30 - 13:49:59 +0000
labels:
app: policyservice
app.kubernetes.io/name: policyservice
name: policyservice
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: policyservice
template:
metadata:
annotations:
app.quarkus.io/commit-id: 8065cee75be759e14af792737179537096de5e11
app.quarkus.io/build-timestamp: 2023-03-30 - 13:49:59 +0000
labels:
app: policyservice
app.kubernetes.io/name: policyservice
spec:
containers:
- env:
- name: KUBERNETES_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: SERVICE_SERVICE_HOST
value: serviceservice
- name: CONTEXT_SERVICE_HOST
value: contextservice
- name: MONITORING_SERVICE_HOST
value: monitoringservice
image: labs.etsi.org:5050/tfs/controller/policy:0.1.0
imagePullPolicy: Always
livenessProbe:
failureThreshold: 3
httpGet:
path: /q/health/live
port: 8080
scheme: HTTP
initialDelaySeconds: 2
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 10
name: policyservice
ports:
- containerPort: 8080
name: metrics
protocol: TCP
- containerPort: 6060
name: grpc-server
protocol: TCP
readinessProbe:
failureThreshold: 3
httpGet:
path: /q/health/ready
port: 8080
scheme: HTTP
initialDelaySeconds: 2
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 10
resources:
requests:
cpu: 50m
memory: 512Mi
limits:
cpu: 500m
memory: 2048Mi
---
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: policyservice-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: policyservice
minReplicas: 1
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 80
\ No newline at end of file
...@@ -243,3 +243,61 @@ spec: ...@@ -243,3 +243,61 @@ spec:
any: false any: false
matchNames: matchNames:
- tfs # namespace where the app is running - tfs # namespace where the app is running
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
namespace: monitoring # namespace where prometheus is running
name: tfs-policyservice-metric
labels:
app: policyservice
#release: prometheus
#release: prom # name of the release
# ( VERY IMPORTANT: You need to know the correct release name by viewing
# the servicemonitor of Prometheus itself: Without the correct name,
# Prometheus cannot identify the metrics of the Flask app as the target.)
spec:
selector:
matchLabels:
# Target app service
#namespace: tfs
app: policyservice # same as above
#release: prometheus # same as above
endpoints:
- port: metrics # named port in target app
scheme: http
path: /q/metrics # path to scrape
interval: 5s # scrape interval
namespaceSelector:
any: false
matchNames:
- tfs # namespace where the app is running
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
namespace: monitoring # namespace where prometheus is running
name: tfs-automationservice-metric
labels:
app: automationservice
#release: prometheus
#release: prom # name of the release
# ( VERY IMPORTANT: You need to know the correct release name by viewing
# the servicemonitor of Prometheus itself: Without the correct name,
# Prometheus cannot identify the metrics of the Flask app as the target.)
spec:
selector:
matchLabels:
# Target app service
#namespace: tfs
app: automationservice # same as above
#release: prometheus # same as above
endpoints:
- port: metrics # named port in target app
scheme: http
path: /q/metrics # path to scrape
interval: 5s # scrape interval
namespaceSelector:
any: false
matchNames:
- tfs # namespace where the app is running
...@@ -174,6 +174,11 @@ ...@@ -174,6 +174,11 @@
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-smallrye-metrics</artifactId>
</dependency>
</dependencies> </dependencies>
<build> <build>
......
...@@ -27,6 +27,10 @@ import io.quarkus.grpc.GrpcService; ...@@ -27,6 +27,10 @@ import io.quarkus.grpc.GrpcService;
import io.smallrye.mutiny.Uni; import io.smallrye.mutiny.Uni;
import javax.inject.Inject; import javax.inject.Inject;
import org.eclipse.microprofile.metrics.MetricUnits;
import org.eclipse.microprofile.metrics.annotation.Counted;
import org.eclipse.microprofile.metrics.annotation.Timed;
@GrpcService @GrpcService
public class AutomationGatewayImpl implements AutomationGateway { public class AutomationGatewayImpl implements AutomationGateway {
...@@ -40,18 +44,24 @@ public class AutomationGatewayImpl implements AutomationGateway { ...@@ -40,18 +44,24 @@ public class AutomationGatewayImpl implements AutomationGateway {
} }
@Override @Override
@Counted(name = "automation_ztpGetDeviceRole_counter")
@Timed(name = "automation_ztpGetDeviceRole_histogram", unit = MetricUnits.MILLISECONDS)
public Uni<Automation.DeviceRole> ztpGetDeviceRole(Automation.DeviceRoleId request) { public Uni<Automation.DeviceRole> ztpGetDeviceRole(Automation.DeviceRoleId request) {
return Uni.createFrom() return Uni.createFrom()
.item(() -> Automation.DeviceRole.newBuilder().setDevRoleId(request).build()); .item(() -> Automation.DeviceRole.newBuilder().setDevRoleId(request).build());
} }
@Override @Override
@Counted(name = "automation_ztpGetDeviceRolesByDeviceId_counter")
@Timed(name = "automation_ztpGetDeviceRolesByDeviceId_histogram", unit = MetricUnits.MILLISECONDS)
public Uni<Automation.DeviceRoleList> ztpGetDeviceRolesByDeviceId( public Uni<Automation.DeviceRoleList> ztpGetDeviceRolesByDeviceId(
ContextOuterClass.DeviceId request) { ContextOuterClass.DeviceId request) {
return Uni.createFrom().item(() -> Automation.DeviceRoleList.newBuilder().build()); return Uni.createFrom().item(() -> Automation.DeviceRoleList.newBuilder().build());
} }
@Override @Override
@Counted(name = "automation_ztpAdd_counter")
@Timed(name = "automation_ztpAdd_histogram", unit = MetricUnits.MILLISECONDS)
public Uni<Automation.DeviceRoleState> ztpAdd(Automation.DeviceRole request) { public Uni<Automation.DeviceRoleState> ztpAdd(Automation.DeviceRole request) {
final var devRoleId = request.getDevRoleId().getDevRoleId().getUuid(); final var devRoleId = request.getDevRoleId().getDevRoleId().getUuid();
final var deviceId = serializer.deserialize(request.getDevRoleId().getDevId()); final var deviceId = serializer.deserialize(request.getDevRoleId().getDevId());
...@@ -63,6 +73,8 @@ public class AutomationGatewayImpl implements AutomationGateway { ...@@ -63,6 +73,8 @@ public class AutomationGatewayImpl implements AutomationGateway {
} }
@Override @Override
@Counted(name = "automation_ztpUpdate_counter")
@Timed(name = "automation_ztpUpdate_histogram", unit = MetricUnits.MILLISECONDS)
public Uni<DeviceRoleState> ztpUpdate(DeviceRoleConfig request) { public Uni<DeviceRoleState> ztpUpdate(DeviceRoleConfig request) {
final var devRoleId = request.getDevRole().getDevRoleId().getDevRoleId().getUuid(); final var devRoleId = request.getDevRole().getDevRoleId().getDevRoleId().getUuid();
final var deviceId = serializer.deserialize(request.getDevRole().getDevRoleId().getDevId()); final var deviceId = serializer.deserialize(request.getDevRole().getDevRoleId().getDevId());
...@@ -75,6 +87,8 @@ public class AutomationGatewayImpl implements AutomationGateway { ...@@ -75,6 +87,8 @@ public class AutomationGatewayImpl implements AutomationGateway {
} }
@Override @Override
@Counted(name = "automation_ztpDelete_counter")
@Timed(name = "automation_ztpDelete_histogram", unit = MetricUnits.MILLISECONDS)
public Uni<Automation.DeviceRoleState> ztpDelete(Automation.DeviceRole request) { public Uni<Automation.DeviceRoleState> ztpDelete(Automation.DeviceRole request) {
final var devRoleId = request.getDevRoleId().getDevRoleId().getUuid(); final var devRoleId = request.getDevRoleId().getDevRoleId().getUuid();
return automationService return automationService
...@@ -84,6 +98,8 @@ public class AutomationGatewayImpl implements AutomationGateway { ...@@ -84,6 +98,8 @@ public class AutomationGatewayImpl implements AutomationGateway {
} }
@Override @Override
@Counted(name = "automation_ztpDeleteAll_counter")
@Timed(name = "automation_ztpDeleteAll_histogram", unit = MetricUnits.MILLISECONDS)
public Uni<Automation.DeviceDeletionResult> ztpDeleteAll(ContextOuterClass.Empty empty) { public Uni<Automation.DeviceDeletionResult> ztpDeleteAll(ContextOuterClass.Empty empty) {
return Uni.createFrom().item(() -> Automation.DeviceDeletionResult.newBuilder().build()); return Uni.createFrom().item(() -> Automation.DeviceDeletionResult.newBuilder().build());
} }
......
...@@ -27,8 +27,9 @@ spec: ...@@ -27,8 +27,9 @@ spec:
- name: grpc - name: grpc
port: 5050 port: 5050
targetPort: 5050 targetPort: 5050
- name: http - name: metrics
port: 8080 protocol: TCP
port: 9192
targetPort: 8080 targetPort: 8080
selector: selector:
app.kubernetes.io/name: automationservice app.kubernetes.io/name: automationservice
...@@ -84,7 +85,7 @@ spec: ...@@ -84,7 +85,7 @@ spec:
name: grpc name: grpc
protocol: TCP protocol: TCP
- containerPort: 8080 - containerPort: 8080
name: http name: metrics
protocol: TCP protocol: TCP
readinessProbe: readinessProbe:
failureThreshold: 3 failureThreshold: 3
...@@ -96,3 +97,29 @@ spec: ...@@ -96,3 +97,29 @@ spec:
periodSeconds: 10 periodSeconds: 10
successThreshold: 1 successThreshold: 1
timeoutSeconds: 10 timeoutSeconds: 10
resources:
requests:
cpu: 50m
memory: 512Mi
limits:
cpu: 500m
memory: 2048Mi
---
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: automationservice-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: automationservice
minReplicas: 1
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 80
...@@ -179,6 +179,11 @@ ...@@ -179,6 +179,11 @@
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-smallrye-metrics</artifactId>
</dependency>
</dependencies> </dependencies>
<build> <build>
......
...@@ -20,6 +20,9 @@ import context.ContextOuterClass.ServiceId; ...@@ -20,6 +20,9 @@ import context.ContextOuterClass.ServiceId;
import io.quarkus.grpc.GrpcService; import io.quarkus.grpc.GrpcService;
import io.smallrye.mutiny.Uni; import io.smallrye.mutiny.Uni;
import javax.inject.Inject; import javax.inject.Inject;
import org.eclipse.microprofile.metrics.MetricUnits;
import org.eclipse.microprofile.metrics.annotation.Counted;
import org.eclipse.microprofile.metrics.annotation.Timed;
import policy.Policy; import policy.Policy;
import policy.Policy.PolicyRuleBasic; import policy.Policy.PolicyRuleBasic;
import policy.Policy.PolicyRuleDevice; import policy.Policy.PolicyRuleDevice;
...@@ -41,6 +44,8 @@ public class PolicyGatewayImpl implements PolicyGateway { ...@@ -41,6 +44,8 @@ public class PolicyGatewayImpl implements PolicyGateway {
} }
@Override @Override
@Counted(name = "policy_policyAddService_counter")
@Timed(name = "policy_policyAddService_histogram", unit = MetricUnits.MILLISECONDS)
public Uni<PolicyRuleState> policyAddService(PolicyRuleService request) { public Uni<PolicyRuleState> policyAddService(PolicyRuleService request) {
final var policyRuleService = serializer.deserialize(request); final var policyRuleService = serializer.deserialize(request);
...@@ -51,6 +56,8 @@ public class PolicyGatewayImpl implements PolicyGateway { ...@@ -51,6 +56,8 @@ public class PolicyGatewayImpl implements PolicyGateway {
} }
@Override @Override
@Counted(name = "policy_policyUpdateService_counter")
@Timed(name = "policy_policyUpdateService_histogram", unit = MetricUnits.MILLISECONDS)
public Uni<PolicyRuleState> policyUpdateService(PolicyRuleService request) { public Uni<PolicyRuleState> policyUpdateService(PolicyRuleService request) {
final var policyRuleService = serializer.deserialize(request); final var policyRuleService = serializer.deserialize(request);
...@@ -61,6 +68,8 @@ public class PolicyGatewayImpl implements PolicyGateway { ...@@ -61,6 +68,8 @@ public class PolicyGatewayImpl implements PolicyGateway {
} }
@Override @Override
@Counted(name = "policy_policyAddDevice_counter")
@Timed(name = "policy_policyAddDevice_histogram", unit = MetricUnits.MILLISECONDS)
public Uni<PolicyRuleState> policyAddDevice(PolicyRuleDevice request) { public Uni<PolicyRuleState> policyAddDevice(PolicyRuleDevice request) {
final var policyRuleDevice = serializer.deserialize(request); final var policyRuleDevice = serializer.deserialize(request);
...@@ -71,6 +80,8 @@ public class PolicyGatewayImpl implements PolicyGateway { ...@@ -71,6 +80,8 @@ public class PolicyGatewayImpl implements PolicyGateway {
} }
@Override @Override
@Counted(name = "policy_policyUpdateDevice_counter")
@Timed(name = "policy_policyUpdateDevice_histogram", unit = MetricUnits.MILLISECONDS)
public Uni<PolicyRuleState> policyUpdateDevice(PolicyRuleDevice request) { public Uni<PolicyRuleState> policyUpdateDevice(PolicyRuleDevice request) {
final var policyRuleDevice = serializer.deserialize(request); final var policyRuleDevice = serializer.deserialize(request);
...@@ -81,6 +92,8 @@ public class PolicyGatewayImpl implements PolicyGateway { ...@@ -81,6 +92,8 @@ public class PolicyGatewayImpl implements PolicyGateway {
} }
@Override @Override
@Counted(name = "policy_policyDelete_counter")
@Timed(name = "policy_policyDelete_histogram", unit = MetricUnits.MILLISECONDS)
public Uni<PolicyRuleState> policyDelete(PolicyRuleId request) { public Uni<PolicyRuleState> policyDelete(PolicyRuleId request) {
final var policyRuleId = serializer.deserialize(request); final var policyRuleId = serializer.deserialize(request);
...@@ -88,6 +101,8 @@ public class PolicyGatewayImpl implements PolicyGateway { ...@@ -88,6 +101,8 @@ public class PolicyGatewayImpl implements PolicyGateway {
} }
@Override @Override
@Counted(name = "policy_getPolicyService_counter")
@Timed(name = "policy_getPolicyService_histogram", unit = MetricUnits.MILLISECONDS)
public Uni<PolicyRuleService> getPolicyService(PolicyRuleId request) { public Uni<PolicyRuleService> getPolicyService(PolicyRuleId request) {
final var policyRuleBasic = PolicyRuleBasic.newBuilder().setPolicyRuleId(request).build(); final var policyRuleBasic = PolicyRuleBasic.newBuilder().setPolicyRuleId(request).build();
...@@ -96,6 +111,8 @@ public class PolicyGatewayImpl implements PolicyGateway { ...@@ -96,6 +111,8 @@ public class PolicyGatewayImpl implements PolicyGateway {
} }
@Override @Override
@Counted(name = "policy_getPolicyDevice_counter")
@Timed(name = "policy_getPolicyDevice_histogram", unit = MetricUnits.MILLISECONDS)
public Uni<PolicyRuleDevice> getPolicyDevice(PolicyRuleId request) { public Uni<PolicyRuleDevice> getPolicyDevice(PolicyRuleId request) {
final var policyRuleBasic = PolicyRuleBasic.newBuilder().setPolicyRuleId(request).build(); final var policyRuleBasic = PolicyRuleBasic.newBuilder().setPolicyRuleId(request).build();
...@@ -104,6 +121,8 @@ public class PolicyGatewayImpl implements PolicyGateway { ...@@ -104,6 +121,8 @@ public class PolicyGatewayImpl implements PolicyGateway {
} }
@Override @Override
@Counted(name = "policy_getPolicyByServiceId_counter")
@Timed(name = "policy_getPolicyByServiceId_histogram", unit = MetricUnits.MILLISECONDS)
public Uni<PolicyRuleServiceList> getPolicyByServiceId(ServiceId request) { public Uni<PolicyRuleServiceList> getPolicyByServiceId(ServiceId request) {
return Uni.createFrom().item(() -> Policy.PolicyRuleServiceList.newBuilder().build()); return Uni.createFrom().item(() -> Policy.PolicyRuleServiceList.newBuilder().build());
} }
......
...@@ -17,16 +17,16 @@ apiVersion: v1 ...@@ -17,16 +17,16 @@ apiVersion: v1
kind: Service kind: Service
metadata: metadata:
annotations: annotations:
app.quarkus.io/commit-id: e369fc6b4de63303f91e1fd3de0b6a591a86c0f5 app.quarkus.io/commit-id: 8065cee75be759e14af792737179537096de5e11
app.quarkus.io/build-timestamp: 2022-11-18 - 12:56:37 +0000 app.quarkus.io/build-timestamp: 2023-03-30 - 13:49:59 +0000
labels: labels:
app.kubernetes.io/name: policyservice app.kubernetes.io/name: policyservice
app: policyservice app: policyservice
name: policyservice name: policyservice
spec: spec:
ports: ports:
- name: http - name: metrics
port: 8080 port: 9192
targetPort: 8080 targetPort: 8080
- name: grpc - name: grpc
port: 6060 port: 6060
...@@ -39,8 +39,8 @@ apiVersion: apps/v1 ...@@ -39,8 +39,8 @@ apiVersion: apps/v1
kind: Deployment kind: Deployment
metadata: metadata:
annotations: annotations:
app.quarkus.io/commit-id: e369fc6b4de63303f91e1fd3de0b6a591a86c0f5 app.quarkus.io/commit-id: 8065cee75be759e14af792737179537096de5e11
app.quarkus.io/build-timestamp: 2022-11-22 - 14:10:01 +0000 app.quarkus.io/build-timestamp: 2023-03-30 - 13:49:59 +0000
labels: labels:
app: policyservice app: policyservice
app.kubernetes.io/name: policyservice app.kubernetes.io/name: policyservice
...@@ -53,8 +53,8 @@ spec: ...@@ -53,8 +53,8 @@ spec:
template: template:
metadata: metadata:
annotations: annotations:
app.quarkus.io/commit-id: e369fc6b4de63303f91e1fd3de0b6a591a86c0f5 app.quarkus.io/commit-id: 8065cee75be759e14af792737179537096de5e11
app.quarkus.io/build-timestamp: 2022-11-22 - 14:10:01 +0000 app.quarkus.io/build-timestamp: 2023-03-30 - 13:49:59 +0000
labels: labels:
app: policyservice app: policyservice
app.kubernetes.io/name: policyservice app.kubernetes.io/name: policyservice
...@@ -65,12 +65,12 @@ spec: ...@@ -65,12 +65,12 @@ spec:
valueFrom: valueFrom:
fieldRef: fieldRef:
fieldPath: metadata.namespace fieldPath: metadata.namespace
- name: MONITORING_SERVICE_HOST
value: monitoringservice
- name: CONTEXT_SERVICE_HOST
value: contextservice
- name: SERVICE_SERVICE_HOST - name: SERVICE_SERVICE_HOST
value: serviceservice value: serviceservice
- name: CONTEXT_SERVICE_HOST
value: contextservice
- name: MONITORING_SERVICE_HOST
value: monitoringservice
image: labs.etsi.org:5050/tfs/controller/policy:0.1.0 image: labs.etsi.org:5050/tfs/controller/policy:0.1.0
imagePullPolicy: Always imagePullPolicy: Always
livenessProbe: livenessProbe:
...@@ -86,10 +86,10 @@ spec: ...@@ -86,10 +86,10 @@ spec:
name: policyservice name: policyservice
ports: ports:
- containerPort: 8080 - containerPort: 8080
name: http name: metrics
protocol: TCP protocol: TCP
- containerPort: 6060 - containerPort: 6060
name: grpc name: grpc-server
protocol: TCP protocol: TCP
readinessProbe: readinessProbe:
failureThreshold: 3 failureThreshold: 3
...@@ -101,3 +101,29 @@ spec: ...@@ -101,3 +101,29 @@ spec:
periodSeconds: 10 periodSeconds: 10
successThreshold: 1 successThreshold: 1
timeoutSeconds: 10 timeoutSeconds: 10
resources:
requests:
cpu: 50m
memory: 512Mi
limits:
cpu: 500m
memory: 2048Mi
---
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: policyservice-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: policyservice
minReplicas: 1
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 80
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment