1import { eptClusterSync } from "../../deployF/eptClusterSyncF.mts"2import * as klusterCfg from "./common.mjs"3import { k8sHarvDashboardHn } from "../../deployF/harvF/limitHarvHostnameF.mts"4import { dlKubeConfig, k8sHarvDashboardPw, k8sUpdateKubeconfig } from "../../deployF/harvF/setupHarvesterF.mts"5import { k8sHarvSsh } from "../../deployF/harvF/setupHarvSshF.mts"6import { k8sCertManager } from "../../deployF/k8sF/initialSetupF/certmanager/doSyncCertManagerF.mts"7import { k8sCerts } from "../../deployF/k8sF/initialSetupF/certmanager/leWcCertF.mts"8import { k8sExtDns } from "../../deployF/k8sF/initialSetupF/externaldns/doSyncExtDnsF.mts"9import { k8sHarvExtIpSvcs } from "../../deployF/harvF/doSyncHarvExtIpSvcsF.mts"10import { k8sHarvExtIp } from "../../deployF/harvF/harvExtIpsSyncF/mkjob.mts"11import { k8sDockerReg } from "../../deployF/k8sF/initialSetupF/dockreg/doSync.mts"12import { k8sRegCache } from "../../deployF/k8sF/initialSetupF/regcacheF/doSync.mts"13import { k8sCnPg } from "../../deployF/cnpgF/setupCnpgF.mts"14import { k8sFixHarvServerSnippet } from "../../deployF/harvF/fixHarvServerSnippetF.mjs"15import { k8sHarvSyncCacertsToken } from "../../deployF/harvF/harvSyncCacertsTokenAI.mts"16import { clusterTokenSecName } from './harvPxeF/sharedF.mjs'17import { k8sMinio } from "../../deployF/servicesF/minioF/doSyncMinioF.mts"18import { k8sLonghornBackup } from "../../deployF/harvF/setupLonghornBackupF.mts"19import { k8sVaultwarden } from "../../deployF/servicesF/syncVaultWardenF.mts"20import { vwRestoreAction } from "../../deployF/servicesF/vwRestoreAI.mts"21import { doUpdateImgs } from "../../deployF/dockerF/fetchLatestDockerTagAI.mts"22import { ptPathToAbsPath, toPtRelPath } from "../../serverF/pathF/absPathToPtPathF.mts"23import { k8sGitSsh } from "../../deployF/servicesF/gitsshF/epGitSshAI.mts"24import { gitsshCtx } from "../../deployF/servicesF/gitsshF/gitsshCtxF.mts"25import { tsImportMetaUrl } from "../../ptDirF.mts"27const nodeHostname = 'harv2demoorng'29const vwPinFiles = ['pt0/deployF/servicesF/vwLitestreamAI.mts', 'pt0/deployF/servicesF/vwRcloneAI.mts', 'pt0/deployF/servicesF/syncVaultWardenF.mts']30const updateimg = async () => {31 for (const ptRel of vwPinFiles) await doUpdateImgs({filePath: ptPathToAbsPath(toPtRelPath(ptRel))})32}33updateimg.cliDescript = 'fetch latest vaultwarden/litestream/rclone tags and bump the pins'35export default await eptClusterSync({36 ...klusterCfg,37 importMetaUrl: tsImportMetaUrl(import.meta.url),38 extraActionsH: {vwrestore: vwRestoreAction({name: 'bitwarden'}), updateimg},39 steps: {40 k8sHarvSsh: () => k8sHarvSsh({nodeHostnames: ['harv2demoorng', 'harv2demothin']}),41 k8sHarvDashboardPw: () => k8sHarvDashboardPw({nodeHostname}),42 dlKubeConfig: () => dlKubeConfig({nodeHostname}),43 k8sCertManager,44 k8sCerts,46 k8sExtDns,47 k8sHarvExtIpSvcs: () => k8sHarvExtIpSvcs({}),48 k8sUpdateKubeconfig,49 k8sRegCache: () => k8sRegCache({regcacheHost: klusterCfg.regcacheHost, regcacheLanHost: klusterCfg.regcacheLanHost, sizeGb: 200}),50 k8sDockerReg: () => k8sDockerReg({dockreg_host: klusterCfg.dockreg_host, dockLanHost: klusterCfg.dockLanHost}),51 k8sHarvSyncCacertsToken: () => k8sHarvSyncCacertsToken({clusterTokenSecName}),52 k8sFixHarvServerSnippet,53 k8sHarvDashboardHn: () => k8sHarvDashboardHn({hostnameA: ['harvester-33c60d34.harv2lan.demokluster.com', 'harvester-33c60d34.harv2.demokluster.com']}),54 k8sHarvExtIp,55 k8sCnPg,57 k8sMinioHetzback: () => k8sMinio({bucketHostname: 'hztxtzng-20510rm0iz0z0yr454c9u1s789a62w0t.harv2.demokluster.com', sizeGb: 150}), // derivedhn58 k8sLonghornBackup: () => k8sLonghornBackup({bucket_name: 'longhorn-backup-harv2demo'}),59 k8sVaultwarden: () => k8sVaultwarden({hostname: 'bitwarden5rpzws8dpl.bb.demokluster.com', withLitestream: true}),61 name: 'harv2demo-gitssh',62 repoName: 'ptrepo',63 sshHostAlias: 'harv2demo-gitssh',64 sshKeyPath: '~/.ssh/id_ed25519',65 authorizedPubKeyPaths: ['~/.ssh/id_ed25519.pub', '~/.ssh/id_fw.pub'],66 pvcStorClassName: 'monor-1replic-infrasc-anydisk',67 gitsshHttpsHostname: 'gitssh.harv2.demokluster.com', // derivedhn68 initRepos: ['ptrepo', 'mynotes', 'opencode-sessions'],69 }, k8sGitSsh),70 },71})