Container 썸네일형 리스트형 [Docker]Dockerfile을 이용해 빌드, 배포하기 트러블슈팅 Project3-DAY3-Step1 목표: 수정된 openapi.yaml을 ec2에서 Dockerfile을 사용하여 배포 자동화를 달성하자. 필요한 것: redoc-cli: openapi.yaml을 .html파일로 변경하여 정적 호스팅 가능하게 하자. apache2: .html파일을 정적호스팅 하자. ssh: ec2에 접속하자. scp: local의 파일을 ec2에 옮기자. shell script: 명령어를 파일에 정리하여 반복되는 작업을 한번에 실행하자. Apache2 is not running 작업흐름 ec2에 ssh를 통해 접속하여 Docker를 설치한다. 로컬에서 redoc-cli를 통해 .html파일을 생성한후 index.html로 파일명을 변경한다. ec2에 접속하여 apache2 서버를 이미.. 더보기 [k8s]readiness probe로 파드 health check 하기! 목표: 3.0 버전의 CozServer 파드가 탐침기(probe)에 의해 문제가 있음을 스스로 발견하게 하고, 자동으로 롤백할 수 있게 하세요 디플로이먼트의 spec.minReadySeconds 속성의 기본값은 0입니다. 이 말은 곧 파드가 Running으로 변하면 "사용 가능한 것으로 간주한다"는 의미입니다. 그런데, 실제로 CozServer의 3.0 버전은 문제가 있는 버전이었죠. minReadySeconds를 늘리면, 롤아웃의 속도를 조절할 수 있습니다. CozServer의 3.0 버전 디플로이먼트에 readiness probe를 달면, 롤아웃이 늦춰지는 동안(minReadySeconds가 충분히 길어야 합니다), 탐침이 가능합니다. - readiness probe를 달고 - HTTP GET 요청을.. 더보기 [k8s]스테이트풀 셋 Stateless 한 파드를 Stateful 하게 관리하고 싶다. 파드는 일시적이며 Stateless하다. Deployment에서 파드의 교체와 배치를 담당하며, 레플리카셋을 통해 파드를 수평 확장할 수 있다. 파드가 Stateless 하기에 수평 확장이 쉽고 파드들은 상호 대체 가능하다. 이렇듯 쿠버네티스는 Stateless 한 애플리케이션을 관리하는데 특화되어 있다. 아무래도 컨테이너 기술 자체가 그렇듯이 말이다. 그러나 데이터베이스와 같이 Stateful 하게 관리해야 할 때도 있을 것이다. 그럴 땐 어떻게 할까? MySQL, mongoDB, redis와 같은 데이터베이스 어플리케이션이 담긴 파드가 사라질 때, 데이터가 함께 사라지도록 두어서는 안 된다. 쿠버네티스에서 제공하는 Volume은 컨테이.. 더보기 [k8s]서비스 디스커버리 쿠버네티스의 목적 쿠버네티스는 컨테이너화 된 워크로드와 서비스를 관리하기 위한 이식성이 있고, 확장 가능한 오픈소스 플랫폼이다. 즉 대량의 컨테이너를 쉽게 관리하기 위한 도구이다. 이 쿠버네티스의 파드는 컨테이너를 실행하는 가장 작은 작업단위이다. 파드에 직접 접근하지 않도록 파드는 노드와 클러스터로 감싸져있다. 이는 서비스 간의 강한 의존성을 제거하기 위한 Decoupling과정으로, 이것의 장점은 앞서 배운 MSA와 비슷하다. 서비스 파드를 네트워크 상에 노출시킬 수 있게 만드는 리소스 파드 접근 정책을 정의하는 추상적 개념 spec.selector가 결정한다. 서비스 디스커버리 마이크로서비스 사이에서 서로가 서로를 호출하는 방법(IPC: Inter-Process Communication)이다. 동기.. 더보기 [k8s]쿠버네티스 개념 쿠버네티스(Kubernetes, k8s)란 오픈소스로 만들어진 컨테이너 오케스트레이션 도구 컨테이너화된 애플리케이션을 자동으로 배포, 스케일링하는 등의 관리 기능을 제공 각기 다른 환경(온프레미스 서버, VM, 클라우드)에 대응 가능 무엇을 오케스트레이션 하나? orchestrate의 사전적 의미는 다음과 같다. to plan and organize something carefully and sometimes secretly in order to achieve a desired result 아키텍처가 모놀리식에서 마이크로 서비스화되어 필요한 컨테이너가 증가하고, 확장성을 높이기 위해 스케일링을 할 경우 더욱 많은 컨테이너가 필요하다. 이 때 쿠버네티스는 수 많은 컨테이너를 더 잘 관리할 수 있는 도구이다.. 더보기 [Docker]애플리케이션을 Docker compose와 AWS의 ECS/ECR을 통해 배포해보자! 일단 공식문서를 보고 따라해보자! 이전에 했던 애플리케이션을 이용해보자! app.js 수정 - const port = 80 + const port = 3333 //3333번 포트 노출로 변경 script.js 수정 - fetch('http://localhost:3333/') + fetch(`http://${location.hostname}:3333/`) docker-compose.yml 수정 version: "3.0" services: frontend: build: frontend image: /frontend:1.0 ports: - target: 80 published: 80 x-aws-protocol: http depends_on: - backend backend: build: backend imag.. 더보기 [Docker]풀스택 앱 컨테이너화, Docker Compose를 이용해 실행해보자 깃허브 레포지토리에 해당 실습파일을 클론해오자. backend, frontend 폴더와 각 폴더의 내용을 확인할 수 있다. frontend Dockerfile을 확인해보니, httpd:2.4를 기반으로 앱이 돌아가는 것을 알 수 있다. FROM httpd:2.4 Docker hub에서 httpd:2.4 이미지를 다운받자. sudo docker pull httpd:2.4 작성된 index.html파일과 script.js을 httpd:2.4 이미지로 실행된 컨테이너에 넣어주면 실행될 것이다. Dockerfile을 수정해보자. FROM httpd:2.4 COPY . /usr/local/apache2/htdocs/ apache2는 정적 호스팅을 하기 위해 /usr/local/apache2/htdocs/ 경로에 .. 더보기 [Docker]docker: Error response from daemon: failed to create shim: OCI runtime create failed: OS: windows wsl 1 docker: 20.10.13 도커를 다운받고, 테스트하기 위해 hello-worold 이미지를 컨테이너로 실행하던 중 다음과 같은 에러를 만났다. 에러 코드는 다음과 같다. docker: Error response from daemon: failed to create shim: OCI runtime create failed: container_linux.go:380: starting container process caused: process_linux.go:722: waiting for init preliminary setup caused: EOF: unknown. ERRO[0004] error waiting for container: context canceled 해.. 더보기 이전 1 2 다음