애저에서 쿠버네티스로 서비스를 이전할 때, 수많은 환경변수를 일일히 변환하는 것이 너무나 번거로워 스크립트를 만들었다.
/**
* 1. azure portal > 앱서비스 구성 > 고급 편집 > 복사
* 2-1. 환경변수로 넣을 항목은 envs, 시크릿에 넣을 항목은 secrets에 붙여넣기
* 2-2. kubSecretName, namespace 변경
* 3. node secret_generator.js 로 실행
*/
const kubSecretName = '쿠버네티스 시크릿 이름';
const namespace = '쿠버네티스 네임스페이스 이름';
const envs = [
{
name: 'PORT',
value: '3000',
slotSetting: false,
},
];
const secrets = [
{
name: 'MSSQL_PASSWORD',
value: 'password',
slotSetting: false,
},
];
let kubSecret = '';
let deploymentTmpl = '';
const generatedSecret = secrets.map((s) => {
return {
originName: s.name,
name: s.name.toLowerCase().replace(/_/g, '-'),
value: Buffer.from(s.value).toString('base64'),
};
});
for (const item of envs) {
deploymentTmpl += `
- name: ${item.name}
value: "${item.value}"`;
}
for (const item of generatedSecret) {
kubSecret += `
${item.name}: ${item.value}`;
deploymentTmpl += `
- name: ${item.originName}
valueFrom:
secretKeyRef:
name: ${kubSecretName}
key: ${item.name}`;
}
const secretResult = `kind: Secret
apiVersion: v1
metadata:
name: ${kubSecretName}
namespace: ${namespace}
data:${kubSecret}
type: Opaque
`;
console.log(
'======================== add to K8s Secrets =============================='
);
console.log(secretResult);
console.log(
'======================== add to deployment.yaml =============================='
);
console.log(deploymentTmpl);
'Web development > Infra' 카테고리의 다른 글
Azure Pipeline node.js 람다 배포 템플릿 만들기 (0) | 2020.09.11 |
---|---|
[Azure to AWS] Azure Pipeline으로 AWS Lambda 배포하기 (0) | 2020.06.19 |
[EKS] 쿠버네티스에 AWS Credential 추가하기 (2) | 2020.06.10 |
[AWS] CodeStar로 브랜치별 production/staging 자동배포 환경 만들기 (0) | 2020.04.13 |
[AWS] SAM Local, CodeStar를 사용해 Lambda 로컬테스트 및 자동배포환경 만들기 (0) | 2020.04.09 |
댓글