본문 바로가기

TIL/잡다한

[Airflow] git-sync의 git-credential 생성시 주의할 점(feat. echo)

반응형

 

이번에 docker-compose로 구성되어있던 airflow를 kubernetes환경으로 바꿔야하는 작업이 있었는데, 이번 기회에 git repo와 연동해서 dags을 생성하는 git-sync요소도 활용해보고자 했다.

 

airflow의 helm chart를 읽어보면, 특정 레포에 아이디와 패스워드가 요구될경엔 아래처럼 작업하라고 써져있다.

	# if your repo needs a user name password
    # you can load them to a k8s secret like the one below
    #   ---
    #   apiVersion: v1
    #   kind: Secret
    #   metadata:
    #     name: git-credentials
    #   data:
    #     # For git-sync v3
    #     GIT_SYNC_USERNAME: <base64_encoded_git_username>
    #     GIT_SYNC_PASSWORD: <base64_encoded_git_password>
    #     # For git-sync v4
    #     GITSYNC_USERNAME: <base64_encoded_git_username>
    #     GITSYNC_PASSWORD: <base64_encoded_git_password>
    # and specify the name of the secret below
    #
    # credentialsSecret: git-credentials

 

그래서 git-credentials.yaml파일을 만들고 아래와같이 작업을 진행했다.

apiVersion: v1
kind: Secret
metadata:
    name: git-credentials
data:
    GITSYNC_USERNAME: abcd=
    GITSYNC_PASSWORD: abcd=

 

하지만 실행해보았을때 git-sync-init initContainer에서 createContainerConfigError가 발생했고, 로그를 보니 GIT_SYNC_USERNAME이 없다라고 표시되고있었다. 근데 단순히 WARNING이라서 무시를 했는데 git-credentials.yaml에 때려넣었더니 문제가 사라졌다.

Warning Failed kubelet Error: couldn't find key GIT_SYNC_USERNAME in Secret git-credentials
apiVersion: v1
kind: Secret
metadata:
    name: git-credentials
    namespace: infra-airflow
data:
    GITSYNC_USERNAME: abcd=
    GITSYNC_PASSWORD: abcd=
    GIT_SYNC_USERNAME: abcd=
    GIT_SYNC_PASSWORD: abcd=

 

이제 createContainerConfigError는 사라졌지만, authentication error가 발생하고 있었다.

이상했다, 내가 여태까지 사용해왔던 username, password가 틀렸다는건데 이것저것 다시도해보았다. 예를들어, 이메일을 추가해보던지... 토큰을 바꿔보던지 등등...

 

하지만, 문제됐던건 credentials에 넣어줄때 사용했던 명령어(echo)에 있었다.

base64 encode를 진행할때 단순히 아래와같은 명령어를 사용했다.

echo "jaeyung" | base64
# amFleXVuZwo=

 

하지만... 보통 secret data를 기존 평문에서 base64로 encode를 진행할때는 -n 옵션을 넣어줘야한다는 stackoverflow 게시글을 보았다. 그리고 적용해보니 다른값이 출력됐다.

echo -n "jaeyung" | base64
# amFleXVuZw==

 

-n 옵션을 추가해서 기존 secret data를 다 업데이트를 해준이후에는 문제없이 git-sync가 되는걸 확인할수있었다. 정말 단순한 문제였지만 해결하는데 시간이 꽤걸렸다ㅠㅠ

반응형