Implemente cargas de trabalho de contentores

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

  1. 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.

  2. Certifique-se de que o utilizador tem as funções secret-admin, namespace-admin, global-pnp-admin e project-viewer atribuídas ao nível do projeto.

  3. 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.
    
  4. 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

  1. 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
    
  2. Inicie sessão no Docker. Comece por Iniciar sessão no Docker ou no Helm com segredos da CLI.

  3. 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:

    1. 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}
      
    2. 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

  1. 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

  1. 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}'`
    
  2. 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 de sshuttle 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
    
  3. Teste o serviço enviando um pedido HTTP http://${IP}`:

      curl http://${IP}