Esta página descreve o processo de carregamento de uma imagem de contentor para o Harbor e a implementação dessa imagem na sua instância da sandbox da GDC.
Preparação
Siga as instruções em Estabeleça ligação à sua instância para estabelecer ligação à sua instância com acesso à linha de comandos do Linux. Pode ligar-se ao gateway através do Ambiente de Trabalho Remoto ou executar
sshuttle
na sua máquina Linux.Certifique-se de que o utilizador tem as funções
secret-admin
,namespace-admin
,global-pnp-admin
eproject-viewer
atribuídas ao nível do projeto.Defina as variáveis de ambiente que vão ser usadas nas seguintes instruções:
export TENANT_PROJECT=TENANT_PROJECT # Intended deployment project for the container workflow. export HARBOR_INSTANCE_NAME=HARBOR_INSTANCE_NAME # Harbor Container Registry instance name. export HARBOR_PROJECT=HARBOR_PROJECT # Container registry project name for your images. export AO_USER=AO_USER # Your user name in the instance, e.g.: fop-my-user@example.com. export INSTANCE_URL=${HARBOR_INSTANCE_NAME}-${TENANT_PROJECT}.org-1.zone1.google.gdch.test. export DOCKER_CONFIG_PATH=DOCKER_CONFIG_PATH # Path to docker config file e.g.: /root/.docker/config.json.
Para criar uma instância do registo do Harbor, siga as instruções em Criar uma instância do registo do Harbor, ou pode usar a instância do Harbor da área de testes pré-criada: a instância do Harbor
user-project
predefinida na área de testes do GDC já vem com uma instância do Harbor implementada,user-haas-instance
, que pode ser usada para desenvolvimento.export HARBOR_INSTANCE_NAME=user-haas-instance export TENANT_PROJECT=user-project export INSTANCE_URL=${HARBOR_INSTANCE_NAME}-${TENANT_PROJECT}.org-1.zone1.google.gdch.test
Carregue uma imagem para o Harbor
Crie um projeto do Harbor seguindo as instruções em Crie um projeto do Harbor.
Exemplo:
gdcloud harbor harbor-projects create HARBOR_PROJECT \ --project=TENANT_PROJECT \ --instance=HARBOR_INSTANCE_NAME
Inicie sessão no Docker. Comece por Iniciar sessão no Docker ou no Helm com segredos da CLI.
Transfira ou crie a imagem do contentor e siga as instruções de intervalo de ar do Google Distributed Cloud para enviar uma imagem para o Harbor.
Por exemplo, aqui está um fluxo de trabalho para extrair do Gitlab e enviar para o Harbor:
Inicie sessão e extraia do seu registo de contentores do Gitlab.
export GITLAB_ID=GITLAB_ID export GITLAB_PROJECT_NAME=GITLAB_PROJECT_NAME export GITLAB_IMAGE_PATH=registry.gitlab.com/GITLAB_ID/GITLAB_PROJECT_NAME docker login registry.gitlab.com docker pull ${GITLAB_IMAGE_PATH}
Envie a imagem do Gitlab para o Harbor:
export TAG=demo-image docker tag ${TAG} ${GITLAB_IMAGE_PATH} docker push ${INSTANCE_URL}/${HARBOR_PROJECT}/${TAG}
Implemente a app do contentor
Continue em Crie um segredo de obtenção de imagens do Kubernetes para criar um segredo e implementar a sua app.
Crie uma política de rede
Crie uma política de rede para permitir todo o tráfego de rede para o projeto de inquilino:
kubectl --kubeconfig GLOBAL_API_KUBECONFIG -n TENANT_PROJECT \ create -f - <<EOF apiVersion: networking.k8s.io/v1 kind: ProjectNetworkPolicy metadata: annotations: name: allow-all spec: ingress: - from: - ipBlock: cidr: 0.0.0.0/0 podSelector: {} policyTypes: - Ingress EOF
Estabeleça ligação à aplicação
Exporte o endereço IP do serviço:
export IP=`kubectl --kubeconfig=${KUBECONFIG} get service ${SERVICE_NAME} \ -n TENANT_PROJECT -o jsonpath='{.status.loadBalancer.ingress[*].ip}'`
Para estabelecer ligação a partir da sua máquina local através do
sshuttle
, execute o seguinte comando para criar um túnel SSH. Se tiver uma sessão desshuttle
existente que criou quando se ligou à sua instância, tem de terminar essa sessão antes de executar o seguinte comando:sshuttle -r zone1-org-1-data@GDC_SANDBOX_INSTANCE_NAME --no-latency-control \ --ssh-cmd 'gcloud compute ssh --project PROJECT_NAME --zone ZONE --tunnel-through-iap' \ 10.200.0.0/16 --dns
Teste o serviço enviando um pedido HTTP http://${IP}`:
curl http://${IP}