Halaman ini menjelaskan proses mengupload image container ke Harbor, dan men-deploy image tersebut di instance Sandbox GDC Anda.
Persiapan
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.Pastikan pengguna memiliki peran
secret-admin
,namespace-admin
,global-pnp-admin
, danproject-viewer
yang ditetapkan di tingkat project.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.
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
Buat project Harbor dengan mengikuti Membuat Project Harbor.
Contoh:
gdcloud harbor harbor-projects create HARBOR_PROJECT \ --project=TENANT_PROJECT \ --instance=HARBOR_INSTANCE_NAME
Login ke Docker. Mulai dari Login ke Docker atau Helm dengan secret CLI.
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:
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}
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
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
Ekspor alamat IP untuk layanan:
export IP=`kubectl --kubeconfig=${KUBECONFIG} get service ${SERVICE_NAME} \ -n TENANT_PROJECT -o jsonpath='{.status.loadBalancer.ingress[*].ip}'`
Untuk terhubung dari mesin lokal menggunakan
sshuttle
, jalankan perintah berikut untuk membuat tunnel SSH. Jika Anda memiliki sesisshuttle
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
Uji layanan dengan mengirimkan permintaan HTTP http://${IP}`:
curl http://${IP}