레이블이 container인 게시물을 표시합니다. 모든 게시물 표시
레이블이 container인 게시물을 표시합니다. 모든 게시물 표시

2022년 8월 12일 금요일

Harbor 설치가이드

Harbor 설치

  1. 사양정보
  2. hardware spec
      최소사양 권장사양
    CPU 2Core 4 Core
    Memory 4G 8G
    Disk 40GB 160GB
  3. software spec
    Software Version
    Docker 17.06.0 이상
    Docker Compose 1.18.0 이상
  4. Harbor설치
    1. 설치파일 다운로드
    2. harbor설치파일 : Download URL : https://github.com/goharbor/harbor/releases
    3. docker-compose : download URL : https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)
  5. 압축파일 해제
    ># tar -xvf harbor-offline-installer-v1.7.6.tgz
  6. 설정파일 변경
    ># vi harbor.cfg
    hostname = harbor
  7. Docker 실행시 iptables 정책 미생성 옵션 설정
    ># cat /etc/docker/daemon.json
    {
    "iptables": false
    }

Harbor 설정정보

파라미터 정보 용  도
hostname 설치하는 서버 호스트네임입력
Database-password Postgres root 패스워드
Database-max_idle_conns 최대 유휴연결 수(0은 무제한), 기본값은 50
Database-max_open_conns 최대 연결 수(0은 무제한), 기본값은 100
data_volume Harbor에 저장할 데이터 경로(호스트경로), 기본값은 /data
Clair-updaters_interval Clair 업데이트 간격(0은 비활성화), 기본값은 12시간
max_job_workers 이미지 복제작업 최대 수, 기본값은 10
Notification-webhook_job_max_retry Webhook 최대 재시도 횟수, 기본값은 10
Chart-absolute_url

Enable : 차트에서 사용할 절대URL경로
disabled : 차트에서 사용할 상대URL경로

log_level Debug, info, warning, error, fatal 중 선택, 기본값은 info
log_rotate_count 로그파일 최대 생성갯수, 기본값은 50
log_rotate_size 로그파일당 최대 사이즈, 기본값은 200M
log_external_endpoint syslog연동시 사용
log_location 로그를 저장할 디렉토리, 기본값은 /var/log/harbor
Proxy-http_proxy http프록시 사용시 설정
Proxy-https_proxy https프록시 사용시 설정
Proxy-no_proxy 프록시 미사용시 설정
  1. 설치수행 (추후 속성변경 혹은 재설치시 필요한 파일들이기 때문에, 데이터 삭제하면 안됨)
     ># install.sh
  1. 설치옵션 설정
    옵션정보 설  명
    --with-notary https를 사용할 경우 설정
    --with-clair 보안취약점에 대한 정적분석 기능 활성화
    --with-chartmuseum 차트기능 활성화
  2. Docker Container 실행상태 확인
    > # docker container ls
    CONTAINER ID        IMAGE                                    COMMAND                  CREATED             STATUS                    PORTS                                                              NAMES
    08ba147d3fe2        goharbor/nginx-photon:v1.7.6             "nginx -g 'daemon ..."   58 minutes ago      Up 21 minutes (healthy)   0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:4443->4443/tcp   nginx
    4867028a2f0d        goharbor/harbor-portal:v1.7.6            "nginx -g 'daemon ..."   58 minutes ago      Up 21 minutes (healthy)   80/tcp                                                             harbor-portal
    dfca94c54bd5        goharbor/harbor-jobservice:v1.7.6        "/harbor/start.sh"       58 minutes ago      Up 21 minutes                                                                                harbor-jobservice
    debd6e8e8606        goharbor/harbor-core:v1.7.6              "/harbor/start.sh"       58 minutes ago      Up 21 minutes (healthy)                                                                      harbor-core
    e0b1a1d488b6        goharbor/clair-photon:v2.0.8-v1.7.6      "/docker-entrypoin..."   58 minutes ago      Up 21 minutes (healthy)   6060-6061/tcp                                                      clair
    b9ab0d96e2f4        goharbor/registry-photon:v2.6.2-v1.7.6   "/entrypoint.sh /e..."   58 minutes ago      Up 21 minutes (healthy)   5000/tcp                                                           registry
    0fe2e40d93f4        goharbor/harbor-db:v1.7.6                "/entrypoint.sh po..."   58 minutes ago      Up 21 minutes (healthy)   5432/tcp                                                           harbor-db
    97a3c0c4788a        goharbor/harbor-registryctl:v1.7.6       "/harbor/start.sh"       58 minutes ago      Up 21 minutes (healthy)                                                                      registryctl
    e8a73d34601c        goharbor/redis-photon:v1.7.6             "docker-entrypoint..."   58 minutes ago      Up 21 minutes             6379/tcp                                                           redis
    acb08e237de1        goharbor/harbor-adminserver:v1.7.6       "/harbor/start.sh"       58 minutes ago      Up 21 minutes (healthy)                                                                      harbor-adminserver
    2da452ad1ffe        goharbor/harbor-log:v1.7.6               "/bin/sh -c /usr/l..."   58 minutes ago      Up 21 minutes (healthy)   127.0.0.1:1514->10514/tcp                                          harbor-log
  3. 웹 브라우저에서 harbor 로그인 (기본 로그인 정보 : admin / Harbor12345), 로그인 후 반드시 패스워드 변경 필요

Harbor 운영

  1. 계정관리
    1. 계정추가
      1. Administration -> Users 진입
      2. New User 선택 후 사용자명,  email주소, 패스워드 순으로  입력

        * 패스워드는 8-20자, 최소 대소문자/숫자 1개씩 입력되어야 함
    2. 관리자 계정 권한 변경
      1. Administratoration -> User진입
      2. 변경할 계정명 선택 후 SetAdmin 선택 
  2. 프로젝트 관리
    1. 프로젝트 생성
      1. Project -> NEW PROJECT -> 생성할 Project이름 -> 속성 입력
        Access Level : 프로젝트의 공개여부 (Public으로 설정하는 경우 모든 계정에서 프로젝트가 조회됨), 기본값은 private
    2. 프로젝트 권한설정
      1. 생성한 프로젝트 →  Member  진입
      2. +USER 메뉴 선택 후 추가할 계정명 입력
      3. 부여할 권한 선택
        Role 이름 권  한
        Project Admin push / pull / delete
        Developer push / pull
        Guest Pull

Harbor 재설정

  1. Harbor 구성 재설정 (harbor 설치파일 파일(install.sh 있는 곳으로 이동)
    ># docker-compose down -v

    설정정보 변경 작업 진행
    ># docker-compose up -d

  2. 실행중인 컨테이너 정보만 중지 (이미지데이터와 DB파일 유지)
    ># docker-compose down -v
  3. 기존정보 삭제 후 재설치시
    ># rm -rf /data/database
    ># rm -rf /data/registry


2022년 7월 25일 월요일

podman사용하기

  1. docker없이 컨테이너 실행하기

    1. podman-docker 패키지를 통해 docker가 설치되어 있지 않아도 docker 명령어를 실행할 수 있습니다.
    2. 사실 커맨드가 매핑도이 있는것이고 실제로는 podman을 실행하게 됩니다.


      완료되었습니다!
    3. docker의 socket api가 지원되기 때문에 podman-docker 패키지를 설치하면 /var/run/docker.sock과 /var/run/podman/podman.sock의 링크를 설정하기 때문에 docker-py, docker-compose를 이용한 docker api도 그대로 사용할 수 있습니다.
    4. podman에서 지원하지 않는 docker 옵션은 네트워크, 노드, 플러그인, 이름변경, 시크릿, 서비스, 스택, docker swarm이 대상입니다.
  2. Rooless설정

    1. 호스트 컨테이너 스토리지 경로는 사용자 정보에 따라 달라집니다. (root - /var/lib/containers/storage, non root - $HOME/.local/share/containers/storage)
    2. rootless 컨테이너는 1024미만의 포트에 액세스 할 수 없습니다. (tcp/80을 사용하는 apache의 경우 서비스에서는 tcp/80을 표시하시만 서버 외부에서 실제 접속은 불가능)
    3. 1024 이하 포트를 사용하려면 커널값 변경을 통해 임시로 사용할 수는 있으나, 프로덕션 환경에서는 사용하는것은 권장되지 않습니다. (테스트 목적)
    4. 8.1부터 rootless Containers기능을 사용하면 일반사용자로 컨테이너 실행할 수 있습니다. (rootless는 기본기능)
  3. 레지스트리 구성

    1. registries.conf에 컨테이너를 내려받기 위한 레지스트리 목록이 저장되어 있습니다, 해당 파일에서 검색할 레지스트리를 설정 할 수 있습니다.
    2. test.com은 TLS 없이 pull 설정
    3. 특정 레지스트리 검색 차단
  4. 이미지 검사
    1. skopeo 명령어를 통해 이미지 정보를 확인할 수 있습니다.
    2. httpd container 정보 확인 방법

adfit

AI들끼리 대화하기

ChatGPT, perplexity, Gemini... 많은 AI 서비스가 있고 서비스별로 다양한 엔진이 있죠. 문득 AI끼리 대화를 시켜보면 어떤 대화의 흐름을 이어갈까 궁금해졌습니다. 그래서 해보았습니다. 규 칙 나(사람)은 양쪽 AI에서...