此係列文章爲團隊內部的實踐總結和培訓資料, 去除敏感信息保留公共部分與你們共享. 首先須要你們對Docker和Kubernetes有必定的基礎瞭解, 文章再也不對容器集羣是什麼的問題進行論述. 着重於怎麼作和爲何. 目標是讓有容器相關基礎概念的讀者參考此係列文章, 可以將手上的程序在Kubernetes中以符合雲原生的方式運行起來.html
目錄:前端
12-factorsgit
本篇內容剛好吻合十二要素第五條: 構建,發佈,運行.docker
kubectl create sa gitlab-ci
複製代碼
kubectl get sa gitlab-ci -o json | jq -r .secrets[].name
複製代碼
kubectl get secret $secret -o json | jq -r '.data["token"]' | base64 -d
複製代碼
kubectl get secret $secret -o json | jq -r '.data["ca.crt"]' | base64 -d
複製代碼
在 Gitlab 的 CI 設置中配置相關變量, 在 gitlab ci 任務中調用.json
KUBERNETES_SERVER
KUBE_CA
KUBE_TOKEN
KUBE_SECRETE
複製代碼
參考第一篇的內容: Kubernetes 實踐 第一篇: 程序容器化. 將程序打包成爲 Docker 鏡像. 對應的 CI 任務中應該包含構建鏡像和推送 registry 鏡像到倉庫兩個工做.後端
build:
stage: build
script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker build --build-arg APP_ROOT=$APP_ROOT --build-arg APP_NAME=$APP_NAME -t $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_NAME:$CI_COMMIT_SHA -t $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_NAME:latest -f Dockerfile .
- docker push $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_NAME:$CI_COMMIT_SHA
- docker push $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_NAME:latest
複製代碼
其中
build-arg
中的參數根據Dockerfile
所需的定義肯定.bash
這一步須要將建立好的程序鏡像更新到集羣的部署上, 咱們使用一個前面配置好的 gitlab
的 ServiceAccount 進行認證操做 Kubernetes. 使用 kubectl set image
命令將新版鏡像更新上去.微服務
deploy:
stage: deploy
variables:
IMAGE_NAME: $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_NAME:$CI_COMMIT_SHA
image: dodocat/kubectl:v1.14.1
before_script:
- echo "$KUBE_CA" > ca.crt
- kubectl config set-cluster development --embed-certs=true --server=$KUBE_URL --certificate-authority=./ca.crt
- kubectl config set-credentials gitlab --token=$KUBE_TOKEN
- kubectl config set-context gitlab-development --cluster=development --user=gitlab
- kubectl config use-context gitlab-development
script:
- kubectl set image deployment/$APP_NAME $APP_NAME=$IMAGE_NAME
複製代碼
讀書郎教育科技是教育電子行業的頭部企業, 當前咱們正在作教育信息化的平臺和在線直播教育兩個巨大前景的事業. 辦公地點在珠海. 如今前端 後端 Android開放招聘, 歡迎志同道合的朋友來和我聊聊.gitlab
招聘主頁地址: www.zhipin.com/gongsir/ad0…post