728x90

.env 파일을 이용해 환경 변수를 설정하는 방식이 널리 사용되고 있습니다.
개인적으로는 dotenv 패키지를 이용해서 .env 파일을 사용중인데요
오랜만에 프로젝트 환경을 구성 하다보니 dotenv 패키지가 없더군요.

그런데!

pip install dotenv를 아무리 해도 설치되지 않는 당혹스러움을 마딱드렸습니다. 
패키지가 없어진건가? 사내 네트워크에서 막힌건가? 온갖 생각을 하다 찾아보니...
dotenv의 패키지 이름은 python-dotenv 였습니다 ㅠㅠ 
오랜만에 만난 그 이름... 어쩐지 익숙합니다.

pip install python-dotenv

당황하지 말고, python-dotenv를 설치하십시오, 닝겐!

728x90
728x90

CentOS를 비롯한 Redhat 계열에서는 Yum을 이용해 패키지를 관리합니다.
간혹 yum 으로 패키지를 설치하다 패키지 데이터베이스를 열 수 없다는 에러를 만날 수 있습니다.
영문 기준으로 rpmdb open failed 라는 메세지가 바로 그것이죠.

이런 상황을 해결하는 가장 쉬운 방법은 RPM DB 삭제입니다.
DB를 삭제한다고 뭔가 큰 일이 일어나는 것은 아닙니다. 
DB 자체에 뭔가 이슈가 생긴 경우이기 때문에 
DB 파일 삭제후 다시 생성하면 됩니다. 

rm -f /var/lib/rpm/_db*
rpm -vv --rebuilddb
728x90
728x90

리모트에 새로 생성된 브랜치가 있다면 가져오도록 하기 위해 다음의 명령을 사용합니다.
이 명령을 이용해 새로 생성된 브랜치의 정보를 로컬에 기록해 둘 수 있습니다.
네, 기록만 하는 것이고 소스코드를 실제로 가져오는 것은 아닙니다.

git remote update

 

그런데 이렇게 기록해둔 브랜치 정보는
특정 브랜치의 폐기와 같이 변화된 내용을 자동으로 반영하지는 못합니다. 
물론, `git branch -D` 옵션으로 로컬에서 정보를 지울 수 있지만
브랜치가 많은 경우에는 좋은 선택지가 아닙니다.

이럴 때는 다음의 명령을 이용해 특정 원격지의 브랜치를 확인하고
삭제된 브랜치는 로컬 브랜치 기록에서도 삭제하도록 할 수 있습니다.

git fetch {리모트명} --prune

혹은

git remote prune {리모트명}

참 쉽죠?

728x90
728x90

매일 매일 하지 않으면 다 까먹는게 k8s인 것 같습니다. 
여느 오픈소스들과 마찬가지로 마이너버전 업데이트가 이루어지더라도
여러가지 변경되는 점들이 워낙 많기 때문일 것 같습니다.

그 중에서도! 
ServiceAccount를 생성했을 때 같이 생성되던 Token이 만들어지지 않는 것은
분명 꼼꼼히 이것저것 살피지 않았다면 빠지기 쉬운 함정인 것 같습니다 ㅠㅠ

한 줄 요약 : k8s 1.24 버전 이후부터는 ServiceAccount 생성시 자동으로 Token이 생성되지 않습니다!

 

네, 1.24 버전 이후의 k8s를 사용한 클러스터로 작업중이라면 
ServiceAccount와 함께 수동으로 Token을 위한 Secret을 생성해야 합니다. 
예를 들어 보겠습니다. 

apiVersion: v1
kind: ServiceAccount
metadata:
  namespace: default
  name: drone-bot

1.24 버전까지는 위와 같이 ServiceAccount를 생성하면 
`drone-bot-token-j13b7`와 같은 스타일의 토큰이 자동으로 생성되었습니다. 

1.24 이후 버전부터는 보안 강화를 위해 토큰을 자동으로 생성하지 않습니다. 
따라서 아래와 같이 별도로 Secret 오브젝트를 생성해 줘야 합니다. 

apiVersion: v1
kind: Secret
metadata:
  name: drone-bot-secret
  namespace: default
  annotations:
    kubernetes.io/service-account.name: drone-bot
type: kubernetes.io/service-account-token

이렇게 하고나면 ServiceAccount에 대한 Token을 획득할 수 있습니다. 

% k get secret drone-bot-secret -n default
NAME               TYPE                                  DATA   AGE
drone-bot-secret   kubernetes.io/service-account-token   3      15s

% k get secret drone-bot-secret -n default -o yaml
apiVersion: v1
data:
  ca.crt: LS0tLS1CRUdJTi...
  namespace: ...
  token: ZX...
...

왜 자동으로 Token이 생성되지 않는지 한참 헤메였는데...
알게 모르게 k8s 버전이 1.25로 바뀌었는데 그걸 모르고 클러스터 만들고 삽질을 했었네요...
여러분은 삽질하지 마시라고 공유해 드립니다!

 

728x90

+ Recent posts