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

Ingress(인그레스) Ingress 하나로 URL 엔드포인트 하나만 생성하여 외부로 Pod을 외부로 노출하는 것이 가능 외부 요청에 대한 처리 규칙을 한 곳에서 처리 가능 [ Ingress.yaml 예시 ] apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: test-ingress annotations: alb.ingress.kubernetes.io/scheme: internal alb.ingress.kubernetes.io/listen-ports: '[{"HTTP":80,"HTTPS": 443}]' #alb.ingress.kubernetes.io/target-type: ip spec: ingressClassName: alb rules: -..

# 배경 AWS Api Gateway에서 API의 아이디를 API 이름으로 불러오는 스크립트를 작성 중이었는데 실행하고 나니 다음과 같은 에러가 발생하였다. Error - unexpected EOF while looking for matching `'' # 문제 문제가 된 스크립트 API_ID=`aws apigatewayv2 get-apis \ --query 'Items[?Name==`'$API_NAME'`].ApiId' \ --output text` --query는 작은따옴표(')로 묶어줘야 하고 그 안의 값을 백틱(`)으로 감싸야하는데 값을 감싸는 부분에서 에러가 발생한 것이다. # 해결 방법 백틱(`)으로 감싸진 문자열에서 백틱을 사용할 때에는 백틱 앞에 \를 붙여줘야 한다. 그리고 겉의 백틱(`)..

# 테이블 하나 이름 변경 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..