본문 바로가기

전체 글

(67)
python xxx is not a package step function을 이용해 lambda를 실행시키는 도중에 에러가 떴다. enums가 package가 아니라고 한다. enums라는 package는 분명히 있는데 아니라고 하는 이유를 모르겠다. 코드를 유심히 본 결과, system path를 두 군데를 지정해줬는데, 그 두 군데에서 한 곳은 enums.py를, 한 곳은 enums폴더가 있고 안에 storage_enum.py가 있는 것이다. 이럴 경우에는 어떻게 될까, 한번 테스트 해봤다. /test/ - aaa/bbb.py - aaa.py 다음과 같이 test폴더 안에 aaa폴더와 aaa.py를 만들고 aaa폴더 안에 bbb.py를 만들었다. aaa.py 안에는 test라는 class를 만들었다. test폴더내에서 import aaa.bbb 혹은..
top을 통해 본 exe는 도대체 뭐지? t3.medium ec2를 ubuntu os로 띄워서 작업하고 있는데, 계속 ec2가 죽길래, t3.large로 스펙업을 했는데도 몇일 지나면 죽고, hard disk도 비워봤지만 계속 죽는다. ec2의 log를 보는데도, memory 문제도 아닌 거 같고, cloudwatch를 살펴보니 아래와 같이 cpu가 튀는 걸 볼 수 있다. 이유가 뭘까? 생각하다가 top 명령어를 통해 확인해봤다. exe라는건 도대체 뭔데 저렇게 높게 차지하는 거지. exe라는건 통상 exe 실행파일로 실행되는 프로그램을 의미한다. 따라서 단순히 top으로 실행하면 위와 같이 나오므로 top -c으로 검색해야한다. c옵션은 program 이름이 나오기 때문에 무엇이 잘못인지 알 수 있다. 내 경우 exe를 확인해보니 k3s였다...
pod내의 Serviceaccount token 값과 secret token값이 다른 이유. pod 내에서 service account 이름을 지정해 줄 수 있으며, 지정을 안할 경우 default로 지정이 된다. default service account는 namespace가 만들어지면 자동으로 생성되고, secret 또한 자동으로 생성된다. 이러한 secret은 namespace(현재 service account가 존재하는), token, ca.crt 정보가 들어가 있다. 그리고 pod에서 이러한 값들을 mount한다. 그런데 여기서 이상한 점이 발견됬다. secret의 token 내용과 mount 된 token 내용이 다른 것이다. secret의 token 내용 mount된 token 내용 내용이 다른 이유는 아래 링크에 설명되어있는데, https://stackoverflow.com/que..
terraform validation error: status code 400 in lambda creation terraform을 생성하려고 할 때 위의 에러를 만날 수도, 만나지 않을 수도 있다. 그 이유는 잘 나타나지 않는 에러이기도 하면서, 단순한 에러이기도 하기 때문이다. 나 역시 같은 terraform 코드를 이용해 우리 회사에서는 잘 되던 것들이, on premise로 다른 회사에 적용 시키려고 할 때 이 같은 에러가 발생해서, 구글링을 열심히 했다. 일단 400대의 코드를 보니 요청을 잘못했음을 알 수 있으며, 구글링 결과, terraform은 자세한 에러를 표시해주지 않고, 두리뭉실하게 표현하는 경향이 있다고 한다. 그래서 직접 에러를 자세히 보기 위해 aws cli를 이용해 lambda function을 생성해보도록 했다. master@www:~$ aws lambda create-function ..
nginx 경로가 제대로 안먹힐 때, proxy 슬래시(/)의 차이 유무 nginx를 처음 접했을 때 proxy 경로에 슬래시를 주냐 안주냐, 혹은 proxy match 경로에 슬래시를 주냐 안주냐로 엄청 헷갈렸었다. 처음에는 상관이 없어 보여서 슬래시를 신경안쓰고 nginx를 실행시키다보니 어쩔때는 되고, 어쩔때는 안되서 정말 답답할 지경이였다. 예를 들면 https://example.com/body/hand로 보내고 싶다고 하자. 1. location, proxy 둘다 /가 없을 때. location /body { proxy_pass localhost:3000; } -> localhost:3000/body/hand 로 간다. 2. location에는 /가 있고, proxy에는 /가 없을 때. location /body/ { proxy_pass localhost:3000; ..
kubernetes config, Role, Rolebinding 기본적인 kubernetes resource, option 등을 설명한 블로그입니다. 추가적인 기능을 보고싶으시면 docs를 참고바랍니다. https://kubernetes.io/docs/home/ Kubernetes Documentation Kubernetes is an open source container orchestration engine for automating deployment, scaling, and management of containerized applications. The open source project is hosted by the Cloud Native Computing Foundation. kubernetes.io 실제 서비스단계에서는 다양한 cluster, 다양한 c..
kubernetes etcdctl backup kubernetes volume, resources 등을 backup 하는 방법은 여러가지가 있다. 예를 들어 declative한 방법으로, 모든 resource를 하나의 yaml 파일안에 넣어 create하는 방법이 있다. kubectl get all --all-namespaces -o yaml > [file-name.yaml] -> 모든 resource 정보를 한 파일에 저장. 또한 etcdctl을 이용해 backup, restore 하는 방법도 있다. 하지만 아래와 같은 이유로 kubernetes 자원과 volume을 백업, 관리해주는 velero를 사용하는 것이 좋다. 개인 local에 kubernetes cluster가 있는 것이 아니라 GKE를 사용하는 등의 etcd 접근 권한이 없을 경우. ..
(에러)ecr에 docker image push할 때 나오는 에러 2가지 해결. ECR에 docker image를 push할 때 나오는 에러가 있다. 일단 첫번째로 no basic auth credentials 이다. 다음과 같이 ecr repository에 docker push를 하려고 하는데 no basic auth credentials가 뜬다. ecr에 image를 push하려고 할때 권한이 없어서 문제인건가? 그렇다면 ecr repository에 접근할 권한이 없는건가? 아니면 push할 권한이 없는걸까? 사실 push 할 권한같은 건 없다. 애초에 aws에서 ecr authorization을 인증할 때 token을 발행하는데 이러한 token이 12시간이 제한이고, 이러한 token으로만 권한을 부여하기 때문이다. 그렇다면 접근할 권한이 없는지 확인해야한다. 첫번째로 ~/...