내장된 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 레지스트리 또는 외부 개인 레지스트리 중 하나인 개인 컨테이너 레지스트리에 연결합니다.
- 감독자 클러스터에 연결합니다. vCenter Single Sign-On 사용자로 감독자 클러스터에 연결의 내용을 참조하십시오.
- 대상 Tanzu Kubernetes 클러스터가 프로비저닝된 vSphere 네임스페이스로 컨텍스트를 전환합니다.
kubectl config use-context tkgs-cluster-ns
- 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
- 텍스트 편집기로
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)로 변경합니다.
- 필수:
- 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
- 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 레지스트리에 저장된 이미지를 사용하고 이전에 구성된 이미지 끌어오기 암호를 활용하는 포드 규격을 생성합니다.
- 개인 레지스트리에 대한 세부 정보를 사용하여 예제 포드 규격을 생성합니다.
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>
은 이전에 생성한 레지스트리 서비스 이미지 끌어오기 암호의 이름으로 바꿉니다.
- 정의한 포드 규격을 기반으로 Tanzu Kubernetes 클러스터에 워크로드를 생성합니다.
kubectl --kubeconfig=<path>/cluster-kubeconfig apply -f <pod.yaml>
포드는 레지스트리에서 끌어온 이미지에서 생성해야 합니다.