
□ Kubernetes는 서버에 직접 붙어서 및 CLI로 대부분 작업이 가능하지만 실시간으로, 직관적으로 상황을 한눈에 보기 위해서는 GUI만 한것이 없습니다. □ kubectl 명령어로 아래처럼 kubernetes dashboard를 deploy 해줍니다. kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.3/aio/deploy/recommended.yaml 정상적으로 kubernetes dashboard namespace가 만들어지고 아래처럼 pod, service, deployment, replicaset이 올라옵니다. □ deployment를 edit해서 아래처럼 옵션을 바꿔줍니다. 참고로 kubernetes ..

□ kubectl: kubectl은 K8S Cluster를 제어하기 위한 커맨드 라인 도구입니다. 구성을 위해, kubectl은 config 파일을 $HOME/.kube 에서 찾습니다. kubeconfig 환경 변수를 설정하거나 --kubeconfig 플래그를 설정하여 다른 kubeconfig 파일을 지정할 수 있습니다. □ 앞서 k8s 구성시 bastion server를 구성하였습니다. bastion server 에서 진행하며 kubectl repo를 생성해 줍니다. cd /etc/yum.repos.d vi kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el..

□ Kubernetes cluster 구축 자동화 도구 kubeadm, kops, kubespray 등의 Kubernetes cluster 구축 자동화 도구가 있습니다. 해당 포스팅에서는 kubespray(Kubernetes의 서브 프로젝트로서 Incubating 되고 있습니다.)로 구성할것입니다. 구성에 관한 상세한 정보는 다음과 같습니다. master node: 3개 worker node: 3개 bastion node: 1개 IaaS는 NBP에서 진행할 것이며 master node 3개, worker node 3개로 구성하고 bastion node 1개를 추가로 구성할 것입니다. 또한 NBP에서 Network Interface를 생성하여 같은 192.168.100.x 에서 통신할 수 있도록 구성하였습..

□ K8S의 개발자가 올린 Spring Boot 기반 Application이 큰 파일을 올리면 "413 Request Entity Too Large" Error 발생 □ 현재 MSA 아키텍처는 아래와 같이 구성 □ 해당 Spring boot Application ingress에 아래와 같이 설정 추가 / Gateway Application ingress에도 아래와 같은 설정 추가 nginx.ingress.kubernetes.io/proxy-body-size: 30m

□ 회사 사내 플랫폼이 K8S 기반으로 되어있는데, Flask 기반 APP을 올려야해서 K8S 올리기 전 docker로 먼저 테스트를 진행할겸 Flask 기반 API 서버를 docker image화해 build하여 container로 띄워보는 방법을 공유하고자 합니다. 구성파일은 간단합니다. 소스코드가 들어가있는 app.py / docker build를 위해 Dockerfile / python library 패키지를 관리하는 requirements.txt 이며, tree 구조로 표현하면 다음과 같습니다. . ├── app.py ├── Dockerfile └── requirements.txt 0 directories, 3 files □ app.py ▶ 5000 port로 실행하며 parmas 값 msg, ..

□ Gitlab runner ▶ 서버들에서 다수의 토큰을 사용하며 Go 언어로 작성되었기 때문에, 단일 바이너리로 처리되며 해당 포스팅에서는 Shared Runners를 활용한 원격배포를 할것입니다. CI / CD 포스팅을 그대로 따라오셨다면 지금부터는 아래 그림처럼 간단하게 실제 Gitlab-runner를 활용한 CI/CD를 구성해 보겠습니다. 전체적인 구성을 설명드리면 현재 CI/CD Server에 Gitlab-runner, Maven을 추가로 설치하고 로컬에서 개발자들이 Gitlab에 Push를 하게 되면 Gitlab-runner가 동작해 WAS Server에 자동으로 배포되는 아키텍처 입니다. Gitlab-runner는 docker가 아닌 Server에 직접 설치를 진행할 것이며, Shared R..

□ Nexus3: Sonatype Inc 에서 만든 Maven Repository를 관리하기 위한 프로젝트 기존 Nexus2 버전 까지는 Maven Repository를 사설로 구축하여 공통 라이브러리 배포 용도나 다른 Maven Repository를 cache 하여 빠르게 다운로드 받을 수 있게 하는 기능이었지만 Nexus3 버전부터는 npm private repository, docker private repository까지 구축할 수 있게 됨 또한, 다양한 Format의 사설 저장소를 만들수 있으며 메인 저장소를 Cache할 수 있는 기능 또한 제공하여 저장소를 관리할 수 있도록 도와주는 관리자 도구입니다. 사설 repository가 왜 필요한가? 1. 회사/단체의 화이트 리스트로 인해 외부 rep..

□ LDAP: 네트워크 상에서 조직이나 개인정보 혹은 파일이나 디바이스 정보 등을 찾아 보는 것을 가능하게 만든 소프트웨어 프로토콜. LDAP의 구조는 총 4가지 모델로 나눌 수 있습니다. Information 모델: LDAP의 데이터에 대한 종류와 디렉토리에 저장되는 정보에 대한 기본단위를 정의. Entries, Attributes, Values 등 3가지로 정의 Entry 디렉토리 정보에 대한 기본단위이며, 속성(attributes)으로 구성된다. attribute는 하나 이상의 값(value)로 구성되고 모든 attribute는 하나 이상의 objectClass로부터 정의된다. 각각의 Entry는 DN(Distinguish Name)으로 구분되고 Tree구조를 형성합니다. 이러한 Tree형태의 구조..

□ Gitlab ▶Gitlab은 이슈, 코드 리뷰, CI 및 CD를 단일 UI로 통합하는 통합 제품입니다. 또한, Git의 원격 저장소 기능과 이슈 트래커 기능들을 제공하는 소프트웨어입니다. ▶Gitlab 도커 이미지는 CE(Community Edition)과 EE(Enterprise Edition) 버전이 있는데 CE 버전으로 설치하였습니다. ▶Team, Group 기능 별도로 제공되어 권한 관리에 용이합니다. ★ 이번 Gitlab도 마찬가지로 docker container로 올려 Traefik에 자동으로 연결해보겠습니다. □ RUN Gitlab-ce Server ▶ publish로 호스트에 연결된 컨테이너의 특정 포트를 외부에 노출시킵니다. 내부에서 사용할 포트와 실제 VM 포트번호를 맵핑해주는 옵션..

□ Docker UUID Error □ 문제파악 현재 클라우드 VM 상에서 docker의 devicemapper의 위치가 Local이 아니라 NAS에 설정되어있는 상황이었습니다, 또한 VM이 매일 리부팅이 발생하는 상황이었습니다. 서버 안에는 docker 컨테이너 서비스들이 돌아가는 상황이었습니다. 모든 서비들이 안들어가저서 서버에서 docker ps -a 명령어를 통해 container를 확인했는데 아예 docker 명령어를 실행시킬 수 없는 상태였습니다. □ 오류 메세지 # systemctl start docker [오류] Job for docker.service failed because the control process exited with error code. See "systemctl sta..