일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- c#
- Flutter
- c# 추상 클래스
- Unity
- dart 언어
- 깃
- Python
- github
- Data Structure
- HTML
- 도커
- c# 윈폼
- 유니티
- git
- C++
- 다트 언어
- c# winform
- c언어
- Algorithm
- docker
- jupyter lab
- gitlab
- 포인터
- jupyter
- C언어 포인터
- 플러터
- Houdini
- vim
- C# delegate
- 구조체
- Today
- Total
목록DevOps (38)
nomad-programmer
메일 서버를 운용하려면 DNS부터 설정해야 한다. DNS 설정은 아래의 블로그에 잘 정리되어 있어서 링크를 걸었다. https://gumu.kr/blog/185/mailplus2/ 시놀로지 NAS, 메일서버 구현하기 2탄(도메인DNS, SPF, DKIM, DMARC 설정) - Gumu's treasure box Read in: English 1탄에서는 Synology NAS내에 Mail Plus (1) 패키지 설치 (2) 패키지 설정을 다루었다. 2탄에서는 Mail Plus를 사용하기 위한 도메인 설정을 해보도록 한다. 먼저, 도메인과 연결할 실제 NAS의 외 gumu.kr 아래의 블로그가 더 잘 되어있는 듯! https://www.wsgvet.com/home/677 mail server https://..
Portainer는 Docker와 Kubernetes 관리를 WEB GUI에서 쉽게 관리할 수 있도록 도와주는 오픈 소스이다. https://github.com/portainer/portainer GitHub - portainer/portainer: Making Docker and Kubernetes management easy. Making Docker and Kubernetes management easy. Contribute to portainer/portainer development by creating an account on GitHub. github.com Portainer를 설치하기 앞서, Docker를 설치해야 한다. Docker 설치 개발사에서 알려주는 설치법이 가장 안정하니 아래의 ..
cmake 튜토리얼 사이트 https://www.tuwlab.com/27260 [CMake 튜토리얼] 2. CMakeLists.txt 주요 명령과 변수 정리 - ECE - TUWLAB ▶ 이 글에서는 CMake 빌드 스크립트인 CMakeLists.txt 파일을 작성하는 방법에 대해 다룹니다. CMake 2.8.x 버전 기준이며, C언어 프로젝트를 기준으로 자주 사용되는 명령과 변수들을 선별하여 기능에 www.tuwlab.com https://www.tuwlab.com/27270 [CMake 튜토리얼] 3. CMakeLists.txt 기본 패턴 - ECE - TUWLAB ▶ 이 글에서는 복붙으로 바로 활용할 수 있는 CMakeLists.txt 빌드 스크립트의 기본 패턴을 제시합니다. 빌드 결과물이 실행 바..
Docker Daemon의 옵션 및 기본 옵션 docker [옵션] --api-enable-cors=false : API를 사용할 때 CORS(Cross-origin resource sharing)를 활성화한다. -b, --bridge="" : 미리 만들어 놓은 네트워크 브릿지 인터페이스를 사용한다. none을 설정하면 컨테이너에서 네트워크를 사용하지 않는다. --bip="" : CIDR 표시법으로 docker0의 IP 대역을 설정한다. -b 옵션과는 함께 사용할 수 없다. --bit="192.168.0.1/24" -D, --debug=false : 디버그 모드를 활성화한다. -d, --daemon=false : 데몬 모드로 실행한다. --dns=[ ] : docker가 사용할 DNS 서버를 설정한다. ..
시스템은 개발만 하면 끝나는 그런 것이 아니다. 시스템 릴리즈 후에도 리소스 감시나 데이터의 백업, 장애 감시, 복구 대응 등 사용자가 쾌적하게 시스템을 이용할 수 있도록 시스템을 운용해야 한다. 시스템 개발 및 구축은 프로젝트가 발족한 후부터 실제 릴리즈를 향해 가는 작업이 메인이 되지만, 시스템 운용은 실제 릴리즈 이후 시스템이 사용자에게 서비스를 완전히 종료할 때까지 계속되는 작업이다. 시스템을 장기 가동하는 경우 운용의 좋고 나쁨이 시스템의 서비스 레벨을 정한다고 해도 과언이 아니다. 또한 온프레미스 환경과 클라우드 환경에서는 시스템 운용의 개념이나 수행해야 할 작업이 다르다. 가용성 관리 시스템에 있어서 가용성이란 시스템을 계속해서 가동시킬 수 있는 능력을 말한다. 가용성이 높은 시스템을 만들기..
이메일의 정기적인 일괄 송신이나 일별/주별/월별 집계 처리 등과 같은 배치 잡을 Kubernetes 클러스터에서 실행하고 싶을 때는 'CronJob'을 사용한다. CronJob은 애플리케이션의 실행 타이밍을 설정할 수 있다. 리눅스의 crontab 설정과 똑같다고 생각하면 된다. CronJob을 작동시키기 위한 정의 파일은 [kind]를 'CronJob' 으로 설정하고, [schedule]에 잡의 실행 타이밍을 설정한다. Schedule의 지정 방법은 다음과 같은 서식으로, Linux의 cron과 똑같다. // schedule의 서식 schedule: " '분' '시' '일' '월' '요일' " 설정 가능한 수치 설정 항목 값 분 0 - 59 시 0 - 23 일 1 - 31 월 1 - 12 요일 0=일,..
쿠버네트스란? kubernetes.io/ko/docs/concepts/overview/what-is-kubernetes/ 쿠버네티스란 무엇인가? 쿠버네티스는 컨테이너화된 워크로드와 서비스를 관리하기 위한 이식할 수 있고, 확장 가능한 오픈소스 플랫폼으로, 선언적 구성과 자동화를 모두 지원한다. 쿠버네티스는 크고 빠르게 성장하 kubernetes.io Kubernetes는 마스터, 데이터 스토어, 노드가 서로 협력하면서 컨테이너의 실행 환경을 관리하는데, 그 안에서 몇 가지 컴포넌트가 작동한다. 1. 마스터 (Master) 마스터는 다음과 같은 컴포넌트로 구성된다. API Server Kubernetes의 리소스 정보를 관리하기 위한 프론트엔드 REST API이다. 각 컴포넌트로부터 리소스 정보를 받아 데..
Kubernetes는 여러 개의 호스트를 하나로 묶어 docker를 이용하기 위한 오케스트레이션 툴이다. 분산 환경에서 '마치 한 대의 컴퓨터' 처럼 투과적으로 컨테이너에 액세스할 수 있다. 더욱이 시스템 이용자로부터 오는 부하의 급증에 대해서도 유연하게 스케일하는 장치나 여러 개의 컨테이너를 효율적으로 통합 관리하는 장치도 있다. 쿠버네티스의 주요 기능은 다음과 같다. 여러 서버들에서의 컨테이너 관리 컨테이너 간 네트워크 관리 컨테이너의 부하분산 컨테이너의 감시 무정지로 업데이트 Kubernetes의 서버 구성 Kubernetes의 전체 이미지는 다음과 같은데, 분산된 서버들이 협력하면서 각각의 처리를 수행한다. 이러한 덩어리를 "Kubernetes Cluster" 라고 한다. 마스터 서버 (Kuber..
docker 컨테이너는 개발 환경과 같이 한 대의 머신에서 가동시킬 때는 간편히 도입할 수 있다. 하지만 멀티-호스트로 구성된 실제 환경을 클러스터 구성으로 가동시키려면 컨테이너의 시작 및 정지와 같은 조작뿐만 아니라 호스트 간의 네트워크 연결이나 소토리지 관리, 컨테이너를 어떤 호스트에서 가동시킬지와 같은 스케줄링 기능이 필요하다. 더욱이 컨테이너가 정상적으로 작동하고 있는지의 대한 여부를 감시할 장치도 필요하다. 이러한 기능을 갖추고 컨테이너를 통합 관리할 수 있는 툴을 컨테이너 오케스트레이션 툴이라고 한다. 대표적인 컨테이너 오케스트레이션 툴이 무엇이 있는지 알아보자. Kubernetes kubernetes는 Google의 엔지니어를 중심으로 하는 커뮤니티에서 개발이 진행되고 있는 오픈소스 컨테이너..
Docker Machine의 기본 명령 docker-machine은 Docker for Mac 또는 Docker for Windows에 미리 설치되어 있다. Linux에서는 별로도 설치해야 한다. 2020/12/06 - [DevOps/Docker] - [Docker] 멀티호스트 환경에서 컨테이너 관리 다음의 명령을 실행하면 docker-machine의 버전 정보를 확인할 수 있다. $ docker-machine --version docker-machine 명령의 주요 서브 명령은 다음과 같다. 서브 명령 설명 create 실행 환경 작성 ls 실행 환경 목록 표시 status 실행 환경 상태 표시 url 실행 환경 URL 표시 ssh 실행 환경에 대한 SSH 연결 start 실행 환경 시작 stop 실행..
Django 서버와 DB 서버가 있다고 가정해보자. 이 서버들의 의존성은 다음과 같다. Django 서버는 DB 서버를 내부적으로 사용하기 때문에 DB 서버가 온전하게 구동된 후 Django 서버에서 DB서버를 사용해야 한다. 그런데 docker-compose 위의 서버 구성을 작성하여 실행하게되면 DB서버가 빨리 구동되면 문제가 없겠지만 DB서버가 구동되고 있는데 Django서버가 구동되면 문제가 발생한다. 그렇다고 DB서버를 먼저 실행한 후 온전히 구동되기를 기다렸다가 Django 서버를 구동시키는 수작업은 너무 귀찮을 일이다. 이것을 해결할 수 있는 방법이 있다. 그것은 아래의 스크립트를 이용하는 것이다. github.com/vishnubob/wait-for-it vishnubob/wait-for-..
버전 관리 서버를 private 하게 내부에서 관리할 필요가 있다는 판단하여 docker를 가지고 GitLab 서버를 구축하였다. 구축 과정을 블로그에 남긴다. DB서버를 사용하는 내부 서버가 있다. 그곳에다 GitLab서버를 구축하려고하였다. 그래서 다른것 하나 생각치않고 docker부터 떠올렸다. 이유는 해당 서버에 DB서버가 구축되어 있기 때문에 GitLab서버를 그대로 설치해버리면 기존에 사용하던 시스템이 망가질 우려가 있었기 때문이다. 따라서 기존의 시스템에 전혀 영향이 가지 않게끔 도커를 이용하여 GitLab 서버를 설치하였다. hub.docker.com/r/gitlab/gitlab-ce Docker Hub hub.docker.com GitLab 서버 설치 gitlab 서버 설치에 사용한 이미..
Docker에서 작동하는 웹 애플리케이션을 제품 환경에서 운용할 때는 애플리케이션이 사양대로 올바르게 작동할 뿐만 아니라 서비스 이용자가 항상 이용할 수 있도록 운용 관리를 해야 한다. 이러한 컨테이너 기반은 보통 멀티호스트 환경으로 구축한다. 멀티호스트 환경에서 컨테이너 관리의 개요 웹 시스템의 실행 환경은 웹 서버, 프록시 서버, 데이터 스토어 등 역할이 다른 여러 개의 서버 기능이 연계되어 작동한다. 제품 환경에서 이용자에게 서비스를 제공할 때는 여러 개의 물리 서버나 여러 개의 가상 머신(VM)으로 구성된 멀티호스트 환경으로 서비스를 제공하는 것이 일반적이다. 멀티호스트 환경과 클러스터링 하나의 호스트 머신에서 Docker를 설치하고 그 위에서 몇 개의 컨테이너를 가동시켜 서버를 작동시켰다고 가정..
Docker Compose의 버전 확인 Docker Compose는 Docker for Mac 또는 Docker for Windows에 미리 설치되어 있다. Linux는 아래의 링크를 통해 설치할 수 있다. docs.docker.com/compose/install/ Install Docker Compose docs.docker.com // Docker Compose 버전 확인 $ docker-compose --version compose 정의 파일의 지정 현재 디렉토리 안에 docker-compose.yml 파일이 없는 상태에서 docker-compose up 명령을 실행하면 다음과 같은 에러를 확인할 수 있다. $ docker-compose up ERROR: Can't find a suitable co..
여러 컨테이너를 실행시킬 때 컨테이너마다 구성이나 시작/정지를 관리하자면 운용이 번잡해진다. 여러 컨테이너를 일괄적으로 관리할 수 있는 'Docker Compose' 의 구성 관리 파일인 'docker-compose.yml' 을 작성하는 방법에 대해 알아보자. docker-compose.yml 파일의 개요 docker-compose는 'docker-compose.yml' 이라는 Compose 정의 파일에 시스템 안에서 가동하는 여러 서버들의 구성을 모아서 정의한다. 이 정의 파일은 YAML 형식으로 기술한다. YAML YAML은 구조화된 데이터를 표현하기 위한 데이터 포맷이다. YAML은 Python과 같이 들여쓰기로 데이터의 계층 구조를 나타낸다. 들여쓰기는 탭이 아닌 스페이스를 사용한다. 누가 써도 ..
Docker에서 움직이는 웹 애플리케이션을 제품 환경에서 운용할 때는 애플리케이션 서버, 로그 서버, 프록시 서버 등과 같이 여러 개의 컨테이너들을 연계하여 작동시킨다. 여러 컨테이너 관리 웹 시스템의 실행 환경은 웹 서버, 프록시 서버 등과 같이 역할이 다른 여러 개의 서버를 연계하여 작동시키는 것이 일반적이다. 그래서 Docker에서 여러 개의 컨테이너를 연계시켜 운용 관리할 때 알아두어야 할 기초 지식에 대해 설명한다. 웹 3계층 시스템 아키텍처 애플리케이션을 가동시키려면 여러 개의 서버에 기능과 역할을 분할하여 인프라의 전체 구성을 정한다. 이것을 인프라 아키텍처라고 한다. 아키텍처는 우리말로 '설계 사상' 이라는 뜻이다. 대규모 웹 시스템의 경우 몇 개의 서브 시스템/기능으로 나누어 시스템을 개..
Docker 이미지는 인프라 구성 요소에서 래플리케이션의 개발 환경 및 실행 모듈도 포함하기 때문에 용량이 큰 것도 있다. 이런 이미지를 모두 개발용 클라이언트 PC나 온프레미스 환경에서 관리하려면 비용과 시간이 많이 든다. 퍼블릭 클라우드에는 Docker 이미지를 프라이빗으로 관리할 수 있는 매니지드 서비스가 제공되므로 이것을 이용하는 것이 좋다. Google Cloud Platform (GCP) 은 Docker 이미지를 프라이빗으로 관리할 수 있는 'Google Container Registry' 를 제공하고 있다. 이 서비스는 GCP의 오브젝트 스토리지 서비스인 'Google Cloud Storage' 를 데이터 저장 장소로 사용하고 있다. Google Container Registry 를 사용하여..
Docker 이미지에는 인터넷상에 공개하고 싶지 않은 정보가 포함되는 경우도 있다. 이럴 때 하나의 방법으로 Docker 이미지 관리를 위한 저장소를 로컬 환경에 구축할 수 있다. Docker 데이터 저장 경로 변경 (선택 사항) docker 로컬 저장소 주의할 점 private 도커 저장소에서는 Docker 이미지를 영구 데이터로 관리할 필요가 있다는 점이다. Docker에서는 호스트 머신에 볼륨을 공유함으로써 영구 데이터를 일원 관리할 수 있다. 하지만 이 데이터를 관리하려면 신뢰성이 높고 용량이 충분한 스토리지를 마련해야 한다. 또한 만일의 장애에 대비해 다중화 구성을 검토할 필요가 있으며, 정기적으로 데이터 백업이나 서버 감시 등과 같은 운용도 필요하다. 로컬 환경에 Docker 저장소를 구축하기..
Docker에서 빌드를 하면 빌드를 실행한 디렉토리 아래에 있는 모든 파일이 Docker 데몬으로 전송된다. 그렇기 때문에 빌드에서 제외하고 싶은 파일이 있는경우는 '.dockerignore' 라는 이름의 파일 안에 해당 파일명을 기술해야 한다. 여러개의 파일을 지정할 때는 줄 바꿈을 하여 파일명을 나열한다. 예를 들어 다음과 같이 빌드 컨텍스트상에 Dockerfile과 Dummyfile을 저장하고, '.dockerignore' 안에 Dummyfile을 지정해보자. $ ls -al -rw-rw-r-- 1 scii scii 9 12월 2 00:56 .dockerignore -rw-rw-r-- 1 scii scii 79 12월 2 00:30 Dockerfile -rw-rw-r-- 1 scii scii 0 1..
컨테이너를 종료할 때에 송신하는 시그널을 설정하려면 STOPSIGNAL 명령을 사용한다. STOPSIGNAL [시그널] STOPSIGNAL 명령에는 시그널 번호 또는 시그널명을 지정할 수 있다. 컨테이너의 헬스 체크 명령 (HEALTHCHECK 명령) 컨테이너 안의 프로세스가 정상적으로 작동하고 있는지를 체크하고 싶을 때는 HEALTHCHECK 명령을 사용한다. HEALTHCHECK [옵션] CMD 실행할 명령 지정할 수 있는 옵션 옵션 설명 기본값 --interval=n 헬스 체크 간격 30s --timeout=n 헬스 체크 타임아웃 30s --retries=N 타임아웃 횟수 3 HEALTHCHECK 명령에서는 Docker에 대해 컨테이너의 상태를 어떻게 확인할지를 설정한다. 예를 들어 5분마다 가동 ..