# Harbor

주식회사 엔아이 개발팀 시작
서버 관제 2년에 풀스택 개발자 3년차에 스타트업 팀장으로 들어와 개발팀을 처음 꾸리면서 어떤 기술을 사용하고 어떻게 개발을 진행해 나갈 것인지 고민하면서 생각한 것들을 정리할 예정 1. 개발 환경 세팅 github, aws(ec2,eks,ecr,s3), github action ,watchtower 2. 사용 툴 vscode, github coplit, figma , notion... 이외 google docs로 공유 및 정리 3. 사용할 수 있는 기술 프론트 - react, next, storybook 
harbor 레지스트리 설치과정 - 2
kubernetes에서 Harbor registry에 있는 이미지 사용하여 Deployment 만들기 harbor registry secret 등록하기 registry에 접근하려면 credentials 값이 필요합니다. Deployment.yaml 수정하기 Deployment 내에 imagePullSecrets 값을 추가합니다. Container 생성 시 ImagepullError가 아니면 성공! 디버깅이 필요한 경우 kubectl describe, logs로 Pod의 상태를 꼭 체크할 것 특히 Describe 명령어를 사용하는 경우 Event 이하의 상태를 체크하는 것이 중요합니다.
harbor 레지스트리 설치과정 -1
하버 레지스트리가 컨테이너 보안, RBAC, https 지원 레지스트리 UI도 좋아서 도입하게 됐습니다. 더 찾아보니 복제 기능도 있어서 private docker registry의 이미지도 옮길 계획 중. 개발환경은 온프레미스 환경에서 적용시킨 것이기 때문에 AWS, Azure, GCP와 같은 클라우드인 경우 Ingress 설정 옵션이 다를 수 있음을 알아주셨으면 합니다. 설치과정 helm chart 파일 받기 Install 하기 전에 해둬야할 것 ip 작성란은 xxx.xxx.xxx.xxx로 표기 양해부탁드립니다. PV.yaml PVC.yaml SC.yaml PV, PVC ,SC 세팅과정에서 스토리지 클래스가 일치하지않으면 PVC는 pending상태가 되며 정상적으로 생성이 되면 Bound 상태여야 함  오류 원인 Kubernetes Ingress Controller Fake Certificate 가 발생하는 경우 > 1. 다른 Ingress에서 동일한 도메인을 사용할 경우 > 2. 인증서가 규칙에 맞지 않거나 결함이 있을 경우 > 3. 도메인 주소
harbor endpoint 설정
dmz에 harbor를 구성하게 되면 프록시 캐시를 구성할수있음 레지스트리 클릭 new endpoint 클릭 endpoint에 quay.io나 필요한 ecr 주소등을 넣으면된다. ex) https://public.ecr.aws, https://quay.io, https://${자신 계정 코드}.dkr.ecr.${리전}.amazonaws.com 프로젝트에서 New project를 하면서 proxy cache를 enabled 하면 추후에 필요한 image가 하버에 저장되면서, 가져다 쓸수 있게 된다.!  branch 만들기 2) 도커 파일 생성 3) index.html 을 수정해서 붙혀넣게 끔 해두었음. GitLab Access Token을 생성해서 젠킨스에 넣기 role 설정 scope 설정 젠킨

클러스터 파이프라인구현 - 03 (파이프라인 스택 설치)
개요 구성한 파이프라인에 대해 설명한다. Stacks | stack | version | | --- | --- | | gitlab(helm) | gitlab-6.8.2 | | harbor(helm) | harbor-1.11.0 | | argo(helm) | argo-cd-5.23.1 | | Kaniko | v1.9.1 | Gitlab-runner GitLab CI/CD 파이프라인에서 사용, GitLab 서버와 연결되어 파이프라인의 작업을 실행합니다. Harbor 여기선 docker registry 역할만 수행합니다. KANIKO 카니코를 처음 접한 사람들도 있을 것이다. 보통 컨테이너하면 도커를 많이 생각할 것이다. 아래 내용은 클러스터에서 도커를 이용한 빌드보다

GitOps 시스템 (1) - Harbor
Cloudnet@에서 진행하는 쿠버네티스 실무 실습 스터디를 진행하면서 작성한 글입니다. >스터디에서 사용하는 교재는 24단계 실습으로 정복하는 쿠버네티스 입니다. Cloudnet@ [24단계 실습으로 정복하는 쿠버네티스]( http://www.yes24.com/Product/goods/115843609) 실습 환경 배포 도커 엔진 설치 확인 하버(Harbor)를 이용하여 로컬 컨테이너 이미지 저장소 구축하기 > 🎯 Harbor 에 아무 이미지나 태그해서 업로드하고 다운로드 해보고, 파

GitOps 시스템
📌 목표 이번주는 CI/CD 를 목표로 하며 gitlab, argoCD, harbor 를 사용하여 k8s 환경에서 어플리케이션을 배포하는 테스트까지 해보기로 하자. (참고: https://picluster.ricsanfre.com/docs/argocd/) 참고 그림이며, image registry 로는 harbor를 직접 구축해서 사용해보도록 하자. 실습환경 비교 : t3a.xlarge 4/16 $0.1872 , t3a.2xlarge 8/32 $0.3744 , *c5a.2xlarge 8/16 $0.344 , c5.2xlarge $0.384 Harbor 구성 harbor를 이용하여 컨테이너 이미지 저장소 구축 접속 확인 
gitOps
이번 포스팅은 k8s를 활용한 gitOps에 대한 내용이다. 본 포스팅은 PKOS 스터디에서 '24단계 실습으로 정복하는 쿠버네티스' 책과 함께 진행되는 내용임을 밝힌다. (이전 포스팅들과 마찬가지로, aws configure를 통해 cli에서 administer 권한이 있는 access key가 등록되어 있음을 가정한다.) 자, 그럼 Harbor, Gitlab, ArgoCD를 설치하여 GitOps를 구성해보자. 1. Preparation kops 설치 (parameter는 각자의 환경에 맞는 값을 세팅한다.) 위 yaml파일로 설치를 하면, docker가 기본적으로 탑재되어 있는 bastion이 설치가 된다. 2. Harbo
PKOS 스터디 4주차 정리
쿠버네티스 기본환경 Kops로 구축 및 인스턴스 사양(t3.small) kops addons CertManager, awsLoadBalancerController, externalDns Harbor를 통한 이미지 레지스트리 관리(CI라인) 실무에서 private한 registry가 필요하다. 그 설정하는 실습을 진행하여 과제로 제출하였다. certSource는 온프레미스 환경에서 https 인증키를 등록할 시 cert와 key값을 넣기 때문에 이 기능을 끄는 것 annotation 옵션을 작성하여 Harbor 설

[Docker] docker-compose 구성파일 & Harbor
python 실행 ./test.py로는 실행이 안된다. 그 이유는 파이썬 같은 경우에는 실행 파일이 아닌 그냥 문서파일이기 떄문에 단독으로 돌아가지 않는다. 따라서 앞에 python을 붙여줘야 실행이 가능하다. 도커파일로 실행 docker compose 일반적으로는 하나의 서비스를 제공하기 위해서는 서버는 다수의 시스템을 구동하고 연결하게 된다. 도커를 사용하는 경우를 생각해보면, 웹 서비스를 제공하기 위한 어플리케이션을 구동하는 컨테이너와, 어플리케이션 구동에 필요한 데이터를 저장하고 있는 데이터베이스 컨테이너를 함께 구동하는 환경을 예로 들수 있다. 하나의 서비스를 구동하기 위해 다수의 컨테이너가 필요할 경우, 각 컨테이너를 따로 관리한다면 불편할 뿐만 아니라

쿠버네티스 전문가 양성과정 8주차 5일(2/10)
Docker Docker Compose 일반적으로는 하나의 서비스를 제공하기 위해서는 서버는 다수의 시스템을 구동하고 연결하게 됨. 도커를 사용하는 경우를 생각해보면, 웹 서비스를 제공하기 위한 어플리케이션을 구동하는 컨테이너와, 어플리케이션 구동에 필요한 데이터를 저정하고 있는 데이터베이스 컨테이너를 함께 구동하는 환경을 예로 들수 있음 하나의 서비스를 구동하기 위해 다수의 컨테이너가 필요할 경우, 각 컨테이너를 따로 관리한다면 불편할 뿐만 아니라, 구동시켜야 할 컨테이너가 누락되거나 하는 상황이 발생될 수 있음. 일반적인 docker는 한번에 하나씩만 컨테이너를 관리할 수 밖에 없기 때문에 다수의 컨테이너를 관리하는 데에는 어려움이 있을 수 있음. 이때 docker-compose 를 이용하게 되면 다수의 컨테이너를 관리할 수 있음. 📒 사실 Kubernetes를 이용하기 때문에 docker-compose를 자주 사용할 일은 없을 것이다
harbor 사용 시, unauthorized: unauthorized to access repository
에러상황 pod에서 harbor에 저장 된 이미지를 지정하여 생성하였는데 unauthorized: unauthorized to access repository 라는 메시지가 출력되며 ImagePullBackOff 상태가 되었습니다. 원인 Project registry가 private여서 인증을 위해선 imagePullSecrets이 필요한데, 정의를 해주지 않아 생긴 에러였습니다. 해결 아래와 같이 imagePullSecrets를 추가하여 해결 할 수 있습니다. >Secrets 의 경우 같은 네임스페이스에 존재해야합니다. EX ) A라는 네임스페이스의 시크릿을 B라는 네임스페이스 파드에서 사용할 수 없습니다. A/시크릿이름과 같은 형식처럼 네임스페이스를 앞에 선언해주더라도 사용이 불가능합니다. 참고자료 [https://stackoverflow.com/questions/46297949/sharing-secret-across-namespaces](https
helm을 이용한 harbor 인증서 업데이트
목표 selfsigned로 인증된 harbor 파드에 사설 인증서 적용하기 / 공인 인증서도 가능 작업내용 인증서를 사용하여 tls secret 생성 bundle가 있는 경우 tls.crt로 bundle 파일을 사용합니다. tls secret 조회 시, ca.crt가 없는 경우 harbor는 ca.crt를 참조하기 때문에 tls secret에 ca.crt가 반드시 있어야 합니다. yaml 파일 생성 >EOF 안 쓰고 vi로 하면 \$ 가 안먹습니다.. crt key 값 복사보다는 EOF 한 줄 씩 복사 붙여넣기 하는게 정신건강에 이롭습니다.🙃 tls secret 생성 helm values 수정 expose.tls.enable 를 true로 설정합니다. expose.tls.secret.secretName 을 생성한 시크릿 이름으로 설정합니다. `expose.tls.secret.notarySecr

[Docker] Harbor 설치
Harbor 설치하기 0. 설치 환경 필요 스펙 > 설치 환경 OS : CentOS 7 CPU : 4 Mem : 8 GB Disk : 40GB Harbor : v. 2.6.1 1. 다운로드 및 압축 해제 harbor-offline-installer 다운로드 https://github.co