【摘要】我們一直在為服務提供商研究新的創新的解決方案,使得各個領域都可以使用我們的服務. 因此我們需要一個普遍性的google cloud雲平臺解決方案。這個平臺可以解決移動應用和桌面應用的部署和build工作,同時簡化使用google cloud平臺的工具
除了應用程序平臺本身,還需要精簡和重複的自動化流程和技術部署,以支持每個平臺環境的配置,並支持所有標準的SDLC開發任務,以滿足行業或組織要求
面對選擇IaaS / PaaS提供商和開發技術的任務時,谷歌雲平臺和Firebase是明顯的選擇
為什麼選擇Firebase?
Firebase為現代應用程序開發提供了最佳選擇,支持Android,iOS和Web
Firebase與Google OAuth驗證集成out of the box(OOTB)
Firebase支持Google,Email / Password,Github,Facebook,Twitter的聯合身份驗證提供商,甚至支持自定義實現
Firebase為您的應用程序數據和使用情況提供Analytics
Firebase提供應用程序測試自動化和視頻播放的執行與Test Lab的Android和iOS應用程序
Firebase由Google Cloud Platform基礎架構資源和服務提供100%的支持
閱讀更多關於Firebase features
為什麼谷歌雲平臺?
GCP provides ...
GCP支持集成...
GCP在Kubernetes的集裝箱計算領域處於領先地位,並提供最實用和最易於管理的解決方案
GCP是一個真正的No-Ops平臺,具有最方便的工具,如他們的Cloud Shell和Stackdriver監控解決方案
試點平臺配置
GCP Cloud Shell說明
需要在GCP控制檯中從Google Cloud Shell運行以下說明。 這些腳本及其中使用的工具將自動配置為支持FSO平臺的CI / CD進程的Jenkins, 配置Compute Engine VM映像.
需要的工具:
1.在您的本地開發環境中安裝firebase-tools包:
npm install -g firebase-tools
2.確保您在GCP項目的帳戶中擁有管理員/所有者權限
步驟:
在us-east1創建新的GCP項目
通過Firebase Web控制檯將GCP項目導入到Firebase
為我們的環境配置獲取一個Firebase CI token
a. 在jenkins VM中,運行以下命令獲取CI token
啟用新GCP項目的計費
在新的Firebase項目上啟用“Blaze”計費包
啟用/配置以下API
a. Cloud Resource Manager
在此沙箱項目的Firebase項目中啟用密碼驗證提供程序(以支持Android測試)
a. 導航到與此GCP項目關聯的Firebase項目,然後從左側面板菜單中單擊Auth
在GCP項目中創建OAuth ID
a. Go to API Manager > Credentials
獲取我們的環境配置文件的Firebase數據庫密碼
a. Navigate to Firebase Console > Project Settings > Database > Show Secret copy the value into our config file.
Clone your devops project
通過替換您的環境值創建您的GCP環境配置
export GCP_PROJECT_ID="cicd-test"
注意:不要修改以下變量:JENKINS_URL,SLACK_CI_SERVER
./create-jenkins-instance.sh -f ./config.env
運行後腳本手動任務
1. 複製新推出的Jenkins Compute Engine VM的外部IP地址
2. In the google project, navigate to Networking > Cloud DNS:
使用以下模式創建2個新的DNS記錄:
腳本是如何工作的
讀取config
set explicitly through the packerInstall functionPACKER_HOME=""
1. 安裝packer
verifyToolExists()
2. 創建firewall規則
gcloud compute firewall-rules create $rule_name --allow $rule_port --target-tags $rule_tags
3. 創建存儲配置文件的bucket
4. 創建ssh key
TIMESTAMP=`date +%s`
5. 創建 deploy key and webhook
6. 使用 gsutil 複製 config文件到bucket
7. 創建 service account gcloud iam service-accounts create
8. 更新 service account role
create a service account for performing deployments etcgcloud iam service-accounts create $SVC_ACCT_NAME --display-name "$SVC_ACCT_NAME-jenkins" > /tmp/service-account.infostore the name of the service-account so that we can perform actions on itSVC_ACCT_EMAIL=cat /tmp/service-account.info | grep 'email' | awk '{print $2}'the output from the create command for service accounts no longer provides the email, so we must build it ourselves for now...SVC_ACCT_EMAIL="$SVC_ACCT_NAME@$GCP_PROJECT_ID.iam.gserviceaccount.com"grant the required roles for the jenkins service-account to interact with the required servicesupdateProjectIamRole $GCP_PROJECT_ID $SVC_ACCT_EMAIL "roles/appengine.deployer"
9. Packer 去build image文件
Jenkins-master.vars
{
Jenkins-master.json
{
10. 從packer build出來的image, 用gcloud 創建 image
gcloud compute instances create $SVC_ACCT_NAME-jenkins --image $PACKER_IMAGE_NAME --custom-cpu 4 --custom-memory 8GiB --zone $GCE_AZ --boot-disk-type pd-standard --boot-disk-size 250GB --tags http-server,https-server,http-appserver --maintenance-policy MIGRATE
11. 部署一個sample to unlock default app engine
clone the google repo and deploy a dummy app-engine app to unlock the 'default' module so that we can begin doing real deploymentsAPP_ENGINE_DIR="/tmp/app-engine-setup-$TIMESTAMP"
12. 創建default container engine cluster(kubernets cluster)
gcloud container clusters create default --num-nodes 5
13. 安裝kubectl in jenkins vm
gcloud components install kubectl
我們如何部署產品
每個產品的repo Jenkinsfile
部署之前,到jenkins vm裡面創建ssh key給你想要部署的程序使用
創建webhook
A sample Jenkinsfile is like, 假定你已經有configMap.yaml, deployment.yaml 和service.yaml
configMap.yaml
apiVersion: v1
Deployment.yaml
apiVersion: extensions/v1beta1
service.yaml
apiVersion: v1
Dockerfile
FROM mhart/alpine-node:6we need grpc in node, thats why we add libc6-compatRUN \
Jenkinsfile
def config
現在你可以到kubernetes cluster裡面查看你的應用程序
Note, we can also integrate with container build trigger to build images for us.
https://cloud.google.com/conta ... ggers
如需瞭解零空信息更多資訊及最新進展,敬請關注公眾號:零空科技&魔法隧道