최근 개인적으로 DevOps와 관련하여 프로젝트를 진행하고 있다. 개발자 둘과 협업하여 프로젝트를 진행 중인데, 그중 내가 담당하고 있는 부분은 인프라 제공과 CI/CD 파이프라인을 구성하는 것이다. 인프라는 Kubernetes를 기반으로 제공할 예정이고, 이미 구축을 완료한 상태이다. CI/CD 파이프라인에 대해서는 어느 정도 학습이 된 상태인데, 개발에 대한 이해가 거의 전무해서 이 부분에 대한 학습이 필요했다. 함께 프로젝트를 하고 있는 동료들에게 매번 물어볼 수 도 없는 일이어서 고민하던 차에 패스트캠퍼스의 「코딩 1:8 | 웹 개발 왕초보 입문」 과정을 발견하게 되었다.
내일배움카드를 소지하고 있으면 신청이 가능한데, 국비지원교육으로 클라우드 엔지니어 과정을 이수했던 터라 신청이 어렵지는 않았다. 개인은 4만 원만 부담하면 되고 이것 역시도 미션을 달성하면 환급이 가능해서 당장 신청을 했고 선발될 수 있었다.
강의는 비대면으로, 동영상을 시청하는 형식으로 약 10분 내외의 적당한 길이의 강의로 이루어져 있었다. 군더더기 없는 강사님의 설명과 속도감 있는 수업은 강의를 듣는 내내 지루할 틈이 없었다. 크게 5개의 파트로 이루어져 있고 본격적인 내용은 네 번째 파트에서 프로젝트를 진행하면서 이루어진다. 강의에 집중하고 코드를 잘 따라서 친다면 크게 무리 없이 진행이 가능하다.
특히 좋았던 점은 Github에 개발한 코드를 업로드하고 Netlify를 통해 서비스를 론칭 하는 것까지 해 볼 수 있다는 점이었다. 사실 개발 과정도 과정이지만 이 부분이 나에게 가장 필요한 부분이었다. 강의에서는 작성한 코드를 Github에 push 하고 이를 웹 서비스로 연동하는 과정에서으로 진행하였지만 나는 이 부분을 좀 다르게 진행하기로 했다.
바로 Home Lab 환경에 올려 보기로 한 것이다. 이미 Cilium의 BGP 기능과 OPNsense의 연동을 통해 Kubernetes의 Service의 한 종류인 Loadbalancer를 구성해 둔 상태였기 때문에 실제 작동할 서비스만 있으면 되었는데 이번 강의를 통해 그 내용을 얻을 수 있었다.
위 링크가 바로 그 결과물이다. Home Lab 환경의 Kubernetes가 Loadbalancer 기능을 통해 클러스터 외부로 서비스를 노출하고, 이를 리버스 프록시를 통해 인터넷으로 서비스를 하고 있는 것이다.
구축해둔 Kubernetes 클러스터에서 위 프로젝트가 위치하고 있는 mbti 네임스페이스의 정보를 조회해 보면 아래와 같이 조회가 된다.
Loadbalance에서 부여받은 가상 IP 주소인 10.150.0.3을 Reverse Proxy가 서비스하고 있다고 보면 된다. 아래는 관련 Yaml파일 내용이다.
#deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: mbti-deploy
namespace: mbti
spec:
replicas: 1
selector:
matchLabels:
app: mbti
template:
metadata:
labels:
app: mbti
spec:
containers:
- name: mbti
image: nginx
ports:
- name: http
containerPort: 80
volumeMounts:
- name: mbti-web
mountPath: /usr/share/nginx/html
volumes:
- name: mbti-web
persistentVolumeClaim:
claimName: mbti-pvc
우선 웹 서버 역할을 하는 Nginx의 deployment.yaml 파일의 내용이다. 사실 pvc까지는 필요 없지만 관련 내용 스터디와 테스트를 위해 작성해 봤다.
#service.yaml
apiVersion: v1
kind: Service
metadata:
name: mbti-service
namespace: mbti
spec:
selector:
app: mbti
type: LoadBalancer
ports:
- port: 80
targetPort: 80
다음으로 service.yaml 파일의 내용이다. 간단한 내용으로 Nginx deployment를 Loadbalancer 형식으로 외부로 서비스해준다.
#volume.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mbti-pvc
namespace: mbti
spec:
storageClassName: sc-fast
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20M
마지막으로 PVC의 내용인데 NAS를 바라보고 있는 Storageclass를 호출하여 PV를 생성한다. 해당 PVC 통해 생성된 PV가 Nginx 웹 서버의 html의 파일 볼륨을 제공한다.
이를 통해 간단한 개발과정과 이를 직접 서비스하는 것까지 한번 경험해 볼 수 있는 소중한 시간이었다. 많은 부분을 학습할 수 있었고 협업 프로젝트를 진행하는데 많은 도움이 된 것 같다. 기회가 본격적인 백엔드 강의도 한번 들어볼 수 있는 시간을 가지고 싶다.
'DevOps > Study' 카테고리의 다른 글
CKAD 취득 후기 (1) | 2025.01.28 |
---|---|
CKA 취득 후기 (1) | 2024.02.11 |