내장된 Harbor 레지스트리Tanzu Kubernetes Grid 서비스에서 프로비저닝된 Tanzu Kubernetes 클러스터에 배포하는 이미지에 대한 개인 컨테이너 레지스트리로 사용할 수 있습니다.

vSphere with Tanzu에는 감독자 클러스터에서 사용하도록 설정하고 Tanzu Kubernetes 클러스터에 컨테이너 기반 워크로드를 배포하는 데 사용할 수 있는 Harbor 레지스트리 인스턴스가 포함됩니다.

내장된 Harbor 레지스트리감독자 클러스터에서 사용되도록 설정되면 Tanzu Kubernetes Grid 서비스는 레지스트리 인스턴스에 대한 루트 CA 인증서를 Tanzu Kubernetes 클러스터 노드에 설치합니다. 이 인증서는 새 클러스터와 기존 클러스터 모두에 설치됩니다(조정 루프를 통해). 여기에서 워크로드 YAML에 개인 레지스트리를 지정하여 클러스터에서 이미지를 실행할 수 있습니다.

워크플로

다음 워크플로를 사용하여 Tanzu Kubernetes 클러스터 노드에서 개인 레지스트리에 안전하게 액세스하고 컨테이너 이미지를 끌어옵니다.
단계 작업 지침
0 Tanzu Kubernetes 클러스터에서 내장된 Harbor 레지스트리를 사용하기 위한 워크플로를 검토합니다. vSphere with Tanzu 워크로드에 컨테이너 레지스트리 사용의 내용을 참조하십시오.
1 내장된 Harbor 레지스트리를 감독자 클러스터에서 사용하도록 설정합니다. 감독자 클러스터에서 내장된 Harbor 레지스트리를 사용하도록 설정의 내용을 참조하십시오.
2 레지스트리 서비스 암호를 사용하여 각 클러스터에 대한 kubeconfig를 구성합니다. 아래 지침 참조: 내장된 Harbor 레지스트리에 대한 이미지 끌어오기 암호를 사용하여 Tanzu Kubernetes 클러스터를 구성합니다.
3 개인 컨테이너 레지스트리를 지정하도록 워크로드 YAML을 구성합니다. 아래 지침 참조: 내장된 Harbor 레지스트리에 대한 이미지 끌어오기 암호를 사용하여 Tanzu Kubernetes 클러스터를 구성합니다.
4 이미지를 내장된 Harbor 레지스트리로 푸시하려면 Docker 클라이언트를 구성하고 vSphere Docker 자격 증명 도우미를 설치합니다. 내장된 Harbor 레지스트리 인증서를 사용하여 Docker 클라이언트 구성내장된 Harbor 레지스트리로 이미지 푸시의 내용을 참조하십시오.

내장된 Harbor 레지스트리에 대한 이미지 Pull 암호를 사용하여 Tanzu Kubernetes 클러스터 구성

이미지 Pull 암호를 사용하여 kubeconfig를 구성하여 Tanzu Kubernetes 클러스터를 내장된 Harbor 레지스트리 또는 외부 개인 레지스트리 중 하나인 개인 컨테이너 레지스트리에 연결합니다.
  1. 감독자 클러스터에 연결합니다. vCenter Single Sign-On 사용자로 감독자 클러스터에 연결의 내용을 참조하십시오.
  2. 대상 Tanzu Kubernetes 클러스터가 프로비저닝된 vSphere 네임스페이스로 컨텍스트를 전환합니다.
    kubectl config use-context tkgs-cluster-ns
  3. vSphere 네임스페이스의 이미지 Pull 암호를 가져와서 파일에 저장합니다.
    kubectl get secret -n <vsphere-namespace> <vsphere-namespace>-default-image-pull-secret -o yaml > <path>/image-pull-secret.yaml
    예:
    kubectl get secret -n tkgs-cluster-ns tkgs-cluster-ns-default-image-pull-secret -o yaml > tanzu/image-pull-secret.yaml
  4. 텍스트 편집기로 image-pull-secret.yaml을 엽니다. 최소한 필요한 변경을 수행하고 완료되면 파일을 저장합니다.
    apiVersion: v1
    data:
      .dockerconfigjson: ewoJCQkJImF1dGhzJUV2s1ZVZwWVFuWmp...
    kind: Secret
    metadata:
      creationTimestamp: "2020-11-12T02:41:08Z"
      managedFields:
      - apiVersion: v1
        ...
      name: harbor-registry-secret   #OPTIONAL: Change if desired
      namespace: default           #REQUIRED: Enter the Kuberentes namespace
      ownerReferences:
      - apiVersion: registryagent.vmware.com/v1alpha1
        ...
      resourceVersion: "675868"
      selfLink: /api/v1/namespaces/tkgs-cluster-ns/secrets/tkgs-cluster-ns-default-image-pull-secret
      uid: 66606b41-7363-4b74-a3f2-4436f83f
    type: kubernetes.io/dockerconfigjson
    
    • 필수: namespace 값을 클러스터의 적절한 Kubernetes 네임스페이스(예: default)와 일치하도록 변경합니다.
      참고: 이미지 Pull 암호를 구성하려면 Kubernetes 네임스페이스를 지정합니다. Tanzu Kubernetes 클러스터가 이미 있는 경우, 해당 클러스터로 컨텍스트를 전환하고 kubectl get namespaces를 실행하여 사용 가능한 Kubernetes 네임스페이스를 나열합니다. 필요한 경우 계속하기 전에 대상 네임스페이스를 생성합니다. Tanzu Kubernetes 클러스터가 없는 경우 default 네임스페이스를 사용할 수 있습니다.
    • 선택 사항: name 값을 의미 있는 텍스트(예: harbor-registry-secret 또는 private-registry-secret)로 변경합니다.
  5. Tanzu Kubernetes 클러스터에 액세스하는 데 사용할 수 있는 kubeconfig 파일을 생성합니다.
    kubectl get secret -n <vsphere-namespace> <cluster-name>-kubeconfig -o jsonpath='{.data.value}' | base64 -d > <path>/cluster-kubeconfig
    
    <vsphere-namespace>를 대상 Tanzu Kubernetes 클러스터가 프로비저닝된 vSphere 네임스페이스의 이름으로 바꿉니다. <cluster-name>Tanzu Kubernetes 클러스터의 이름으로 바꿉니다.
    kubectl get secret -n tkgs-cluster-ns tkgs-cluster-5-kubeconfig -o jsonpath='{.data.value}' | base64 -d > tanzu/cluster-kubeconfig
  6. Tanzu Kubernetes 클러스터에서 레지스트리 서비스 암호를 생성합니다. 로컬에 저장하고 업데이트한 이미지 Pull 암호 파일을 참조합니다.
    kubectl --kubeconfig=<path>/cluster-kubeconfig apply -f <path>/image-pull-secret.yaml
    예:
    kubectl --kubeconfig=tanzu/cluster-kubeconfig apply -f tanzu/image-pull-secret.yaml
    레지스트리 서비스 암호가 생성된 것을 볼 수 있습니다.
    secret/harbor-registry-secret created

개인 컨테이너 레지스트리에서 이미지를 끌어오도록 Tanzu Kubernetes 워크로드 구성

Tanzu Kubernetes 클러스터 워크로드를 위해 개인 컨테이너 레지스트리에서 이미지를 끌어오려면 개인 레지스트리 세부 정보를 사용하여 워크로드 YAML을 구성합니다.

이 절차는 전용 컨테이너 레지스트리 또는 내장된 Harbor 레지스트리에서 이미지를 끌어오는 데 사용할 수 있습니다. 이 예에서는 내장된 Harbor 레지스트리에 저장된 이미지를 사용하고 이전에 구성된 이미지 끌어오기 암호를 활용하는 포드 규격을 생성합니다.
  1. 개인 레지스트리에 대한 세부 정보를 사용하여 예제 포드 규격을 생성합니다.
    apiVersion: v1
    kind: Pod
    metadata:
      name: <workload-name>
      namespace: <kubernetes-namespace>
    spec:
      containers:
      - name: private-reg-container
        image: <Registry-IP-Address>/<vsphere-namespace>/<image-name>:<version>
      imagePullSecrets:
      - name: <registry-secret-name>
    • <workload-name>을 포드 워크로드의 이름으로 바꿉니다.
    • <kubernetes-namespace>는 포드를 생성할 클러스터의 Kubernetes 네임스페이스로 바꿉니다. 이것은 레지스트리 서비스 이미지 끌어오기 암호가 클러스터 Tanzu Kubernetes에 저장되는 동일한 Kubernetes 네임스페이스(예: 기본 네임스페이스)여야 합니다.
    • <Registry-IP-Address>감독자 클러스터에서 실행되는 내장된 Harbor 레지스트리 인스턴스의 IP 주소로 바꿉니다.
    • <vsphere-namespace>는 대상 Tanzu Kubernetes가 프로비저닝된 vSphere 네임스페이스로 바꿉니다.
    • <image-name>은 원하는 이미지 이름으로 바꿉니다.
    • <version>은 적절한 이미지 버전(예: "latest")으로 바꿉니다.
    • <registry-secret-name>은 이전에 생성한 레지스트리 서비스 이미지 끌어오기 암호의 이름으로 바꿉니다.
  2. 정의한 포드 규격을 기반으로 Tanzu Kubernetes 클러스터에 워크로드를 생성합니다.
    kubectl --kubeconfig=<path>/cluster-kubeconfig apply -f <pod.yaml>

    포드는 레지스트리에서 끌어온 이미지에서 생성해야 합니다.