Devops50 Kubernetes Django Tutorial (GKE) - 2 안녕하세요. 어제에 이어 Kubernetes 실습환경을 위해 GKE를 생성해보겠습니다. GKE란 AWS의 EKS와 비슷한 서비스입니다. 정확히는 관리형 Kubernetes 서비스입니다. Kubernetes의 모든 부분이 관리형으로 제공되는 것은 아니고 마스터 노드만 관리형으로 제공됩니다. 그 외에 로깅, 빌드, 권한 관리를 지원하며, 클러스터 노드들은 GCE(Google Compute Engine, EC2) 를 사용합니다. 1. Set up GKE 1-1. Create a GKE cluster gcloud container clusters create polls \ --scopes "https://www.googleapis.com/auth/userinfo.email","cloud-platform" \ -.. Devops/Kubernetes 2020. 5. 12. Kubernetes Django Tutorial (Cloud SQL, Storage) - 1 안녕하세요. AWS 프리티어가 끝나면서 Kubernetes를 돌릴만한 곳이 필요했고, Local에서 Virtual Box나 minikube를 설치하여 실습을 해보려고 하였으나 메모리부족으로 설치하지못하고, GCP에 Kubernetes 튜토리얼을 발견하여 GCP를 이용하여 Kubernetes를 배포해보겠습니다. 오늘은 구글의 Running Django on Google Kubernetes Engine를 참고하면서 Cloud SQL(RDS)와 Storage(S3) 연동까지 해보겠습니다. 최종으로는 GCP를 통해서 Kubernetes 배포까지 진행해보겠습니다. 해당 튜토리얼은 Django의 기초지식이 있다는 가정하에 진행되고 있습니다. Docker가 설치되어있어야 되며, Python 3.4 이상의 버전을 사용.. Devops/Kubernetes 2020. 5. 11. Kubernetes - Object:Namespace, ResourceQuota, LimitRange 개념 Kubernetes Cluster 안에는 한정 된 자원(CPU, Memory)이 있습니다. Cluster 내에서는 한정 된 자원으로 Pod의 용량을 할당하고 하는 작업이 이루어집니다. Cluster 안에서 사용할 수 있는 Memory는 4GB라고 예를들어 보겠습니다. 3개의 Namespace가 존재하고 안에 Pod들이 존재합니다. 한 개의 Namespace의 Pod에서 3GB라는 Memory를 잡고 있다면 다른 Namespace들을 속도가 느려지거나 여러 문제를 발생시킬 것 입니다. 이러한 문제를 예방하기 위해 ResourceQuota로 해당 네임스페이스가 가질 수 있는 자원을 관리할 수 있습니다. 3번 째 Namespace를 보면 Pod의 자원이 부족해 문제가 발생할 수 있지만 다른 Namespa.. Devops/Kubernetes 2020. 5. 11. Helm 이란 개념 Helm이란 쿠버네티스의 Package Managing Tool 입니다. 풀어서 말해보면 k8s의 리소스들을 관리하는 Managing Tool 입니다. 정말 간단하게는 리소스들의 사양부터 시작해서 정말 많은 것들을 관리할 수 있는 툴 입니다. ex) 만약 50개의 노드에 100개의 Pod의 RAM 사양이 1GB였는데 이것들을 2GB로 변경하고 싶다고 합니다. Helm을 사용하지 않는다면 엄청나게 어려운 작업이 됩니다. 일일이 Node와 Pod의 설정을 변경해줘야되니 말이죠. 이것들을 좀 더 편리하게 관리해주는 것이 Helm이라고 생각하면 될 거 같습니다. 설치 GCP k8s Master에 CLI로 접속하여 Helm을 설치하겠습니다. $ curl https://raw.githubusercontent... Devops/Kubernetes 2020. 5. 11. Kubernetes - Object:ConfigMap, Secret 설명 ConfigMap과 Secret을 사용해야되는 상황을 먼저 설명하겠습니다. 개발환경(Dev)과 상용환경(Production)이 있습니다. A라는 서비스에는 일반접근과 보안접근을 지원한다. 그래서 개발환경에서는 보안옵션을 해제할 수 있는 옵션이 있다. 보안접속을 하려면 User와 Key를 세팅할 수 있다. 환경에 따라 변하는 값들은 외부에서 결정하게 되는데 이럴 때 ConfigMap과 Secret을 사용합니다. 분리해야되는 일반적인 상수들을 모아서 ConfigMap을 만들고 Key와 같이 보안적인 부분들을 모아서 Secret을 만든다. Pod 생성 시에 ConfigMap과 Secret을 연결 할 수 있는데 컨테이너의 환경변수에 데이터들이 들어가게 된다. A Service의 입장에서는 환경변수를 읽어 .. Devops/Kubernetes 2020. 5. 8. Kubernetes 세미나 Kubernetes 세미나 쿠버네티스는 컨테이너화된 애플리케이션을 자동으로 배포, 스케일링 및 관리해주는 오픈소스 시스템입니다. Master라는 Node가 있고, ETCD(Key, Value) API Service(kubectl)로 통신을 할 수 있다. Worker Node들이 있고, Master는 Worker Node들에 있는 Pod들을 컨트롤 한다. 제일 왼쪽의 Worker 가 죽게되면 다른 Worker Node에 Application이 이동된다. 쿠버네티스 클러스터 생성 툴 - microK8s, minikube, kops(AWS에서 사용하기 편하다), Cluster API, KUBESPRAY, kind 쿠버네티스운영의 핵심 요소 - Deployment stateless 한 서버 배포 UID로 생성 .. Devops/Kubernetes 2020. 4. 29. Kubernetes - Object:Volume emptyDir 컨테이너들끼리 데이터를 공유하기 위해서 Volume을 생성합니다. 최초 Volume을 생성 할 때 공간이 비어져있기 때문에 emptyDir이라고 이름이 지어졌다. 만약에 컨테이너 1번이 Web역할을하고 2번에 Backend 단을 설정한다고하면 마운트를 해두면 두 서버가 자신의 로컬에 있는 파일처럼 사용을 할 수 있습니다. Pod 안에 생성이 되기 때문에 일시적으로 사용하기 위한 데이터만 넣는 것이 좋다. HostPath 이름대로 한 개의 호스트, 파드들이 올라가져 있는 Node의 Path를 볼륨으로 사용한다. Pod 들이 죽어도 Node의 데이터를 사라지지 않는다. 하지만 Pod-2가 죽어서 ReCreateion 될 때 다른 Node에 생성 될 수도 있다. 해결방법으로는 Node가 추가 .. Devops/Kubernetes 2020. 4. 27. Kubernetes - Object:Service Service 실습 Pod 가 죽고 다시 살아나면 IP가 변경된다. 그래서 Pod에 Service를 달아두고 Service IP로 접근하게 된다. Pod 생성 apiVersion: v1 kind: Pod metadata: name: pod-1 labels: app: pod spec: nodeSelector: kubernetes.io/hostname: k8s-node1 containers: - name: container image: kubetm/app ports: - containerPort: 8080 Service(Type, ClusterIP) 생성 apiVersion: v1 kind: Service metadata: name: svc-1 spec: selector: app: pod ports: - p.. Devops/Kubernetes 2020. 4. 27. Kubernetes - Object 쿠버네티스 Object 서버 한 대는 마스터, 또 다른 서버는 Node로 구성되어있다. 하나의 쿠버네티스 클러스터의 구성 마스터는 쿠버네티스의 전반적인 기능들을 컨트롤하는 것 노드들은 자원을 제공하는 것 클러스터 전체 자원을 늘리고 싶다면 노드들을 계속 추가하면된다. 클러스터안에 Namespace가 쿠버네티스 오브젝트들은 독립 된 공간으로 만들어준다. 네임스페이스에는 Pod들이 존재하고, Pod 들에게 외부로 부터 연결이 가능하게 해주는 Service(IP 할당)가 있어서 연결을 할 수 있다. 하지만 서로 다른 네임스페이스 간에는 연결 할 수 없다. Pod Pod 안에는 여러 컨테이너들이 존재한다 컨테이너는 한 개의 앱을 의미하므로 Pod는 여러 개의 앱을 들고 있다고 생각하면 됩니다. Pod 에 문제가.. Devops/Kubernetes 2020. 4. 27. Kubernetes - 배경, 개념, 장점 안녕하세요. 월급날을 맞이하여 쿠버네티스 강의를 Flex 했습니다. 강의의 내용을 전부 인용하여 작성하게되면 문제가 될 수 있으니 일부내용 + 구글링한 내용으로 포스팅을 해보겠습니다. 가상화 기술 1. Linux(자원격리기술) 리눅스에는 자원들을 격리에서 프로세스들을 격리해서 사용할 수 있는 기술들이 존재하였습니다. 하지만 격리해서 사용할 수 있는 기술들은 사용하기에 어려워 대중적으로 사용되지 않고 있었다고 합니다. 현재는 이 기술을 바탕으로 Docker가 만들어졌죠 2. VM(가상화 기술) VMware로 게임을 하나 더 돌려보려다가 실패한 기억이 새록새록 떠오르네요. 하지만 VM 가상화 하기 위해서 무거운 OS를 띄워야 되기 때문에 성능이 저하되고, 간단한 서비스를 하나 올릴려고해도 이보다 더 큰 OS.. Devops/Kubernetes 2020. 4. 23. Circle CI 통합구축 지속적인 통합이란? 간단하게 말하면 배포할 때 번거롭게 타이핑하는 명령어들을 한번에 관리할 수 있고, 그 작업을 git master 의 push 가 이루어지면 자동으로 해준다는 것이다. 성공과 실패여부를 slack 으로 notification을 발생시킬 수도 있다. 구성안 - Code Repository : Github - CI : CircleCI - Registry : AWS ECR - CD : CircleCI - Target : AWS Batch(ECS) - Notification : Slack 위 처럼 구성을 해보도록 하겠습니다. Circle CI(config.yml)의 Orbs, Jobs, Steps, Workflows에 대해 알아보도록 하겠습니다. https://circleci.com/docs/.. Devops 2019. 12. 2. 관계형 데이터베이스(RDS) - 인스턴스 생성, 연결 RDS(Relational Database Service) 아마존 RDS는 AWS 환경에서 관계형 데이터베이스를 설정 및 운영 할 수 있는 서비스이다. RDS는 범용적으로 사용되는 MySQL, SQL 서버, Oracle, PostgreSQL, MariaDB 등을 선택해서 사용할 수 있으며, MySQL 및 PostgreSQL과 호환되며 아마존 클라우드 서비스에 최적화된 DB인 Amazon Aurora도 제공하고 있다. DB 인스턴스 시작하기 VPC 네트워크 구성 '퍼블릭 액세스 가능성' 부분은 DB 접속을 외부에서 수행할 것인지, 내부에서 수행할 것인지를 나타내는 부분이다. '아니오' 로 선택되어 있다면, RDS 인스턴스에 지정된 VPC 내에서 DB 접속이 가능한 반면 외부 네트워크에서 DB를 접속할 수 .. Devops/AWS 2019. 9. 13. 이전 1 2 3 4 5 다음 💲 추천 글