1import { calcHash } from '../serverF/calcHashF.mts'2import { dockerApproot } from './constantsF.mts'3import { secretsRelDir } from '../serverF/secretsDirF.mts'4import * as _ from 'lodash-es'5import { secretFileTemplate, secretTemplate, secretNameToK8sResName, secretNameToK8sVolName } from './k8sF/k8sSecF.mts'6import { res1Action } from './k8sF/resActionsF/res1ActionF.mts'7import { resourcesAction } from './k8sF/resourcesActionF.mts'8import { assertDefined } from '../sharedF/assertsF/assertDefinedF.mts'9import { prodPtDiskDir } from '../serverF/ptDiskF/ptDiskF.mts'10import { disabledSecret } from '../sharedF/disabledSecretF.mts'11import { isApplyishAction } from './k8sF/applyishActionF.mts'13export const getVolumesForSecrets = ({secretNames, envConf, cluster_name, name, action, appRoot}: {14 secretNames: string[], envConf?: Record<string, string>, cluster_name: string,15 name: string, action: string, appRoot?: string,16}) => {17 const promises: Promise<unknown>[] = []19 secretNames = _.without(secretNames, disabledSecret)21 assertDefined(cluster_name)23 const secretResources: any[] = []24 const secrets = secretNames.map((secretName) => {25 const kubeSecretName = secretNameToK8sResName(secretName)26 const volName = secretNameToK8sVolName(secretName)27 if (isApplyishAction(action)) secretResources.push(secretFileTemplate({name: secretName as any}))28 return {kubeSecretName, volName, secretName}29 })30 if (secretResources.length) {31 promises.push(resourcesAction({resources: secretResources as any, action, cluster_name}))32 }34 const secretsMountRoot = appRoot || dockerApproot35 const volumeMounts: {name: string, mountPath: string, subPath?: string}[] = secrets.map(({secretName, volName}) => ({36 name: volName,37 mountPath: [`${secretsMountRoot}/${secretsRelDir}`, secretName].join('/'),38 subPath: secretName,39 }))40 const volumes: any[] = secrets.map(({volName, kubeSecretName}) => ({41 name: volName,42 secret: {43 secretName: kubeSecretName,44 defaultMode: 256,45 }46 }))48 let envConfS = ''49 if (envConf) {50 const kubeName = ['kube-envconf', name].join('-')51 envConfS = JSON.stringify(envConf, null, 2)52 const envConfSec = secretTemplate({name: kubeName, secretsH: {envConfS}})54 promises.push(res1Action({action, cluster_name, resource: envConfSec}))55 volumes.push({56 name: kubeName,57 secret: {58 secretName: kubeName,59 }60 })61 volumeMounts.push({62 name: kubeName,63 mountPath: `${dockerApproot}/data/envConf.json`,64 subPath: 'envConfS'65 })66 }67 if (cluster_name == 'minik') {68 const hostMountName = 'host-mount'69 volumes.push({70 name: hostMountName,71 hostPath: {72 path: prodPtDiskDir73 }74 })75 volumeMounts.push({76 mountPath: prodPtDiskDir as string, name: hostMountName77 })78 }81}