일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- filfox
- 투자
- FILECOIN
- 공증인
- Arweave
- 알위브
- 스토리지
- MATIC
- 암호화폐
- Mining
- 파일코인
- FIL
- 레이어2
- 코로나
- nft민팅
- 민팅
- datacap
- 이더리움
- BTC
- 채굴
- 코인
- 채산성
- 가상자산
- 비트코인
- Q-code
- nft
- 파일코인플러스
- 스토리지코인
- 데이터캡
- 바이낸스
- Today
- 96
- Total
- 125,460
목록DevOps (166)
Blockchain & Devops, bitetiger

the ecs service cannot be updated due to an unexpected error: TaskDefinition is inactive CodeDeploy로 ECS Blue-Green Service를 생성해서 테스트하는 와중에 발견한 에러다. Codebuild에서부터 Deploy까지 taskdef.json 파일도 Copy했는데 TaskDefinition이 비활성화되었다는 에러가 뜬다. taskdef.json 파일이 없는게 아니라, 설정에 문제가 발생했다는 의미다. 그래서 ECS Cluster를 통해서 Task를 실행하면 문제가 없지만, Codedeploy 혹은 Codepipeline을 통해서 서비스가 작동하면 문제가 발생한다. (taskdefinition 관련 설정이 실행되기 때문..

Dockerfile을 이용해서 이미지를 빌드하다 보면 최종 컨테이너 이미지에 필요 없는 환경과 파일이 포함될 수 있다. 이를 해결하기 위해서 빌드와 실행을 구분해 이미지를 빌드할 수 있는 'Multi-stage build' 기능을 이용하면 된다. 위처럼 빌드를 통해서 text 파일이 생성되면, 이 파일만 이용해서 내용을 추가하고 최종 스테이지에선 필요한 파일만 사용할 수 있게 된다. # syntax=docker/dockerfile:1 FROM golang:1.16 AS builder WORKDIR /go/src/github.com/alexellis/href-counter/ RUN go get -d -v golang.org/x/net/html COPY app.go ./ RUN CGO_ENABLED=0 go..

개발을 위해서 용도와 목적에 따라 여러 Account를 활용해서 AWS 리소스를 사용한다. AWS CodePipeline은 일련의 CI/CD 과정을 통합한 서비스로, 운영 Account에서 여러 Account들의 CI/CD를 관리할 수 있어야 한다. 이 포스팅에서는 운영 Account에서 소스코드를 받아 빌드하여 Artifact를 S3에 보관하는 것을 진행하고, 나머지 CodeDeploy만 다른 Account에서 배포하는 아키텍처를 구성해봤다. 이를 위해 Account, 리소스 간 연결을 위한 Role 생성과 리소스의 데이터 보호에 사용되는 KMS를 통해서 AccountA의 CodePipeline을 중심으로 AccountB, AccountC에 배포할 수 있는 위 아키텍처를 구성한다. 2. 구성방법 2.1..

Controller node에서 managed node 관리에 유용하게 사용할 수 있는 명령어 정리 (1) 실행 명령어 $ ansible [host 명] -m [모듈명] -a [Argument] (2) 옵션 -i : ansible 실행 시 사용할 인벤토리 지정 (Inventory) -l : 그룹, 호스트 지정 (Limit.subset) -m : 사용할 모듈 지정 (Module) -a : 실행할 모듈의 인자값 (Argument) -e : 추가적으로 사용할 변수 (Extra_vars) 1. managed node 디스크 용량 확인 $ ansible all -m shell -a "df -Th" 2. managed node 메모리 확인 $ ansible all -m shell -a "free -h" 3. con..

이전 EC2 Dynamic Inventory를 생성하는 테라폼 코드를 활용해서 그 위에 Ansible로 환경설정하는 과정을 진행해보려 한다. Terraform은 Klaytn node의 전체적인 아키텍처의 인프라 리소스를 생성하는 역할, Ansible은 생성된 리소스에 필요한 패키지 설치와 node의 환경설정을 하는 용도로 사용한다. 테스트 용도기 때문에 아래와 같이 간단한 아키텍처로 구성. Controll node로 사용할 EC2 1개 Managed node로 사용할 EC 2개 (Endpoint node, Service chain node) Ansible node EC2에 접근하기 위한 kay-pair, aws dynamic inventory를 구성할 yml을 provisioner로 할당하고, EC2fu..

Ansible을 사용하다보면, 빈번히 삭제되고 생성되는 EC2 인벤토리를 정의하는 것이 쉽지않다. 그러나 Ansible Plugin을 활용해서 Dynamic Inventory를 활용하면 구성된 EC2를 자동으로 인벤토리에 할당하기 때문에 아주 간편하다. 기본적으로 Managed node를 관리하는 Controller node에 다음과 같은 기본설정이 필요하다. Controller node - AmazonEC2FullAccess 권한 - Managed node와 통신을 위한 키페어(.pem) - python과 boto설치 Managed node - 조회 시 사용될 tag를 설정한다. - ssh Port가 열려있어야한다. (Ansible은 ssh 프로토콜을 통해서 통신) Dynamic Inventory 생성..

지금까지 Terraform을 통해서 클라우드 인프라 리소스를 생성하고 관리했다. 그러나 Terraform은 사실상 클라우드 아키텍처를 구성하거나, 새로 생성, 변경하는데 효율적인 인프라 관리 도구다. 생성하고 나서부터, 동작 중인 서버를 효율적으로 관리, 운영하는데 사용될 수 있다. 물론 Terraform과 동일한 기능이 있으나, 이미 생성된 인프라에 application을 구성하고 배포, 관리하는데 아주 효과적이다. 그래서 Terraform과 Ansible은 통합되어 상호보완적으로 활용될 수 있다고 생각한다. Ansible Ansible은 크게 Control Node와 Managed Node로 나뉜다. Python 베이스로 작동하며, Control과 Managed Node 모두 Python이 기본적으로..

DevOps, SRE의 정의에 대해서 간단히 알아보자. DevOps(Development + Operations) 데브옵스는 전체적인 개발 사이클을 빠르게 하고자 하는 소프트웨어 개발 접근방법이다. Continuous delivery이 가능하게 하며, 빈번한 release와 자동화된 소프트웨어와 앱 개발이 가능하도록 하는데 초점을 둔다. 그래서 업무의 빠른 flow가 가능하게 된다. 데브옵스 프로세스의 주요 목표는 프로덕트의 출시를 가속화 소프트웨어의 개발 라이프사이클 단축화 시장 니즈에 빠른 대응 그래서 development와 operation의 융합이자, 코드를 가능한 부드럽고 빠르게 배포될 수 있도록 하는 팀을 의미하기도 한다. 팀은 개발과 운영을 위해 원활한 소통이 요구되며 높은 수준의 자동화를 ..

Helm은 쿠버네티스의 service, deployment, configmap과 같은 다양한 오브젝트들을 결합해주는 쿠버네티스용 패키지라고 보면 된다. Helm은 애플리케이션 컨테이너 배포는 물론이고, 이에 필요한 쿠버네티스 리소스를 모두 배포해주는 역할이라고 보면된다. 왜 굳이 Helm을 사용해야할 까? Deployment 히스토리 기능 제공 Helm에서 배포된 어플리케이션은 Helm release로 관리가 된다. 릴리즈된 버전 기록을 자동으로 유지 관리하고 배포 후에 문제 발생시 롤백하는 것이 간편하다. CI/CD 파이프라인 가능 CI/CD 파이프라인을 이용해서 배포 작업을 구성하고 자동화할 수 있다. 멀티스테이징 배포 중에 어플리케이션 구성이 가능하다. 쉽게 말해서, 스테이킹 운영환경에 따라서 Po..

서비스와 인그레스는 같은 네트워크 관련 오브젝트로, 쿠버네티스의 각 컨테이너의 네트워크 포워딩과 설정에 관여한다고 볼 수 있다. 서비스(Service) 위 이미지에서 보는 것처럼, 서비스는 같은 역할과 서비스를 하는 여러 POD를 하나로 묶어서 관리하는 오브젝트라고 볼 수 있다. 파드가 새로 생성될 때마다 동적으로 IP를 할당할 수 있다. 간단히 말해서 서비스는 트래픽을 파드로 전달만하는 역할을 한다. 여기서 서비스는 여러 종류를 가진다. 1) ClusterIP 내부에서만 접근할 수 있는 IP를 할당한다. 그래서 외부에서 접속이 불가능하다. 그러나 kubeproxy를 활용하면 접근할 수 있다 2) NodePort 클러스터의 모든 노드로 외부에서 접근할 수 있는 포트를 개방한다. NodePort가 설정되면..