ํ์ฌ ์นด์นด์ค๋ฑ ํฌ์์ ํด๋ผ์ฐ๋ ์์ง๋์ด(SRE)๋ก ๊ทผ๋ฌดํ๊ณ ์์ต๋๋ค. ์๋น์ค๋ฅผ ์ํ ์ํคํ ์ฒ๋ฅผ ์ค๊ณ/์ ๊ณตํ๊ณ , ์กฐ์ง์์ ํ์ํ ๋ค์ํ ๋๊ตฌ๋ค์ ๋ง๋ค๊ณ ์ ๊ณตํ๊ฑฐ๋ ๊ตฌ์ถํ๋ ๋ฑ์ ์ผ์ ํ๊ณ ์์ต๋๋ค.
๋ฌธ์: 7424069@gmail.com
Courses
Reviews
- Understanding and Securing AWS Cloud IAM in Practice
- Building AWS FinOps Applications Using Python
- Getting Started with Docker and Containers
- Understanding and Securing AWS Cloud IAM in Practice
- [DevOps] Creating a fast and secure application deployment pipeline (CI/CD)
Posts
Q&A
์น์ 4 ํ๋ก์ ํธ ์ฝ๋
์๋ ํ์ธ์. ์๋ ๋งํฌ์์ ํ์ธ ๊ฐ๋ฅํฉ๋๋ค.https://github.com/cjsrkd3321/hands-on-aws-security/tree/main/Projects/anfw
- 1
- 1
- 7
Q&A
mysql ์ ์ ์๋ฌ
์๋ ํ์ธ์. ๊ฐ์์์ mysql์ ํ์ฉํ๋ ๋ถ๋ถ์ด ์๋๋ฐ ์ด๋ค ๋ถ๋ถ ์ค์ต ์งํํ์๋ค๊ฐ ๋งํ์ ๊ฑธ๊น์?
- 0
- 1
- 60
Q&A
PostgreSQL ์ค์ต์ ์๋ ์ค๋ฅ ๋ฐ์ํฉ๋๋ค.
์๋ ํ์ธ์.ํ์์์์๋ ์ญ์ฌ๋์ฌ๊ฐ ์๋๋ผ ๋ฐฑํฑ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์๋ ๋งํฌ ํ๊ณ ๋ถํ๋๋ ค์.https://hianna.tistory.com/691์๋๋ฉด, ๋ช ๋ น์ ํ ์ค๋ก ๋ง๋ค์ด ์ฌ์ฉํด์ฃผ์๊ธฐ ๋ฐ๋๋๋ค.๊ด๋ จ ๋ด์ฉ์ ๊ฐ์ ์ฝ๋๋ค์ ์ฃผ์์ผ๋ก ๋ฃ์ด๋๊ฒ ์ต๋๋ค.์ธ์ฌํ ๊ณ ๋ คํ์ง ๋ชปํด ์ฃ์กํฉ๋๋ค.์ฒ๊ฐ๋ฏผ ๋๋ฆผ.
- 1
- 1
- 60
Q&A
๋์ปค๋ฅผ ์คํํ๊ธฐ ์ํด ๋ฌด์์ด ๋ ํ์ํ๊ฐ์?
์๋ ํ์ธ์!Windows์ ๊ฒฝ์ฐ ์ด์์ฒด์ ๋ฒ์ , WSL ๋๋ Hyper-V ์ฌ์ฉ ์ฌ๋ถ ๋ฑ์ ๋ฐ๋ผ ์์ธ์ด ๋ค๋ฅผ ์ ์๊ธฐ์ ํ์ค์น๋ ์์ง๋ง ๋ช ๊ฐ์ง ํ์ธ ๊ฐ๋ฅํ ๋ฐฉ์ ์ค๋ช ๋๋ฆด๊ฒ์! (๋์ปค ๋ฐ์คํฌํ ์ฑ์ด ์ ์์ ์ผ๋ก ์ค์น๋๊ณ ๋ ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ํ์ธ ๋ฐฉ๋ฒ์ ์์ ๊ด๋ฆฌ์์์ Docker Desktop์ด ์ ์ ์คํ์ค์ธ์ง ํ์ธ ๊ฐ๋ฅํฉ๋๋ค.)์๋์ฐํค -> ์์คํ ํ๊ฒฝ ๋ณ์ ํธ์ง -> ๊ณ ๊ธ -> ํ๊ฒฝ ๋ณ์ -> ํ๊ฒฝ ๋ณ์ ํธ์ง(Path) -> C:\Program Files\Docker\Docker\resources\bin ์ด ๋ฑ๋ก๋์ด ์๋์ง ํ์ธํด์ฃผ์ธ์.https://stackoverflow.com/a/73625821์ ๋งํฌ ์ฐธ๊ณ ํ์๋ฉด ์ฌ์ง์ด ์์ต๋๋ค.๋ง์ฝ 1๋ฒ์ด ์ ๋ฑ๋ก๋์ด ์๋ค๋ฉด, ์ปดํจํฐ ์ฌ๋ถํ ์ ํ ๋ฒ ์ํํด์ฃผ์ธ์.์ฌ๋ถํ ํ์๋ ์๋๋ค๋ฉด, 1๋ฒ์ C:\~ ๊ฒฝ๋ก์ docker๊ฐ ์๋์ง ํ์ธํด์ฃผ์ธ์.3๋ฒ์ docker๊ฐ ์๋ค๋ฉด ์ ์์ ์ผ๋ก ์ค์น๋์ง ์์ ๊ฒ์ด๊ณ , ๋ง์ฝ ์กด์ฌํ๋ค๋ฉด ํด๋น ๊ฒฝ๋ก์์ ํฐ๋ฏธ๋์ ์ด์ด์ ์ง์ ์คํํด๋ณด์๊ธฐ ๋ฐ๋๋๋ค.๋ง์ฝ 4๋ฒ์์ ์ง์ ์คํ์ด ๋๋ค๋ฉด 1๋ฒ์ ํ๊ฒฝ๋ณ์๊ฐ ์ ์์ ์ผ๋ก ๋์ํ์ง ์๋ ๊ฒ์ผ ์ ์์ต๋๋ค. ์์๋ฅผ ๋ณ๊ฒฝํ๊ฑฐ๋ ๋ฑ๋กํ ํ๊ฒฝ๋ณ์๊ฐ ์ฌ๋ฐ๋ฅธ์ง ๋ค์ ํ ๋ฒ ํ์ธ ๋ถํ๋๋ฆฌ๊ฒ ์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค.์ฒ๊ฐ๋ฏผ ๋๋ฆผ.
- 1
- 2
- 88
Q&A
first before
์๋ ํ์ธ์. ์๋์ ๊ฐ์ด ์ค์ ํ๋ฉด ๊ฐ๋ฅํ๊ธด ํฉ๋๋ค.default: before_script: - echo "default" override: before_script: - "" script: - echo "job1 ์คํ"์ ํํ ์ด๋ค ๊ฒ์ ํ์๋ ค๋๊ฑด์ง๋ ๋ชฐ๋ผ์ ๊ธฐ๋ฅ์ ์ผ๋ก๋ง ์๊ฐ ๋๋ฆฝ๋๋ค. ๊ฒฐ๊ณผ๋ ์๋์ ๊ฐ์ต๋๋ค.(์ฌ์ง)์ฐธ๊ณ ๋ถํ๋๋ฆฝ๋๋ค.
- 1
- 1
- 46
Q&A
Private Subnet๊ณผ Gitlab
์๋ ํ์ธ์.์ง๋ฌธ์ฃผ์ ๋ด์ฉ์ ์ ๊ฐ ์ ๊ณตํ๋ ๊ฐ์์ ๊ด๋ จ ์๋ ๋ด์ฉ์ผ๋ก ๋ณด์ ๋๋ค.๋ํ, ํด๋น ๋ด์ฉ๋ค์ ์ ๋ฐ์ ์ธ ํ๊ฒฝ์ ๋ฐ๋ผ ๊ตฌ์ฑ์ด๋ ์ค์ ์ด ๋ฌ๋ผ์ง ์ ์์ ๊ฒ ๊ฐ์ ์ ๊ณตํด์ฃผ์ ๋ด์ฉ๋ง์ผ๋ก๋ ๋ต๋ณ๋๋ฆฌ๊ธฐ๋ ์ด๋ ค์ธ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค.๊ฐ์ ๋ด์ฉ๊ณผ ๊ด๋ จ๋ ์ง๋ฌธ ๋ถํ๋๋ฆฌ๊ฒ ์ต๋๋ค.๊ฐ์ฌํฉ๋๋ค.
- 0
- 2
- 154
Q&A
docker compose watch๊ฐ ์๋ ๋ช ๋ น์ด๋ก ์ถ๋ ฅ๋ฉ๋๋ค.
์๋ ํ์ธ์!https://docs.docker.com/compose/how-tos/file-watch/์ ๋งํฌ ๋ณด๋ฉด ๋ฒ์ ์ด 2.22.0 ์ด์์ด์ด์ผ ๋๋ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค.https://docs.docker.com/compose/install/linux/#update-compose์ ๋งํฌ ์ฐธ๊ณ ํ์ ์ ์ ๋ฐ์ดํธ ํด๋ณด์๊ธฐ ๋ฐ๋๋๋ค!๊ฐ์ฌํฉ๋๋ค.
- 1
- 1
- 167
Q&A
Bind Mount์์ ๋ง์ดํธ๊ฐ ๋์ง ์์ต๋๋ค. (ํ์ผ/๊ฒฝ๋ก ๋์ผ)
์๋ ํ์ธ์!๋๋ ํ ๋ฆฌ๋ฅผ ํ์ผ์ ๋ง์ดํธ ํ๋ ค ํ๊ฑฐ๋, ํ์ผ์ ๋๋ ํ ๋ฆฌ์ ๋ง์ดํธ ํ๋ ค ํ์ ๋ ๋ฐ์ํ๋ ์ค๋ฅ๋ก ๋ณด์ ๋๋ค.file index.html index.html: HTML document text, ASCII text file index.html index.html: directory์์ ๊ฐ์ด file ๋ช ๋ น์ ํตํด์,๋ก์ปฌ ๊ฒฝ๋ก์ ์กด์ฌํ๋ ๋ด์ฉ์ด ํ์ผ์ธ์ง ๋๋ ํ ๋ฆฌ์ธ์ง ํ์ธ ๋ถํ๋๋ฆฝ๋๋ค.(์ค๋ฅ๋ก ๋ด์๋ index.html์ด ๋๋ ํ ๋ฆฌ์ธ ๊ฒ ๊ฐ์ ๋ณด์ ๋๋ค.)๊ฐ์ฌํฉ๋๋ค.
- 1
- 2
- 327
Q&A
๊นํ๋ธ ์ก์ ์์ deploy๊ฐ ์คํจํด์
์๋ ํ์ธ์!26err: ERROR: failed to solve: failed to read dockerfile: open Dockerfile: no such file or directory 27err: Error response from daemon: No such container: 843371319 28err: Unable to find image 'cokeholic-kim/docker-cicd-test:latest' locally์ง๋ฌธ ์ฃผ์ ๋ด์ฉ์ ์ ๋ถ๋ถ์ ๋ดค์ ๋ simple-cicd ์คํฌ๋ฆฝํธ ํ์ผ์ ์๋ ๋ถ๋ถ์ด ๋๋ฝ๋์ด ์๋๊ฒ ์๋์ง ์์ฌ๋๋ค์.(์ฌ์ง)์ ํํ ์ด๋ค ์ ํ ์ ํ์ จ๋์ง๋ฅผ ๋ชจ๋ฅด๋ ์ํฉ์ด๋ผ์ ์ ๋ด์ฉ ์ฌ๋ฐ๋ฅด๊ฒ ๋ค์ด๊ฐ ์๋์ง ํ์ธ ๋ถํ๋๋ฆฌ๊ฒ ์ต๋๋ค.์ ๋ด์ฉ ์ธ์๋ ๋ญ๊ฐ ์คํฌ๋ฆฝํธ๋ ๋์ปคํ์ผ ๋ถ๋ถ์์ ์ ๊ณตํด๋๋ฆฐ ๊ฒ๊ณผ ๋ค๋ฅธ ๋ด์ฉ์ด ์๋๊ฑธ๋ก ๋ณด์ ๋๋ค. ๊ฐ๋ฅํ์๋ค๋ฉด ํ์ฉ์ค์ด yamlํ์ผ๊ณผ ๋์ปค ํ์ผ ๋ด์ฉ๋ ๊ณต์ ํด์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.
- 1
- 2
- 398
Q&A
IRSA ์ ํ ํฐ์ด ์ต๋ 24์๊ฐ์ธ๋ฐ ๋ง๋ฃ๋๋ฉด ์ด๋ป๊ฒ ๋๋์?
์๋ ํ์ธ์! ์ข์ ์ง๋ฌธ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.๋จผ์ ์์ ์ผ ํ๋๊ฑด ํ ํฐ์ ๋ฐ๊ธํ๊ณ ์ฃผ์ ํ๋ ๊ธฐ๋ฅ์ k8s์ ๊ธฐ๋ฅ์ด๋ผ๋ ๊ฒ ์ ๋๋ค.k8s 1.12 ๋ฒ์ ๋ถํฐ ๋์ ๋ ProjectedServiceAccountToken ์ด๋ผ๋ ๊ธฐ๋ฅ์ผ๋ก, ์์ธํ ๋ด์ฉ์ projected volume ์ด๋ผ๋ ํค์๋์ ํจ๊ป ์ฐพ์๋ณด์๊ธธ ๊ถ์ฅ ๋๋ฆฝ๋๋ค. (๋ง ๊ทธ๋๋ก k8s์ ๊ธฐ๋ฅ์ด๊ธฐ์...)์์ ๊ธฐ๋ฅ์ AWS์ Identity providers ๊ธฐ๋ฅ๊ณผ ์ฐ๊ณํด์ ์ฌ์ฉํ๋๊ฒ IRSA๋ผ๊ณ ๋ณด์๋ฉด ๋ฉ๋๋ค. (๊ทธ๋ฆฌ๊ณ AWS์ ๋ฑ๋ก๋ ํ๋ก๋ฐ์ด๋๋ฅผ ํตํด ๊ฒ์ฆํ๊ธฐ ์ํด EKS OIDC ์๋ํฌ์ธํธ๋ ๋ฌด์กฐ๊ฑด ํผ๋ธ๋ฆญ์ธ๊ฒ๋๋ค.)๊ฒฐ๊ณผ์ ์ผ๋ก ํ ํฐ์ ๋กํ ์ด์ ๋ํ k8s์ kubelet์ด ์ํ(์์ฒญ)ํฉ๋๋ค. ๋งํฌ๋ก ๊ฐ์ ์ ์กฐ๊ธ ๋ด๋ฆฌ๋ฉด ์๋์ ๊ฐ์ ๋ฌธ๊ตฌ๊ฐ ์์ต๋๋ค.The kubelet will: request and store the token on behalf of the Pod; make the token available to the Pod at a configurable file path; and refresh the token as it approaches expiration. The kubelet proactively requests rotation for the token if it is older than 80% of its total time-to-live (TTL), or if the token is older than 24 hours. The application is responsible for reloading the token when it rotates. It's often good enough for the application to load the token on a schedule (for example: once every 5 minutes), without tracking the actual expiry time.๋์ถฉ ์์ฝํ๋ฉด, "kubelet์ ํ ํฐ์ ์๋ช ์ด 80%๋ณด๋ค ์ค๋๋๊ฑฐ๋ 24์๊ฐ์ ๋์ผ๋ฉด ๋กํ ์ด์ ์ ์ํํ๋ค." ๊ฒ ์ฃ ?๊ฒฐ๊ตญ ์ค์ํ ์ผ์ k8s๊ฐ ๋ชจ๋ ์ํํ๋๊ฑฐ๊ณ , aws-eks-pod-identity-webhook์ ๋ณผ๋ฅจ๋ง์ดํธ์ ํ๊ฒฝ๋ณ์ ์ฃผ์ ์ ์ํํ๋๊ฑฐ๋ผ๊ณ ๋ณด์๋ฉด ๋ฉ๋๋ค! (์ค์ ์ ์ฉ๋ yaml ์์ )!๊ฟํ!์ ํ๋ ๋๋ฆฌ์๋ฉด, k8s preStop hook ์ฌ์ฉ ์ ํ ํฐ ๋กํ ์ด์ ์ด ์ ์์ ์ผ๋ก ๋์ง ์๋ ์ด์๊ฐ ์์ผ๋ ์ค์ ์ค๋ฌด์์ ์ฌ์ฉํ์ค ๋์๋ ์๋ด๋ ๊ฐ์ด ํด์ฃผ์๋ฉด ๊ฐ์ด ์ผํ์๋ ๋ถ๋ค๋ ์ข์ํ์ค ๊ฒ ๊ฐ์ต๋๋ค! (์ฅ์ ์ฌ์ ์๋ฐฉ ใ ใ )-์ถ๊ฐ- ์กฐ๊ธ ๋ ์ ํํ ๋ด์ฉ์ ๋งํฌ ์ฐธ๊ณ ํ์๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค์!๊ฐ์ฌํฉ๋๋ค!
- 1
- 1
- 408