Você pode usar o Harbor Registry incorporado para servir como o registro de contêiner privado para imagens que você implanta em clusters do Tanzu Kubernetes provisionados pelo Tanzu Kubernetes Grid Service.
O vSphere with Tanzu incorpora uma instância do Harbor Registry que você pode ativar no Supervisor Cluster e usar para implantar cargas de trabalho baseadas em contêiner em clusters do Tanzu Kubernetes.
Quando o Harbor Registry incorporado estiver ativado no Supervisor Cluster, o Tanzu Kubernetes Grid Service instalará nos nós do cluster Tanzu Kubernetes o certificado da autoridade de certificação raiz para a instância do registro. Esse certificado é instalado em novos clusters e em clusters existentes (por meio de um loop de reconciliação). A partir daí, você pode executar imagens no cluster especificando o registro privado no YAML da carga de trabalho.
Fluxo de trabalho
Etapa | Ação | Instruções |
---|---|---|
0 | Revise o fluxo de trabalho para usar o Harbor Registry incorporado com clusters Tanzu Kubernetes. | Consulte o Usando um Container Registry para vSphere with Tanzu cargas de trabalho. |
1 | Ative o Harbor Registry incorporado no Cluster de Supervisor. | Consulte o Ative o Harbor Registry incorporado no Supervisor Cluster. |
2 | Configure o kubeconfig para cada cluster com o segredo do serviço de registro. | Consulte as instruções abaixo: Configure um cluster de Tanzu Kubernetes com o segredo de recepção de imagem para o Harbor Registry incorporado. |
3 | Configure o YAML da carga de trabalho para especificar o registro do contêiner privado. | Consulte as instruções abaixo: Configure um cluster de Tanzu Kubernetes com o segredo de recepção de imagem para o Harbor Registry incorporado. |
4 | Para enviar imagens para o Harbor Registry incorporado, configure um cliente Docker e instale o vSphere Docker Credential Helper. | Consulte Configurar um cliente Docker com o certificado Harbor Registry incorporado e Enviar imagens para o incorporado Harbor Registry. |
Configurar um Tanzu Kubernetes cluster com o segredo de recepção de imagem para o incorporado Harbor Registry
- Conecte-se ao Supervisor Cluster. Consulte o Conecte-se ao Supervisor Cluster como um usuário do vCenter Single Sign-On.
- Alterne o contexto para o vSphere Namespace onde o cluster Tanzu Kubernetes de destino está provisionado.
kubectl config use-context tkgs-cluster-ns
- Obtenha o segredo de recepção de imagem para o vSphere Namespace e armazene-o em um arquivo.
kubectl get secret -n <vsphere-namespace> <vsphere-namespace>-default-image-pull-secret -o yaml > <path>/image-pull-secret.yaml
Por exemplo:kubectl get secret -n tkgs-cluster-ns tkgs-cluster-ns-default-image-pull-secret -o yaml > tanzu/image-pull-secret.yaml
- Abra o
image-pull-secret.yaml
com um editor de texto. No mínimo, faça as alterações necessárias e salve o arquivo quando terminar.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
- OBRIGATÓRIO: altere o valor de
namespace
para corresponder a um namespace Kubernetes apropriado no cluster, como default .Observação: Para configurar o segredo de recepção da imagem, especifique um namespace do Kubernetes. Se o cluster Tanzu Kubernetes já existir, alterne o contexto para ele e executekubectl get namespaces
para listar os namespaces do Kubernetes disponíveis. Se necessário, crie o namespace de destino antes de prosseguir. Se o cluster Tanzu Kubernetes não existir, você poderá usar o namespacedefault
. - OPCIONAL: altere o valor de
name
para algo significativo, como harbor-registry-secret ou private-registry-secret .
- OBRIGATÓRIO: altere o valor de
- Crie um arquivo kubeconfig que possa ser usado para acessar o cluster Tanzu Kubernetes.
kubectl get secret -n <vsphere-namespace> <cluster-name>-kubeconfig -o jsonpath='{.data.value}' | base64 -d > <path>/cluster-kubeconfig
Substitua <vsphere-namespace> pelo nome do vSphere Namespace onde o cluster de destino Tanzu Kubernetes está provisionado. Substitua <cluster-name> pelo nome do cluster Tanzu Kubernetes.kubectl get secret -n tkgs-cluster-ns tkgs-cluster-5-kubeconfig -o jsonpath='{.data.value}' | base64 -d > tanzu/cluster-kubeconfig
- Crie o segredo do serviço de registro no cluster Tanzu Kubernetes. Faça referência ao arquivo secreto de recepção de imagem que você salvou e atualizou localmente.
kubectl --kubeconfig=<path>/cluster-kubeconfig apply -f <path>/image-pull-secret.yaml
Por exemplo:kubectl --kubeconfig=tanzu/cluster-kubeconfig apply -f tanzu/image-pull-secret.yaml
Você verá que o segredo do Serviço de Registro foi criado com êxito.secret/harbor-registry-secret created
Configurar uma Tanzu Kubernetes carga de trabalho para extrair imagens de um registro de contêiner privado
Para obter imagens de um registro de contêiner privado para uma carga de trabalho de cluster do Tanzu Kubernetes, configure o YAML da carga de trabalho com os detalhes do registro privado.
- Crie uma especificação de pod de exemplo com os detalhes sobre o registro privado.
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>
- Substitua
<workload-name>
pelo nome da carga de trabalho do pod. - Substitua
<kubernetes-namespace>
pelo namespace Kubernetes no cluster em que o pod será criado. Deve ser o mesmo namespace do Kubernetes no qual o segredo de recepção da imagem do Serviço de Registro está armazenado no cluster Tanzu Kubernetes (como o namespace padrão). - Substitua
<Registry-IP-Address>
pelo endereço IP da instância Harbor Registry incorporada em execução no Supervisor Cluster. - Substitua <vsphere-namespace> pelo vSphere Namespace onde o destino Tanzu Kubernetes está provisionado.
- Substitua
<image-name>
por um nome de imagem de sua escolha. - Substitua
<version>
por uma versão apropriada da imagem, como "mais recente". - Substitua
<registry-secret-name>
pelo nome do segredo de recepção da imagem do Serviço de Registro que você criou anteriormente.
- Substitua
- Crie uma carga de trabalho no cluster Tanzu Kubernetes com base na especificação do pod que você definiu.
kubectl --kubeconfig=<path>/cluster-kubeconfig apply -f <pod.yaml>
O pod deve ser criado a partir da imagem extraída do registro.