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
Seni bina di GCP
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
- Lawati TeoMeWhy's GitHub dan fork aplikasi yang berkaitan dengan projek.
- Pada halaman repositori, klik Berbintang dan kemudian Fork.
- Pada halaman garpu, beri nama garpu dan klik Buat garpu.
- Ulang proses untuk repositori lain dalam projek jika anda mahu meniru keseluruhan persekitaran.
- 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.
-
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
-
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
-
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
-
(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
- Membanding binaan
- Pengoptimuman fail Docker dan penggunaan upx menghasilkan imej sehingga 3 kali lebih kecil.
- 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 |
- Ulang tetapan ini untuk repositori lain.
Menggunakan pangkalan data
- Dalam konsol, akses SQL dalam menu sisi.
- Atau cari "SQL" dalam bar carian dan pilih SQL daripada senarai.
- Pada halaman Cloud SQL, klik Buat Instance dan pilih MySQL.
- Pilih Enterprise di bawah penyuntingan.
- Di bawah "Mengedit Pratetap", pilih Kotak Pasir.
- Tinggalkan versi pangkalan data di MySQL 8.0.
- Beri contoh nama di bawah ID Contoh dan tetapkan kata laluan.
- anda boleh menentukan dasar kata laluan dengan mengembangkan dasar kata laluan
- Tentukan zon dan wilayah, dan kami akan meninggalkannya dalam satu zon.
- Dalam contoh penyesuaian, kami boleh melaraskan perkakasan mengikut keperluan kami, pilihan akan berbeza-beza bergantung pada edisi yang kami pilih.
- Laraskan CPU kepada 1 dan Cakera kepada 10GB mengikut keperluan.
- Dalam sambungan, nyahtanda IP Awam dan tandai IP Peribadi.
- Dalam sambungan akses peribadi klik Konfigurasikan Sambungan
- Pilih gunakan julat yang diperuntukkan secara automatik
- Klik Teruskan
- Klik Buat sambungan
- Klik Buat Contoh dan tunggu sehingga ia dibuat.
-
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
- Masukkan kata laluan yang diberikan dalam langkah sebelumnya.
- Dan kemudian anda akan mendapat ralat sambungan, kerana cangkerang awan tidak mempunyai akses kepada VPC peribadi anda.
- 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
- Cuba sambung semula.
-
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
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.
Mencipta bekas dalam Cloud Run
- Dalam konsol Google Cloud, akses Cloud Run melalui menu sisi atau bar carian.
- Pada halaman Cloud Run, klik Deploy Container dan pilih pilihan Service.
- Memilih Kaedah Penggunaan
- Terdapat tiga pilihan untuk menggunakan perkhidmatan:
- Gunakan imej bekas daripada pendaftaran.
- Sambung terus ke repositori.
- Buat fungsi (menggunakan Cloud Functions, disepadukan dengan Run).
- Untuk panduan ini, pilih Pengedaran Berterusan dengan GitHub, membenarkan Google mengkonfigurasi saluran paip CI/CD secara automatik.
Klik Konfigurasikan dengan Cloud Build.
Mengkonfigurasi Sambungan ke GitHub
Klik Sahkan untuk mendayakan penyepaduan Google dengan GitHub anda.
Izinkan akses, memilih antara membenarkan akses kepada semua repositori atau hanya yang khusus.
Selepas melengkapkan log masuk, klik Seterusnya.
Memilih Jenis Binaan
Dalam langkah binaan, pilih antara menggunakan Fail Docker atau Aplikasi Disokong dan Buildpacks daripada GCP.
Pilih Fail Docker dan laraskan laluan/nama fail jika perlu
Tetapan Perkhidmatan
-
Konfigurasikan parameter berikut:
-
Pengesahan: Pilih Benarkan panggilan yang tidak disahkan.
-
Peruntukan CPU: Pilih CPU diperuntukkan hanya semasa pemprosesan permintaan.
-
Kawalan Input: Pilih Dalaman.
Laraskan port kontena mengikut keperluan untuk aplikasi.
Dalam tab keselamatan, di bawah akaun perkhidmatan, klik buat Akaun perkhidmatan baharu
-
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
-
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
-
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
Dalam bekas, pergi ke tab pembolehubah dan rahsia dan klik pada tambah pembolehubah.
Tambah pembolehubah yang diperlukan.
Alamat bank mengikut corak, PROJECT_ID:REGION:INSTANCE_NAME, anda juga boleh mendapatkan nama di bawah, dalam item 16.
Kata laluan bank kami akan masukkan RUJUKAN RAHSIA
Jika pilihan cipta rahsia baharu dilumpuhkan, ini adalah kerana anda perlu mengaktifkan Api.
Klik pada BUAT RAHSIA BARU
Tentukan nama rahsia dan klik Cipta Rahsia
Dalam Cloud SQL Connections kami akan menambah URL bank yang kami buat
Untuk mencipta skema aplikasi, kod tersebut memerlukan kami menghantar argumen migration=true.
Kami akan menambah migration=true pada hujah fungsi, kemudian mengalih keluarnya dalam semakan bekas seterusnya.
Biarkan medan lain secara lalai dan klik Cipta
Menguji aplikasi menggunakan Thunder Client.
membuat pelanggan
membaca pelanggan berdaftar
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)
- Akses Enjin Kira dalam menu sisi GCP Console.
- Klik Buat Contoh.
- Masukkan nama untuk contoh (cth. teomebot-instance).
- Konfigurasikan rantau dan zon mengikut keperluan dan tulis maklumat ini untuk kegunaan kemudian.
- Dalam Persediaan Mesin, pilih jenis E2 dan dalam Preset, pilih e2-mikro.
- Klik pada tab Bekas dan klik pada Gunakan Bekas.
- Gunakan imej nginx:latest buat sementara waktu untuk melengkapkan konfigurasi awal.
- 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.
- Klik Pilih
- Di bawah Identiti dan Akses API, pilih akaun perkhidmatan yang dikonfigurasikan untuk projek ini.
- Biarkan tetapan selebihnya pada lalai dan klik Buat.
Menambah Rahsia dengan Pengurus Rahsia
- 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.
- Akses Pengurus Rahsia dalam Konsol GCP.
- Klik Buat Rahsia
- Masukkan nama deskriptif (cth. Twitch-token) dan tambah nilai yang sepadan.
- Salin laluan rahsia yang dijana (cth.: projects/123456/secrets/twitch-token/versions/latest).
- Buat fail utils/gcp.go baharu
-
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
-
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.
- Buat fail cloudbuild.yaml dalam akar repositori dengan kandungan di bawah:
-
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 ini menolak imej dengan teg terkini ke Pendaftaran Bekas Google, mengemas kini imej terkini dengan versi terkini.
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
- Pergi ke Cloud Build dalam konsol Google Cloud.
- Pergi ke Tetapan.
- Klik pada Kebenaran Akaun Perkhidmatan.
- Cari akaun perkhidmatan yang dibuat untuk Cloud Run.
- Aktifkan pilihan Tetapkan sebagai akaun perkhidmatan pilihan
- Dayakan peranan Pentadbir Contoh Kiraan untuk akaun perkhidmatan.
Mencipta Pencetus
- Dalam menu sisi, klik pada Pencetus dan kemudian pada Cipta Trigger.
- Masukkan nama deskriptif untuk pencetus.
- Dalam Repositori, klik Connect Repository dan pilih repositori Teomebot.
- Dalam Konfigurasi, pilih pilihan Fail Konfigurasi Binaan Awan.
- Tambahkan pembolehubah penggantian _DEPLOY_ZONE dengan nilai yang sepadan dengan zon di mana tika itu dibuat.
- Dalam akaun perkhidmatan, semak akaun yang dipilih jika ia dikonfigurasikan dalam langkah 6.
- Klik Simpan.
Menjalankan Pencetus
- Pada skrin gambaran keseluruhan, dalam baris pencetus yang baru dibuat, klik laksanakan untuk menjalankan proses secara manual.
- Dalam butiran proses, ikuti langkah binaan imej untuk menyemak kemungkinan ralat.
Menguji Aplikasi
- Dalam panel Compute Engine, salin arahan ssh untuk mengakses contoh, atau gunakan klien web ssh, dan sambungkan tika itu.
-
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
Menyelesaikan Masalah Sijil
-
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
- Tukar skop akaun perkhidmatan untuk mengakses Pengurus Rahsia.
- Pergi ke Google Cloud Console.
- Dalam menu sisi, pergi ke Enjin Kira > Instance VM.
- Cari dan klik nama tika VM anda.
- Pada halaman butiran VM, klik Berhenti untuk menutup tika (langkah ini perlu kerana skop akaun perkhidmatan hanya boleh diubah suai apabila tika itu dihentikan).
- Selepas contoh dihentikan, klik Edit di bahagian atas halaman.
- Tatal ke bawah ke bahagian Identiti dan API Akses.
- Di bawah Akaun Perkhidmatan, pilih akaun perkhidmatan yang digunakan oleh aplikasi anda.
- 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.
- Selepas melaraskan skop, klik Simpan untuk menggunakan perubahan.
- Mulakan semula contoh dengan mengklik Mula.
-
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.
Pelarasan Keselamatan Rangkaian
Selepas melengkapkan ujian, letakkan bekas untuk diakses hanya secara dalaman dalam VPC.
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
-
Kos: Pengurangan kos melalui model tanpa pelayan dan pengoptimuman sumber
-
Kebolehselenggaraan: Kemudahan penyelenggaraan dengan penempatan automatik
-
Keselamatan: Pengurusan rahsia dan sambungan peribadi yang betul
-
Skalabilitas: Keupayaan untuk skala secara automatik mengikut permintaan
-
Pemantauan: Keterlihatan infrastruktur yang lebih baik melalui alatan GCP asli
Lampiran
Dayakan API Pengurus Rahsia
- Dalam konsol Google Cloud, cari API Pengurus Rahsia.
- Klik pada API dalam hasil carian.
- Pada skrin butiran, klik Aktifkan.
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!