Rumah > pembangunan bahagian belakang > Golang > Meletakkan Aplikasi Tanpa Pelayan pada Google Cloud Run

Meletakkan Aplikasi Tanpa Pelayan pada Google Cloud Run

Susan Sarandon
Lepaskan: 2024-11-19 18:23:02
asal
524 orang telah melayarinya

pengenalan

Dalam panduan ini, saya akan menggunakan kontena daripada sistem TeoMeWhy Twitch, yang kini berada pada AWS dan meletakkannya pada GCP.

Struktur semasa di AWS
Implantando Aplicações Serverless no Google Cloud Run

Seni bina di GCP

Implantando Aplicações Serverless no Google Cloud Run

Tiada alat automasi yang kompleks akan digunakan, semuanya akan dilakukan melalui konsol, menyepadukan dengan Github dan menggunakan imej dengan setiap komitmen kepada utama.
Kami akan menggunakan:

  • Cloud Run - Untuk aplikasi web
  • Cloud SQL - Untuk pangkalan data MySQL
  • GCE - Untuk menjalankan Teomebot
  • Storan Awan - Storan Objek (S3)
  • Cloud Build - Untuk membuat penggunaan aplikasi
  • Pengurus Rahsia - Simpan bukti kelayakan aplikasi dengan selamat.

Mendapatkan aplikasi

  1. Lawati TeoMeWhy's GitHub dan fork aplikasi yang berkaitan dengan projek.
  2. Pada halaman repositori, klik Berbintang dan kemudian Fork. Implantando Aplicações Serverless no Google Cloud Run
  3. Pada halaman garpu, beri nama garpu dan klik Buat garpu. Implantando Aplicações Serverless no Google Cloud Run
  4. Ulang proses untuk repositori lain dalam projek jika anda mahu meniru keseluruhan persekitaran.
  5. Buat klon daripada garpu untuk melaraskan aplikasi seperti yang perlu sebelum menghantarnya ke GCP.
git clone git@github.com:cslemes/points-to-go.git
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Mencipta Dockerfile untuk mencipta imej bekas

Navigasi ke folder repositori klon. Repositori sudah mengandungi fail Docker yang direka untuk Docker. Jom analisanya:

```
FROM golang:latest
WORKDIR /app/
COPY . .
RUN go build main.go
CMD ["./main"]
```
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Fail Docker ini berfungsi, tetapi kami akan mengoptimumkannya menggunakan binaan berbilang peringkat untuk mengurangkan saiz imej akhir. Memandangkan Go tidak memerlukan kebergantungan luaran, kami boleh menggunakan imej asas minimum seperti calar.

  1. Tukar imej bina dengan versi yang lebih ringan dan namakannya untuk rujukan pada peringkat lain.

    FROM golang:1.23.1-alpine3.20 AS build
    
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
  2. Tambah arahan muat turun mod go untuk cache kebergantungan dan sahkan mod go untuk memastikan ia sepadan dengan semak dalam fail go.sum.

    RUN go mod download && go mod verify
    
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
  3. Untuk mengoptimumkan binari untuk pengeluaran, tambahkan parameter di bawah:

    • CGO_ENABLED=0: Melumpuhkan sokongan CGO. CGO ialah fungsi dalam Go yang membolehkan anda memanggil kod C, tetapi apabila anda melumpuhkannya, anda mendapat binari statik sepenuhnya, tanpa kebergantungan pada perpustakaan luaran.
    • GOARCH=amd64: Menetapkan seni bina sasaran untuk penyusunan. amd64 ialah seni bina yang digunakan pada mesin dengan pemproses 64-bit, seperti kebanyakan pelayan dan desktop moden.
    • GOOS=linux: Mentakrifkan sistem pengendalian sasaran untuk kompilasi. Di sini ia dikonfigurasikan untuk Linux, yang bermaksud binari yang dijana akan boleh dilaksanakan pada sistem Linux.
    • go build -o /app/points: Menghimpun kod dan menyimpan binari ke laluan yang ditentukan (/app/points).
    • -a: Memaksa penyusunan semula semua pakej, termasuk kebergantungan, walaupun ia tidak berubah. Ia boleh berguna untuk memastikan bahawa semuanya disusun semula dengan bendera dan tetapan baharu.
    • -ldflags="-s -w": Ini ialah bendera pengoptimuman saiz.
    • -s mengalih keluar jadual simbol nyahpepijat daripada binari.
    • -w mengalih keluar maklumat pengesanan tindanan. Pilihan ini mengurangkan saiz binari akhir.
    • -installsuffix cgo: Menambah akhiran pada direktori pemasangan untuk membezakan binari dengan CGO dilumpuhkan. Ini boleh mengelakkan konflik dengan binari yang menggunakan CGO.
    git clone git@github.com:cslemes/points-to-go.git
    
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
  4. (pilihan) Untuk menjadikan imej lebih kecil, kita boleh memampatkan binari menggunakan upx, upx (Ultimate Packer for eXecutables) ialah alat yang memampatkan binari boleh laku untuk mengurangkan saiz fail, seperti binari Go bahawa Akan ada masa binaan yang lebih lama, dan kelewatan yang lebih lama dalam permulaan kontena, jadi ia mesti dinilai yang mana yang paling bermanfaat untuk pelaksanaannya. Memandangkan objektifnya adalah untuk menggunakannya dalam Cloud Run yang sudah mempunyai Cold Start, ia menjeda bekas apabila ia tidak digunakan, kami tidak akan menggunakannya kerana ia akan meningkatkan masa permulaan kontena.

    ```
    FROM golang:latest
    WORKDIR /app/
    COPY . .
    RUN go build main.go
    CMD ["./main"]
    ```
    
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
  • upx --ultra-brute -qq points: Memampatkan perduaan mata secara agresif, menggunakan semua pilihan mampatan yang mungkin dan tanpa memaparkan mesej output.
  • mata upx -t: Menguji binari termampat untuk memastikan ia masih berfungsi dengan betul.
  • Sekarang dengan binari sedia, mari kita lakukan peringkat kedua, iaitu menyalin binari kepada imej yang bersih.

    FROM golang:1.23.1-alpine3.20 AS build
    
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    • scratch ialah imej asas khas dalam Docker yang mewakili imej kosong sepenuhnya tanpa sebarang sistem pengendalian atau kebergantungan. Penggunaan FROM scratch adalah perkara biasa dalam imej minimalis untuk aplikasi Go, dengan perduaan statik adalah mencukupi.
  • Fail lengkap

    git clone git@github.com:cslemes/points-to-go.git
    
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
  1. Membanding binaan
  2. Pengoptimuman fail Docker dan penggunaan upx menghasilkan imej sehingga 3 kali lebih kecil.
  3. Analisis imej asal dengan Trivy menunjukkan 904 CVE, manakala imej calar bebas daripada CVE.
Imagem Tipo Tamanho
points-to-go Otimizado 14MB
points-to-go Com upx 5.77MB
points-to-go original 1.76GB

Implantando Aplicações Serverless no Google Cloud Run

  1. Ulang tetapan ini untuk repositori lain.

Menggunakan pangkalan data

  1. Dalam konsol, akses SQL dalam menu sisi. Implantando Aplicações Serverless no Google Cloud Run
  2. Atau cari "SQL" dalam bar carian dan pilih SQL daripada senarai. Implantando Aplicações Serverless no Google Cloud Run
  3. Pada halaman Cloud SQL, klik Buat Instance dan pilih MySQL. Implantando Aplicações Serverless no Google Cloud Run
  4. Pilih Enterprise di bawah penyuntingan.
  5. Di bawah "Mengedit Pratetap", pilih Kotak Pasir.
  6. Tinggalkan versi pangkalan data di MySQL 8.0. Implantando Aplicações Serverless no Google Cloud Run
  7. Beri contoh nama di bawah ID Contoh dan tetapkan kata laluan.
  8. anda boleh menentukan dasar kata laluan dengan mengembangkan dasar kata laluan Implantando Aplicações Serverless no Google Cloud Run
  9. Tentukan zon dan wilayah, dan kami akan meninggalkannya dalam satu zon. Implantando Aplicações Serverless no Google Cloud Run
  10. Dalam contoh penyesuaian, kami boleh melaraskan perkakasan mengikut keperluan kami, pilihan akan berbeza-beza bergantung pada edisi yang kami pilih.
  11. Laraskan CPU kepada 1 dan Cakera kepada 10GB mengikut keperluan. Implantando Aplicações Serverless no Google Cloud Run
  12. Dalam sambungan, nyahtanda IP Awam dan tandai IP Peribadi.
  13. Dalam sambungan akses peribadi klik Konfigurasikan Sambungan
  14. Pilih gunakan julat yang diperuntukkan secara automatik
  15. Klik Teruskan
  16. Klik Buat sambungan Implantando Aplicações Serverless no Google Cloud Run
  17. Klik Buat Contoh dan tunggu sehingga ia dibuat. Implantando Aplicações Serverless no Google Cloud Run
  18. Untuk menyambung ke contoh, aktifkan Cloud Shell dan jalankan:

    git clone git@github.com:cslemes/points-to-go.git
    
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk

Implantando Aplicações Serverless no Google Cloud Run

  1. Masukkan kata laluan yang diberikan dalam langkah sebelumnya.
  2. Dan kemudian anda akan mendapat ralat sambungan, kerana cangkerang awan tidak mempunyai akses kepada VPC peribadi anda. Implantando Aplicações Serverless no Google Cloud Run
  3. Untuk memudahkan sambungan melalui Cloud shell, mari edit contoh dan tanda IP awam, dalam lampiran saya akan menunjukkan cara membuat VPC peering untuk mengakses DB melalui Cloud Shell Implantando Aplicações Serverless no Google Cloud Run
  4. Cuba sambung semula. Implantando Aplicações Serverless no Google Cloud Run
  5. Buat pangkalan data aplikasi:

    ```
    FROM golang:latest
    WORKDIR /app/
    COPY . .
    RUN go build main.go
    CMD ["./main"]
    ```
    
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
  6. Cloud Shell masih mempunyai editor teks berdasarkan VSCode, anda boleh melakukan beberapa aktiviti secara terus melaluinya, ia mempunyai 5GB volum berterusan dalam /home anda, perkakasan ialah VM kecil e2 dengan 1vCPU dan 1.7GB RAM.
    Implantando Aplicações Serverless no Google Cloud Run

Mencipta bekas dalam Cloud Run

  1. Dalam konsol Google Cloud, akses Cloud Run melalui menu sisi atau bar carian. Implantando Aplicações Serverless no Google Cloud Run
  2. Pada halaman Cloud Run, klik Deploy Container dan pilih pilihan Service. Implantando Aplicações Serverless no Google Cloud Run
  3. Memilih Kaedah Penggunaan
  4. Terdapat tiga pilihan untuk menggunakan perkhidmatan:
    • Gunakan imej bekas daripada pendaftaran.
    • Sambung terus ke repositori.
    • Buat fungsi (menggunakan Cloud Functions, disepadukan dengan Run).
  5. Untuk panduan ini, pilih Pengedaran Berterusan dengan GitHub, membenarkan Google mengkonfigurasi saluran paip CI/CD secara automatik.
  6. Klik Konfigurasikan dengan Cloud Build.
    Implantando Aplicações Serverless no Google Cloud Run

  7. Mengkonfigurasi Sambungan ke GitHub

  8. Klik Sahkan untuk mendayakan penyepaduan Google dengan GitHub anda.

  9. Izinkan akses, memilih antara membenarkan akses kepada semua repositori atau hanya yang khusus.

  10. Selepas melengkapkan log masuk, klik Seterusnya.
    Implantando Aplicações Serverless no Google Cloud Run

  11. Memilih Jenis Binaan

  12. Dalam langkah binaan, pilih antara menggunakan Fail Docker atau Aplikasi Disokong dan Buildpacks daripada GCP.

  13. Pilih Fail Docker dan laraskan laluan/nama fail jika perlu
    Implantando Aplicações Serverless no Google Cloud Run

  14. Tetapan Perkhidmatan

  15. Konfigurasikan parameter berikut:

    • Pengesahan: Pilih Benarkan panggilan yang tidak disahkan.
    • Peruntukan CPU: Pilih CPU diperuntukkan hanya semasa pemprosesan permintaan.
    • Kawalan Input: Pilih Dalaman. Implantando Aplicações Serverless no Google Cloud Run
  16. Laraskan port kontena mengikut keperluan untuk aplikasi.
    Implantando Aplicações Serverless no Google Cloud Run

  17. Dalam tab keselamatan, di bawah akaun perkhidmatan, klik buat Akaun perkhidmatan baharu
    Implantando Aplicações Serverless no Google Cloud Run

  18. Tambah peranan

    • Pentadbir Objek Storan
    • Pentadbir Cloud Run
    • Penasihat rahsia Pengurus Rahsia
    • Pelanggan Cloud SQL
    • Akaun Perkhidmatan Cloud Build
    • Perakam Pendaftaran Artifak
    • Pengguna akaun perkhidmatan Implantando Aplicações Serverless no Google Cloud Run
  19. Menganalisis kod aplikasi, kita perlu menghantar pembolehubah persekitaran ke pangkalan data.

    git clone git@github.com:cslemes/points-to-go.git
    
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
  20. Kami perlu menukar kod aplikasi kepada standard Cloud Sql yang menggunakan soket Unix, dan Cloud Run tidak mengakses DB secara langsung, ia menggunakan Cloud SQL Auth Proxy .

    ```
    FROM golang:latest
    WORKDIR /app/
    COPY . .
    RUN go build main.go
    CMD ["./main"]
    ```
    
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
  21. Dalam bekas, pergi ke tab pembolehubah dan rahsia dan klik pada tambah pembolehubah.

  22. Tambah pembolehubah yang diperlukan.

  23. Alamat bank mengikut corak, PROJECT_ID:REGION:INSTANCE_NAME, anda juga boleh mendapatkan nama di bawah, dalam item 16.
    Implantando Aplicações Serverless no Google Cloud Run

  24. Kata laluan bank kami akan masukkan RUJUKAN RAHSIA

  25. Jika pilihan cipta rahsia baharu dilumpuhkan, ini adalah kerana anda perlu mengaktifkan Api.

  26. Klik pada BUAT RAHSIA BARU
    Implantando Aplicações Serverless no Google Cloud Run

  27. Tentukan nama rahsia dan klik Cipta Rahsia
    Implantando Aplicações Serverless no Google Cloud Run

  28. Dalam Cloud SQL Connections kami akan menambah URL bank yang kami buat
    Implantando Aplicações Serverless no Google Cloud Run

  29. Untuk mencipta skema aplikasi, kod tersebut memerlukan kami menghantar argumen migration=true.

  30. Kami akan menambah migration=true pada hujah fungsi, kemudian mengalih keluarnya dalam semakan bekas seterusnya.
    Implantando Aplicações Serverless no Google Cloud Run

  31. Biarkan medan lain secara lalai dan klik Cipta
    Implantando Aplicações Serverless no Google Cloud Run

  32. Menguji aplikasi menggunakan Thunder Client.

  33. membuat pelanggan
    Implantando Aplicações Serverless no Google Cloud Run

  34. membaca pelanggan berdaftar
    Implantando Aplicações Serverless no Google Cloud Run

Mencipta perkhidmatan Teomebot

Bot sembang tidak akan digunakan pada Cloud Run, ia akan dipasang pada Google Compute Engine (GCE). Tidak seperti Cloud Run, Compute Engine sangat sesuai kerana chatbot perlu aktif secara berterusan untuk berinteraksi dengan sembang.

Selain itu, kami akan meliputi penggunaan bekas, pengurusan rahsia dan konfigurasi Cloud Build untuk automasi penggunaan.

Mencipta VM pada Google Compute Engine (GCE)

  1. Akses Enjin Kira dalam menu sisi GCP Console.
  2. Klik Buat Contoh. Implantando Aplicações Serverless no Google Cloud Run
  3. Masukkan nama untuk contoh (cth. teomebot-instance).
  4. Konfigurasikan rantau dan zon mengikut keperluan dan tulis maklumat ini untuk kegunaan kemudian. Implantando Aplicações Serverless no Google Cloud Run
  5. Dalam Persediaan Mesin, pilih jenis E2 dan dalam Preset, pilih e2-mikro. Implantando Aplicações Serverless no Google Cloud Run
  6. Klik pada tab Bekas dan klik pada Gunakan Bekas.
  7. Gunakan imej nginx:latest buat sementara waktu untuk melengkapkan konfigurasi awal.
  8. Tambah pembolehubah persekitaran:
    • TWITCH_BOT: Nama bot.
    • TWITCH_CHANNEL: Nama saluran Twitch.
    • HOST_DB: IP peribadi pangkalan data Cloud SQL.
    • USER_DB: Pengguna bank.
    • PORT_DB: Port bank.
    • URL_POINTS: Titik akhir perkhidmatan Points-to-Go.
  9. Klik Pilih Implantando Aplicações Serverless no Google Cloud Run
  10. Di bawah Identiti dan Akses API, pilih akaun perkhidmatan yang dikonfigurasikan untuk projek ini. Implantando Aplicações Serverless no Google Cloud Run
  11. Biarkan tetapan selebihnya pada lalai dan klik Buat.

Menambah Rahsia dengan Pengurus Rahsia

  1. Anda mungkin perasan bahawa kami tidak melepasi rahsia, dalam enjin pengiraan tidak ada cara mudah untuk melepasinya seperti dalam larian awan. Penyelesaian saya ialah menambah fungsi pada kod aplikasi untuk membaca maklumat terus daripada pengurus rahsia.
  2. Akses Pengurus Rahsia dalam Konsol GCP.
  3. Klik Buat Rahsia
  4. Masukkan nama deskriptif (cth. Twitch-token) dan tambah nilai yang sepadan.
  5. Salin laluan rahsia yang dijana (cth.: projects/123456/secrets/twitch-token/versions/latest). Implantando Aplicações Serverless no Google Cloud Run
    1. Buat fail utils/gcp.go baharu
  6. Tukar utils/db.go untuk memanggil fungsi, melepasi laluan pengurus rahsia sebagai parameter.

    git clone git@github.com:cslemes/points-to-go.git
    
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
  7. Tukar main.go untuk mendapatkan kelayakan Twitch

    ```
    FROM golang:latest
    WORKDIR /app/
    COPY . .
    RUN go build main.go
    CMD ["./main"]
    ```
    
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk

    migrasi := flag.Bool("migration", false, "Melakukan pemindahan pangkalan data")

    bendera. Parse()

    godotenv.Load()
    pengguna := os.Getenv("TWITCH_BOT")
    // tukar
    oauth := utils.AccessSecretVersion("projects/551619572964/secrets/twitch-token/versions/latest")

    saluran := os.Getenv("TWITCH_CHANNEL")
```

Binaan Awan

Mengkonfigurasi Binaan Awan

Cloud Build akan digunakan untuk mengautomasikan penciptaan imej kontena dan penggunaan kepada Compute Engine.

  1. Buat fail cloudbuild.yaml dalam akar repositori dengan kandungan di bawah:
  2. Penggantian

    FROM golang:1.23.1-alpine3.20 AS build
    
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk

Pembolehubah _VERSION ditetapkan kepada nilai yang sepadan dengan v1.0. dengan cincang komit semasa (${COMMIT_SHA}). Ini mencipta versi unik untuk setiap binaan, memastikan setiap imej boleh dikenal pasti mengikut versi dan komit.

  • Langkah
    Bahagian langkah mentakrifkan langkah yang mesti dilakukan Cloud Build. Di sini, kami mempunyai empat langkah: bina, tolak (dua kali) dan kemas kini.

  • Langkah 1: Bina Imej Docker

    RUN go mod download && go mod verify
    
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk

Langkah ini menjalankan binaan imej Docker:

  • "--no-cache": memaksa binaan tanpa menggunakan cache.
  • "-t": mentakrifkan tag untuk imej yang dibuat:
    • gcr.io/$PROJECT_ID/teomebot:$_VERSION: imej dengan teg yang menggunakan cincang komit.
    • gcr.io/$PROJECT_ID/teomebot:latest: imej dengan teg terkini.
  • ".": mentakrifkan direktori semasa sebagai konteks binaan.

Id: Teg binaan ialah pengecam pilihan untuk langkah, berguna untuk rujukan dan penyahpepijatan.

  • Langkah 2: Tekan Imej dengan Teg Versi
RUN CGO_ENABLED=0 GOARCH=amd64 GOOS=linux go build -o /app/points -a -ldflags="-s -w" -installsuffix cgo
Salin selepas log masuk
Salin selepas log masuk

Langkah ini menolak imej dengan teg tertentu ($_VERSION) ke Pendaftaran Kontena Google, membenarkan versi yang dijana dalam binaan disimpan dalam repositori.

  • Langkah 3: Tekan Imej dengan Teg terkini

    RUN apk add --no-cache curl upx
    RUN upx --ultra-brute -qq points && upx -t points
    
    Salin selepas log masuk

Langkah ini menolak imej dengan teg terkini ke Pendaftaran Bekas Google, mengemas kini imej terkini dengan versi terkini.

  • Langkah 4: Kemas Kini Bekas pada Instance GCE

     FROM scratch AS prod
     WORKDIR /app
     COPY --from=build /app/points /
     CMD ["./points"]
    
    Salin selepas log masuk

Langkah ini menggunakan arahan gcloud untuk mengemas kini bekas pada contoh Google Compute Engine:

  • "teomebot-instance": menentukan nama tika yang menjalankan bekas.
  • --container-image: mentakrifkan imej bekas yang patut digunakan oleh contoh. Di sini, gunakan versi terkini imej.
  • --zone=$_DEPLOY_ZONE: menggunakan pembolehubah untuk menentukan zon penempatan.
  • --container-restart-policy=always: menetapkan dasar mula semula kontena untuk sentiasa dimulakan semula sekiranya berlaku kegagalan.
  • Pilihan

    git clone git@github.com:cslemes/points-to-go.git
    
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk

Pilihan pengelogan: CLOUD_LOGGING_ONLY menentukan bahawa Cloud Build hanya perlu log ke Cloud Logging, menyimpan data dan memfokuskan pada log GCP.

  • Fail akhir

    ```
    FROM golang:latest
    WORKDIR /app/
    COPY . .
    RUN go build main.go
    CMD ["./main"]
    ```
    
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk

Mencipta Pencetus untuk Penciptaan Imej Bekas

Menyediakan Akaun Perkhidmatan

  1. Pergi ke Cloud Build dalam konsol Google Cloud.
  2. Pergi ke Tetapan.
  3. Klik pada Kebenaran Akaun Perkhidmatan.
  4. Cari akaun perkhidmatan yang dibuat untuk Cloud Run.
  5. Aktifkan pilihan Tetapkan sebagai akaun perkhidmatan pilihan
  6. Dayakan peranan Pentadbir Contoh Kiraan untuk akaun perkhidmatan. Implantando Aplicações Serverless no Google Cloud Run Mencipta Pencetus
  7. Dalam menu sisi, klik pada Pencetus dan kemudian pada Cipta Trigger. Implantando Aplicações Serverless no Google Cloud Run
  8. Masukkan nama deskriptif untuk pencetus.
  9. Dalam Repositori, klik Connect Repository dan pilih repositori Teomebot. Implantando Aplicações Serverless no Google Cloud Run
  10. Dalam Konfigurasi, pilih pilihan Fail Konfigurasi Binaan Awan.
  11. Tambahkan pembolehubah penggantian _DEPLOY_ZONE dengan nilai yang sepadan dengan zon di mana tika itu dibuat.
  12. Dalam akaun perkhidmatan, semak akaun yang dipilih jika ia dikonfigurasikan dalam langkah 6. Implantando Aplicações Serverless no Google Cloud Run
  13. Klik Simpan. Menjalankan Pencetus
  14. Pada skrin gambaran keseluruhan, dalam baris pencetus yang baru dibuat, klik laksanakan untuk menjalankan proses secara manual. Implantando Aplicações Serverless no Google Cloud Run
  15. Dalam butiran proses, ikuti langkah binaan imej untuk menyemak kemungkinan ralat. Implantando Aplicações Serverless no Google Cloud Run

Menguji Aplikasi

  1. Dalam panel Compute Engine, salin arahan ssh untuk mengakses contoh, atau gunakan klien web ssh, dan sambungkan tika itu.
  2. Sambung ke contoh dan jalankan arahan di bawah untuk menyemak keadaan bekas:

    git clone git@github.com:cslemes/points-to-go.git
    
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk

Implantando Aplicações Serverless no Google Cloud Run

Menyelesaikan Masalah Sijil

  1. Jika ralat berkaitan sijil berlaku (disebabkan oleh imej asas calar), gantikannya dengan imej tanpa distro. Dalam Fail Docker, tukar baris yang mentakrifkan imej asas daripada:

    git clone git@github.com:cslemes/points-to-go.git
    
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk

kepada:

```
FROM golang:latest
WORKDIR /app/
COPY . .
RUN go build main.go
CMD ["./main"]
```
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Fail Docker dikemas kini:

FROM golang:1.23.1-alpine3.20 AS build
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Melaraskan Kebenaran untuk Pengurus Rahsia

  1. Tukar skop akaun perkhidmatan untuk mengakses Pengurus Rahsia.
  2. Pergi ke Google Cloud Console.
  3. Dalam menu sisi, pergi ke Enjin Kira > Instance VM.
  4. Cari dan klik nama tika VM anda.
  5. Pada halaman butiran VM, klik Berhenti untuk menutup tika (langkah ini perlu kerana skop akaun perkhidmatan hanya boleh diubah suai apabila tika itu dihentikan).
  6. Selepas contoh dihentikan, klik Edit di bahagian atas halaman.
  7. Tatal ke bawah ke bahagian Identiti dan API Akses.
  8. Di bawah Akaun Perkhidmatan, pilih akaun perkhidmatan yang digunakan oleh aplikasi anda.
  9. Di bawah Skop Akses API, pilih Benarkan Akses Penuh kepada Semua API Awan atau klik Tetapkan Skop Akses API Tertentu dan tambahkan skop https://www .googleapis.com/auth/cloud-platform.
  10. Selepas melaraskan skop, klik Simpan untuk menggunakan perubahan.
  11. Mulakan semula contoh dengan mengklik Mula.
  12. Atau melalui baris arahan, hentikan contoh, jalankan arahan dan mulakan selepas itu.

    RUN go mod download && go mod verify
    
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk

Menambah lebih banyak bekas

Perkhidmatan lain mengikuti proses point-to-go yang sama, untuk perkhidmatan yang berkomunikasi antara satu sama lain, cipta pembolehubah persekitaran untuk mengkonfigurasi alamat titik akhir, yang akan sentiasa menjadi https port 443.

Untuk komunikasi dengan perkhidmatan lain, saya melaraskan kod untuk menerima pembolehubah persekitaran lain dengan url perkhidmatan, dalam mata contohnya ia kelihatan seperti ini:

RUN CGO_ENABLED=0 GOARCH=amd64 GOOS=linux go build -o /app/points -a -ldflags="-s -w" -installsuffix cgo
Salin selepas log masuk
Salin selepas log masuk

Menguji bot

Menguji komunikasi bot dengan Twitch.

Implantando Aplicações Serverless no Google Cloud Run

Pelarasan Keselamatan Rangkaian
Selepas melengkapkan ujian, letakkan bekas untuk diakses hanya secara dalaman dalam VPC.

Implantando Aplicações Serverless no Google Cloud Run

Kesimpulan

Dengan ini kami telah melengkapkan pemindahan sistem TeoMeWhy, panduan ini menjadi asas untuk memindahkan perkhidmatan TeoMeWhy yang lain.

Objektif utama yang dicapai ialah:

Pencapaian Teknikal

  • Penghijrahan aplikasi dalam kontena ke Cloud Run, membolehkan kebolehskalaan automatik dan pengurangan kos
  • Pengoptimuman imej Docker melalui binaan berbilang peringkat, mengurangkan saiz imej dan kelemahan dengan ketara
  • Pelaksanaan pangkalan data terurus dengan Cloud SQL, memastikan ketersediaan dan keselamatan yang tinggi
  • Konfigurasi CI/CD automatik menggunakan Cloud Build, mendayakan penggunaan automatik daripada GitHub
  • Pengurusan kelayakan selamat menggunakan Pengurus Rahsia

Penambahbaikan Seni Bina

  • Pengasingan tanggungjawab yang jelas antara perkhidmatan
  • Penggunaan sambungan peribadi untuk keselamatan yang lebih baik
  • Pelaksanaan piawaian tanpa pelayan untuk pengoptimuman kos
  • Pengautomasian proses bina dan atur fungsi
  • Penyatuan lancar dengan repositori GitHub

Faedah Yang Diperolehi

  1. Kos: Pengurangan kos melalui model tanpa pelayan dan pengoptimuman sumber
  2. Kebolehselenggaraan: Kemudahan penyelenggaraan dengan penempatan automatik
  3. Keselamatan: Pengurusan rahsia dan sambungan peribadi yang betul
  4. Skalabilitas: Keupayaan untuk skala secara automatik mengikut permintaan
  5. Pemantauan: Keterlihatan infrastruktur yang lebih baik melalui alatan GCP asli

Lampiran

Dayakan API Pengurus Rahsia

  1. Dalam konsol Google Cloud, cari API Pengurus Rahsia.
  2. Klik pada API dalam hasil carian. Implantando Aplicações Serverless no Google Cloud Run
  3. Pada skrin butiran, klik Aktifkan. Implantando Aplicações Serverless no Google Cloud Run

Rujukan

  • Github TeoMeWhy
  • Twitch Teo Me Why
  • Dokumen Cloud Run
  • Dokumen Enjin Kira
  • Dokumen Binaan Cloud
  • Dokumen Pengurus Rahsia

Atas ialah kandungan terperinci Meletakkan Aplikasi Tanpa Pelayan pada Google Cloud Run. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan