코딩과로그

[기록용] 쿠버네틱스 config 파일(Deployment, Service) 본문

카테고리 없음

[기록용] 쿠버네틱스 config 파일(Deployment, Service)

피리음 2023. 4. 11. 16:17

Deployment 객체 

관련 문서

https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.26/#deploymentspec-v1-apps

Config 파일

# api version
apiVersion: apps/v1
# 객체의 종류
kind: Deployment
# 메타데이터
metadata:
  name: second-app-deployment
# pods에 대한 내용
spec:
  replicas: 1
  selector:
    matchLabels:
      app: second-app
      tier: backend
  template:
    metadata:
      labels:
        app: second-app
        tier: backend
    spec:
      containers:
        - name: second-node
          image: sororiri/simple-node-app:2
        # - name: ...
        #   image: ...

실행 방법

# deployment.yaml 파일 적용
$ kbctl apply -f deployment.yaml
deployment.apps/second-app-deployment created

# 포드가 만들어지는 중
$ kbctl get pods                
NAME                                     READY   STATUS              RESTARTS   AGE
second-app-deployment-5bfdfcf985-df5kt   0/1     ContainerCreating   0          2s

# 포드 실행 완료
$ kbctl get pods
NAME                                     READY   STATUS    RESTARTS   AGE
second-app-deployment-5bfdfcf985-df5kt   1/1     Running   0          5s

 

 

 

Service 객체

관련 문서

https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.26/#service-v1-core

Config 파일

# core/v1 이지만 core는 생략이 가능함
apiVersion: v1
kind: Service
metadata:
  name: backend
spec:
  selector: 
    app: second-app
  ports:
    - protocol: 'TCP'
      port: 80
      targetPort: 8080
    # - protocol: 'TCP'
    #   port: 443
    #   targetPort: 443
  type: LoadBalancer

 

실행 방법

# service 객체 배포
$ kbctl apply -f service.yaml   
service/backend created

# 서비스 객체 생성 확인
$ kbctl get services         
NAME         TYPE           CLUSTER-IP    EXTERNAL-IP   PORT(S)        AGE
backend      LoadBalancer   10.96.58.49   <pending>     80:30266/TCP   7s
kubernetes   ClusterIP      10.96.0.1     <none>        443/TCP        4h42m

# 미니큐브에서 backend 서비스 실행
$ minikube service backend  
|-----------|---------|-------------|---------------------------|
| NAMESPACE |  NAME   | TARGET PORT |            URL            |
|-----------|---------|-------------|---------------------------|
| default   | backend |          80 | http://192.168.49.2:30266 |
|-----------|---------|-------------|---------------------------|
🎉  Opening service default/backend in default browser...

Opening in existing browser session.

 

Config 파일로 생성한 객체를 지우는 방법

# 
$ kubectl delete -f deployment.yaml,service.yaml

OR

$ kubectl delete -f deployment.yaml -f service.yaml

 

yaml Config파일을 합치는 방법

# service.yaml
...

# --- 로 분리하는 게 가능하다. yaml 형식의 특징이라고 한다.
---

# deployment.yaml
...