본문 바로가기

전체 글

(67)
terraform -lock=false?? terraform으로 backend와 dynamodb를 지정하여 state locking을 시도했을 때 아래와 같은 에러를 만나고 그냥 시키는 대로 -lock=false를 줬을 것이다. 하지만 위의 에러에서 제일 마지막에 말했듯이 하면 위험하다는 뜻이기도 하기때문에 왜 에러가 발생하는지 어떻게 고치는지 알아보자. 사실 엄청 쉬운 문제다. 전에 내가 작성한 블로그에서 dynamodb가 lock권한을 부여할 때 key값을 보고 파일을 확인하는 절차를 따른다고 했다. https://cksdid4993.tistory.com/64 (에러)terraform dynamodb validException key error terraform을 실행시킬 때 backend라는 개념과 dynamodb라는 개념이 있다. 이러한 ..
(에러)terraform dynamodb validException key error terraform을 실행시킬 때 backend라는 개념과 dynamodb라는 개념이 있다. 이러한 개념을 잠깐 설명하자면, 만약 여럿이서 resource를 관리하려고 할 때 서로 같은 state를 공유하기 위해 backend에 state file을 지정하여 init할 때 현재 state file의 상태를 보고 판단한다. 보통 backend는 s3를 이용하는데 아래와 같이 준다. s3에 접근하기 위한 key들과 s3 bucket이름, 그리고 저장될 파일경로 등등이 쓰인다. 만약 backend로 state를 공유하지 않는다면, A 사람: apply로 name이 "test"인 ecr 생성 B 사람: 똑같이 name이 "test"인 ecr을 생성. 위의 경우에 B사람은 이미 test가 있다는 에러가 뜬다. 물론..
kubernetes networks, ingress, ingress controller 1. 기본적인 networking ip link # interface 확인 ip addr add [본인 cidr ex)192.168.0.5/24] dev [interface name ex)eth0] route # 다른 network로 가기위한 route table 확인 # 0.0.0.0의 gateway는 내부망으로 이동. ip route add [dest cidr 192.168.1.0/24] via [본인 게이트웨이 ex)192.168.0.1] # dest cidr에 default나 0.0.0.0을 넣어 모든 request는 게이트웨이로 보낼 수 있다. echo 1 > /proc/sys/net/ipv4/ip_forward # 중간다리 해주는 linux host는 default로 interface # fo..
kubernetes cluster upgrade kubernetes의 버전이 빠르게 update 되고 있는 시점에서 update를 어떻게 하면 좋을지 작성해보려고 한다. kubernetes 공식 문서에 cluster upgrade라고 검색하면 나오는데 그 과정을 정리해보겠다. cluster의 version을 upgrade하기 위해서 바로 최신버전으로 upgrade하는 것이 아니고 한단계를 upgrade를 해야한다. master node upgrade -> worker node upgrade at once(한번에) or 한개씩 한개씩. or add new version node. 1. Control plane upgrade master node를 먼저 upgrade를 하고 worker node를 차근차근 upgrade 하는 방식이다. 만약 node만 u..
(에러)terraform Error: Required plugins are not installed terraform에서 여러번 init하고 destroy하면 위와 같은 에러가 발생할 수 있다. 위의 에러내용은 현재 설치된 provider plugins이 그 전에 init으로 설치된 dependency lock file안에 있는 packages과 맞지 않는다는 것이다. 버전문제일수도 있고, package 자체가 안맞을 수도 있고, 그래서 해결하기 위해서는 terraform init을 하라고 나오는데 저래도 해결이 안됨으로 .terraform.lock.hcl을 삭제한 뒤에 다시 terraform init하면 잘된다.
fastapi background task in startup 다음과 같이 fastapi에서 background task를 할 수 있다. from fastapi import BackgroundTasks, FastAPI app = FastAPI() def write_notification(email: str, message=""): with open("log.txt", mode="w") as email_file: content = f"notification for {email}: {message}" email_file.write(content) @app.post("/send-notification/{email}") async def send_notification(email: str, background_tasks: BackgroundTasks): background..
(에러)RuntimeError: Task <Task pending name='Task-1' coro=<update_one() running at test.py:7> cb=[_run_until_complete_cb() from bson.objectid import ObjectId from motor.motor_asyncio import AsyncIOMotorClient import asyncio a = AsyncIOMotorClient(mongourl) async def update_one(): print("complete") return await a[database][collection].insert_one({"_id": ObjectId("61bc40f123a9a9ac317d51c5")},{"a":"b"}) asyncio.run(update_one()) 위와 같이 asyncio.run을 시키자 아래와 같은 에러가 발생했다. 과연 이러한 에러는 무엇일까? 일단 구글링 한 결과 loop = asyncio.get_eve..
(에러)WARNING: Some networks were defined but are not used by any service docker를 이용해서 mongo replicaset을 만들어 migration을 하는 과정 중 initialize 하려고 mongo를 들어가려는 순간 docker-compose exec demo-mongo-primary mongo -u "root" -p "1234" 이러한 에러가 나타났다. 일단 docker-compose.yaml에서 networks networks: demo-replica-set: driver: bridge ipam: driver: default config: - subnet: 172.10.99.0/24 default: external: false 그리고 docker-compose up을 하면 아주 잘떠있는 것을 확인할 수 있다. 하지만 이러한 mongo replicaset은 tls를..