목록기록 일기 (242)
오늘도 한 뼘 더

# Provider 란? Terraform Provider는 Terraform에서 특정 Infrastructure플랫폼 AWS, Azure 등과 상호 작용하기 위한 플러그인이다. Terraform은 여러 프로바이더를 지원하여 다양한 클라우드 서비스 및 인프라 리소스를 코드로 관리할 수 있게 해주는 역할을 한다. 각각의 Terraform Provider는 해당 플랫폼의 API와 통신하여 리소스를 생성, 수정, 삭제 등을 수행하고 이를 통해 Infrastructure를 정의하고 관리할 수 있다. Provider는 Terraform 코드에서 사용되는 리소스 유형을 제공하고, 해당 리소스를 생성하거나 수정할 때 필요한 설정을 정의한다. # AWS Provider 설정 terraform { required_pro..

# helm 이란? Helm은 Kubernetes 애플리케이션을 관리하기 위한 오픈 소스 패키지 관리 도구이다. Helm을 사용하면 복잡한 애플리케이션 배포를 더 쉽게 관리할 수 있다. Helm은 "차트"라고 불리는 패키지 형식을 사용하여 Kubernetes 리소스를 구성하는 방법을 정의한다. # helm chart 란? Helm 차트는 Kubernetes 애플리케이션을 설치, 업그레이드 및 관리하는 데 사용되는 파일과 설정의 집합이다. 각 차트는 템플릿 및 값을 포함하며, 이를 사용하여 Kubernetes 리소스를 정의하고 구성할 수 있다. 차트 내부에는 애플리케이션의 구성 설정, 서비스, 디플로이먼트, 서비스 어카운트 등과 같은 Kubernetes 리소스 정의를 포함한다. # helm 장점 Helm을..

# Label Node, Pod, Deployment 등의 모든 리소스에 할당한다. 리소스를 분류하고 Selector를 사용하여 선택한다. 키-값 쌍으로 적용된다. # Label 할당 한 노드에 test=ok라는 label을 할당한다 kubectl --context=test label node {node name} test=ok # Label 조회 노드에 할당되어 있는 Label 조회하기 kubectl --context=test get nodes --show-lables # Label 삭제 label 이름에 '-'을 붙여주면 된다. kubectl --context=staging label nodes {node name} test-

# 배경 새벽 사이에 pod이 restart 되어 있는 것을 확인했다. 어느 시점에 restart 되어 있는지 확인하기 위해서 이전 로그를 확인하고자 했다. # 방법 kubectl logs 에는 '--previous' 옵션이 있다. pod의 이름이 변경되지 않았다면 --previous 옵션을 사용하여 바로 직전의 로그 내용을 확인할 수 있다. kubectl logs --previous {pod name}

# 배경 데이터를 백업하고 복원하는 작업을 진행하였다. 복원하는 작업을 진행하는 중에 다음과 같은 에러가 뜨면서 복원이 진행되지 않았다. ERROR: ASCII '\0' appeared in the statement, but this is not allowed unless option --binary-mode is enabled and mysql is run in non-interactive mode. Set --binary-mode to 1 if ASCII '\0' is expected. Query: ''. # 문제 서버가 달라지면서 인코딩이 달라져서 한글이 깨져서 복원하는데 문제가 생긴 것이었다. # 해결 방법 백업하는 과정에서 캐릭터 셋 옵션을 주어서 해당 문제를 해결할 수 있다. mysqldum..

# Terraform 설치 출처: https://developer.hashicorp.com/terraform/downloads Terraform 공식 문서를 통해서 다음과 같이 설치를 진행한다. $ wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg $ echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.lis..

# 배경 현재 회사에서 AWS 클라우드를 사용하고 있고 인프라 관리를 쉘스크립트를 통해서 진행하고 있다. 최근 많은 회사들이 Terraform, Ansible과 같은 IaC(Infrastructure as Code)를 많이 사용하고 있다고 해서 관심을 같게 되었다. 같은 환경의 리소스를 복제하여 만들 때 유익하다는 이야기를 듣고 클러스터 복원하는 스크립트를 만들어볼 수 있을 것 같다는 생각으로 시작하게 되었다. # Terraform이란? Terraform(테라폼)은 하시코프에서 오픈소스로 개발 중인 클라우드 Infrastructure 자동화를 지향하는 IaC(Infrastructure as Code) 도구이다. # Terraform 구성 출처 : https://developer.hashicorp.com/..

# 주석 코멘트나 코드를 비활성화하기 위한 주석처리를 '#'를 사용하여 진행한다. # 다음과 같은 방식으로 주석처리 # #에!를 붙이면 주석처리가 되지 않는다. #!/bin/bash echo "Hello" # 입력/출력 read : read를 통해서 입력을 받을 수 있다. echo : echo를 통해서 출력을 할 수 있다. #!/bin/bash read NAME echo "Hello $NAME" # 변수 변수 = "값"의 형태로 변수에 값을 지정한다. $를 통해 변수를 사용한다. #!/bin/bash NAME='jihyun' NICK='happy' echo "Hello $NICK $NAME"

# 배경 비개발자들이 데이터를 볼 수 있도록 조회한 데이터를 csv파일로 저장해서 공유해야 한다. 일반 데이터가 아닌 데이터 테이블의 칼럼 정보들을 조회 후 저장해야 했다. # 데이터 조회하기 일반 데이터와 같이 select가 아닌 show를 사용하여 데이터 조회가 가능하다 SHOW columns from {DATABASE}.{TABLE}; # csv 파일로 저장하기 1. INTO OUTFILE 사용 select 문으로 조회한 데이터의 경우 'INTO OUTFILE' 명령어를 통해서 csv 파일로 저장이 가능하다. SELECT * FROM {DATABASE}.{TABLE} INTO OUTFILE 'C:\\Doc\info.csv'; 2. select 문이 아닌 경우 show의 경우 이 방식으로는 저장이 불..

# 배경 AWS Lambda에서 DB를 연결하는 과정에서 다음과 같은 에러가 발생하였다. panic: Database open error: error: default addr for network 'localhost:3306' unknown # 문제 DB를 연결하는 부분을 다음과 같이 작성하였다. [user]:[password]@localhost:3306/[table] AWS Lambda에 올린 코드는 Golang으로 작성하였는데, golang에서 디비를 연결할 때 sql-driver 라이브러리를 사용하였다. 해당 라이브러리 git을 확인해 보니 "tcp"또는 "unix"를 명시해줘야 했다. https://github.com/go-sql-driver/mysql/blob/749ddf1598b47e3cd90..