1import { k8CriticalStorClass } from '../../priorityClassF.mts'2import { deployLabel } from '../../kubeLabelsF.mts'4export const getDockerfileCfgMap = ({regConfigName}: {regConfigName: string}) => {5 return {6 apiVersion: 'v1',7 kind: 'ConfigMap',8 metadata: {9 name: regConfigName,10 },11 data: {12 'config.yml': `13version: 0.114log:15fields:16 service: registry17storage:18cache:19 blobdescriptor: inmemory20filesystem:21 rootdirectory: /var/lib/registry22http:23addr: :500024headers:25 X-Content-Type-Options: [nosniff]26health:27storagedriver:28 enabled: true29 interval: 10s30 threshold: 331proxy:32 remoteurl: https://registry-1.docker.io33`.trim()34 }35 }36}38export const getDeploymentTmpl = ({name, htpasswd_secret_name, regConfigName}: {name: string, htpasswd_secret_name: string, regConfigName: string}) => {39 const pvcname = name41 return {42 apiVersion: 'apps/v1',43 kind: 'Deployment',44 metadata: {45 name,46 labels: {47 name,48 },49 },50 spec: {51 selector: {52 matchLabels: { name }53 },54 replicas: 1,55 template: {56 metadata: {57 labels: {58 name,59 [deployLabel]: name,60 }61 },62 spec: {63 priorityClassName: k8CriticalStorClass,64 containers: [65 {66 name: 'registry',67 image: 'registry:2',68 imagePullPolicy: 'Always',69 env: [70 {71 name: 'REGISTRY_AUTH',72 value: 'htpasswd'73 },74 {75 name: 'REGISTRY_AUTH_HTPASSWD_PATH',76 value: '/auth/htpasswd'77 },78 {79 name: 'REGISTRY_AUTH_HTPASSWD_REALM',80 value: 'Registry Realm'81 },82 {83 name: 'REGISTRY_HTTP_ADDR',84 value: '0.0.0.0:80'85 },86 {87 name: 'REGISTRY_STORAGE_DELETE_ENABLED',88 value: 'true'89 },90 {91 name: 'REGISTRY_HTTP_SECRET',92 valueFrom: {93 secretKeyRef: {94 name,95 key: 'REGISTRY_HTTP_SECRET'96 }97 }98 },99 ],100 ports: [101 {102 containerPort: 80103 }104 ],105 volumeMounts: [106 {107 mountPath: '/var/lib/registry',108 name: 'registry-data'109 },110 {111 name: 'htpasswd',112 mountPath: '/auth',113 readOnly: true114 },115 ]116 }117 ],118 volumes: [119 {120 name: 'registry-data',121 persistentVolumeClaim: {122 claimName: pvcname123 }124 },125 {126 name: 'htpasswd',127 secret: {128 secretName: htpasswd_secret_name129 }130 },131 {132 name: regConfigName,133 configMap: {134 name: regConfigName135 }136 }137 ]138 }139 }140 }141 }142}