스프링 부트 어플리케이션 내에서 할 과제

  1. 스프링 부트 어플리케이션에 logback을 이용하여 log 파일 생성하기
  2. redis 연동하는 test url 하나 만들기
  3. mysql 연동하는 test url 만들기
  4. actuator를 사용하기 위한 설정하기
  5. 해당 사항 완료 후 DockerHub에 Docker Image 푸쉬하기

내가 더 하고 싶은거

  1. ingress 설정 https 적용
  2. DB 이중화 작업
  3. ConfigMap 생성

Kubernetes 클러스터 내에서 할 과제

  1. deployment yaml 파일 작성 시 스프링 부트 log 파일을 nfs, pv, pvc를 이용하여 nfs 서버에 생성시키기
  2. deployment 에서 label 처리를 이용하여 node 마다 pod가 뜨게 하고 statefulSet을 이용하여 각 각 연결하기…(아직 모르겠음)
  3. redis 서버 설치하기(스프링 부트와 연결)
  4. mysql db 설치(nfs 서버로)
  5. 외부 접속을 위해 ingress 설정하기
  6. actuator cronjob을 통해서 health check하기
apiVersion: batch/v1
kind: CronJob
metadata:
  name: actuator-check-job
spec:
  schedule: "*/5 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          restartPolicy: OnFailure
          containers:
          - name: actuator-check-container
            image: gkfn185/k8s-project:1.4
            command: ["curl", "-s", "<http://k8s-project-service:40003/actuator>"]
  successfulJobsHistoryLimit: 10
  failedJobsHistoryLimit: 10
vi redis-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: redis
  template:
    metadata:
      labels:
        app: redis
    spec:
      containers:
      - name: redis
        image: redis:latest
        ports:
        - containerPort: 6379
        volumeMounts:
        - name: redis-data
          mountPath: /data
      volumes:
        - name: reids-data             # volumes의 name과 volumeMounts의 name을 일치 시켜야함
          persistentVolumeClaim:
            claimName: redis-pvc         # pvc 이름을 이용하여 참조
kubectl apply -f redis-deployment.yaml
vi redis-service.yaml
apiVersion: v1
kind: Service
metadata:
  name: redis-service
spec:
  selector:
    app: redis
  ports:
    - protocol: TCP
      port: 6379
      targetPort: 6379
vi redis-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: redis-pv
spec:
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: redis-storage
  nfs:
    server: 192.168.219.102
    path: /home/gkfn185/redis
kubectl apply -f redis-pv.yaml
vi redis-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: redis-pvc
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: redis-storage
  resources:
    requests:
      storage: 5Gi
kubectl apply -f redis-pvc.yaml
kubectl apply -f redis-pv.yaml
kubectl apply -f redis-pvc.yaml
kubectl apply -f redis-deployment.yaml
kubectl delete deployment redis-deployment
kubectl delete pvc redis-pvc
kubectl delete pv redis-pv

spring.redis.host=redis-service
spring.redis.port=6379