Men-deploy workload container

Halaman ini menjelaskan proses mengupload image container ke Harbor, dan men-deploy image tersebut di instance Sandbox GDC Anda.

Persiapan

  1. Ikuti petunjuk di Menghubungkan ke instance Anda untuk terhubung ke instance Anda dengan akses command line Linux. Anda dapat terhubung ke gateway melalui Desktop Jarak Jauh, atau menjalankan sshuttle di komputer Linux Anda.

  2. Pastikan pengguna memiliki peran secret-admin, namespace-admin, global-pnp-admin, dan project-viewer yang ditetapkan di tingkat project.

  3. Tetapkan variabel lingkungan yang akan digunakan dalam petunjuk berikut:

    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. Untuk membuat instance registry Harbor, ikuti Membuat instance registry Harbor, atau Anda dapat menggunakan instance Harbor Sandbox yang telah dibuat sebelumnya: user-project default di GDC Sandbox dilengkapi dengan Instance Harbor yang sudah di-deploy, user-haas-instance, yang dapat digunakan untuk pengembangan.

    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
    

Mengupload gambar ke Harbor

  1. Buat project Harbor dengan mengikuti Membuat Project Harbor.

    Contoh:

    gdcloud harbor harbor-projects create HARBOR_PROJECT  \
    --project=TENANT_PROJECT \
    --instance=HARBOR_INSTANCE_NAME
    
  2. Login ke Docker. Mulai dari Login ke Docker atau Helm dengan secret CLI.

  3. Download atau bangun image container Anda, lalu ikuti petunjuk air-gapped Google Distributed Cloud untuk Mengirim image untuk mengirimkannya ke Harbor.

    Misalnya, berikut adalah alur kerja untuk menarik dari GitLab dan mengirim ke Harbor:

    1. Login dan tarik dari registry container Gitlab Anda.

      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. Kirim image Gitlab ke Harbor:

      export TAG=demo-image
      docker tag ${TAG} ${GITLAB_IMAGE_PATH}
      docker push ${INSTANCE_URL}/${HARBOR_PROJECT}/${TAG}
      

Deploy aplikasi container

Lanjutkan di Membuat secret pull image Kubernetes untuk membuat secret dan men-deploy aplikasi Anda.

Membuat kebijakan jaringan

  1. Buat kebijakan jaringan untuk mengizinkan semua traffic jaringan ke project tenant:

    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
    

Hubungkan ke aplikasi

  1. Ekspor alamat IP untuk layanan:

    export IP=`kubectl --kubeconfig=${KUBECONFIG} get service ${SERVICE_NAME} \
          -n TENANT_PROJECT -o jsonpath='{.status.loadBalancer.ingress[*].ip}'`
    
  2. Untuk terhubung dari mesin lokal menggunakan sshuttle, jalankan perintah berikut untuk membuat tunnel SSH. Jika Anda memiliki sesi sshuttle yang dibuat saat terhubung ke instance, Anda harus mengakhiri sesi tersebut sebelum menjalankan perintah berikut:

      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. Uji layanan dengan mengirimkan permintaan HTTP http://${IP}`:

      curl http://${IP}