kubernetes를 사용중 아래와 같은 피할 수 없는 딜레마에 빠질 경우가 있다.
위와 같은 고민 포인트는, backend 서버에서 db 커넥션을 열 때 credential이 필요할텐데 이 또한 같은 고민 포인트일 수 있다.
이전 글(링크)에서 소개한 secret provider class를 Azure Key Vault 와 함께 쓰면 해소가 가능하다. 하지만 여기서 더 나아가 Azure Key Vault를 활용할 때 팁을 조금 적어볼까 한다. 나도 매번 까먹고 매번 찾아서 글로 남겨서 보려고 한다.
Azure의 Key Vault를 secret provider class를 통해 사용하는 부분은 크게 어렵지 않게 되어있다. 하지만 위에 적은 예제처럼 여러 라인의 문자들을 하나의 secret으로 넣으려면 계속 한줄로 바껴서 올라간다.
심지어 portal에서도 아래와 현재 portal에서 다이렉트로 올리는 방법은 지원되지 않는다고 한다.
그럼 위에서 말한 powershell을 알아보자.
우선 아래의 링크와 같이 아주 친절히 설명되어져 있다.
https://learn.microsoft.com/en-us/azure/key-vault/secrets/multiline-secrets?wt.mc_id=AZ-MVP-5003065
Azure cli 사용
az keyvault secret set --vault-name "key_vault_이름" --name "secret_이름" --file ".txt_파일이름"
Powershell 사용
$RawSecret = Get-Content "secretfile.txt" -Raw
$SecureSecret = ConvertTo-SecureString -String $RawSecret -AsPlainText -Force
Set-AzKeyVaultSecret -VaultName "key_vault_이름" -Name "secret_이름" -SecretValue $SecureSecret
위와 같이 txt 파일로 미리 저장해놓고 해당 파일을 업로드 하는 느낌으로 사용하면 된다.
AKS를 쓸 때, 공개되도 좋은 데이터들은 configmap이나 secret 정도로 사용해도 되지만, 정말 노출 되면 안되는 데이터들은 Azure Key Vault를 사용하는 방법을 권장한다.
사용시 줄바꿈이 필요하면 위의 명령어를 통해 multi라인을 넣자!!