Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

BBE Cloudsetup 설치

요약 이 섹션에서는 BBE Cloudsetup의 설치 절차 및 시스템 요구 사항에 대해 설명합니다.

BBE Cloudsetup 설치 개요

BBE Cloudsetup 기능은 전용 Ubuntu 호스트 집합에서 Kubernetes 클러스터를 구성합니다. BBE Cloudsetup 기능을 사용하여 단일 점프 호스트에서 관리되는 여러 Kubernetes 클러스터를 만들 수 있습니다.

3개 이상의 컨트롤 플레인 노드가 있는 클러스터를 생성하는 것이 좋습니다. BBE Cloudsetup 컨트롤 플레인 노드는 하이브리드 노드입니다. 즉, 컨트롤 플레인, etcd(Kubernetes 상태 데이터베이스) 및 작업자 노드의 역할을 수행합니다. 순수 작업자 노드(단일 작업자 역할)인 클러스터에 추가 노드를 추가할 수 있습니다.

BBE Cloudsetup을 사용하여 클러스터를 설정한 후 원하는 Juniper BBE 클라우드 애플리케이션을 클러스터에 설치할 수 있습니다.

설치 요구 사항을 충족하는 모든 하드웨어에 BBE Cloudsetup을 배포할 수 있습니다. 다음 섹션에서는 다음과 같이 설명합니다.

  • BBE Cloudsetup 하드웨어 및 소프트웨어 요구 사항

  • BBE Cloudsetup을 설치하는 방법

BBE Cloudsetup 설치 요구 사항

BBE Cloudsetup 설치를 시작하기 전에 다음이 있는지 확인합니다.

  • BBE Cloudsetup 소프트웨어 패키지를 다운로드할 수 있는 권한이 있는 juniper.net 사용자 계정입니다.

  • 유틸리티를 실행하기 위해 Ubuntu 22.04 LTS(필수)를 실행하는 Linux 호스트(점프 호스트)입니다 bbecloudsetup . 점프 호스트는 다음 시스템 요구 사항을 충족해야 합니다.

    • CPU 코어 - 2

    • RAM - 8GB

    • 디스크 공간 - 128GB의 사용 가능한 디스크 저장소

  • 오프라인 설치를 수행하는 경우 다운로드한 BBE Cloudsetup 이미지 패키지를 이동할 Linux 호스트 시스템이 필요합니다. 호스트는 점프 호스트와 동일할 수 있지만 다음 요구 사항을 충족해야 합니다.

    • Docker가 설치되어 있어야 합니다.

    • 클러스터의 시스템 레지스트리로 사용할 수 있는 기존 컨테이너 레지스트리에 대한 액세스 권한이 있어야 합니다. 를 통해 docker login registry_address레지스트리에 로그인해야 합니다.

      메모:

      시스템 레지스트리가 존재해야 하며 클러스터의 수명 동안 클러스터에서 사용할 수 있어야 합니다. 클러스터는 노드가 추가되거나 다시 시작될 때 호스트에서 시스템 인프라 이미지를 가져와야 합니다.

  • 클러스터의 일부로 사용될 노드(가상 또는 물리적 컴퓨터). 노드는 관리 주소와 도메인 이름이 있는 Ubuntu 22.04 LTS(필수)를 실행하는 Linux 시스템입니다.

  • 클러스터 노드와 점프 호스트는 SSH를 통해 서로 액세스할 수 있어야 합니다.

  • 모든 클러스터 노드에는 sudo 액세스 권한이 있는 사용자 계정이 있어야 합니다.

  • 모든 클러스터 노드는 다음과 같은 최소 시스템 요구 사항을 충족하는 것이 좋습니다.

    • CPU 코어 - 8개(하이퍼스레딩 권장)

    • RAM - 64GB

    • 디스크 공간 - 512GB의 사용 가능한 디스크 스토리지(솔리드 스테이트 권장)

      스토리지 공간을 사용하여 그에 따라 디스크를 분할하는 것이 좋습니다.

      • 운영 체제의 루트(/) 파티션에 128GB

      • Docker 캐시용 /var/lib/docker 에 128GB

      • 애플리케이션 데이터를 위해 256GB에서 /mnt/longhorn 으로 이동합니다. 이 위치가 기본 위치이며, 구성 중에 다른 위치를 지정할 수 있습니다.

    • 노드 액세스 및 인증. 모든 노드에 대해 키 기반 인증을 사용하는 루트 수준의 SSH 액세스 권한이 있어야 합니다.

      메모:

      BBE cloudsetup을 루트로 실행하면 안 됩니다. sudo 권한과 Bash 로그인 셸이 있는 각 노드에서 사용자로 연결하도록 BBE Cloudsetup을 구성해야 합니다.

    • 모든 호스트 시스템에 고유한 파티션을 만들어야 합니다. 점프 호스트에서 Docker 파티션을 만들어야 합니다. 클러스터 노드에서 Docker 파티션과 Longhorn(데이터) 파티션을 모두 만들어야 합니다.

메모:

BBE Cloudsetup은 호스트 시스템 구성의 요소를 수정할 수 있습니다. 이는 클러스터 노드가 되기 위해 필요합니다.

BBE Cloudsetup 설치

요약 이 절차에 따라 BBE Cloudsetup을 설치합니다.

시작하기 전에 다음을 완료해야 합니다.

  • BBE Cloudsetup 설치에 대한 모든 요구 사항을 충족했는지 확인합니다( BBE Cloudsetup 설치 요구 사항 참조).

  • BBE Cloudsetup을 설치하기 전에 SSH 키를 만들어야 합니다. SSH 키는 구성 파일에 사용된 정확한 호스트 이름을 사용하여 각 클러스터 멤버에 복사되어야 합니다. SSH 구성의 내용을 참조하십시오.

BBE Cloudsetup 유틸리티를 설치합니다.

  1. 주니퍼 네트웍스 소프트웨어 다운로드 페이지에서 BBE Cloudsetup 소프트웨어 패키지를 다운로드하여 점프 호스트 시스템에 저장합니다.

    BBE Cloudsetup은 압축된 타르볼 이미지(.tgz)로 사용할 수 있습니다. 파일 이름에는 릴리스 번호가 이름의 일부로 포함됩니다. 릴리스 번호의 형식은 <Major>.<Minor>.<Maintenance입니다>

    • major 은(는) 제품의 주요 출시 번호입니다.
    • minor 은(는) 제품의 부 출시 번호입니다.
    • maintainance 은(는) 개정 번호입니다.
  2. 다음을 입력하여 점프 호스트에서 BBE Cloudsetup tarball(.tgz) 파일의 압축을 풉니다.

    그러면 bbecloudsetup bbecloudsetup이라는 디렉토리에 tarball의 압축이 풀립니다. 이 디렉터리가 이미 존재하면, tarball의 압축을 풀기 전에 제거하여 이전에 설치된 bbecloudsetup 파일을 로드하지 않도록 하십시오.

  3. bbecloudsetup 디렉터리에 exampleconfig.yaml 파일의 고유한 이름의 복사본을 만들어 해당 값을 유지합니다. 형식 clustername-config.yaml (예: mycluster-config.yaml)을 따르는 것이 좋습니다. 다른 BBE Cloudsetup 패키지의 압축을 exampleconfig.yaml 풀면 새 exampleconfig.yaml 파일이 생성될 때 덮어씁니다. 고유한 이름의 복사본을 생성하면 exampleconfig.yaml 파일에 포함된 정보를 복원하는 데 도움이 됩니다.
    메모:

    제공된 exampleconfig.yaml 파일(bbecloudsetup 디렉터리에 있음)은 Kubernetes 클러스터의 매개변수를 정의하는 데 사용됩니다. 다른 BBE Cloudsetup 패키지의 압축을 풀면 압축을 푸는 동안 새 exampleconfig.yaml 파일이 생성되므로 기존 exampleconfig.yaml 파일을 덮어씁니다. 고유한 이름의 복사본을 생성하면 exampleconfig.yaml 파일에 포함된 정보를 복원하는 데 도움이 됩니다.

  4. 인터넷에 액세스할 수 있는 환경에 BBE Cloudsetup을 설치하는 경우5단계로 이동합니다.
    에어 갭 환경(인터넷에 액세스할 수 없음)에 BBE Cloudsetup을 설치하는 경우 다음을 수행한 다음 5단계로 진행합니다.
    1. 기존의 별도 개인 시스템 레지스트리를 식별(또는 새로 생성)하여 클러스터 노드가 시스템 인프라 이미지를 끌어올 수 있는 기본 레지스트리 역할을 합니다.
      예를 들어 새 Docker 레지스트리를 만들려면 다음 명령을 실행합니다.
      • host.example.com- 레지스트리에 대한 호스트의 정규화된 도메인 이름입니다. 이 노드는 클러스터 멤버가 될 수 없지만(순환 종속성을 생성하므로) 클러스터와 연결되어 있어야 합니다. 점프 호스트는 시스템 레지스트리의 호스트 역할을 할 수 있습니다.

      • port- 레지스트리가 시작된 호스트의 포트 번호입니다. 기본 레지스트리를 사용하는 경우 포트 번호는 5000이어야 합니다. 그렇지 않으면 사용 가능한 포트 번호를 사용할 수 있습니다.

        레지스트리 서버 배포에 대한 자세한 내용은 https://distribution.github.io/distribution/about/deploying/ 를 참조하십시오.

    2. 주니퍼 네트웍스 소프트웨어 다운로드 페이지에서 BBE Cloudsetup 이미지 소프트웨어 패키지를 다운로드하고 클러스터의 시스템 레지스트리로 사용할 수 있는 기존 컨테이너 레지스트리에 액세스할 수 있는 별도의 호스트 시스템에 저장합니다(모든 호스트 시스템 요구 사항은 BBE Cloudsetup 설치 요구 사항 참조).
    3. 다음을 입력하여 호스트 시스템에서 BBE Cloudsetup 이미지 tarball(.tgz) 파일의 압축을 풉니다.
    4. 다음 명령을 사용하여 bbecloudsetup-images 디렉터리를 입력합니다.
    5. Docker 명령을 실행할 수 있고 다음 명령을 입력하여 대상 레지스트리에 로그인되어 있는지 확인합니다.
    6. 다음 명령을 실행하여 대상 레지스트리로 이미지를 로드하고 태그를 지정한 다음, 이미지를 푸시합니다.

      스크립트는 loadimages 정확히 하나의 위치 인수(레지스트리 URL, help또는 version)를 사용합니다. 레지스트리 URL에는 포트(필요한 경우)가 포함되어야 하며 또는 후행 슬래시(/)를 포함 http(s):// 해서는 안 됩니다.

      완료되면 완료 메시지가 나타납니다.

      메모:

      스크립트는 loadimages 매니페스트 파일과 bcs_images.tar 패키지와 함께 bbecloudsetup-images 디렉터리 내에 있어야 합니다. 이러한 개체 중 하나라도 해당 위치 밖으로 이동되면 스크립트는 찾을 수 없는 개체를 나타내는 오류 메시지를 생성합니다.

    7. 이름이 바뀐 .yaml 구성 파일(clustername-config.yaml)의 점프 호스트에서 다음 매개 변수가 채워져 있는지 확인합니다.
      • systemRegistry: - #registry.example.com:port

        형식으로 host.example.com:port-number

      • systemRegistryUser: - #user

      • systemRegistryPassword: - #secret
  5. -config.yaml 파일을 Kubernetes 클러스터의 매개변수로 채웁니다clustername. 표 1에는 구성 파일에 입력해야 하는 정보가 설명되어 있습니다.
  6. 다음 명령을 실행하여 BBE Cloudsetup에 대한 새 SSH 키를 생성합니다.
  7. SSH 키를 클러스터에 복사합니다. 대신 clustername클러스터의 정규화된 도메인 이름을 사용하여 다음 명령을 실행합니다.

    프롬프트되는 암호는 키가 복사되는 원격 호스트의 사용자에 대한 암호입니다.

  8. 다음 명령을 실행하여 분리된 SSH 에이전트를 중지합니다.
  9. 다음 명령을 실행하여 새 SSH 에이전트를 시작합니다.
  10. 다음 명령을 실행하여 SSH 키를 에이전트에 추가합니다.
  11. BBE Cloudsetup 실행 파일을 실행합니다. 실행 파일은 bbecloudsetup 디렉토리에 있습니다.
  12. 설치를 확인합니다.
    • BBE Cloudsetup 설치가 완료되고 오류가 발생하지 않았는지 확인합니다.

    • 명령어를 실행하세요 kubectl get nodes . 모든 노드는 준비 상태를 보고해야 합니다.

    • 명령어를 실행하세요 kubectl get pods -A . 클러스터의 모든 Pod는 상태를 실행 중 또는 완료됨으로 보고해야 합니다.

  13. SSH 에이전트를 중지합니다.
    $ eval $(ssh-agent -k)

구성 파일

이 섹션에서는 구성 파일(exampleconfig.yaml)의 필드에 대해 설명합니다.

표 1: BBE Cloudsetup 구성 파일 필드

필드 이름

묘사

클러스터 이름

클러스터의 이름을 입력합니다.

NTP 서버

클러스터의 모든 노드에서 시간을 동기화하는 데 사용되는 NTP 서버의 이름을 입력합니다.

클러스터의 노드 목록

  • 컨트롤 플레인 노드 세부 정보. 이러한 노드는 컨트롤 플레인 노드, etcd 노드 및 작업자 노드일 수 있습니다.

  • 작업자 노드 세부 정보

각 노드에 대해 다음 정보를 입력합니다.

  • hostname—노드의 이름입니다.

  • user - 사용자 이름입니다.

  • sudoPassword - 노드의 sudo 명령에 대한 비밀번호입니다.

  • role - controlplane 또는 worker입니다.

  • port - SSH 포트 번호입니다.

일반 시스템 구성

레지스트리는 클러스터 워크로드에 대한 컨테이너 이미지를 끌어오기 위한 중앙 리소스입니다. 레지스트리는 클러스터 노드가 액세스할 수 있는 기존 레지스트리일 수도 있고 클러스터의 일부로 레지스트리를 설치할 수도 있습니다.

메모:

기본 작업은 클러스터에서 레지스트리를 Pod로 설치하고 설정하는 것입니다. 자체 레지스트리를 호스팅하려는 경우 대체 주소를 입력할 수 있습니다.

다음 시스템 정보를 입력합니다.

  • installRegistry - 클러스터에 개인 레지스트리를 설치하려면 으로 true 설정합니다.

  • registrySize—레지스트리에 대한 영구 볼륨의 크기(GB)입니다.

  • registryPort - 레지스트리의 포트 번호입니다.

  • address - Keepalived VIP 주소의 DNS 이름(또는 사용 가능한 DNS가 없는 경우 주소 자체)입니다.

  • user - 레지스트리의 사용자 이름입니다.

  • password—레지스트리의 암호입니다.

  • generateCerts - 기본적으로 이 필드는 로 true 설정되며 레지스트리에 대한 자체 서명 인증서가 자동으로 생성됩니다. 이 필드를 사용하지 않도록 설정하면 사용할 키 및 인증서에 대한 경로를 제공해야 합니다. 구성 파일에서 또는 설치 프로세스 중에 이 작업을 수행할 수 있습니다.

    • key—등록 키의 경로입니다.

    • cert—등록 인증서의 경로입니다.

    • caCert—등록 CA 인증서의 경로입니다.

  • 클러스터가 DockerHub에서 시스템 이미지를 가져올 수 없는 경우 이미지를 별도의 개인 레지스트리에서 호스팅해야 합니다. 이 레지스트리는 클러스터가 이미지를 가져올 기본 레지스트리로 구성됩니다. 다음 정보를 입력합니다.

    • systemRegistry - 레지스트리의 주소입니다.

    • systemRegistryUser - 레지스트리의 사용자 이름입니다.

    • systemRegistryPassword - 레지스트리의 암호입니다.

로드 밸런서 구성 metalLB

L2 네트워크 로드 밸런서는 애플리케이션 로드 로드 밸런싱 서비스에 대한 외부(클러스터 외부) 액세스를 제공합니다. 응용 프로그램 시작의 일부로 로드 밸런싱 서비스를 만들 때 외부 IP 주소를 할당하는 작업을 담당합니다.

Load Balancer의 주소 풀에서 구성하는 주소 수는 실행하려는 애플리케이션에 따라 달라집니다.

  • APM은 APMi에 액세스하기 위해 하나 이상의 IP 주소가 필요합니다.

  • BBE 이벤트 수집 및 시각화에는 필요에 따라 외부 주소가 필요할 수 있습니다. BBE 이벤트 수집 및 시각화가 클러스터의 일부가 아닌 요소(예: BNG 사용자 플레인)에서 syslog를 분석하도록 구성된 경우 외부 주소가 필요합니다.

  • BNG CUPS 컨트롤러에는 두 개의 주소가 필요합니다.

주소의 서브넷은 응용 프로그램의 서비스에 액세스해야 하는 모든 클러스터 노드 및 원격 장치에서 연결할 수 있어야 합니다.

다음 정보를 입력합니다.

  • install - 로드 밸런싱을 위해 MetalLB를 설치하려면 으로 true설정합니다.

  • addresses - 로드 밸런서의 주소 풀에 대한 IP 주소 목록을 입력합니다. 목록의 주소는 접두사(예: 10.0.0.0/24), 개별 주소(예: 10.0.1.2/32), 주소 범위(예: 10.1.2.3-10.1.2.5) 또는 이러한 옵션의 조합으로 입력할 수 있습니다.

네트워크 구성

클러스터 내부 네트워크 트래픽(클러스터 유지 관리 및 관리에 사용됨)을 네트워크 트래픽(외부 시스템과의 통신에 사용됨)과 분리하는 것이 바람직할 수 있습니다. 다중 노드 클러스터에서는 클러스터 제어부의 주소를 하나의 시스템으로 지정할 수 있도록 가상 IP 주소를 클러스터에 할당해야 합니다.

network(네트워크) - 다음 네트워크 정보를 입력합니다.

메모:

클러스터의 모든 노드에는 동일한 인터페이스를 사용할 수 있어야 합니다.

  • cniInterface - 클러스터 네트워크에 대한 네트워크 인터페이스입니다. 이 인터페이스는 keepalived 인터페이스로도 사용되므로 반드시 정의해야 합니다.

  • sans (주체 대체 이름) - 쿠버네티스 API 서버에 연결할 수 있는 허용 된 이름으로 SAN 쿠버네티스 인증서에 추가할 호스트 이름(IP 주소) 목록입니다.
    • controlplane - TLS 인증서의 주체 대체 이름입니다.

    • worker.example.com - TLS 인증서에 대한 주체 대체 이름입니다.

  • keepalived—반드시 활성화되어야 합니다.

    • install - 가상 IP 컨피그레이션에 Keepalived를 설치하려면 을 입력합니다 true .

    • vip—클러스터의 가상 IP 주소

    • vrid—keepalived가 클러스터에 사용하는 가상 라우터 ID(1 - 255). 이 값은 각 클러스터 및 각 네트워크에 대해 고유해야 합니다. 기본적으로 값이 지정되지 않은 경우 BBE Cloudsetup은 keepalived 주소의 마지막 옥텟을 사용합니다. 따라서 keepalived 주소의 마지막 옥텟이 이미 다른 클러스터에서 사용하는 가상 라우터 ID라는 것을 알고 있는 경우 이 vrid 를 고유한 값으로 설정해야 합니다.

스토리지 구성

스토리지를 구성하려면 다음 정보를 입력합니다.

  • installLonghorn - 스토리지용 Longhorn을 설치하려면 입력합니다 true .

  • storageClass - Longhorn의 스토리지 클래스 이름입니다.

  • 파티션 - 다음 파티션 정보(Docker 및 Longhorn 파티션)를 입력합니다.

    • name - 파티션의 이름입니다.

    • createPartition - 사용하지 않습니다.

    • devicePath - 볼륨에 대한 블록 장치의 경로입니다.

    • location - 볼륨의 마운트 지점입니다.

    • partitionSize - 볼륨에 대한 파티션의 크기(GB)입니다.

SSH 구성

점프 호스트에서 컨트롤 플레인 및 작업자 노드까지 SSH 암호 없는 액세스를 구성합니다.

  1. SSH 키를 생성합니다.

    기본 경로를 사용하고 암호를 입력합니다.

  2. 키를 컨트롤 플레인 및 작업자 노드에 복사합니다. 예를 들어:
    • <user-id>- BBE Cloudesetup이 노드에 연결할 때 사용할 사용자 ID입니다.

    • <host address>- BBE Cloudesetup이 연결할 노드의 IP 주소입니다.

    클러스터의 각 노드에 대해 위의 절차를 반복합니다.

  3. SSH 에이전트를 시작합니다.
  4. 시스템에서 알려진 모든 키를 에이전트에 추가합니다. 새로운 시스템인 경우 하나의 키만 생성됩니다. 다른 키가 있는 경우 모두 추가하거나 인수로 로드할 키의 경로를 지정할 수 있습니다. 프롬프트에 따라 키 암호를 입력합니다.

BBE Cloudsetup 업그레이드

요약 이 절차를 사용하여 BBE Cloudsetup을 업그레이드합니다.

  1. 점프 호스트 시스템에서 현재 설정 파일(이름이 바뀐 exampleconfig.yaml 파일)이 포함된 현재 bbecloudsetup 디렉터리를 다른 이름의 디렉터리에 백업합니다.
  2. 주니퍼 네트웍스 소프트웨어 다운로드 페이지에서 BBE Cloudsetup 소프트웨어 패키지를 다운로드하여 점프 호스트 서버에 저장합니다.

    BBE Cloudsetup은 압축된 타르볼 이미지(.tgz)로 사용할 수 있습니다. 파일 이름에는 릴리스 번호가 이름의 일부로 포함됩니다. 릴리스 번호의 형식은 <Major>.<Minor>.<Maintenance입니다>

    • major 은(는) 제품의 주요 출시 번호입니다.
    • minor 은(는) 제품의 부 출시 번호입니다.
    • maintainance 은(는) 개정 번호입니다.
  3. 다음을 입력하여 점프 호스트에서 BBE Cloudsetup tarball(.tgz) 파일의 압축을 풉니다.
    bbecloudsetup 디렉토리가 새 파일로 채워집니다.
  4. 이전 구성 파일을 새 구성 파일과 비교하고 파일을 원하는 대로 변경합니다. 표 1을 참조하십시오.
  5. 구성 파일(bbecloudsetup 디렉터리에 있음)이 준비되면 BBE Cloudsetup 실행 파일을 실행합니다. 실행 파일은 bbecloudsetup 디렉토리에 있습니다.

    구성 파일에 호스트의 암호(sudo 암호) 또는 레지스트리(사용자 암호)를 입력하지 않은 경우 설치 중에 암호를 입력하라는 메시지가 표시됩니다.

  6. 설치를 확인합니다.
    • BBE Cloudsetup 설치가 완료되고 오류가 발생하지 않았는지 확인합니다.

    • 명령어를 실행하세요 kubectl get nodes . 모든 노드는 준비 상태를 보고해야 합니다.

    • 명령어를 실행하세요 kubectl get pods -A . 클러스터의 모든 Pod는 상태를 실행 중 또는 완료됨으로 보고해야 합니다.

레지스트리 정리

요약 이 진행을 사용하여 현재 사용되지 않는 이미지의 레지스트리를 정리할 수 있습니다.

BBE Cloudsetup은 이전 이미지 정리를 자동으로 수행하지 않습니다. 필요한 경우 명령을 사용하여 bbecloudsetup registry clean 오래된 이미지를 수동으로 제거할 수 있습니다.

  1. 점프 호스트 시스템에서 다음을 입력하여 명령을 실행합니다bbecloudsetup registry clean.

    옵션:

    • --kubeconfig (또는 -k)- kubeconfig 파일의 경로입니다.

    • --context (또는 -c)- kubeconfig 파일에서 사용할 컨텍스트입니다.

    • --dry-run (또는 -n)- 아무 작업도 수행하지 않고 기존 이미지를 볼 수 있습니다.

    명령을 실행하면 registry clean 로컬 레지스트리(있는 경우)에서 현재 클러스터 리소스에서 사용하지 않는 이미지가 있는지 확인합니다. 옵션과 dry-run 함께 명령을 실행하면 이미지를 삭제하지 않고 존재하는 이미지를 볼 수 있습니다.

  2. 이미지가 삭제되었는지 확인합니다.