devops/kubernetes(9)
-
kubernetes - 인그레스(ingress)
ingress kubernetes에 특별한 요청이 올 때 어떻게 처리할 것인지 도와주는 기능을 합니다. 기능 1. 외부 요청의 라우팅: /apple, /apple/red 등과 같이 특정 경로로 들어온 요청을 어떠한 서비스로 전달하는 라우팅ㅇ 규칙을 설정할 수 있습니다. 2. 가상 호스트 기반의 요청 처리: 같은 IP에 대해 다른 도메인 이름으로 요청이 도착했을 때, 어떻게 처리할 것인지 정의할 수 있습니다. 3. SSL/TLS 보안 연결 처리: 여러 개의 서비스로 요청을 라우팅할 때 보안 연결을 위한 인증서를 쉽게 적용할 수 있습니다. 하지만 기존의 NodePart, LoadBalancer 등의 서비스로도 충분히 위기능을 이용할 수 있을 것 같은데 ingress는 왜 사용해야 할까요? 만약 위와 같이 i..
2020.02.19 -
kubernetes 리소스의 관리와 설정 - Configmap, Secret
애플리케이션을 만들면 초기 설정 값이 필요한 오브젝트들이 있을 것입니다. ex) DB, Nginx 등등 도커에서 이러한 설정 값을 넘겨 주는데 -e옵션을 사용하거나 Dokcerfile을 작성했습니다. 이러한 방법이 좋은 방법이 될 수 있지만 상황에 따라서는 나쁜 선택이 될 수 있습니다. 그래서 kubernetes에서는 yaml 파일과 설정값을 분리할 수 있는 configmap, secret이라는 오브젝트를 제공합니다. configmap은 설정 값을 secret은 노출되서는 안되는 값을 넣어 줄 때 사용합니다. configmap 사용해보기 configmap은 namespace에 속하기 떄문에 namespace별로 configmap이 존재합니다. kubectl create configmap kubectl c..
2020.02.19 -
kubernetes 리소스의 관리와 설정 - namespace
namespace 쿠버네티스에서는 오브젝트들을 논리적으로 구분지을 수 있는 namespace라는 기능을 제공하고 있습니다. 포드, 레플리카셋, 디플로이먼트, 서비스 등을 묶여 있는 하나의 가상 공간 또는 그룹이라고 이해하면 됩니다. 예를 들어 database기능을 제공하는 포드들 끼리는 database라고 묶으면 되고 테스트 코드를 위한 오브젝트는 testbed 등을 묶으면 공통적인 성질을 가지고 있는 오브젝트를 좀 더 손 쉽게 관리할 수 있습니다. 네임 스페이스 사용해보기 kubectl get namespace or ns 를 통해 현재 존재하는 namespace를 확인할 수 있습니다. 여러분이 특별한 네임 스페이스를 만들지 않아도 아래와 같은 네임 스페이스가 만들어져있습니다. kubectl get na..
2020.02.19 -
kubernetes started(5) 서비스(Service)
이전에 오브젝트들인 pod, raplicaset, deployment를 만들면 외부에서 접근할 수 없었습니다. 게다가 도커 컨테이너와 마찬가지로 포드의 IP는 영속적이지 않아 계속해서 변할 수 있습니다. 그리고 이전의 yaml 파일을 확인해보면 containerPort를 볼 수 있는데 그렇다고 해서 이 포트를 통해서 외부에서 접근할 수 없습니다. spec: containers: - name: nginx image: nginx:1.10 ports: - containerPort: 80 그래서 디플로이먼트의 포드들이 외부에서 접근하려면 서비스라고 불리는 별도의 쿠버네티스 오브젝트를 생성해야합니다. 우리는 서비스를 통해 아래와 같은 기능을 사용할 수 있습니다. 1. 여러 개의 포드에 쉽게 접근할 수 있도록 고유..
2020.02.15 -
kubernetes started(4) 디플로이먼트(Deployment)
Deployment는 reflica의 상위 오브젝트입니다. 보통 디플로이먼트가 생성되면 해당 디플로이먼트에 대응하는 레플리카셋도 함께 생성됩니다. 따라서 디플로이먼트를 사용하면 포드와 레플리카셋을 직접 생성할 필요가 없습니다. deployment yaml 생성 apiVersion: apps/v1 kind: Deployment metadata: name: replicaset-nginx spec: replicas: 4 selector: matchLabels: app: my-nginx template: metadata: name: my-nginx-pod labels: app: my-nginx spec: containers: - name: nginx image: nginx:1.10 ports: - contain..
2020.02.15 -
kubernetes started(3) 레플리카 셋(Replica Set)
이전에 공부했던 포드는 여러 개의 컨테이너를 묶어서 추상화하여 완전한 애플리케이션을 실행하기로 만드는 것이었다. 우리는 외부 요청을 동일한 포드에 잘 분배하여 반환하게 실행하게 할 것입니다. 그럼 여기서 다수의 동일한 포드를 어떻게 만들면 좋을까요?? 단순하게 생각해보면 yaml 파일에 여러 개의 포드를 명시해주면 된다. 이는 불필요한 작업을 반복하는 안 좋은 방법이라고 생각한다. 그리고 또한 노드나 포드에 고장이나서 종료되게 되면 다시 접근하지 못하게 되어 복구되지 못합니다. 따라서 이러한 한계점을 해결하기위해 레플리카 셋을 같이 사용합니다. 레플리카 셋은 포드를 안정적으로 여러 개 실행할 수도 있고, 노드나 포드에 문제가 생기더라도 정해진 개수의 포드를 복구하여 사용할 수 있습니다. 1. 정해진 수의..
2020.02.15