apiVersion: apps/v1 kind: Deployment metadata: name: lionsdev-client namespace: lions-apps labels: app: lionsdev-client app.kubernetes.io/name: lionsdev-client app.kubernetes.io/part-of: lions-infrastructure app.kubernetes.io/managed-by: lionsctl app.kubernetes.io/version: "1.0.0" annotations: deployment.kubernetes.io/revision: "1" description: "Lions Dev professional website and client portal" spec: replicas: 3 strategy: type: RollingUpdate rollingUpdate: maxSurge: 1 maxUnavailable: 0 selector: matchLabels: app: lionsdev-client template: metadata: labels: app: lionsdev-client app.kubernetes.io/name: lionsdev-client app.kubernetes.io/part-of: lions-infrastructure app.kubernetes.io/version: "1.0.0" annotations: prometheus.io/scrape: "true" prometheus.io/port: "8080" prometheus.io/path: "/metrics" spec: serviceAccountName: lionsdev-client securityContext: runAsNonRoot: true runAsUser: 1001 runAsGroup: 1001 fsGroup: 1001 containers: - name: lionsdev-client image: registry.lions.dev/lionsdev/lionsdev-client:latest imagePullPolicy: Always ports: - name: http containerPort: 8080 protocol: TCP - name: metrics containerPort: 8080 protocol: TCP env: - name: KUBERNETES_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - name: HOSTNAME valueFrom: fieldRef: fieldPath: metadata.name - name: QUARKUS_PROFILE value: "prod" envFrom: - configMapRef: name: lionsdev-client-config - secretRef: name: lionsdev-client-secrets resources: requests: memory: "256Mi" cpu: "200m" limits: memory: "1Gi" cpu: "1000m" livenessProbe: httpGet: path: /health/live port: http scheme: HTTP initialDelaySeconds: 30 periodSeconds: 10 timeoutSeconds: 5 failureThreshold: 3 successThreshold: 1 readinessProbe: httpGet: path: /health/ready port: http scheme: HTTP initialDelaySeconds: 10 periodSeconds: 5 timeoutSeconds: 3 failureThreshold: 3 successThreshold: 1 startupProbe: httpGet: path: /health/started port: http scheme: HTTP initialDelaySeconds: 10 periodSeconds: 5 timeoutSeconds: 3 failureThreshold: 30 successThreshold: 1 securityContext: allowPrivilegeEscalation: false readOnlyRootFilesystem: true runAsNonRoot: true runAsUser: 1001 capabilities: drop: - ALL volumeMounts: - name: tmp mountPath: /tmp - name: logs mountPath: /app/logs volumes: - name: tmp emptyDir: {} - name: logs emptyDir: {} imagePullSecrets: - name: registry-lions-dev nodeSelector: kubernetes.io/os: linux tolerations: - key: "node.kubernetes.io/not-ready" operator: "Exists" effect: "NoExecute" tolerationSeconds: 300 - key: "node.kubernetes.io/unreachable" operator: "Exists" effect: "NoExecute" tolerationSeconds: 300 affinity: podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - weight: 100 podAffinityTerm: labelSelector: matchExpressions: - key: app operator: In values: - lionsdev-client topologyKey: kubernetes.io/hostname