전체 글 311

EC2인스턴스 생성 & ssh연결 & 웹서버로 동작확인 & 업그레이드

# 개요 EC2는 ECC의 약자이고, 이건 elacstic compute cloud의 약자이다. 인스턴스라는건 우리가 aws의 컴퓨터를 한대 빌리는거다. 가장 근본적인 클라우드 서비스의 형태라고 봐도 된다. 이걸 빌려서 웹사이트를 띄울수도 있고 원하는 작업을 시킬수 있는 등 근본적인 클라우드서비스의 '컴퓨터를 빌린다'라는 개념을 EC2를 다루면서 이해할 수 있다. # EC2인스턴스 생성 aws콘솔에서 EC2를 검색해서 EC2콘솔에 들어가자. 왼쪽탭에 인스턴스를 들어가자. 인스턴스를 하나 대여할거다. 인스턴스 시작 버튼을 누르자. 먼저 인스턴스 이름을 정해주자. 난 muzzi instance로 정해줬다. 그다음 이 인스턴스의 이미지를 선택해줄 수 있다. 실제로 우리가 온프레미스로 VM을 만들게되면, VMw..

AWS/concept 2024.01.01

비용관리 cost explorer & budget alert

# 개요 aws서비스를 사용하면서 가장 걱정되는 부분이 aws 비용부분일것이다. 실수로 만든 리소스가 계속 과금되어 비용이 청구될 수 있고, 행여나 해킹을 당해서 수천만원의 과금이 될수도있다. 이런부분을 관리하기위해 포스팅을 하기로 했다. # cost explorer 비교적 최근에 생긴 기능이다. aws문제풀면서도 많이 보이는데 들어가보니 괜찮다. 일단 가는 방법은, 우측상단에서 결제 및 비용관리에 들어간다. 그다음 우측에서 cost Explorer탭에 들어간다. 그럼 이런창이 뜬다. 난 아무것도 안썼기 때문에 월별평균비용이 0원으로 되어있는데 만약 다른 리소스를 쓰게된다면 돈이 청구된다. 마우스를 올려놓은데보면 어떤 리소스에서 비용이 청구되었는지 비율로 나온다. 쓰기 참 편하게 되어있다 ㅎ # 비용이상..

AWS/concept 2024.01.01

IAM user 생성

# 개요 맨 처음 aws계정을 만들면, root사용자로 로그인되어있다. 이 root사용자는 모든 권한을 가진 최상위권계정이므로 최대한 사용을 자제하는게 좋다. 참고로 root사용자의 대표적인 권한은 billing권한이다. aws는 청구서가 가장 무서우니까.. 그렇다면 어떻게 사용을 자제하는가? 바로 IAM유저를 생성해서 관리자 권한을 주고, 이 IAM유저로 aws를 사용할 예정이다. 물론 권한은 모든 권한을 줄거다. 참고로 IAM유저생성하고 등록하는건 돈안드니까 이번 포스팅에서 하는 실습은 돈걱정은 안해도된다. # IAM콘솔부터 드가자. aws 콘솔에서 IAM을 검색해서 IAM콘솔로 드가자. 난 참고로 즐찾도 해줬다. 이렇게 IAM대시보드로 들어가지는데 저기 '사용자'탭으로 접속해라 # IAM user생..

AWS/concept 2023.12.31

configMap

# 개념 configMap은 머랄까.. 객체같은거다. 자바스크립트에서 그냥 객체.. 키 값 쌍의 데이터가 여러개 묶음으로 관리되는 그런거라고 보면된다. 이런 객체 데이터들을 configMap으로 만들어두고 pod나 이런 리소스들에서 갖다 쓰는거다. 뭐 환경변수나 이런걸로 쓰게되면, 여러 pod들에 모두 적용되는 특정 환경변수, 예를들어 db접근정보라던지.. 이런게 변경되었을경우 모든 pod에서 일일히 수정&적용해줘야하는데, configMap으로 관리하게 된다면 configMap에서만 변경해주면 이에 연결된 모든 pod들에 해당 변경사항이 적용이 될거라 생각했는데.. env는 안된다. pod를 삭제하고 다시만들어줘야 적용이 되더라.. 대신 volume mount는 되고 참,.. 암튼 # configMap ..

k8s/concept 2023.12.21

deployment strategy - blue&green / rolling / canary

# 블루/그린 배포전략 맨처음은 deployment가 blue만 있다. 신버전인 rel: green 태그가 달린 deployment를 배포할때, service의 app: main셀렉터는 유지한채, 각각 deployment에서 rel: blue, rel: green으로 두개의 deployment를 생성하여 배포한다. 만약 신버전인 green버전에서 문제가 생기면, rel: green의 디플로이먼트를 삭제해서 롤백시키면 된다. 하지만 단점은 기존 blue버전말고 green버전을 새로 생성해야하기때문에 리소스가 두 배로 많이 든다. 만약 리소스 3개로 제한할거면.. blue를 2개로 하고, green을 한개로 해서 배포하는것도 맞는것같다. 이게 카나린가. # 블루그린 실제로 해보기 blue버전 deployme..

k8s/concept 2023.12.18

nodeLabels & annotation

## NodeLabels 우리는 pod에 라벨링을 해서 service나, deployment 또는 cli 커맨드상에서 selector조건에 맞는 라벨링을 가진 pod들에 대해서 컨트롤하는걸 배웠다. Nodelabels는 이런 pod뿐 아니라, 노드 자체에 라벨링을 하는 기능이다. 바로 예시를 들어보자면, 마스터노드가 pod를 생성하려고 할때, 이 pod가 생성될 노드를 골라야 하는 상황이 생겼다고 하자. 물론 우리는 예전에 pod yaml에서 resource로 cpu나 ram을 지정해줘서 알아서 선택적으로 배치 혹은 펜딩상태가 되도록 조절할 수 있었다. 하지만 nodelabel은 아예 리소스분량뿐 아니라, 여러가지 방향으로 라벨링만으로 리소스들을 배치시킬 수 있다. worker node1는 아주 좋은 컴..

k8s/concept 2023.12.14

labels

# 레이블 개념 난 라벨링이라고 했는데.. 일본식 발음방법이고 레이블이라고 한다. 컨트롤러와 서비스를 가지고 설명을 할때 써먹었던건데.. 레이블은 셀렉터로 인식할 레이블들을 말한다. 공식문서에서 deployment yaml양식을 가져와보면, apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.14.2 ports: - containerPort: 80 저기 d..

k8s/concept 2023.12.12

ingress/ test

실제로 ingress 컨트롤러로 dog.com이라는 사이트를 만들어 볼 예정이다. # 먼저 기본 namespace를 바꾸자. 쿠버네티스 namespace # 기본 개념 네임스페이스는 리소스들을 분리하고 관리하는거다. 그냥 컴퓨터에서 디렉토리 같은 분류라고 보면 될 것같다. 물론 디렉토리안에 또 다른 디렉토리 넣는것처럼 네임스페이스 안에 jacobowl.tistory.com 이전에 namespace를 포스팅하면서 기본 namespace를 바꿀 수 있는걸 봤었는데 실습을 하기위해서 우리는 기본 namespace를 ingress-nginx네임스페이스로 바꿀 예정이다. kubectl get namespace 이전 ingress설치 포스팅에서 deploy.yaml을 create해주면 ingress-nginx라는 ..

k8s/concept 2023.12.11

ingress/ 설치 & 개념

# 설치 사실 난 이미 다 설치해놨는데 실제로 설치할때 경로찾는게 중요할것 같아서 조금 자세하게 적어볼거다. k8s공식문서에서 ingress controller를 검색하고 저 링크로 들어간다. 그리고 저기에 쿠버네티스가 서포트 하고 있따는 aws,gce,nginx중 선택해야하는데 우리는 온프레미스 환경에서 텍스트할거니까 nginx를 선택하자. 그럼 깃헙 페이지가 뜨고 저기서 getting started를 누르면 Installation Guide - Ingress-Nginx Controller Installation Guide There are multiple ways to install the Ingress-Nginx Controller: with Helm, using the project reposit..

k8s/concept 2023.12.11

service/ headless service

# 개념 얘는 서비스타입이라곤 뭐한데.. 실제 한가지 서비스처럼 사용하는거다. 일단 clusterIP타입 service이지만, clusterIP를 None으로 해놔서 단일진입점이 없다. 그럼 얘는 어따가 쓰는걸까? # yaml양식 apiVersion: v1 kind: Service metadata: name: headless-service spec: type: ClusterIP clusterIP: None selector: pod-service: muzzi #clusterIP: 10.96.1.1 ports: - protocol: TCP port: 80 targetPort: 80 기초적인 clusterIP타입인 yaml양식과 같지만 저기 clusterIP필드에 None으로 명시적으로 적어줬다. 만약 clu..

k8s/concept 2023.12.07