quorate/vendor/platform/quay/vso.yaml

220 lines
6.8 KiB
YAML
Raw Permalink Normal View History

---
apiVersion: secrets.hashicorp.com/v1beta1
kind: VaultAuth
metadata:
name: default
namespace: quay
spec:
method: kubernetes
mount: kubernetes
kubernetes:
role: quay
serviceAccount: quay-vso
vaultConnectionRef: vault/vault
---
apiVersion: secrets.hashicorp.com/v1beta1
kind: VaultStaticSecret
metadata:
name: quay-config-bundle
namespace: quay
spec:
type: kv-v2
mount: secret
path: quay/secrets
destination:
name: quay-config-bundle
create: true
overwrite: true
transformation:
excludeRaw: true
excludes:
- .*
templates:
config.yaml:
text: |
AUTHENTICATION_TYPE: OIDC
BROWSER_API_CALLS_XHR_ONLY: false
DATABASE_SECRET_KEY: "{{ get .Secrets "database_secret_key" }}"
DB_URI: "postgresql://********@main-rw.postgres.svc.cluster.local:5432/quay?sslmode=require"
BUILDLOGS_REDIS:
host: quay.dragonfly.svc.cluster.local
password: "{{ get .Secrets "redis_password" }}"
port: 6379
DISTRIBUTED_STORAGE_CONFIG:
default:
- RadosGWStorage
- access_key: quay
secret_key: "{{ get .Secrets "s3_secret_key" }}"
bucket_name: quay-registry
hostname: s3.quorate.internal
is_secure: true
signature_version: v4
storage_path: /datastorage/registry
server_side_assembly: false
DISTRIBUTED_STORAGE_DEFAULT_LOCATIONS: []
DISTRIBUTED_STORAGE_PREFERENCE: ["default"]
EXTERNAL_TLS_TERMINATION: false
FEATURE_SECURITY_NOTIFICATIONS: true
FEATURE_SECURITY_SCANNER: true
FEATURE_SECURITY_SCANNER_NOTIFY_ON_NEW_INDEX: true
FEATURE_PROXY_CACHE: false
FEATURE_USER_CREATION: true
FEATURE_USER_INITIALIZE: true
PREFERRED_URL_SCHEME: https
SECRET_KEY: "{{ get .Secrets "secret_key" }}"
SECURITY_SCANNER_INDEXING_INTERVAL: 30
SECURITY_SCANNER_V4_ENDPOINT: http://quay-registry-clair-app.quay.svc.cluster.local
SECURITY_SCANNER_V4_INDEX_MAX_LAYER_SIZE: 8G
SECURITY_SCANNER_V4_MANIFEST_CLEANUP: true
SECURITY_SCANNER_V4_PSK: "{{ get .Secrets "clair_psk" }}"
SERVER_HOSTNAME: registry.quorate.internal
SUPER_USERS: ["********"]
USER_EVENTS_REDIS:
host: quay.dragonfly.svc.cluster.local
password: "{{ get .Secrets "redis_password" }}"
port: 6379
ZITADEL_LOGIN_CONFIG:
CLIENT_ID: "{{ get .Secrets "oidc_client_id" }}"
CLIENT_SECRET: "{{ get .Secrets "oidc_client_secret" }}"
LOGIN_SCOPES: ["openid", "email", "profile"]
OIDC_ISSUER: https://auth.quorate.dev
OIDC_SERVER: https://auth.quorate.dev/
PREFERRED_GROUP_CLAIM_NAME: groups
PREFERRED_USERNAME_CLAIM_NAME: preferred_username
SERVICE_NAME: Zitadel
clair-config.yaml:
text: |
http_listen_addr: :8080
introspection_addr: :8089
log_level: info
indexer:
connstring: "host=main-rw.postgres.svc.cluster.local port=5432 dbname=quay_clair user=******** sslmode=require"
scanlock_retry: 10
layer_scan_concurrency: 5
migrations: true
scanner:
package:
java:
api: https://central.sonatype.com/solrsearch/select
matcher:
connstring: "host=main-rw.postgres.svc.cluster.local port=5432 dbname=quay_clair user=******** sslmode=require"
migrations: true
notifier:
connstring: "host=main-rw.postgres.svc.cluster.local port=5432 dbname=quay_clair user=******** sslmode=require"
delivery_interval: 1m
migrations: true
poll_interval: 5m
webhook:
callback: http://quay-registry-clair-app/notifier/api/v1/notifications
target: https://registry.quorate.internal/secscan/notification
auth:
psk:
key: "{{ get .Secrets "clair_psk" }}"
iss: ["quay", "clairctl"]
updaters:
config:
rhel-vex:
ignore_unpatched: true
sets:
- alpine
- clair.cvss
- debian
- oracle
- photon
- rhcc
- rhel-vex
- suse
- ubuntu
metrics:
name: prometheus
extra_ca_cert_internal-ca.crt:
text: |
{{- get .Secrets "internal_ca_cert" -}}
refreshAfter: 1h
rolloutRestartTargets:
- kind: Deployment
name: quay-registry-quay-app
- kind: Deployment
name: quay-registry-clair
vaultAuthRef: default
---
apiVersion: secrets.hashicorp.com/v1beta1
kind: VaultDynamicSecret
metadata:
name: quay-db
namespace: quay
spec:
mount: database
path: static-creds/quay
allowStaticCreds: true
destination:
name: quay-db
create: true
overwrite: true
transformation:
excludeRaw: true
excludes:
- .*
templates:
username:
text: '{{ get .Secrets "username" }}'
password:
text: '{{ get .Secrets "password" }}'
refreshAfter: 1h
rolloutRestartTargets:
- kind: Deployment
name: quay-registry-quay-app
vaultAuthRef: default
---
apiVersion: secrets.hashicorp.com/v1beta1
kind: VaultDynamicSecret
metadata:
name: clair-db
namespace: quay
spec:
mount: database
path: static-creds/quay_clair
allowStaticCreds: true
destination:
name: clair-db
create: true
overwrite: true
transformation:
excludeRaw: true
excludes:
- .*
templates:
username:
text: '{{ get .Secrets "username" }}'
password:
text: '{{ get .Secrets "password" }}'
refreshAfter: 1h
rolloutRestartTargets:
- kind: Deployment
name: quay-registry-clair
vaultAuthRef: default
---
apiVersion: secrets.hashicorp.com/v1beta1
kind: VaultStaticSecret
metadata:
name: quay-cluster-pull
namespace: quay
spec:
type: kv-v2
mount: secret
path: quay/robots/cluster_pull
refreshAfter: 1h
destination:
name: quay-cluster-pull
create: true
overwrite: true
type: kubernetes.io/dockerconfigjson
transformation:
excludeRaw: true
excludes: [.*]
templates:
.dockerconfigjson:
text: >-
{"auths":{"registry.quorate.internal":{"auth":"{{ printf "%s:%s" (get .Secrets "username") (get .Secrets "token") | b64enc }}"}}}
vaultAuthRef: default