목록전체 글 (245)
오늘도 한 뼘 더

# 테이블 하나 이름 변경 RENAME TABLE old_table TO new_table; ALTER TABLE old_table RENAME new_table; # 테이블 여러 개 이름 변경 RENAME TABLE old_table1 TO new_table1, old_table2 TO new_table2; # 다른 데이터베이스, 스케마로 테이블 이동 RENAME TABLE current_db.table_name TO new_db.table_name;

Service (서비스) Pod을 연결하고 외부에 노출하는 역할 docker를 실행시킬 때 port를 설정하는 -p 옵션과 같은 역할 여러 개의 Pod에 접근할 때, 요청을 분산하는 로드 밸런서 기능을 수행 [ Service.yaml 예시 ] apiVersion: v1 kind: Service metadata: name: svc-test-service labels: app: test-service spec: selector: app: app-test-service type: NodePort ports: - protocol: TCP port: 80 targetPort: 8000

# 배경 개발자가 작성한 테스트 코드를 돌리고 나서 결과에 따라서 GitLab에서 바로 Merge가 되지 않았으면 한다는 요구 조건이 있었다. 이전에 테스트 코드 실행은 GitLab에서 Merge Request가 열리면 Webhook을 통해서 Jenkins에서 테스트 코드가 실행되었다. 위의 요구 조건을 실행하기 위해서 GitLab의 CI/CD 툴을 사용하기로 하였다. # .gitlab-ci.yaml gitlab ci/cd의 경우 레포지토리에 .gitlab-ci.yaml 파일을 포함하고 있으면 자동으로 pipeline이 실행이 된다. gitlab repository > Settings > CI/CD에 들어가면 변수 세팅을 할 수 있다. 변수를 세팅할 때 Protected로 변수를 설정할 경우 Protec..

# 배경 git repository를 pull 하거나 push 할 때마다 username과 password를 입력해야 하는 번거로움이 있다. 한번 설정하고 나면 물어보지 않았으면 좋겠다. 저장하는 방법을 찾아보도록 한다. # 저장 방법 다음 명령어를 통해 git 설정에 추가한다. git config (--global) credential.helper store 이후 push나 pull 할 때 username과 password를 입력하고 나면 저장이 되어 그 이후에 더 이상 입력을 해야 할 필요가 없다.

shell script를 작성하면서 어떠한 조건에 따라서 변수만 달라지는 경우에 같은 내용을 하나의 스크립트로 작성을 하고 싶었고 shell script에서도 if문과 case문을 사용할 수 있다는 것을 확인했다. # if문 if문의 경우 if문 뒤에 조건을 [[ ]] 로 묶어서 작성한다. 조건문 뒤에는 ";"과 then을 붙여서 조건문에 맞을 경우의 문장을 작성한다. if문을 끝낼 때에는 fi를 마지막에 작성하여 끝낸다. else문은 if문이 다 끝나기 전에 안에 작성한다. #!/bin/bash if [[ $# == 0 ]]; then echo "Insert Variable" exit else echo "Hello this is script" exit fi # case 문 스크립트 실행 시 넘기는 첫 ..

# 배경 쿠버네티스 Pod을 올리는 과정에서 새로 올라간 Pod이 Pending이 나면서 올라가지 않았다. 자세한 내용을 확인해 본 결과 다음과 같은 에러 메시지를 확인하였다. kubectl describe pod {pod} Type Reason Age From Message ---- ------ ---- ---- ------- Warning FailedScheduling 3s (x2 over 5m26s) default-scheduler 0/1 nodes are available: 1 Too many pods. preemption: 0/1 nodes are available: 1 No preemption victims found for incoming pod. # 문제 해당 문제는 인스턴스에 만들 수 있..

# 배경 모든 환경에서 Dockerfile을 사용하여 코드를 배포하기 위해서 Elastic Beanstalk(이하 EB)에 Dockerfile을 사용하여 Docker Application으로 올려보기로 하였다. # Docker Application 환경 구성 Elastic Beanstalk의 구성은 이전에 진행한 방법과 다를 것이 없었다. Application을 생성할 때 플랫폼을 Docker로 선택해야 한다는 것 외에는 다 같은 방식으로 진행하였다. 2021.11.11 - [DevOps & Infra/AWS] - [AWS] ElasticBeanstalk 생성하기 [AWS] ElasticBeanstalk 생성하기 AWS ElasticBeanstalk 이란? https://docs.aws.amazon.co..

# 배경 Grafana를 도커로 올리는 과정에서 바로 Exit가 되면서 진행되지 않았다. docker logs 명령어를 통해서 확인해 본 결과 다음과 같은 에러 메시지를 확인할 수 있었다. You may have issues with file permissions, \ more information here: \ http://docs.grafana.org/installation/docker/#migrate-to-v51-or-latermkdir: \ can't create directory '/var/lib/grafana/plugins': Permission denied # 문제 해당 파일에 접근할 수 없는 권한 문제로 사용자를 변경하거나 권한을 추가하하면 된다고 한다. # 해결 방법 1. docker-c..

# 배경 S3에 보관 중인 데이터 중에 이전 버전이 필요 없는 것들이 있다. 만들어진 날짜 순으로 정렬해서 정리를 하려고 했는데 객체의 수가 999개를 초과하니 정렬이 불가능하다. S3에 수명 주기라는 것이 있어 이 규칙을 생성해서 정리할 수 있다고 한다. # 수명주기 규칙 생성하기 버킷 > 관리 > 수명 주기 규칙 생성 접두사 폴더나 파일명에 규칙이 있는 경우 작성해 주면 해당 폴더 및 파일에만 적용이 된다. 수명 주기 규칙 작업 현재 있는 객체들을 버전 만료로 변경하고 만료 처리된 객체들을 삭제하는 방법으로 진행하였다. 객체 생성 후 경과 일수 만들어진 지 90일이 지난 객체의 경우 버전을 만료 처리 객체의 이전 버전 영구 삭제 객체가 최신이 아닌 상태로 전환된 후 경과 일수 - 만료 상태로 변경되고..

# 배경 서비스를 Elastic Beanstalk에서 EKS로 변경을 하면서 모니터링을 위해 Prometheus와 Grafana를 설치한다 # docker-compose.yaml 작성 version: '3.7' services: # 설치하려는 컨테이너 목록 prometheus: network_mode: bridge image: prom/prometheus:latest container_name: prometheus user: root command: - '--web.enable-lifecycle' - '--config.file=/etc/prometheus/prometheus.yaml' volumes: - /monitor/prometheus/config:/etc/prometheus/ - /monitor/p..