DevOps 24

[Terraform] merge를 사용하여 변수 합치기

AWS 태그와 같이 map 타입의 리소스에서 1개의 값만 바꾸고 싶을 경우가 있다. 예를 들어, default_tag를 다음과 같이 정의할 수 있다. # vars.tf variable "default_tags" { type = map(string) default = { Name = "resource_name" Owner = "doldol-dev" Author = "doldol@naver.com" Phase = "dev" } } 생성할 AWS 리소스에 위의 태그를 똑같이 활용해야 하는데, 리소스 별로 Name 값만 다르게 하려면 아래와 같이 할 수 있다. local 변수에 바꾸려는 값만 정의한다. 바꾸려는 값과 기존의 값을 merge 한다. 이때, default 값이 무조건 앞에 들어가야한다. merge ..

DevOps/Terraform 2021.07.20

AWS CLI Configure 설정 (Ubuntu 20.02, WSL2 사용)

AWS에 리소스를 배포하기 위해 콘솔에서 GUI로 작업할 수도 있지만, cli를 활용하여 구성하는 것이 편할 때가 있다. 또한, Terraform을 사용하는 경우에는 AWS CLI가 필수이다. 가장 기본이 되는 AWS 공식 문서는 아래와 같다. https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/cli-configure-files.html 구성 및 자격 증명 파일 설정 - AWS 명령줄 인터페이스 이러한 설정은 전적으로 선택 사항입니다. 이러한 설정을 구성하지 않고도 aws s3 이전 명령을 성공적으로 사용할 수 있어야 합니다. 이러한 설정은 성능을 조정하거나 aws s3 명령을 실행 중인 특 docs.aws.amazon.com 액세스 키 발급 우선 콘솔에서..

DevOps/AWS 2021.07.14

Jenkins Plugins 최신으로 업데이트 하기(ex, Token Macro Plugin)

Jenkins Plugin의 버전이 낮아서 가끔 문제가 생기는 경우가 있다. Microsoft Teams에 Webhook을 보내기 위해서는 Token Macro Plugin이 설치되어 있어야 하고, 버전이 2.13이어야 한다. 지금은 업데이트 되어서 2.15로 보이지만, 원래는 2.13만 나와있고 2.15로 업그레이드 하게 해주는 버튼이 활성화 되지 않았다. 이를 업데이트 하기 위해서는 수동으로 플러그인을 다운받아서 업데이트 해줘야 한다. 아래 사이트는 jenkins 플러그인의 최신버전을 다운 받을 수 있는 주소이다. 여기서 업데이트 하려는 플러그인을 검색한 뒤, .hpi 확장자를 가진 파일을 다운 받는다. https://updates.jenkins.io/experimental/latest/ Permal..

DevOps/CICD 2021.05.24

[Kubernetes] .kube/config 수정하기(삭제)

현재 설치된 Kubernetes Cluster의 정보, context, user의 정보가 Config map으로 .kube/config에 저장되어 있다. 유저를 추가하거나, 클러스터를 추가하면 해당부분에 자동으로 추가가 된다. 더이상 안쓰는 클러스터, 유저를 삭제하려면 아래와 같은 명령어로 삭제가 가능하다. config파일은 굳이 수동으로 지우는것은 권장되지 않는다. kubectl config unset PROPERTY_NAME [options] # 클러스터 삭제(실제로 삭제는 아니고 여기서 연결을 끊는 것) kubectl config unset clusters.cluster_name # 컨텍스트 삭제 kubectl config unset contexts.context_name # 유저 삭제 kubect..

DevOps/Kubernetes 2021.03.24

[Kubernetes Study - 11] Pod - Qos(Quality of Service) Class

Pod의 남은 리소스가 부족한 경우, Pod는 다운되버린다. 하지만 Pod는 중요도가 각기 다르기 때문에, 중요한 Pod가 죽어버리면 서비스에 큰 문제가 생길 수 있다. 그렇기 때문에 상대적으로 중요도가 낮은 다른 Pod를 down 시키고 그만큼의 리소스를 중요도가 높은 Pod에 할당 할 수 있다. 쿠버네티스가 Pod를 생성할 때 다음의 3가지 QoS 클래스 중 하나를 할당한다. 각각을 명시적으로 설정할 수는 없고 컨테이너에 정의된 resources의 request, limits에 따라 쿠버네티스가 알아서 클래스를 적용해주는 것이다. Guranteed(가장 나중에 삭제) 모든 Container에 Request와 Limit가 설정되야 한다. Request와 Limit에는 Memory와 CPU가 모두 설정되..

DevOps/Kubernetes 2021.02.22

[Kubernetes Study - 10] Pod - readinessProbe, livenessProbe

Pod의 기본적인 라이프 사이클 Pending → Running → Succeeded → Failed Pending : 파드가 쿠버네티스 클러스터에서 승인되었지만 아직 컨테이너가 설정되지 않았음. 네트워크를 통한 컨테이너 이미지 다운로드 시간도 포함 Probe Probe의 상태 : Success, Failure, Unknown startupProbe : 어플리케이션이 시작 되었는지를 판단 startupProbe를 세팅한 경우, startupProbe가 OK신호를 보내줘야 readinessProbe 와 livenessProbe가 돌아간다. readinessProbe : 컨테이너가 요청을 처리할 준비가 되었는지 Pod가 새로 배포되고 Running 상태여도 그 안에 있는 컨테이너에서 배포되는 어플리케이션도 ..

DevOps/Kubernetes 2021.02.22

[Kubernetes] AKS의 워커노드에 접속하기

docs.microsoft.com/ko-kr/azure/aks/ssh AKS(Azure Kubernetes Service) 클러스터 노드에 대한 SSH 연결 만들기 - Azure Kubernetes Service 문제 해결 및 유지 관리 작업은 AKS(Azure Kubernetes Service) 클러스터 노드를 사용하여 SSH 연결을 만드는 방법을 알아봅니다. docs.microsoft.com 실행환경 : Ubuntu 18.06 또는 Mac AKS를 구성하고, Pod를 배포한 상황 Azure에서 PaaS로 제공하는 쿠버네티스 서비스를 사용하면, Master Node는 Azure에서 관리하고, 사용자는 Worker Node만 관리할 수 있다. AKS를 만들면 아래와 같이 가상머신확장집합 이라는 것이 생겼..

DevOps/Azure 2021.02.22

[Kubernetes Study - 09] - Replication Controller, ReplicaSet, Replicas, Selector

Controller Controller의 기능 Auto Healing Pod가 죽었을 때, 이 Pod를 다른 Node위에 새로 만들어준다. Auto Scaling Pod의 리소스 상태가 limit가 되었을 때, Controller가 Pod를 하나 더 만들어서 리소스의 부하를 낮춰준다. Software Update 여러 Pod에 대한 버전을 업데이트 하는 경우, 한번에 업데이트 가능 업데이트 중 문제가 생기면 롤백도 가능 Job 일시적인 작업을 해야하는 경우 그 순간에만 Pod(Job)을 만들어서 작업을 하고 삭제를한다. 그 순간에만 일시적으로 리소스를 늘렸다가 삭제하기 때문에 효율적인 리소스 활용 가능 ReplicationController ReplicationController는 Deprecated 되..

DevOps/Kubernetes 2021.02.20