티스토리 뷰

윈도우 로컬에 Docker for Windows 설치 후 kubernetes 활성화를 한 후 Helm 설치 테스트를 해봤다.

 

구성은 아래와 같이 했다.

서비스로 배포하고 일단 NodePort로 30123을 지정해 외부에서 쓸 수 있게 구성함

(Helm 배포 테스트용이라 Ingress 설정 등 따로 신경쓰지 않음)

 

 

Docker 컨테이너 이미지 배포 후에 아래와 같이 Helm을 구성함

파일 디렉토리 구조는 아래와 같다.

└─Chart
    │  .helmignore
    │  Chart.yaml
    │  values.yaml
    │
    └─templates
            deployment.yaml
            service.yaml

 

Chart.yaml

apiVersion: v1
name: test
description: A Helm chart for Server
type: application
version: 0.1.0
appVersion: 1.16.0

 

values.yaml

appName: server
config:
  applicationUrl: # application url
  host: # host address
  externalPort: 30123
namespace: dev-apim
image:
  repository: # hub repository address
  pullPolicy: Always
  tag: v1
replicaCount: 1
latest: latest
service:
  type: NodePort
  port: 8080
  sessionAffinity: ClientIP

logPath: /logs/server
resources:
  requests:
    cpu: 500m
    memory: 1Gi
  limits:
    cpu: 500m
    memory: 1Gi
pvc:
  logName: log-pvc
volume:
  logName: log-volume
  logMountPath: /apim/logs

database:
  db1:
    url: # db1 jdbc url
    user: root
    password: 1234
  db2:
    url: # db2 jdbc url
    user: root
    password: 1234

 

deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{.Values.appName}}-deployment
  namespace: {{.Values.namespace}}
spec:
  replicas: {{.Values.replicaCount}}
  selector:
    matchLabels:
      app: {{ .Values.appName }}
  template:
    metadata:
      labels:
        app: {{ .Values.appName }}
    spec:
      containers:
        - name: {{ .Values.appName }}
          image: "{{ .Values.image.repository }}:{{ .Values.latest }}"
          imagePullPolicy: {{ .Values.image.pullPolicy }}
          ports:
            - containerPort: {{.Values.service.port}}
          env:
            - name: JVM_OPTS
              value: >
                -Dspring.profiles.active=default
                -DapplicationUrl={{.Values.config.applicationUrl}}
                -Dspring.datasource.url={{.Values.database.db1.url}}
                -Dspring.datasource.username={{.Values.database.db1.username}}
                -Dspring.datasource.password={{.Values.database.db1.password}}
                -Dspring.datasource.db2.url={{.Values.database.db2.url}}
                -Dspring.datasource.db2.username={{.Values.database.db2.username}}
                -Dspring.datasource.db2.password={{.Values.database.db2.password}}
          resources:
{{ toYaml .Values.resources | indent 24 }}

 

service.yaml

apiVersion: v1
kind: Service
metadata:
  name: {{.Values.appName}}-service
  labels:
    app: {{.Values.appName}}-service
  namespace: {{.Values.namespace}}
spec:
  type: {{ .Values.service.type }}
  ports:
    - port: {{ .Values.service.port }}
      targetPort: {{ .Values.service.port }}
      protocol: TCP
      name: http
      nodePort: {{ .Values.config.externalPort }}
  selector:
    app: {{.Values.appName}}
  sessionAffinity: {{.Values.service.sessionAffinity}}
  sessionAffinityConfig:
    clientIP:
      timeoutSeconds: 10800

 

Chart 폴더 내에서 Helm 인스톨 진행

kubectl get ns
NAME                   STATUS   AGE
default                Active   9d
 
helm package .
helm install test test-0.1.0.tgz --namespace default

kubectl get pod
NAME   READY   STATUS             RESTARTS   AGE
test   1/1     Running            0          0h

 

'Architecture > k8s' 카테고리의 다른 글

[CKAD] ReplicaSets  (0) 2021.03.22
[CKAD] Pods  (0) 2021.03.22
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함