InfoGrab DocsInfoGrab Docs

자재 목록(Bill of Materials) 및 레지스트리 미러링

요약

인터넷에 연결된 머신에서 설치 과정에 필요한 모든 패키지, 컨테이너 이미지, 의존성을 수집해야 합니다. 에어갭 환경에서는 제공되는 tarball을 사용하는 것이 가장 간단한 설치 방법으로 권장됩니다. 다음 선택적 구성 요소를 활성화할 계획이라면 아래 추가 리소스를 다운로드해 두세요.

사용 가능 에디션: Free, Professional, Enterprise, Enterprise Advanced

사용 가능 배포 방식: 셀프 호스팅, 에어갭

인터넷에 연결된 머신에서 설치 과정에 필요한 모든 패키지, 컨테이너 이미지, 의존성을 수집해야 합니다. 필요한 리소스는 배포 방법에 따라 달라집니다.

자재 목록(Bill of Materials)#

에어갭 환경에서는 제공되는 tarball을 사용하는 것이 가장 간단한 설치 방법으로 권장됩니다. 에어갭 상태의 모든 64비트 Linux 시스템에 몇 분 만에 Mattermost Server를 설치할 수 있습니다.

사전 요구 사항

  • Mattermost tarball. 서버 업그레이드가 자주 이루어지지 않을 수 있는 환경에서는 연장 지원을 위해 최신 ESR을 사용할 것을 권장합니다.
  • 데이터베이스: 사용 중인 Linux 배포판용 PostgreSQL 설치 패키지 또는 컨테이너 이미지.
  • 파일 스토리지: 사용자 2,000명 미만의 배포에는 로컬 파일 시스템 스토리지로 충분합니다. 고가용성이 필요한 더 큰 규모의 배포에서는 공유 스토리지 요구를 위해 S3 호환 오브젝트 스토리지 솔루션 또는 NFS(Network File System) 서버를 사용할 것을 권장합니다.
  • 로드 밸런서: 에어갭 환경에서 로드 밸런서가 이미 실행 중이라면 이 리소스는 건너뛸 수 있으며, 그렇지 않다면 이 Linux 패키지로 NGINX를 배포할 것을 권장합니다.
  • 데스크톱 앱: 배포 방법에 따라 필요한 패키지를 다운로드합니다.

(선택 사항) 지원 서비스

다음 선택적 구성 요소를 활성화할 계획이라면 아래 추가 리소스를 다운로드해 두세요.

조직에서 에어갭 환경에 Kubernetes 클러스터를 이미 실행 중이라면 확장성이 높고 안정적인 배포를 위해 Kubernetes를 권장합니다.

사전 요구 사항

  • Mattermost Operator 및 values.
  • 데이터베이스: Crunchy Data의 Postgres Operator, CloudNativePG, pgEdge와 같은 옵션을 권장합니다.
  • 파일 스토리지: 공유 스토리지 요구를 위해 S3 호환 스토리지 서비스 또는 마운트된 NFS 볼륨을 사용할 것을 권장합니다.
  • 로드 밸런서: 에어갭 환경에서 로드 밸런서가 이미 실행 중이라면 이 리소스는 건너뛸 수 있으며, 그렇지 않다면 NGINX Ingress Controller 오퍼레이터를 사용하여 NGINX를 배포할 것을 권장합니다.
  • 데스크톱 앱: 배포 방법에 따라 필요한 패키지를 다운로드합니다.

(선택 사항) 지원 서비스

다음 선택적 구성 요소를 활성화할 계획이라면 아래 추가 리소스를 다운로드해 두세요.

에어갭 환경에서 실행 중인 Kubernetes 클러스터가 없지만 설치와 의존성 관리를 단순화하기 위해 컨테이너를 사용하려는 경우 Docker를 사용할 수 있습니다. Docker는 기본적으로 클러스터형 배포나 고가용성(HA) 구성을 지원하지 않으므로 대규모 프로덕션 환경에는 권장되지 않습니다.

사전 요구 사항

  • Mattermost Enterprise Edition 이미지.
  • 데이터베이스: PostgreSQL 이미지.
  • 로드 밸런서: 에어갭 환경에서 로드 밸런서가 이미 실행 중이라면 이 리소스는 건너뛸 수 있으며, 그렇지 않다면 이 이미지로 NGINX를 배포할 것을 권장합니다.
  • 데스크톱 앱: 배포 방법에 따라 필요한 패키지를 다운로드합니다.

(선택 사항) 지원 서비스

다음 선택적 구성 요소를 활성화할 계획이라면 아래 추가 리소스를 다운로드해 두세요.

Mattermost 플러그인#

Mattermost에는 미션 크리티컬 도구를 위한 사전 구축된 연동이 다수 포함되어 있습니다. Mattermost 패키지에 사전 구축된 플러그인 외에 다른 플러그인을 사용하려면 Mattermost Marketplace에서 플러그인 바이너리를 다운로드해야 합니다. Mattermost를 배포한 후에는 이러한 플러그인 바이너리를 System Console에서 직접 업로드할 수 있습니다.

SSL/TLS 인증서 및 키#

배포에 SSL이 필요하다면 필요한 인증서를 준비하세요. 여기에는 Mattermost에서 HTTPS를 사용하기 위한 인증서와 키는 물론, LDAP 또는 SAML과 같은 내부 서비스에 접근하는 데 필요한 CA 파일이나 인증서도 포함됩니다. 구성에 대한 자세한 내용은 TLS 설정을 참조하세요.

로컬 문서#

Mattermost 문서를 로컬에서 빌드하고 제공하면 에어갭 환경 내부에서도 설치 및 구성 안내를 사용할 수 있습니다. 인터넷에 연결된 머신에서 mattermost/mattermost 리포지터리를 복제하고 문서 사이트를 빌드한 다음, 생성된 정적 결과물을 나머지 자재 목록과 함께 에어갭 너머로 전송하세요.

사전 요구 사항

git clone https://github.com/mattermost/mattermost.git
cd mattermost/docs/site
npm ci
npm run build

빌드를 실행하면 독립적으로 동작하는 정적 사이트가 docs/site/build/에 생성되며, 이를 에어갭 환경의 모든 웹 서버에서 제공할 수 있습니다. API 레퍼런스 생성 단계가 필요하지 않을 때 이를 건너뛰는 방법을 포함한 전체 빌드 옵션은 문서 사이트 README를 참조하세요.

프라이빗 레지스트리 또는 미러 설정#

프라이빗 컨테이너 레지스트리는 에어갭 배포에 필요한 Docker 이미지를 안전하게 저장하여 데이터 격리 요구 사항을 준수하도록 합니다. 마찬가지로 프라이빗 패키지 미러는 Ubuntu 또는 RHEL/CentOS Linux 환경의 에어갭 배포에 필요한 운영 체제 패키지를 저장합니다. 로컬 레지스트리 또는 미러를 설정하는 것은 Mattermost 배포에서 중요한 단계로, 에어갭 환경에서 모든 이미지, 의존성, 패키지를 사용할 수 있도록 합니다. 아래 단계는 사용 중인 배포 방법에 따라 로컬 레지스트리 또는 미러를 설정하는 데 필요한 과정을 개략적으로 설명합니다. 이 단계는 대략적인 안내이며, 구체적인 배포 요구에 따라 온라인 리소스로 보완할 수 있습니다.

(Ubuntu) 프라이빗 Debian 패키지 미러 설정

여기서는 로컬 미러를 만들기 위해 Aptly를 사용하지만, debmirror와 같은 다른 옵션도 사용할 수 있습니다.

  1. Aptly 설치 (인터넷에 연결된 머신에서):

    apt-get update
    apt-get install aptly gnupg
    
  2. 패키지 서명을 위한 GPG 키 생성:

    gpg --gen-key
    
  3. 미러 구성 생성:

    aptly mirror create -architectures=amd64 debian-bullseye http://deb.debian.org/debian bullseye main contrib non-free
    
  4. 미러를 업데이트하여 패키지 다운로드:

    aptly mirror update debian-bullseye
    
  5. 스냅샷 생성 및 게시:

    aptly snapshot create debian-bullseye-$(date +%Y%m%d) from mirror debian-bullseye
    aptly publish snapshot debian-bullseye-$(date +%Y%m%d)
    
  6. 리포지터리 제공:

    aptly serve
    
  7. 클라이언트 구성: 로컬 미러를 사용하도록 apt를 구성합니다.

    cat > /etc/apt/sources.list << EOF
    deb http://mirror.example.com/debian bullseye main contrib non-free
    EOF
    

(RHEL/CentOS) 프라이빗 RHEL 패키지 미러 설정

여기서는 로컬 미러를 위해 reposync를 사용합니다.

  1. 필수 도구 설치 (인터넷에 연결된 RHEL 시스템에서):

    yum install yum-utils createrepo
    
  2. 패키지 다운로드:

    mkdir -p /var/www/html/repos/rhel8
    reposync -p /var/www/html/repos/rhel8 --download-metadata --repo=rhel-8-for-x86_64-baseos-rpms
    reposync -p /var/www/html/repos/rhel8 --download-metadata --repo=rhel-8-for-x86_64-appstream-rpms
    
  3. 리포지터리 메타데이터 생성:

    createrepo /var/www/html/repos/rhel8/rhel-8-for-x86_64-baseos-rpms
    createrepo /var/www/html/repos/rhel8/rhel-8-for-x86_64-appstream-rpms
    
  4. 웹 서버 설정:

    yum install httpd
    systemctl enable httpd
    systemctl start httpd
    
  5. 클라이언트 구성: 기존 리포지터리를 비활성화합니다.

    cd /etc/yum.repos.d/
    mkdir backup
    mv *.repo backup/
    
  6. 클라이언트 구성: 새 리포지터리 파일을 생성합니다.

    cat > /etc/yum.repos.d/local-baseos.repo << EOF
    [local-baseos]
    name=Red Hat Enterprise Linux 8 BaseOS
    baseurl=http://mirror.example.com/repos/rhel8/rhel-8-for-x86_64-baseos-rpms
    enabled=1
    gpgcheck=0
    EOF
    
    cat > /etc/yum.repos.d/local-appstream.repo << EOF
    [local-appstream]
    name=Red Hat Enterprise Linux 8 AppStream
    baseurl=http://mirror.example.com/repos/rhel8/rhel-8-for-x86_64-appstream-rpms
    enabled=1
    gpgcheck=0
    EOF
    
  7. 클라이언트 구성: 캐시를 지우고 테스트합니다.

    yum clean all
    yum repolist
    

셀프 호스팅 프라이빗 컨테이너 레지스트리 설정

  1. Docker Registry 설치:

    docker run -d -p 5000:5000 --restart=always --name registry registry:2
    
  2. 영구 스토리지 구성:

    docker run -d -p 5000:5000 --restart=always --name registry \
    -v /mnt/registry:/var/lib/registry \
    registry:2
    
  3. TLS 보안 추가 (권장):

    a. 자체 서명 인증서를 생성합니다.

    mkdir -p certs
    openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/domain.key \
    -x509 -days 365 -out certs/domain.crt
    

    b. TLS를 사용하여 레지스트리를 실행합니다.

    docker run -d -p 5000:5000 --restart=always --name registry \
    -v /mnt/registry:/var/lib/registry \
    -v $(pwd)/certs:/certs \
    -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
    -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
    registry:2
    

프라이빗 이미지 레지스트리를 사용하도록 Kubernetes 구성

에어갭 환경에서 Kubernetes를 사용할 때는 프라이빗 레지스트리를 사용하도록 구성해야 합니다.

  1. 레지스트리 인증을 위한 Kubernetes Secret 생성:

    kubectl create secret docker-registry regcred \
    --docker-server=registry.example.com:5000 \
    --docker-username=your_username \
    --docker-password=your_password \
    --docker-email=your_email@example.com
    
  2. Pod 사양에서 Secret 참조:

    apiVersion: v1
    kind: Pod
    metadata:
      name: mattermost-pod
    spec:
      containers:
      - name: mattermost
        image: registry.example.com:5000/mattermost/mattermost-enterprise-edition:latest
      imagePullSecrets:
      - name: regcred
    
  3. Helm 배포의 경우 values.yaml에 레지스트리를 지정합니다.

    image:
      repository: registry.example.com:5000/mattermost/mattermost-enterprise-edition
      tag: latest
      pullPolicy: IfNotPresent
    
    imagePullSecrets:
      - name: regcred
    

셀프 호스팅 프라이빗 컨테이너 레지스트리 설정

  1. Docker Registry 설치:

    docker run -d -p 5000:5000 --restart=always --name registry registry:2
    
  2. 영구 스토리지 구성:

    docker run -d -p 5000:5000 --restart=always --name registry \
    -v /mnt/registry:/var/lib/registry \
    registry:2
    
  3. TLS 보안 추가 (권장):

    a. 자체 서명 인증서를 생성합니다.

    mkdir -p certs
    openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/domain.key \
    -x509 -days 365 -out certs/domain.crt
    

    b. TLS를 사용하여 레지스트리를 실행합니다.

    docker run -d -p 5000:5000 --restart=always --name registry \
    -v /mnt/registry:/var/lib/registry \
    -v $(pwd)/certs:/certs \
    -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
    -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
    registry:2
    

프라이빗 레지스트리 채우기

자재 목록(Bill of Materials)에 있는 필수 이미지를 다운로드하여 프라이빗 레지스트리로 푸시했는지 확인합니다.

프라이빗 이미지 레지스트리를 사용하도록 Docker 구성

모든 호스트에서 프라이빗 레지스트리를 신뢰하고 사용하도록 Docker를 구성합니다.

  1. Docker의 신뢰할 수 있는 레지스트리에 레지스트리 추가:

    /etc/docker/daemon.json을 편집하거나 생성합니다.

    {
      "insecure-registries": ["registry.example.com:5000"]
    }
    

    자체 서명 인증서를 사용하는 레지스트리의 경우:

    mkdir -p /etc/docker/certs.d/registry.example.com:5000
    cp domain.crt /etc/docker/certs.d/registry.example.com:5000/ca.crt
    
  2. Docker 데몬 재시작:

    systemctl restart docker
    
  3. 구성 테스트:

    docker pull registry.example.com:5000/mattermost/mattermost-enterprise-edition:latest
    

자재 목록(Bill of Materials) 및 레지스트리 미러링

Mattermost v12.0
원문 보기

요약

인터넷에 연결된 머신에서 설치 과정에 필요한 모든 패키지, 컨테이너 이미지, 의존성을 수집해야 합니다. 에어갭 환경에서는 제공되는 tarball을 사용하는 것이 가장 간단한 설치 방법으로 권장됩니다. 다음 선택적 구성 요소를 활성화할 계획이라면 아래 추가 리소스를 다운로드해 두세요.

사용 가능 에디션: Free, Professional, Enterprise, Enterprise Advanced

사용 가능 배포 방식: 셀프 호스팅, 에어갭

인터넷에 연결된 머신에서 설치 과정에 필요한 모든 패키지, 컨테이너 이미지, 의존성을 수집해야 합니다. 필요한 리소스는 배포 방법에 따라 달라집니다.

자재 목록(Bill of Materials)#

에어갭 환경에서는 제공되는 tarball을 사용하는 것이 가장 간단한 설치 방법으로 권장됩니다. 에어갭 상태의 모든 64비트 Linux 시스템에 몇 분 만에 Mattermost Server를 설치할 수 있습니다.

사전 요구 사항

  • Mattermost tarball. 서버 업그레이드가 자주 이루어지지 않을 수 있는 환경에서는 연장 지원을 위해 최신 ESR을 사용할 것을 권장합니다.
  • 데이터베이스: 사용 중인 Linux 배포판용 PostgreSQL 설치 패키지 또는 컨테이너 이미지.
  • 파일 스토리지: 사용자 2,000명 미만의 배포에는 로컬 파일 시스템 스토리지로 충분합니다. 고가용성이 필요한 더 큰 규모의 배포에서는 공유 스토리지 요구를 위해 S3 호환 오브젝트 스토리지 솔루션 또는 NFS(Network File System) 서버를 사용할 것을 권장합니다.
  • 로드 밸런서: 에어갭 환경에서 로드 밸런서가 이미 실행 중이라면 이 리소스는 건너뛸 수 있으며, 그렇지 않다면 이 Linux 패키지로 NGINX를 배포할 것을 권장합니다.
  • 데스크톱 앱: 배포 방법에 따라 필요한 패키지를 다운로드합니다.

(선택 사항) 지원 서비스

다음 선택적 구성 요소를 활성화할 계획이라면 아래 추가 리소스를 다운로드해 두세요.

조직에서 에어갭 환경에 Kubernetes 클러스터를 이미 실행 중이라면 확장성이 높고 안정적인 배포를 위해 Kubernetes를 권장합니다.

사전 요구 사항

  • Mattermost Operator 및 values.
  • 데이터베이스: Crunchy Data의 Postgres Operator, CloudNativePG, pgEdge와 같은 옵션을 권장합니다.
  • 파일 스토리지: 공유 스토리지 요구를 위해 S3 호환 스토리지 서비스 또는 마운트된 NFS 볼륨을 사용할 것을 권장합니다.
  • 로드 밸런서: 에어갭 환경에서 로드 밸런서가 이미 실행 중이라면 이 리소스는 건너뛸 수 있으며, 그렇지 않다면 NGINX Ingress Controller 오퍼레이터를 사용하여 NGINX를 배포할 것을 권장합니다.
  • 데스크톱 앱: 배포 방법에 따라 필요한 패키지를 다운로드합니다.

(선택 사항) 지원 서비스

다음 선택적 구성 요소를 활성화할 계획이라면 아래 추가 리소스를 다운로드해 두세요.

에어갭 환경에서 실행 중인 Kubernetes 클러스터가 없지만 설치와 의존성 관리를 단순화하기 위해 컨테이너를 사용하려는 경우 Docker를 사용할 수 있습니다. Docker는 기본적으로 클러스터형 배포나 고가용성(HA) 구성을 지원하지 않으므로 대규모 프로덕션 환경에는 권장되지 않습니다.

사전 요구 사항

  • Mattermost Enterprise Edition 이미지.
  • 데이터베이스: PostgreSQL 이미지.
  • 로드 밸런서: 에어갭 환경에서 로드 밸런서가 이미 실행 중이라면 이 리소스는 건너뛸 수 있으며, 그렇지 않다면 이 이미지로 NGINX를 배포할 것을 권장합니다.
  • 데스크톱 앱: 배포 방법에 따라 필요한 패키지를 다운로드합니다.

(선택 사항) 지원 서비스

다음 선택적 구성 요소를 활성화할 계획이라면 아래 추가 리소스를 다운로드해 두세요.

Mattermost 플러그인#

Mattermost에는 미션 크리티컬 도구를 위한 사전 구축된 연동이 다수 포함되어 있습니다. Mattermost 패키지에 사전 구축된 플러그인 외에 다른 플러그인을 사용하려면 Mattermost Marketplace에서 플러그인 바이너리를 다운로드해야 합니다. Mattermost를 배포한 후에는 이러한 플러그인 바이너리를 System Console에서 직접 업로드할 수 있습니다.

SSL/TLS 인증서 및 키#

배포에 SSL이 필요하다면 필요한 인증서를 준비하세요. 여기에는 Mattermost에서 HTTPS를 사용하기 위한 인증서와 키는 물론, LDAP 또는 SAML과 같은 내부 서비스에 접근하는 데 필요한 CA 파일이나 인증서도 포함됩니다. 구성에 대한 자세한 내용은 TLS 설정을 참조하세요.

로컬 문서#

Mattermost 문서를 로컬에서 빌드하고 제공하면 에어갭 환경 내부에서도 설치 및 구성 안내를 사용할 수 있습니다. 인터넷에 연결된 머신에서 mattermost/mattermost 리포지터리를 복제하고 문서 사이트를 빌드한 다음, 생성된 정적 결과물을 나머지 자재 목록과 함께 에어갭 너머로 전송하세요.

사전 요구 사항

git clone https://github.com/mattermost/mattermost.git
cd mattermost/docs/site
npm ci
npm run build

빌드를 실행하면 독립적으로 동작하는 정적 사이트가 docs/site/build/에 생성되며, 이를 에어갭 환경의 모든 웹 서버에서 제공할 수 있습니다. API 레퍼런스 생성 단계가 필요하지 않을 때 이를 건너뛰는 방법을 포함한 전체 빌드 옵션은 문서 사이트 README를 참조하세요.

프라이빗 레지스트리 또는 미러 설정#

프라이빗 컨테이너 레지스트리는 에어갭 배포에 필요한 Docker 이미지를 안전하게 저장하여 데이터 격리 요구 사항을 준수하도록 합니다. 마찬가지로 프라이빗 패키지 미러는 Ubuntu 또는 RHEL/CentOS Linux 환경의 에어갭 배포에 필요한 운영 체제 패키지를 저장합니다. 로컬 레지스트리 또는 미러를 설정하는 것은 Mattermost 배포에서 중요한 단계로, 에어갭 환경에서 모든 이미지, 의존성, 패키지를 사용할 수 있도록 합니다. 아래 단계는 사용 중인 배포 방법에 따라 로컬 레지스트리 또는 미러를 설정하는 데 필요한 과정을 개략적으로 설명합니다. 이 단계는 대략적인 안내이며, 구체적인 배포 요구에 따라 온라인 리소스로 보완할 수 있습니다.

(Ubuntu) 프라이빗 Debian 패키지 미러 설정

여기서는 로컬 미러를 만들기 위해 Aptly를 사용하지만, debmirror와 같은 다른 옵션도 사용할 수 있습니다.

  1. Aptly 설치 (인터넷에 연결된 머신에서):

    apt-get update
    apt-get install aptly gnupg
    
  2. 패키지 서명을 위한 GPG 키 생성:

    gpg --gen-key
    
  3. 미러 구성 생성:

    aptly mirror create -architectures=amd64 debian-bullseye http://deb.debian.org/debian bullseye main contrib non-free
    
  4. 미러를 업데이트하여 패키지 다운로드:

    aptly mirror update debian-bullseye
    
  5. 스냅샷 생성 및 게시:

    aptly snapshot create debian-bullseye-$(date +%Y%m%d) from mirror debian-bullseye
    aptly publish snapshot debian-bullseye-$(date +%Y%m%d)
    
  6. 리포지터리 제공:

    aptly serve
    
  7. 클라이언트 구성: 로컬 미러를 사용하도록 apt를 구성합니다.

    cat > /etc/apt/sources.list << EOF
    deb http://mirror.example.com/debian bullseye main contrib non-free
    EOF
    

(RHEL/CentOS) 프라이빗 RHEL 패키지 미러 설정

여기서는 로컬 미러를 위해 reposync를 사용합니다.

  1. 필수 도구 설치 (인터넷에 연결된 RHEL 시스템에서):

    yum install yum-utils createrepo
    
  2. 패키지 다운로드:

    mkdir -p /var/www/html/repos/rhel8
    reposync -p /var/www/html/repos/rhel8 --download-metadata --repo=rhel-8-for-x86_64-baseos-rpms
    reposync -p /var/www/html/repos/rhel8 --download-metadata --repo=rhel-8-for-x86_64-appstream-rpms
    
  3. 리포지터리 메타데이터 생성:

    createrepo /var/www/html/repos/rhel8/rhel-8-for-x86_64-baseos-rpms
    createrepo /var/www/html/repos/rhel8/rhel-8-for-x86_64-appstream-rpms
    
  4. 웹 서버 설정:

    yum install httpd
    systemctl enable httpd
    systemctl start httpd
    
  5. 클라이언트 구성: 기존 리포지터리를 비활성화합니다.

    cd /etc/yum.repos.d/
    mkdir backup
    mv *.repo backup/
    
  6. 클라이언트 구성: 새 리포지터리 파일을 생성합니다.

    cat > /etc/yum.repos.d/local-baseos.repo << EOF
    [local-baseos]
    name=Red Hat Enterprise Linux 8 BaseOS
    baseurl=http://mirror.example.com/repos/rhel8/rhel-8-for-x86_64-baseos-rpms
    enabled=1
    gpgcheck=0
    EOF
    
    cat > /etc/yum.repos.d/local-appstream.repo << EOF
    [local-appstream]
    name=Red Hat Enterprise Linux 8 AppStream
    baseurl=http://mirror.example.com/repos/rhel8/rhel-8-for-x86_64-appstream-rpms
    enabled=1
    gpgcheck=0
    EOF
    
  7. 클라이언트 구성: 캐시를 지우고 테스트합니다.

    yum clean all
    yum repolist
    

셀프 호스팅 프라이빗 컨테이너 레지스트리 설정

  1. Docker Registry 설치:

    docker run -d -p 5000:5000 --restart=always --name registry registry:2
    
  2. 영구 스토리지 구성:

    docker run -d -p 5000:5000 --restart=always --name registry \
    -v /mnt/registry:/var/lib/registry \
    registry:2
    
  3. TLS 보안 추가 (권장):

    a. 자체 서명 인증서를 생성합니다.

    mkdir -p certs
    openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/domain.key \
    -x509 -days 365 -out certs/domain.crt
    

    b. TLS를 사용하여 레지스트리를 실행합니다.

    docker run -d -p 5000:5000 --restart=always --name registry \
    -v /mnt/registry:/var/lib/registry \
    -v $(pwd)/certs:/certs \
    -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
    -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
    registry:2
    

프라이빗 이미지 레지스트리를 사용하도록 Kubernetes 구성

에어갭 환경에서 Kubernetes를 사용할 때는 프라이빗 레지스트리를 사용하도록 구성해야 합니다.

  1. 레지스트리 인증을 위한 Kubernetes Secret 생성:

    kubectl create secret docker-registry regcred \
    --docker-server=registry.example.com:5000 \
    --docker-username=your_username \
    --docker-password=your_password \
    --docker-email=your_email@example.com
    
  2. Pod 사양에서 Secret 참조:

    apiVersion: v1
    kind: Pod
    metadata:
      name: mattermost-pod
    spec:
      containers:
      - name: mattermost
        image: registry.example.com:5000/mattermost/mattermost-enterprise-edition:latest
      imagePullSecrets:
      - name: regcred
    
  3. Helm 배포의 경우 values.yaml에 레지스트리를 지정합니다.

    image:
      repository: registry.example.com:5000/mattermost/mattermost-enterprise-edition
      tag: latest
      pullPolicy: IfNotPresent
    
    imagePullSecrets:
      - name: regcred
    

셀프 호스팅 프라이빗 컨테이너 레지스트리 설정

  1. Docker Registry 설치:

    docker run -d -p 5000:5000 --restart=always --name registry registry:2
    
  2. 영구 스토리지 구성:

    docker run -d -p 5000:5000 --restart=always --name registry \
    -v /mnt/registry:/var/lib/registry \
    registry:2
    
  3. TLS 보안 추가 (권장):

    a. 자체 서명 인증서를 생성합니다.

    mkdir -p certs
    openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/domain.key \
    -x509 -days 365 -out certs/domain.crt
    

    b. TLS를 사용하여 레지스트리를 실행합니다.

    docker run -d -p 5000:5000 --restart=always --name registry \
    -v /mnt/registry:/var/lib/registry \
    -v $(pwd)/certs:/certs \
    -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
    -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
    registry:2
    

프라이빗 레지스트리 채우기

자재 목록(Bill of Materials)에 있는 필수 이미지를 다운로드하여 프라이빗 레지스트리로 푸시했는지 확인합니다.

프라이빗 이미지 레지스트리를 사용하도록 Docker 구성

모든 호스트에서 프라이빗 레지스트리를 신뢰하고 사용하도록 Docker를 구성합니다.

  1. Docker의 신뢰할 수 있는 레지스트리에 레지스트리 추가:

    /etc/docker/daemon.json을 편집하거나 생성합니다.

    {
      "insecure-registries": ["registry.example.com:5000"]
    }
    

    자체 서명 인증서를 사용하는 레지스트리의 경우:

    mkdir -p /etc/docker/certs.d/registry.example.com:5000
    cp domain.crt /etc/docker/certs.d/registry.example.com:5000/ca.crt
    
  2. Docker 데몬 재시작:

    systemctl restart docker
    
  3. 구성 테스트:

    docker pull registry.example.com:5000/mattermost/mattermost-enterprise-edition:latest