มาทำ Cloud Run และ Secret Manager ด้วย Nodejs กัน
Cloud Run คือ Serverless ของฝั่ง Google ซึ่งมีหลายตัวอยู่เหมือนกันไม่ว่าจะเป็น Cloud Funtions หรืออีกชื่อก็คือ Firebase Functions แล้วทำไมต้อง Cloud Run ก็เพราะ Cloud Run เป็น Serverless ที่จะเขียนภาษาอะไรขึ้นไปก็ได้เพราะเราทำการ Build Image ขึ้นไปผ่าน Google Container Registry (GCR) เป็นตัวเก็บ Image ของทาง Google แล้ว Cloud Run จะไปทำการ Run Image แล้วทำเป็น Container ให้เราใช้งานได้แบบทันที
Secret Manager คือตัวที่เอาไว้จัดการ Secret ต่างๆของเรา ยกตัวอย่างเช่น หลายโปรเจคจะเอา Secret ไว้ใน Config หรือ ทำเป็น .env ขึ้นมาซึ่งมันดูไม่ปลอดภัยใช่ไหมถ้ามีคนเจาะเข้าคอมเราได้หรือ Code หลุดบน Git ซึ่งตัว Secret Manager เนี่ยมันจะถูกรักษาความปลอดภัยโดย Cloud ที่เราเลือกใช้ซึ่งที่บทความเลือกใช้ Secret Manager ของ Google
ก่อนอื่นเลยเราก็มาติดตั้งตัว GCloud CLI กันก่อน โดย Download ได้จาก Link นี้
https://cloud.google.com/sdk/docs/install อันนี้ลงเองได้เลยเพราะแต่ละระบบปฏิบัติการจะลงไม่เหมือนกัน
หลังจากติดตั้งเสร็จเรียบร้อยแล้วก็ต้อง Login ให้เรียบร้อย
gcloud auth login
จะได้ URL มาเพื่อทำการ Login Copy URL แล้วไปใส่ใน Browser ที่ต้องการทำ Login
หลังจากนั้นมันจะให้เราเลือก Project ที่เรากำลังจะทำ
ต่อมาขั้นตอนติดตั้งก็เสร็จแล้วลองมาทำการ Code ง่ายๆเพื่อจะเอาโปรเจคขึ้นไปบน Cloud Run กัน
mkdir dodohandsome-cloud-run
cd dodohandsome-cloud-run
npm init
npm i express dotenv
code .
หลังจากนั้นจะทำการสร้าง File index.js ขึ้นมาและ Copy Code ด้านล่างไปวางใน File index.js ได้เลย
จะเห็นได้ว่า Code จะเรียก env มาเป็น response ลองมาสร้าง File .env กัน
จากนั้นลองมา Run ดูกันนะครับ
ต่อมาลองมา deploy ขึ้น Cloud Run ดีกว่าสร้าง Fiel . yaml ขึ้นมาแล้วทำการ Copy Script ด้านล่างไปวาง
Step แรกคือการ Build Image ให้ไปที่ Path ไหนซึ่งเราก็ต้องชี้ไปที่ Path ของ GCR Step สองคือการ Push Image ไปที่ Path ของ GCR
Step สุดท้ายคือการ Deploy Cloud Run
ซึ่งทั้งหมดนี้จะเกิดขึ้นบน Google ไม่ใช่บนเครื่องเรา
ก่อน Run Script ต้องสร้าง Dockerfile ขึ้นมาด้วย
gcloud auth configure-docker
gcloud builds submit --project your-project-name --config cloud-build.yaml .
มาทำการ Run Command นี้ดูซึ่ง Project ก็คือ Project ที่สร้างบน Google Cloud
ซึ่งมันฟ้อง Error แน่นอนซึ่งสิ่งที่ต้องทำผมจะสรุปให้เลยไม่งั้นมันจะ Error เยอะมากกว่าจะ Set เสร็จ ซึ่งจาก Error ข้างบนเรายังไม่ได้ Enable Cloud Run มี2 วิธีคือจะไปเปิดผ่านหน้า Console ของ Google หรือ พิมพ์ ตามข้างล่างบน Terminal ได้เลย
gcloud services enable run.googleapis.com
ให้เข้าไปที่ Project ที่สร้างแล้วไปที่ Iam โดย Checkbox Include Google-provided role grants ถึงจะเห็น 2 Rows นี้ขึ้นมา
โดยเราจะเพิ่มสิทธิให้กับ Cloudbuild ดังนี้
Cloud Build Service Account
Cloud Build WorkerPool User
Cloud Run Admin
Service Account User
กด Save แล้วลองไป Deploy อีกรอบ
จบในส่วนของการ Deploy จะเห็นว่า Return มาตาม .env ที่เราเอาใส่แต่… ถ้าเราไม่อยากเอา .env ขึ้น Git หรือส่งผ่าน File กันไปกันมาหล่ะเพราะมันดูไม่ปลอดภัยเลย … เราเลยใช้ Secret Manager มาช่วยยังไงหล่ะซึ่งขั้นตอนก็ง่ายมาก
โดยผมจะให้ Secret Name มีชื่อว่า dodohandsome และ Secret Value มีค่าเป็น dodohandsome555555555555555555555555566666666666666
จากนั้นเราจะไปแก้ File .yaml เพื่อใส่ Secret นี้ลงไปใน Script
ลองกด Deploy Script ได้เลย
ซึ่งมันติดแน่นอนเพราะตัว Deploy เรายังเข้าไม่ถึงตัว Secret Manager
เราก็กลับไปที่ IAM แล้วเพิ่มสิทธิให้เรียบร้อยก่อน
โดยเราจะเพิ่ม Permission
Secret Manager Secret Accessor
จากนั้นกด Deploy อีกรอบได้เลย
จบแล้วกับบทความนี้เป็นยังไงครับง่ายๆเลยแถวยังมีเรื่อง Secure ของตัว Secret ที่ไม่อยากให้อยู่บน Git หรือบน Code แค่นี้ก็เพิ่มความปลอดภัยให้ได้แล้วอีกระดับนึง รอติดตามบทความใหม่ๆได้อนาคตนะหวานเจี๊ยบอ่ะเธอ
( CR. ธำรงค์ ไชยวงค์ )