목록DevOps (180)
devops
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: # 여기서부터 파드 템플릿 metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.14.2 ports: - containerPort: 80 위 코드가 들어있는 simple-pod.yaml 파일을 통해서 디플로이먼트를 생성해본다. 1. 생성을 위해 apply 명령어 사용한다. $ kubectl apply -f simple-pod.yaml 2. describe로 ..
파드(Pods) 파드는 쿠버네티스의 배포 가능한 가장 작은 컴퓨팅 유닛이다. 그 자체로 하나의 논리적인 호스트다. 하나 이상의 어플리케이션 컨테이너 IP 주소 공유 스토리지 쿠버네티스는 워크로드 리소스를 만들기 위해서 YAML과 같은 리소스 정의 파일을 사용한다. * 워크로드? 쿠버네티스에서 '쿠버네티스 상에서 작동되는 어플리케이션'을 의미, 클라우드 분야에서는 '어떤 어플리케이션을 실행할 때 필요한 IT 리소스의 집합'이라는 의미로 통용 쿠버네티스에서 직접 사용자가 개별 파드를 만들일이 많지 않다. 파드는 일시적이고 언제나 삭제될 수 있기 때문이다. 파드가 실행되는 공간인 노드가 실패하면 그 안의 파드 역시도 사용할 수 없게된다. 컨테이너를 수동으로 만들고 관리하는 것은 도커만 사용해도 충분하다. 쿠버..
https://confluence.curvc.com/pages/releaseview.action?pageId=98048155 Ubuntu에서 쿠버네티스(k8s) 설치 가이드 - CURVC DevOps - Confluence 이 문서는 쿠버네티스(k8s) 구축에 대한 정보를 공유하기 위해 작성되었다. Docker 설치 Docker Engine 설치를 위해 다음 절차를 따라 진행한다. 세부적인 가이드는 아래 링크를 참고한다. 저장소 설 confluence.curvc.com 공홈 자료론 설치가 잘 안된다면 위 가이드를 따라하는 것을 추천
sudo systemctl daemon-reload 명령어 실행할 때 아래와 같은 에러가 발생한다. 그럼 아래 명령어로 해결하면 된다. sudo apt-get update && sudo apt-get install -yqq daemonize dbus-user-session fontconfig sudo daemonize /usr/bin/unshare --fork --pid --mount-proc /lib/systemd/systemd --system-unit=basic.target exec sudo nsenter -t $(pidof systemd) -a su - $LOGNAME snap version https://gist.github.com/alyleite/ca8b10581dbecd722d9dcc35b50..
쿠버네티스 오픈소스로 만들어진 컨테이너 오케스트레이션 도구 컨테이너화된 어플리케이션을 자동 배포, 스케일링하는 기능 등을 제공한다. 각기 다른 환경(온프레미스서버, VM, 클라우드)에 대응할 수 있다. 쿠버네티스에 적합하지 않는 환경 여러 단계로 나뉘어지지않은 모놀리식 아키텍처에는 적합하지 않다. (모놀리식은 MSA로 분해하는 것이 먼저) 컨테이너 수가 적은 경우 적합하지 않다.(docker compose만으로도 관리 가능) 단순한 아키텍처에 스케일링이 불필요한 경우 적합하지 않다. 쿠버네티스에 적합한 환경 마이크로서비스를 컨테이너 방식으로 운영하는 조직이 확장성을 고려할 때 무중단 서비스, 고가용성을 제공해야 할 때 자가 치유 및 배치 실행, 로드 밸런싱, 구성 관리 등 기능들이 필요할 때 사실 AWS..
Terraform Backend Terraform의 State 파일을 저장하는 위치와 어디서 가져올지에 대한 설정이다. 대체로 로컬에 저장하지만 설정에 따라서 s3, consul 등 다양한 backend type을 사용할 수 있다. Backend를 사용하는 이유 1) 대체로 Terraform 코드는 혼자 작성하지 않는다. 인프라를 변경하는 것은 민감하기 때문에 원격 저장소를 활용해서 같은 state를 사용하는 것을 막을 수 있다. 2) 로컬 스토리지에 저장하면 유실의 위험이 있다. 그래서 S3와 같은 원격 저장소를 활용하기도 한다. *주로 s3를 많이 사용한다. terraform { backend "s3" { bucket = "terraform-s3-bucket" # s3 bucket 이름 key = "..
간단한 기본 개념 복습 VPC : 사용자의 AWS 계정 전용의 가상 네트워크 서브넷(Subnet) : VPC의 IP 주소 범위 라우팅 테이블(Route Table) : 네트워크 트래픽을 전달할 위치 결정 인터넷 게이트웨이(Internet Gateway) : VPC의 리소스와 인터넷의 통신을 위해 사용되므로 VPC에 연결 Internet Gateway vs Nat Gateway IGW : VPC와 인터넷간의 통신을 활성화 NAT : 프라이빗 서브넷의 인스턴스가 인터넷에 연결할 수 있도록 해줌, 인터넷에서 원치않는 인바운드 연결 수신 차단 NAT는 위치가 Public Subnet에 있어야하며, 연결을 Private Subnet과 한다. EIP 생성이 필요하며 생성 및 삭제에 시간이 소요되는 편이다. *서브넷..
이용욱님 삼성전자 / Cloud 운영 그룹 Dev, DA/DBA, TechOps, DevOps, SRE IaC(Infrastructure as Code) 인프라 생성, 설정 관리를 코드로 작업 -> 반복 재현성, 이력관리 가능 인프라 코드와 설정 문서를 한번에 할 수 있는 장점이 있음 빠른 공유와 병렬 작업이 가능 정적인 인프라는 Terraform으로 운영, 수정이 잦은 배포(Auto Scaling Group, Image)의 경우 Ansible 사용 Spinnaker는 파이프라인부터 배포 설정까지 하는 데 주로 사용 주로 Spinnaker와 Terraform을 큰 축으로 가져가고 있음 쿠버네티스는 배포 스펙 지정에 편리해서 사용 Terraform 1. 관리 범위 쪼개기 Communication cost ..
Terraform 기본 구성 Provider : 테라폼으로 생성할 인프라 종류(AWS, GCP 등) Resource : 인프라 자원, AWS에서는 EC2, S3와 같은 인프라 내부 서비스로 생성되는 자원 State : 테라폼으로 생성한 자원 상태. 파일 형태로 남아있어, 테라폼 명령어를 실행한 결과물 Output : 테라폼으로 만든 자원을 변수 형태로 State에 저장 Module : 공통적으로 사용할 수 있는 코드들을 모듈 형태로 정의. Remote : 다른 경로의 State를 참조하는 것으로 Ouptut 변수를 불러 올때 사용 Terraform 기본 명령어 init : 테라폼 명령어 사용을 위한 설정 실행. plan : 테라폼으로 작성한 코드 실행시 만들어질 결과 예측, 가장 많이 사용 apply :..
DevOps의 주요 특징은 '자동화'다. 코드형 인프라(IaC)는 설정을 코드로 작성하기 때문에 클라우드 인프라스트럭처의 생성, 수정, 삭제를 자동화할 수 있다. 서버, 데이터베이스, 네트워크, 배포 프로세스, 테스트 거의 모든 과정을 코드로 관리할 수 있다. 클라우드 네이티브 환경에서 운영은 모두 코드로 대체된다. 이는 IaC가 인프라스트럭처의 설계도가 될 수 있다는 의미다. IaC의 장점 인프라 생성이 자동화되므로, 오류가 덜 발생하고 안전하다. IaC는 쉽게 공유되고 버전 관리에도 용이하다. 코드와 현재 상태를 비교하여 추후 인프라 상태의 변경에 따르는 위험을 분석, 검증할 수 있다. 배포 과정에 개발자, 관리자 모두 배포하고 통제가능한 환경이 만들어진다. 프로비저닝, 배포, 오케스트레이션 프로비저..