반응형 도커&쿠버네티스23 [katakoda] Deploying from source onto Kubernetes 컨테이너에 포함되는 것 1) 소스 코드의 컴파일된 버전 2) 소스 코드를 실행하는 데 필요한 모든 런타임 종속성 이 튜토리얼에서 Docker를 컨테이너 형식으로 사용합니다. 우리는 hello-webapp인 Python으로 간단한 웹 애플리케이션을 만들었습니다. 웹앱을 Docker 컨테이너로 패키징하기 위해 Dockerfile을 생성합니다. dockerfile # Run server FROM alpine:3.5 RUN apk add --no-cache python py2-pip py2-gevent COPY requirements.txt . RUN pip install -r requirements.txt COPY . /app WORKDIR /app EXPOSE 8080 ENTRYPOINT ["python"].. 2022. 4. 3. [katakoda] Deploy Docker Compose Files with Kompose 이 시나리오에서는 Kompose를 사용하여 기존 Docker Compose 파일을 Kubernetes에 배포하는 방법을 설명합니다. Kompose Docker Compose 파일을 사용하여 Kubernetes 클러스터에 배포할 수 있는 도구 docker-compose에 익숙한 사용자가 Kubernetes로 이동할 수 있도록 도와주는 도구 kompose 설치하기 curl -L https://github.com/kubernetes/kompose/releases/download/v1.9.0/kompose-linux-amd64 -o /usr/bin/kompose && chmod +x /usr/bin/kompose Compose는 다중 컨테이너 Docker 애플리케이션을 정의하고 실행하기 위한 도구입니다. Com.. 2022. 4. 2. [katakoda] Use Kubernetes To Manage Secrets And Passwords 이 시나리오에서는 Kubernetes를 사용하여 비밀을 관리하는 방법을 배웁니다. Kubernetes를 사용하면 환경 변수를 통해 또는 볼륨으로 포드에 탑재되는 비밀을 생성할 수 있습니다. 이를 통해 SSL 인증서 또는 비밀번호와 같은 비밀을 애플리케이션의 배포 아티팩트 내에 비밀번호를 저장하지 않고 안전한 방식으로 인프라 팀을 통해서만 관리할 수 있습니다. Base64 문자열을 만들고 파일에서 사용할 변수로 저장할 수 있습니다. username=$(echo -n "admin" | base64) password=$(echo -n "a62fjbd37942dcs" | base64) secret yaml echo "apiVersion: v1 kind: Secret metadata: name: test-secr.. 2022. 4. 2. [katakoda] Running Stateful Services on Kubernetes NFS (Network File system) 공유된 원격 호스트의 파일을 로컬에서 사용할 수 있도록 개발된 파일 시스템을 네트워크 파일 시스템 장점: 손쉽게 파일을 공유할 수 있다 단점: 보안에 취약하다 1. NFS 서버 배포하기 NFS는 노드가 네트워크를 통해 데이터를 읽고 쓸 수 있도록 하는 프로토콜입니다. 이 프로토콜은 마스터 노드가 NFS 데몬을 실행하고 데이터를 저장하도록 함으로써 작동합니다. 이 마스터 노드는 네트워크를 통해 특정 디렉토리를 사용할 수 있도록 합니다. 클라이언트는 드라이브 마운트를 통해 공유된 마스터에 액세스합니다. 응용 프로그램의 관점에서 로컬 디스크에 쓰고 있습니다. 덮개 아래에서 NFS 프로토콜은 이를 마스터에 씁니다. 이 시나리오에서 데모 및 학습 목적으로 NFS 서버.. 2022. 3. 29. [katakoda] Liveness and Readiness Healthcheck 활성 및 준비 상태 점검 이 시나리오에서는 Kubernetes가 Readiness 및 Liveness Probe를 사용하여 컨테이너 상태를 확인하는 방법을 배웁니다. 준비 프로브는 애플리케이션이 트래픽 처리를 시작할 준비가 되었는지 확인합니다. 이 프로브는 컨테이너가 시작된 문제를 해결하지만 프로세스는 여전히 워밍업 및 구성되어 트래픽을 수신할 준비가 되지 않았습니다. 활성 프로브는 애플리케이션이 정상이고 요청을 처리할 수 있는지 확인합니다. 프로브(Probe) 컨테이너에서 kubelet에 의해 주기적으로 수행되는 진단(diagnostic)이다. 진단을 수행하기 위해서, kubelet은 컨테이너에 의해서 구현된 핸들러를 호출한다. 프로브 종류 1 livenessProbe 컨테이너가 동작중인지 여부 실패인 경우 kublet은 컨테.. 2022. 3. 28. [katakoda] Networking Introduction Kubernetes에는 Pod 및 서비스가 클러스터 네트워크 내부 및 외부에서 통신할 수 있도록 하는 고급 네트워킹 기능이 있습니다. Kubernetes 서비스는 Pod 집합에 액세스하는 방법에 대한 정책 및 접근 방식을 정의하는 요약입니다. 서비스를 통해 액세스되는 pod 세트는 레이블 선택기를 기반으로 합니다. 핵심 타입 Cluster IP Target Ports NodePort External IPs Load Balancer 1 Cluster IP 클러스터 IP는 쿠버네티스 서비스를 생성할 때 기본 접근 방식이다. 서비스에는 다른 구성요소가 포드에 엑세스하는 데 사용할 수 있는 내부 IP가 할당된다. 단일 IP주소를 사용하면 서비스가 여러 Pod에서 로드밸런싱될 수 있다. YAML apiVersio.. 2022. 3. 22. [katakoda] Deploy Guestbook Web App Example 이 시나리오에서는 Kubernetes 및 Docker를 사용하여 간단한 다중 계층 웹 애플리케이션을 시작하는 방법을 설명합니다. 방명록 예제 애플리케이션은 JavaScript API 호출을 통해 Redis에 게스트의 메모를 저장합니다. Redis는 마스터(저장용)와 레플리카의 redis '슬레이브' 세트를 포함합니다. 핵심 개념 Pods Replication Controllers Services NodePorts 1 쿠버네티스 시작하기 helper 스크립트를 사용하여 단일 노드 클러스터를 시작한다. API, 마스터, 프록시 및 DNS 검색을 시작한다. 웹앱은 DNS 검색을 사용하여 데이터를 저장할 Redis 슬레이브를 찾는다. 2 Redis 마스터 컨트롤러 애플리케이션 시작은 Redis 마스터를 시작하는.. 2022. 3. 22. [katakoda] Deploy Containers Using YAML 컨테이너 배포하기 이 시나리오에서는 Kubectl을 사용하여 배포, 복제 컨트롤러를 생성 및 시작하고 yaml 정의를 작성하여 서비스를 통해 노출하는 방법을 배웁니다. YAML 정의는 배포를 위해 예약되는 Kubernetes 객체를 정의합니다. 객체를 업데이트하고 클러스터에 재배포하여 구성을 변경할 수 있습니다. 1 디플로이먼트 생성하기 디플로이먼트 객체는 가장 흔한 쿠버네티스 객체이다. 디플로이먼트 객체는 이름과 라벨과 함께 필요한 컨테이너 사양을 정의한다. 80포트에서 실행하는 도커이미지 katacoda/docker-http-server 를 사용해서 webapp1이라는 어플리케이션을 실행하는 방법을 정의 한 YAML apiVersion: apps/v1 kind: Deployment metadata: name: weba.. 2022. 3. 22. [katakoda] Deploy Containers Using Kubectl 컨테이너 배포하기 이 시나리오에서는 Kubectl을 사용하여 배포, 복제 컨트롤러를 생성 및 시작하고 yaml 정의를 작성하지 않고 서비스를 통해 노출하는 방법을 배웁니다. 이를 통해 클러스터에서 컨테이너를 빠르게 시작할 수 있습니다. 1 클러스터 실행하기 클러스터 실행하기 minikube start --wait=false 노드가 준비됐는지 확인하기 kubectl get nodes 2 kubectl 실행하기 run 명령어는 이미지나 레플리카 기반의 디플로이먼트를 생성한다. kubectl run Docker 이미지 katacoda/docker-http-server:latest로 컨테이너를 시작하는 http 디플로이먼트를 실행한다. kubectl run http --image=katacoda/docker-http-server.. 2022. 3. 22. 이전 1 2 3 다음 728x90 반응형