본문 바로가기
Web development/Infra

[Azure to EKS] Azure App Service -> k8s 이전시 환경변수 변환 스크립트

by 자몬다 2020. 6. 19.

애저에서 쿠버네티스로 서비스를 이전할 때, 수많은 환경변수를 일일히 변환하는 것이 너무나 번거로워 스크립트를 만들었다.

 

/**
 * 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);

댓글