quorate/vendor/platform/quay/clair.yaml

232 lines
6.6 KiB
YAML
Raw Permalink Normal View History

---
apiVersion: v1
kind: ServiceAccount
metadata:
name: quay-registry-clair
namespace: quay
labels:
app.kubernetes.io/name: clair
app.kubernetes.io/instance: quay-registry
app.kubernetes.io/component: security-scanner
quay-operator/quayregistry: quay-registry
---
apiVersion: v1
kind: Service
metadata:
name: quay-registry-clair-app
namespace: quay
labels:
app.kubernetes.io/name: clair
app.kubernetes.io/instance: quay-registry
app.kubernetes.io/component: security-scanner
quay-component: clair-app
quay-operator/quayregistry: quay-registry
spec:
type: ClusterIP
selector:
app.kubernetes.io/name: clair
app.kubernetes.io/instance: quay-registry
app.kubernetes.io/component: security-scanner
quay-component: clair-app
quay-operator/quayregistry: quay-registry
ports:
- name: clair-http
port: 80
protocol: TCP
targetPort: clair-http
- name: clair-introspection
port: 8089
protocol: TCP
targetPort: clair-intro
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: quay-registry-clair
namespace: quay
labels:
app.kubernetes.io/name: clair
app.kubernetes.io/instance: quay-registry
app.kubernetes.io/component: security-scanner
quay-component: clair-app
quay-operator/quayregistry: quay-registry
spec:
replicas: 2
revisionHistoryLimit: 3
selector:
matchLabels:
app.kubernetes.io/name: clair
app.kubernetes.io/instance: quay-registry
app.kubernetes.io/component: security-scanner
quay-component: clair-app
quay-operator/quayregistry: quay-registry
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
template:
metadata:
labels:
app.kubernetes.io/name: clair
app.kubernetes.io/instance: quay-registry
app.kubernetes.io/component: security-scanner
quay-component: clair-app
quay-operator/quayregistry: quay-registry
spec:
serviceAccountName: quay-registry-clair
imagePullSecrets:
- name: quay-cluster-pull
securityContext:
runAsNonRoot: true
runAsUser: 65534
runAsGroup: 65534
fsGroup: 65534
fsGroupChangePolicy: OnRootMismatch
seccompProfile:
type: RuntimeDefault
affinity:
nodeAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
preference:
matchExpressions:
- key: has-zfs
operator: In
values:
- "true"
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchExpressions:
- key: quay-component
operator: In
values:
- clair-app
topologyKey: kubernetes.io/hostname
topologySpreadConstraints:
- maxSkew: 1
topologyKey: kubernetes.io/hostname
whenUnsatisfiable: ScheduleAnyway
labelSelector:
matchLabels:
app.kubernetes.io/name: clair
app.kubernetes.io/instance: quay-registry
app.kubernetes.io/component: security-scanner
quay-component: clair-app
quay-operator/quayregistry: quay-registry
containers:
- name: clair-app
image: registry.quorate.internal/quorate/clair@sha256:b3040b6c61df5b6a261c981d2fb9c794244879b01e9842806cb8f11dbdc28bde
imagePullPolicy: IfNotPresent
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
env:
- name: CLAIR_CONF
value: /clair/config.yaml
- name: CLAIR_MODE
value: combo
- name: PGPASSWORD
valueFrom:
secretKeyRef:
name: clair-db
key: password
- name: SSL_CERT_FILE
value: /var/run/certs/internal-ca.crt
ports:
- name: clair-http
containerPort: 8080
protocol: TCP
- name: clair-intro
containerPort: 8089
protocol: TCP
startupProbe:
tcpSocket:
port: clair-intro
failureThreshold: 300
periodSeconds: 10
timeoutSeconds: 1
readinessProbe:
tcpSocket:
port: clair-http
failureThreshold: 3
periodSeconds: 10
timeoutSeconds: 1
livenessProbe:
httpGet:
path: /healthz
port: clair-intro
scheme: HTTP
failureThreshold: 3
periodSeconds: 10
timeoutSeconds: 1
resources:
requests:
cpu: "2"
memory: 2Gi
limits:
cpu: "4"
memory: 16Gi
volumeMounts:
- name: config
mountPath: /clair/config.yaml
subPath: config.yaml
readOnly: true
- name: internal-ca
mountPath: /var/run/certs/internal-ca.crt
subPath: internal-ca.crt
readOnly: true
- name: indexer-layer-storage
mountPath: /var/tmp
volumes:
- name: config
secret:
secretName: quay-config-bundle
items:
- key: clair-config.yaml
path: config.yaml
- name: internal-ca
secret:
secretName: quay-config-bundle
items:
- key: extra_ca_cert_internal-ca.crt
path: internal-ca.crt
- name: indexer-layer-storage
emptyDir:
sizeLimit: 20Gi
---
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: quay-registry-clair-app
namespace: quay
labels:
app.kubernetes.io/name: clair
app.kubernetes.io/instance: quay-registry
app.kubernetes.io/component: security-scanner
quay-operator/quayregistry: quay-registry
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: quay-registry-clair
minReplicas: 2
maxReplicas: 2
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 90
- type: Resource
resource:
name: memory
target:
type: Utilization
averageUtilization: 90