🌳
pt0/deployF/servicesF/ethRpcIngressAI.mts
1import { createHash } from 'crypto'
7const authSecretName = 'ethrpc-basic-auth', authUsername = 'ethrpc'
9const basicAuthAnnotationsH = {
10 'nginx.ingress.kubernetes.io/auth-type': 'basic',
11 'nginx.ingress.kubernetes.io/auth-secret': authSecretName,
12 'nginx.ingress.kubernetes.io/auth-realm': 'ETH RPC',
15const shaHtpasswd = (username: string, password: string) => {
16 const sha1 = createHash('sha1').update(password).digest('base64')
17 return `${username}:{SHA}${sha1}`
20export const k8sEthRpcIngress = async ({execHostname, beaconHostname, execSvcName, execPortNo = 8545, beaconSvcName, beaconPortNo}: {execHostname: string, beaconHostname: string, execSvcName: string, execPortNo?: number, beaconSvcName: string, beaconPortNo: number}) => {
21 const password = await genPlainSecretIfMissing({secretName: authSecretName, autoYes: true}) as string
22 const htpasswdLine = shaHtpasswd(authUsername, password)
24 const resources = [
25 secretTemplate({name: authSecretName, secretsH: {auth: htpasswdLine}}),
27 name: 'ethrpc', svcName: execSvcName, hostname: execHostname, portNo: execPortNo,
28 ingressAnnotationsH: basicAuthAnnotationsH,
29 }),
31 name: 'ethbeacon', svcName: beaconSvcName, hostname: beaconHostname, portNo: beaconPortNo,
32 ingressAnnotationsH: basicAuthAnnotationsH,
33 }),
34 ]
35 await resourcesAction({resources})