1 minute read

Helm

Helm 설치 (master)

방화벽 해제

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

파일 다운 및 설치

curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh

Helm을 이용해서 모니터링 환경 구축

네임스페이스 생성

kubectl create namespace monitoring

Helm 레토지토리 추가

helm repo add prometheus-community https://prometheus-community.github.io/helm-charts

레포지토리 업데이트

helm repo update

프로메테우스 + 그라파나 설치

wget https://raw.githubusercontent.com/grafana/helm-charts/main/charts/grafana/values.yaml
helm install prometheus prometheus-community/kube-prometheus-stack -f "values.yaml" --namespace monitoring

설치확인

image
image
프로미스 서비스의 설정을 바꿔준다.

image
내 마스터ip:포트번호로 접속 확인한다.

그라파나 접속 확인

아이디: admin
비밀번호: prom-operator

그라파나 모니터링 탬플릿 불러오기

image
image
image
image

쿠버네티스 디플로이먼트를 이용한 아키텍쳐 만들기

DB

시크릿키

apiVersion: v1
kind: Secret
metadata:
  name: mysql-sec
  namespace: prod
data:
  MYSQL_ROOT_PASSWORD: cXdlcjEyMzQ=

pv,pvc

apiVersion: v1
kind: PersistentVolume
metadata:
  name: mysql-pv-prod
  namespace: prod
spec:
  capacity:
    storage: 10G
  accessModes:
  - ReadWriteOnce
  local:
    path: /mysql-volume
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - {key: kubernetes.io/hostname, operator: In, values: [node1]}
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pvc
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 10G
  storageClassName: ""
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pvc
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 10G
  storageClassName: ""

파드 생성

apiVersion: v1
kind: Pod
metadata:
  name: mysql-pod
  labels:
    type: db
spec:
  nodeSelector:
    kubernetes.io/hostname: node1
  containers:
  - name: container
    image: mysql:latest
    ports:
    - containerPort: 3306
    envFrom:
    - secretRef:
        name: mysql-sec
    volumeMounts:
    - name: mysql-pvc-pv
      mountPath: /var/lib/mysql
  volumes:
  - name : mysql-pvc-pv
    persistentVolumeClaim:
      claimName: mysql-pvc

서비스

apiVersion: v1
kind: Service
metadata:
  name: mysql-svc
spec:
  selector:
    type: db
  ports:
  - port: 3306
    targetPort: 3306

was

파드 생성

apiVersion: apps/v1
kind: Deployment
metadata:
 name: tomcat-deployment-prod
spec:
 selector:
   matchLabels:
    type: was
 replicas: 2
 template:
   metadata:
     labels:
       type: was
   spec:
    containers:
    - name: container
      image: xc7230/tomcat:0.6
      ports:
      - containerPort: 8009
      resources:
        requests:
          cpu: 100m
        limits:
          cpu: 200m

서비스

apiVersion: v1
kind: Service
metadata:
  name: tomcat-svc
spec:
  selector:
    type: was
  ports:
  - port: 8009
    targetPort: 8009

web

파드 생성

apiVersion: v1
kind: ConfigMap
metadata:
  name: httpd-cm-prod
data:
  TOMCAT_SVC_NAME: tomcat-svc-prod


apiVersion: apps/v1
kind: Deployment
metadata:
 name: httpd-deployment-prod
 namespace: prod
spec:
 selector:
   matchLabels:
    type: web
 replicas: 2
 template:
   metadata:
     labels:
       type: web
   spec:
    containers:
    - name: container
      image: xc7230/httpd:0.2
      ports:
      - containerPort: 80
      resources:
        requests:
          cpu: 100m
        limits:
          cpu: 200m

서비스

apiVersion: v1
kind: Service
metadata:
  name: httpd-svc
spec:
  selector:
    type: web
  ports:
  - port: 80
    targetPort: 80
  type: LoadBalancer