분류 전체보기 782

게임으로 배우는 AWS S3(부제 S3 game)

안녕하세요. 이 글은 S3 game을 소개와 풀이방법을 설명합니다. S3 game이란? S3 game은 AWS S3를 쉽게 학습할 수 있도록 만든 게임입니다. 총 11문제로 구성되어 있습니다. 문제 풀이에 막히시는 분을 위해 문제마다 힌트를 제공합니다. s3 game 링크: http://s3game-level1.s3-website.us-east-2.amazonaws.com/ aws workshop 링크: https://catalog.us-east-1.prod.workshops.aws/workshops/8b034382-43bc-4525-a5ea-7c5e4c130c55/en-US 다음 문제를 풀기 위해 현재 단계의 문제를 풀어야 합니다. 문제 답이 다음 문제 링크이기 때문입니다. 문제 목록 Level1 - ..

aws 환경변수 초기화

환경변수 초기화이란? 환경변수 초기화는 AWS인증정보와 관련된 AWS환경변수를 삭제하는 것을 말합니다. 여러 AWS계정을 가지고 쉘에서 작업할 때 사용합니다. 쉘에서 AWS CLI 등 AWS 작업을 할 때, 환경변수를 사용하여 AWS 인증과정을 거칩니다. 안전하게 다른 AWS계정을 인증하려면, 기존 환경변수를 없애고 하고 환경변수를 다시 설정하는 것이 좋습니다. 또는 인증세션이 만료되었을 때 환경변수 초기화를 사용합니다. 환경변수 초기화 방법 인증에 관련된 환경변수 3개를 삭제하면 됩니다. unset AWS_ACCESS_KEY_ID unset AWS_SECRET_ACCESS_KEY unset AWS_SESSION_TOKEN Alias설정 환경변수 초기화 할 때마다 명령어를 입력하는 것은 귀찮습니다. 그래..

쿠버네티스 pod running과 ready 차이

팀 동료분이 질문주신 내용 중에 pod Running상태와 Ready가 뭐가 다른지 물어봤습니다. 저는 정확하게 몰라 같이 공부해보자고 답변을 하고 어떤 차이가 있는지 공부했습니다. 이 글에서 다루는 예제코드는 github에 공개되어 있습니다. github링크: https://github.com/choisungwook/pod_running_and_ready 1. 선수지식: pod의 컨테이너 pod는 1개 이상 컨테이너를 갖습니다. 예를 들어 아래 pod는 컨테이너 2개(nginx, busybox)를 갖습니다. 컨테이너 갯수는 kubectl get pod 결과에서 READY필드에 표시됩니다. 예제코드: https://github.com/choisungwook/pod_running_and_ready/tree..

Dockerfile ENTRYPOINT에 arg를 사용가능한지 테스트

테스트 목표 Dockerfile 변수인 arg를 Entrypoint안에 사용할 수 있는지 테스트합니다. ENTRYPOINT에 arg를 동적변수처럼 사용할 수 있는지 확인하는게 목표입니다. 결론 arg를 ENTRYPOINT에 사용할 수 있지만, 항상 빈값으로 설정됩니다. arg 값은 docker build에서만 유효한 값이므로 docker conatiner 실행할 때는 빈값으로 설정 되는 것 같습니다. 따라서, arg대신 ENV를 사용해야 ENTRYPOINT에 동적변수를 사용할수 있습니다. 단, ENTRYPOINT는 보간(interpolation)을 처리할 수 있는 쉘 스크립트로 시작해야 합니다. ENV JAVA_OPTS="" ENTRYPOINT ["sh", "-c", "java ${JAVA_OPTS} -..

Argocd rbac 테스트

팀 동료님이 사내 채팅에 argocd 권한 테스트에 대한 내용을 공유해주셨습니다. 공유한 글을 보다가 궁금한 점이 있어 몇 가지 테스트를 진행했습니다. 1. 테스트 목록 readonly권한에서 argocd application sync가 되는지? 거부(deny)권한 우선순위 2. 테스트 환경구축 테스트를 진행하기 위해 쿠버네티스와 argocd, argocd application이 필요합니다. 저는 쿠버네티스를 kind cluster로 사용했고 argocd는 kustomize로 했고 argocd버전은 v2.6.2입니다. argocd application은 argocd 공식 예제를 사용했습니다. 테스트 환경 구축과정은 이 글 마지막 부록 챕터를 참고해주세요. 테스트 환경에는 테스트에 필요한 계정과 권한을 생..

NLB를 장애상황 퀴즈

팀원끼리 퀴즈를 푸는 시간을 가졌었습니다. 퀴즈는 오류상황을 전달받고 왜 오류가 발생했는지 파악하는 문제였습니다. 막상 퀴즈를 제가 풀려고 하니 못 풀었습니다. 퀴즈 정답을 듣고 관련된 개념을 정리하고자 글을 작성합니다. 퀴즈 잘 실행되었던 웹 애플리케이션이 갑자기 연결에러가 발생했습니다. 그 원인을 찾는게 퀴즈였습니다. 웹 애플리케이션은 EC2 인스턴스에 실행되고 있고 NLB, Route53에 연결되어 있습니다. 모든 aws서비스는 상태가 정상입니다. EC2 인스턴스는 on-demand이고 웹 애플리케이션은 잘 실행되고 있다. NLB healthy check는 정상이다. route53에 NLB 접속주소를 잘 등록했다. 퀴즈 정답 NLB가 재생성되어서 접속오류가 발생합니다. NLB는 설정을 수정하면 재생..

테라폼 t102 스터디 - state

안녕하세요. 이 글은 테라폼 스터디에서 공부한 state를 정리했습니다. 영상: https://youtu.be/E2n3bZrzpKE 1. state란? 테라폼은 대상에 배포한 결과를 state로 관리합니다. 또한, 테라폼 실행 작업(생성/수정/삭제) 결정에 중요한 연할을 합니다. 예를 들어 state가 없으면 테라폼은 리소스 생성 작업을 실행합니다. 2. state 업데이트는 언제 될까? state는 테라폼이 실행된 후 생성됩니다. terraform CLI에서는 terraform apply를 실행한 후 state가 생성됩니다. 이미 state가 있다면 업데이트됩니다. state 업데이트 과정을 terraform refresh라고 부릅니다. 3. state 관리 3.1 state 포맷 state는 JSON..

연재 시리즈 2023.07.29

테라폼 t102 스터디 - 프로비저너(provisioner)

안녕하세요. 이 글은 테라폼 스터디 t102 3주차 내용을 정리했습니다. 1. 프로비저너란? 프로비저너(provisioner)는 테라폼 resource block기능 이외에 사용자 액션을 수행합니다. 예를 들어 resource block은 리소스를 생성/수정/삭제하는데 프로비저너를 사용하면, 리소스 작업 말고 API호출 등 사용자가 원하는 기능을 추가할 수 있습니다. 테라폼 공식문서에서 프로비저너 컨셉을 다음과 같이 설명합니다. "테라폼 모델이 표현하지 못하는 것들을 수행". 테라폼 모델이 표현하지 못한다는 의미는 테라폼 block 이외에 커스텀 기능은 수행하지 못한다는 의미로 해석할 수 있습니다. 2. 사용방법 프로비저너는 resource block에만 사용할 수 있습니다. resource block에..

연재 시리즈 2023.07.22

DNS 이해

안녕하세요. 이 글은 DNS가 무엇인지 공부한 내용을 정리했습니다. 1. 공부계기 AWS Route53, 쿠버네티스 coredns를 공부하면서, DNS 기초가 필요하다고 느꼈습니다. 2. DNS란? DNS(Domain Name System)는 도메인 이름(Domain name, 이하 도메인)을 관리하는 시스템입니다. 그럼 도메인은 무엇일까요? 도메인은 IP에 매칭되는 문자열입니다. 예를 들어, "google.com"은 도메인의 예시입니다. 우리가 "google.com" 주소를 사용하여 구글 홈페이지에 접속할 수 있던 이유는 바로 DNS 덕분입니다. DNS는 도메인을 해당하는 IP로 변경해주기 때문에, 우리는 편리하게 인터넷에서 도메인을 이용할 수 있습니다. 3. DNS를 사용하는 이유 그런데 IP를 사용..

테라폼 t102 스터디 - dynamic block

안녕하세요. 이 글은 테라폼 t102스터디 2주차에 공부했던 내용을 정리했습니다. 1. dynamic block이란? dynamic block은 block 인자(argument)를 반복 생성합니다. count/for_each와 차이점은 반복 대상입니다. count/for_each는 block이 대상이지만, dynamic block은 block 인자가 대상입니다. 2. 사용방법 사용방법은 block 인자를 dynamic block으로 변경하면 됩니다. dynamic block body는 테라폼 변수(variable) 또는 local을 사용합니다. 아래 예제는 변수를 사용했습니다. ① 반복할 argument 값을 local 또는 variable로 정의(꼭 collection타입) ② argument를 dyn..

연재 시리즈 2023.07.15