본문 바로가기

전체 글

(111)
[기타] Docker이미지를 이용한 NextCloud 구성 --------------------------------------------- 21.05.26 추가 일년만에 다시 이 글을 수정하는데 새 서버에 구축하다가 빠진내용이 있는 거 같아 추가합니다. 우선 Docker-compose.yaml파일 내용을 공유합니다. version: '2' volumes: nextcloud: db: mariadb_volume: nextcloud_volume: services: db: image: mariadb command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW restart: always volumes: # - ./home/mariadb_volume:/var/lib/mysql - mariadb_volume:/..
[쿠버네티스 #6] Kubernetes metallb를 사용한 로드밸런서 타입 서비스 배포 20. 07. 16 추가 내용 ----------------------------- 인그레스 컨트롤러에 대한 내용이 없는거 같아 간략하게 나마 추가합니다. 인그레스 컨트롤러 설치 명령어 입니다. 해당 파일을 배포하면 새로운 namespace가 생깁니다. namespace안에 요소들을 보면 인그레스 컨트롤러가 있습니다. kubectl apply -f http://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/provider/baremetal/deploy.yaml ----------------------------- 쿠버네티스 서비스에 대한 글을 올렸을 때 3가지 종류의 타입이 있다고 말했다. 1. Cluster IP 2. N..
[쿠버네티스 #5] Docker compose와 kubernetes의 차이 이번 포스팅에서는 Docker Compose에 대해 얘기해보려한다. 일단 나는 반년 전 무작정 쿠버네티스에 대해 공부할 때 도커 컴포즈는 물론이며 도커에 대한 기본 상식도 없었다. 그 때 당시에 도커 컴포즈와 쿠버네티스 둘다 컨테이너를 쉽게 만들어주는 거 아닌가? 라고 생각했고 쿠버네티스만 사용하였으며 도커 컴포즈를 사용하지 않았기에 별로 신경않았다. 하지만 최근에 도커 컴포즈를 사용할 일이 있었고 이에 대해 다시 찾아보게되었다. 우선 쿠버네티스의 등장배경부터 알아보면 MSA가 유행하게되었고 그에 따라 도커와 컨테이너에 대한 기술이 주목받게되었다. 그러다 다수의 컨테이너를 관리할 필요가 생겼고 다수의 컨테이너를 관리할 수 있는 도구인 컨테이너 오케스트레이션 이 등장하게되었다. 컨테이너 오케스트레이션은 여..
[코딩테스트 #4] 전화번호 목록(해시) level2 - java 네번째 코딩테스트 시간입니다. 이번엔 level 2에 대한 두려움을 가지고 시작했지만 생각보다 어렵지 않았습니다. 문제는 https://programmers.co.kr/learn/courses/30/lessons/42577 코딩테스트 연습 - 전화번호 목록 | 프로그래머스 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조대 : 119 박준영 : 97 674 223 지영석 : 11 9552 4421 전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를 그렇지 ..
[쿠버네티스 #tip3] 컨테이너 안에서 쉘 스크립트를 사용할 때 경로지정 최근 python 코드를 컨테이너로 패기징 할 때 발견한 문제다. 지금까지는 python .py 파일을 실행시키는 Container를 만들기 위해 Dockerfile을 작성했는데 이번엔 .py파일이 아닌 쉘 스크립트 파일을 실행시켜야했다. 처음 마주하는 문제였지만 어차피 python이니까 당연히 될 거라고 생각했고 FROM python:2.7 WORKDIR /app ADD . /app RUN apt-get update # COPY requirements.txt . # Application RUN pip install -r requirements.txt CMD ["sh", "./apps/example.sh"] 위처럼 Dockerfile을 작성했다. python 2.7버전에 requirements.txt에 ..
[코딩테스트 #3] k번째 수(정렬) level1 - java 3번째로 도전한 문제는 https://programmers.co.kr/learn/courses/30/lessons/42748 코딩테스트 연습 - K번째수 | 프로그래머스 [1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3] programmers.co.kr 이 문제다. 문제를 이해하는 것도 쉬웠고 풀이과정도 생각보다 쉬웠다. 문제를 간단히 설명하자면 숫자 배열 하나와 2차원 배열 하나를 입력 받는다. 배열에 들어가 있는 숫자를 2차원 배열에 들어있는 숫자로 자르고 정렬한 후 몇 번째에 위치한 숫자를 배열에 저장하여 리턴하는 문제다. 정렬관련해서는 arraylist에 있는 메소드를 쓰면되니까 너무 편했다. 우선 for문을 돌려서 arraylis..
[코딩테스트 #2] 완주하지 못한 선수(해시) level1 - java 프로그래머스에 있는 https://programmers.co.kr/learn/courses/30/lessons/42576 문제이다. 처음에 해당 문제를 읽었을 때 참여자(participant)와 완주자(complection)를 비교하여 참여자의 목록에서 완주자의 이름을 하나씩 빼는 방법을 생각했었다. 그래서 1. 참여자 리스트에서 완주자를 하나씩 빼고 결국 남은 하나가 완주하지 못한 사람이라고 생각하여 코딩을 했다. 결과는 50점 정확성은 100%였지만 효율성부분에서 0%를 받았다. 효율성이란 부분이 뭘까? 속도적인 측면에 문제라고생각했다. 2. 처음에 참여자 리스트에서 완주자를 하나씩 뺀거를 반대로 완주자 리스트에서 참여자 리스트를 비교하여 완주자 리스트에 없는 사람이 들어오면 그사람이 낙오자라고 생각..
[쿠버네티스 #tip2] 파이썬으로 만든 컨테이너에서 print출력이 되지 않을 때 파이썬 flask를 활용해 웹서버를 구축할 때 생긴 오류였다. 진행하고 있던 내용은 외부의 DB에서 데이터를 쿠버네티스 클러스터 내의 웹서버에 보내고 이 웹서버가 다시 쿠버네티스 클러스터 내의 DB로 저장하는 상황이었는데 데이터를 넘겨주는 과정에서 잘 넘어가는지 확인하기 위해 pod에 접근했었다. 근데 로컬에서 잘만되던 코드가 클러스터에 올려놓으니까 거짓말처럼 되지가 않았다. DNS 서비스에 문제가 있나 싶어 coredns도 확인해봤고 pod의 로그를 확인해봐도 rest api가 잘 성공했다는 200코드만 뜰 뿐 data에 대한 print문이 출력되지 않았다. 그 이후 수많은 구글링을 시도했고 결국 인프런 쿠버네티스강사님에게 질문을 했었다. 문제는 python에 있었고 print할 때 해당 코드를 flu..