GitLab 관리 클러스터 (사용 중지됨)

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-Managed
caution
이 기능은 deprecated되었습니다. GitLab 14.5에서. 귀하의 클러스터를 GitLab에 연결하려면 GitLab 에이전트를 사용하십시오. 응용 프로그램을 관리하려면 클러스터 프로젝트 관리 템플릿을 사용하십시오.
Self-Managed GitLab에서는 기본적으로이 기능을 사용할 수 없습니다. 사용하려면 관리자가 certificate_based_clusters라는 피처 플래그를 활성화 할 수 있습니다.

GitLab이 귀하의 클러스터를 관리하도록 허용할 수 있습니다. 귀하의 클러스터가 GitLab에 의해 관리되는 경우 프로젝트에 대한 리소스가 자동으로 생성됩니다. 생성된 리소스에 대한 자세한 내용은 액세스 제어 섹션을 참조하십시오.

자체 클러스터를 관리하도록 선택한 경우 프로젝트별 리소스가 자동으로 생성되지 않습니다. Auto DevOps를 사용하는 경우 배포 작업에 대해 KUBE_NAMESPACE 배포 변수를 명시적으로 제공해야합니다. 그렇지 않으면 네임 스페이스가 자동으로 생성됩니다.

caution
GitLab에 의해 생성 된 네임 스페이스 및 서비스 계정을 매뉴얼으로 관리하면 예기치 않은 오류가 발생할 수 있습니다. 이러한 경우 클러스터 캐시를 지우십시오.

클러스터 캐시 지우기

GitLab이 귀하의 클러스터를 관리하도록 허용하는 경우 GitLab은 프로젝트를 위해 생성 된 네임 스페이스 및 서비스 계정의 캐시된 버전을 저장합니다. 이러한 리소스를 매뉴얼으로 수정하면이 캐시가 클러스터와 동기화가되지 않을 수 있습니다. 이는 배포 작업 실패의 원인이 될 수 있습니다.

캐시를 지우려면:

  1. 프로젝트의 운영 > Kubernetes 클러스터 페이지로 이동하여 클러스터를 선택하십시오.
  2. 고급 설정 섹션을 확장하십시오.
  3. 클러스터 캐시 지우기를 선택하십시오.

기본 도메인

기본 도메인을 지정하면 KUBE_INGRESS_BASE_DOMAIN이 자동으로 배포 변수로 설정됩니다. Auto DevOps를 사용하는 경우이 도메인은 다른 단계에 사용됩니다. 예를 들어 Auto Review Apps 및 Auto Deploy.

도메인은 와일드 카드 DNS가 Ingress IP 주소로 구성되어 있어야합니다. 다음 중 하나를 선택할 수 있습니다.

  • 도메인 제공 업체에서 Ingress IP 주소를 가리키는 A 레코드를 만듭니다.
  • nip.io 또는 xip.io와 같은 서비스를 사용하여 와일드 카드 DNS 주소를 입력하십시오. 예를 들어192.168.1.1.xip.io.

외부 Ingress IP 주소 또는 외부 Ingress 호스트 이름을 결정하려면:

  • 클러스터가 GKE에있는 경우:
    1. 고급 설정에서 Google Kubernetes Engine 링크를 선택하거나 Google Kubernetes Engine 대시 보드로 직접 이동하십시오.
    2. 적절한 프로젝트 및 클러스터를 선택하십시오.
    3. 연결을 선택하십시오.
    4. 로컬 터미널이나 Cloud Shell을 사용하여 gcloud 명령을 실행하십시오.
  • 클러스터가 GKE에 없는 경우: 귀하의 Kubernetes 공급자에 따라 kubectl을 올바른 자격 증명으로 구성하는 특정 지침을 따르십시오. 다음 예제의 출력은 클러스터의 외부 엔드 포인트를 표시합니다. 그런 다음이 정보를 사용하여 배포 된 응용 프로그램에 대한 외부 액세스를 허용하는 DNS 항목 및 포워딩 규칙을 설정할 수 있습니다.

Ingress에 따라 외부 IP 주소를 다양한 방법으로 검색할 수 있습니다. 이 디렉터리은 일반적인 솔루션 및 일부 GitLab 특정 방법을 제공합니다.

  • 일반적으로 모든 로드 밸런서의 IP 주소를 나열 할 수 있습니다

    kubectl get svc --all-namespaces -o jsonpath='{range.items[?(@.status.loadBalancer.ingress)]}{.status.loadBalancer.ingress[*].ip} '
    
  • 응용 프로그램을 사용하여 Ingress를 설치 한 경우:

    kubectl get service --namespace=gitlab-managed-apps ingress-nginx-ingress-controller -o jsonpath='{.status.loadBalancer.ingress[0].ip}'
    
  • 일부 Kubernetes 클러스터는 Amazon EKS와 같이 호스트 이름을 반환합니다. 이러한 플랫폼의 경우 다음을 실행하십시오.

    kubectl get service --namespace=gitlab-managed-apps ingress-nginx-ingress-controller -o jsonpath='{.status.loadBalancer.ingress[0].hostname}'
    

    EKS를 사용하는 경우 Elastic Load Balancer 호스트 이름도 생성되어 추가 AWS 비용이 발생합니다.

  • Istio/Knative는 다른 명령을 사용합니다. 실행하십시오:

    kubectl get svc --namespace=istio-system istio-ingressgateway -o jsonpath='{.status.loadBalancer.ingress[0].ip} '
    

일부 Kubernetes 버전에서 여분의 ‘%’가 표시되면 포함하지 마십시오.