Docker 및 Rancher로 프라이빗 클라우드를 구축하는 방법

조회수 0회

자체 프라이빗 클라우드 인프라를 구축하는 방법을 알고 싶다면 Rancher 및 Docker를 사용하여 수행하는 방법을 정확하게 설명합니다. 이 단계별 자습서에서는 K&C DevOps 컨설턴트가 Docker 및 Rancher 스택을 사용하여 데이터 센터에 프라이빗 클라우드를 구축하는 데 사용하는 정확한 프로세스를 안내합니다.

IT 아웃소싱은 언제 작동합니까?

그리고 그렇지 않을 때는?

워크로드가 퍼블릭 클라우드와 프라이빗 클라우드 간에 분할되는 하이브리드 클라우드 구성이 점점 보편화되고 있습니다. 이는 데이터 민감도, 규정 준수 및 기타 보안 문제가 종종 특정 부하가 퍼블릭 클라우드 시설을 활용할 수 없음을 의미하는 엔터프라이즈 수준의 경우에 특히 그렇습니다.

그러나 사설 클라우드가 필수 또는 선호가 될 수 있는 다른 많은 이유가 있습니다. DevOps 소프트웨어 개발 팀의 경우 사설 클라우드를 CI/CD 파이프라인의 일부로 개발 및 테스트 환경으로 사용할 수 있습니다.

프라이빗 클라우드는 또한 퍼블릭 클라우드 플랫폼과 호환되도록 업그레이드하는 것이 타당하지 않을 때 레거시 애플리케이션을 계속 실행하는 데 사용할 수 있습니다. 프라이빗 클라우드는 특정 워크로드, 특히 빅 데이터와 관련된 워크로드를 최적으로 실행하도록 완전히 사용자 정의할 수도 있습니다.

사설 클라우드 환경을 구축하는 이유가 무엇이든 간에 K&C의 경우 이는 DevOps CI/CD 파이프라인의 개발 및 테스트 단계이며 이 단계별 자습서는 작업을 위한 좋은 출발점을 제공하는 데 도움이 될 것입니다. 아래 지침을 따르더라도 자체 프라이빗 클라우드를 만들려면 Docker 및 Rancher에 대한 견고한 기반이 필요합니다.

다음과 같은 클라우드 네이티브 기술 스택을 사용하여 데이터 센터 기반 프라이빗 클라우드를 구축할 것입니다.

  • 명명됨(라운드 로빈) — DNS를 통한 밸런싱
  • NGINX — 웹 애플리케이션에 대한 프록시 요청을 위한 웹 서버
  • 도커 — 운영 체제 수준의 가상화 환경 내에서 애플리케이션 제공 및 관리를 자동화하는 소프트웨어
  • 도커 작성 — 여러 Docker 컨테이너를 시작하고 연결하기 위한 도구
  • 도커 레지스트리 — Docker 이미지 저장용 소프트웨어
  • 목장 경영자 — 모든 조직 및 인프라에서 컨테이너를 쉽게 배포하고 관리할 수 있는 Rancher Labs의 소프트웨어
  • 목장주 작곡 — Docker 작성 원칙에 따라 작동하며 rancher 기능을 활성화하는 데 사용됩니다.
  • 영사 — 서비스 검색 및 키/값 저장 유틸리티
  • 젠킨스 — Java로 작성된 지속적인 통합 도구

NA 없이 기본 인프라를 구축하려면 다음이 필요합니다.

IP DNS웹 서버192.168.11.140 web.cloud.infraCloudMaster192.168.11.72 master1.cloud.infraCloudClient1192.168.11.73 ci1.cloud.infraCloudClient2 192.168.11.132 ci2.cloud.infra

* 표시된 IP는 실제 시스템에서 가져온 것이며 스크린샷과 일치해야 합니다.

클라우드는 네트워크 내에 구축되며 별도의 영역이 생성됩니다.

구성 파일 편집 명명 된:

nano /etc/named/cloud.zones
zone "cloud.infra" {
        type master;
        file "/var/named/master/cloud.infra";
};

이제 영역 파일을 만듭니다.

K&C – 우리는 20년 이상 혁신적인 기술 솔루션을 만들어 왔습니다.

개별 요구 사항이나 다음 프로젝트에 대해 논의하려면 저희에게 연락하십시오.

nano /var/named/master/cloud.infra
$TTL    3600
@	IN	SOA     ns.cloud.infra. hostmaster.cloud.com. (
                                2015111800	; Serial
                                28800           ; Refresh
                                7200            ; Retry
                                604800          ; Expire
                                3600 )         ; Default Minimum TTL
 
                IN	NS ns.cloud.infra.
master1         A	192.168.11.72
ci1             A	192.168.11.73
ci2             A	192.168.11.132
web	        A	192.168.11.140
service named restart

DNS가 설정되었으므로 마스터 서버 생성을 진행하십시오.

– 랜처 서버

– 영사 서버-젠킨스

컨테이너 시작 목장 경영자

sudo docker run -d --restart=always -p 8080:8080 rancher/server

랜처 서버는 https://master1.cloud.infra:8080에서 사용할 수 있습니다.

인증을 설정해 보겠습니다.

1. 관리자 -> 액세스 제어2. 로컬을 선택합니다.

3. 새 사용자 추가

1. 탭으로 이동: 기본값2. 클릭: 환경 추가3. 선택: 소4. 이름 입력 및 사용자 추가

자신의 레지스트리 설정

  1. 인프라 -> 레지스트리 탭으로 이동합니다.
  2. 선택: 맞춤
  3. 값 붙여넣기

API 키 생성

1. 탭으로 이동: API2. 값 생성 및 기록

지금은 목장주를 제쳐두고 클라이언트를 설정할 때 다시 돌아갑시다.

consul-server로 컨테이너 시작

docker run -d -p 8500:8500 -p 53:8600/udp   
-p 400:8400 -p 8300:8300 -p 8301:8301 -p 8302:8302 
--name=consul gliderlabs/consul-server -bootstrap

Consul은 https://master1.cloud.infra:8500에서 사용할 수 있습니다.

젠킨스 시작

docker run -d -p 32769:8080 jenkins

Jenkins는 https://master1.cloud.infra:32769에서 사용할 수 있습니다.

CloudClient1 및 CloudClient2에서 두 개의 Docker 컨테이너 실행

랜처 클라이언트– 영사 등록관

  1. 인프라 -> 호스트로 이동합니다.
  2. 그리고 클릭: 호스트 추가
  3. 포인트 4에 서버의 외부 IP를 입력하십시오.
  4. 포인트 5의 내용 복사

CloudClient1에서 Rancher 및 Consul로 컨테이너 실행

sudo docker run -e CATTLE_AGENT_IP="192.168.11.73"   
-d --privileged -v /var/run/docker.sock:/var/run/docker.sock  
-v /var/lib/rancher:/var/lib/rancher rancher/agent:v1.0.2  
http://master1.cloud.infra:8080/v1/scripts/E0EC8B33530A5512C0C7:q2qdFb3XY4
docker run -d -v  
/var/run/docker.sock:/tmp/docker.sock gliderlabs/registrator 
-ip 192.168.11.73 consul://192.168.11.72:8500

CloudClient2에서 동일한 작업을 수행하되 IP 주소를 변경합니다.

sudo docker run -e CATTLE_AGENT_IP="192.168.11.132"   
-d --privileged -v /var/run/docker.sock:/var/run/docker.sock  
-v /var/lib/rancher:/var/lib/rancher rancher/agent:v1.0.2  
http://master1.cloud.infra:8080/v1/scripts/E0EC8B33530A5512C0C7:1473764400000:jq2qdFb3XY4
docker run -d -v  
/var/run/docker.sock:/tmp/docker.sock gliderlabs/registrator 
-ip 192.168.11.132 consul://192.168.11.72:8500

모든 것이 성공적으로 완료되면 Rancher에서 서버를 볼 수 있습니다.

* 시작된 서비스는 무시해주세요

Rancher에서 프로젝트를 생성하려면 docker-compose v1 파일을 생성하고 API에서 데이터를 추가한 다음 Rancher-compose를 수행해야 합니다.

*Rancher는 Dockerfile에서 프로젝트를 데몬하지 않고 레지스트리에서 가져옵니다. 이 때문에 로컬 또는 모든 호스트에서 수집합니다.


nano docker-compose-rancher.yml
homepage:
  image: registry.cloud.infra/homepage 
  ports:
   - "3000"
  links:
   - mongo
  environment:
   - MONGO_URL=mongodb://mongo:27017/homepage-dev
   - ROOT_URL=http://localhost
   - MAIL_URL=smtp://some.mailserver.com:25
  labels:
    io.rancher.container.pull_image: always
mongo:
  image: mongo:3.2.6
  command: mongod --smallfiles
  volumes:
      - /srv/docker/homepage/mongo:/data/db
  labels:
    io.rancher.container.pull_image: always

또한 간단한 빌드 스크립트를 만듭니다.

nano new.sh
#!/bin/bash
 
IMAGE_NAME="registry.cloud.infra/homepage"
 
case "${1}" in
	--build | -b )  docker build --no-cache --rm -t ${IMAGE_NAME} .
		;;
	--run | -r ) docker run -d -P -t ${IMAGE_NAME}
        ;;
    --help | -h ) printf "usage: ${0} [arg]n--build,-btBuild imagen--run,-rtRunn"
		;;
	* ) printf "Print ${0} --help for helpn"
		;;
esac
export RANCHER_URL='https://master1.cloud.infra:8080/v1/'
export RANCHER_ACCESS_KEY='access'
export RANCHER_SECRET_KEY='secret'

그리고 Rancher-compose(Racher의 오른쪽 하단에 있는 링크)

rancher-compose --file docker-compose-rancher.yml create
rancher-compose --file docker-compose-rancher.yml up -d

모든 것이 성공적으로 완료되면 Rancher에 다음이 표시됩니다.

Consul에서 우리는 또한 다음을 볼 수 있습니다:

NGINX 및 consul-template 설치

yum install nginx
wget https://releases.hashicorp.com/consul-template/0.15.0/

NGINX용 영사 템플릿 생성

nano /etc/nginx/conf.d/homepage.ctmpl
server {
    listen 80;
    server_name homepage.cloud.infra;
    client_max_body_size 4M;
    proxy_cache            one;
 
    location / {
        proxy_set_header Host $host:$server_port;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        {{range service "homepage-3000" }}
        proxy_pass http://{{.Address}}:{{.Port}};{{end}}
        proxy_read_timeout 90;
        proxy_cache_valid      200  10m;
        proxy_cache_methods    GET HEAD POST;
        proxy_cache_use_stale  error timeout invalid_header updating http_500 http_502 http_503 http_504;
        proxy_http_version 1.1;
        proxy_set_header   Upgrade $http_upgrade;
        proxy_set_header   Connection "upgrade";
    }
 
}

NGINX 및 consul-template 시작

service nginx start 
consul-template  
-consul master1.cloud.infra:8500  
-template "/etc/nginx/conf.d/nginx.ctmpl:/etc/nginx/conf.d/nginx.conf:service nginx restart"

이제 Consul-template은 Consul-server의 변경 사항을 추적하고 데이터를 NGINX 구성에 다시 씁니다.

클라우드의 마지막 터치는 지속적인 통합입니다.

이를 위해 API에서 받은 값을 Jenkins의 구성에 추가합니다.

작업을 생성하고 다음을 shell exec 요소에 붙여넣습니다.

cd $JOB_NAME; ./new.sh -b
docker push registry/homepage
rancher-compose --file docker-compose-rancher.yml up --force-upgrade --pull --confirm-upgrade -d

프라이빗 클라우드가 프로젝트를 제공할 준비가 되었습니다.

프로세스를 진행하고 나면 프라이빗 클라우드를 사용할 준비가 된 것입니다. 이제 클릭 한 번으로 클라우드 프로젝트를 배포할 수 있습니다. 컨테이너는 부하가 가장 적은 호스트에 상주하며 내부 Rancher 네트워크를 통해 서로 연결됩니다.

이 DevOps 사설 클라우드 설정의 모든 기능을 자세히 살펴보지는 않았지만 핵심 기능에 대한 개요는 잘 알고 있어야 합니다.

K&C – 우리는 20년 이상 혁신적인 기술 솔루션을 만들어 왔습니다.

개별 요구 사항이나 다음 프로젝트에 대해 논의하려면 저희에게 연락하십시오.

추가 확인

이 사례 연구에서는 K&C의 QA 컨설턴트가 애자일 테스트를 설정한 방법을 보여줍니다.

About admin

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다