這篇文章主要介紹“怎么將前端gitlab項(xiàng)目自動(dòng)化部署到k8s上”,在日常操作中,相信很多人在怎么將前端gitlab項(xiàng)目自動(dòng)化部署到k8s上問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”怎么將前端gitlab項(xiàng)目自動(dòng)化部署到k8s上”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
創(chuàng)新互聯(lián)2013年開(kāi)創(chuàng)至今,先為蒙山等服務(wù)建站,蒙山等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為蒙山企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。
GitLab配置
首先在GitLab上創(chuàng)建一個(gè)項(xiàng)目,并將其與Git倉(cāng)庫(kù)關(guān)聯(lián)。隨后,在項(xiàng)目設(shè)置中開(kāi)啟CI/CD功能,選擇需要使用的Runner。這里我們將安裝GitLab Runner,并將其注冊(cè)到GitLab的Runner列表中。
GitLab Runner安裝與配置
安裝GitLab Runner的過(guò)程相對(duì)簡(jiǎn)單,只需要根據(jù)不同系統(tǒng)和平臺(tái)的安裝指南進(jìn)行相應(yīng)操作即可。
在安裝完成后,我們需要對(duì)GitLab Runner進(jìn)行配置。假設(shè)你已經(jīng)有一個(gè)Kubernetes的集群,我們需要將GitLab Runner配置為在該集群上運(yùn)行。具體的配置過(guò)程如下:
① 首先,我們需要給Runner配置一個(gè)Kubernetes的Service Account,該Service Account需要被授權(quán)訪問(wèn)集群中的Kubernetes API。
② 隨后,我們需要將這個(gè)Runner配置為使用該Service Account來(lái)訪問(wèn)API。為此,我們需要在Runner的配置文件(config.toml)中設(shè)置以下字段:
[[runners.kubernetes.volumes.host_path]]
name = "docker"
mount_path = "/var/run/docker.sock"
host_path = "/var/run/docker.sock"
[[runners.kubernetes.volumes.config_map]]
name = "kube-config"
mount_path = "/etc/kubernetes"
[[runners.kubernetes.volumes.empty_dir]]
name = "tls"
mount_path = "/etc/gitlab-runner/certs"
[[runners.kubernetes.volumes.secret]]
name = "runner-secret"
mount_path = "/etc/gitlab-runner"
其中,kube-config
為與Runner相關(guān)的config map的名稱(chēng),runner-secret
為與Runner相關(guān)的secret的名稱(chēng)。
③ 最后,我們需要更新并重啟GitLab Runner,使其能夠使用在Kubernetes中運(yùn)行的容器。運(yùn)行以下命令可以自動(dòng)重啟GitLab Runner:
sudo gitlab-runner restart
實(shí)現(xiàn)自動(dòng)化部署
獲得了一個(gè)配置好的Runner之后,我們就可以開(kāi)始實(shí)現(xiàn)自動(dòng)化部署了。這里我們使用一個(gè)名為.gitlab-ci.yml
的文件來(lái)定義我們的CI/CD流程。
首先,我們需要定義一個(gè)Dockerfile,以便在Kubernetes中運(yùn)行容器時(shí)使用。該Dockerfile將在構(gòu)建Docker鏡像時(shí)使用,如下所示:
FROM nginx:1.15.8-alpine
COPY dist /usr/share/nginx/html
COPY nginx/default.conf /etc/nginx/conf.d/
該鏡像將以nginx:1.15.8-alpine
為基礎(chǔ)鏡像,復(fù)制我們的前端文件到Nginx的默認(rèn)目錄,并替換默認(rèn)的Nginx配置文件以便于我們的應(yīng)用能夠正常運(yùn)行。
隨后,在.gitlab-ci.yml
文件中定義我們的CI/CD流程。具體地,我們將在該文件中聲明該項(xiàng)目的構(gòu)建過(guò)程,然后將該構(gòu)建后的Docker鏡像推送到容器鏡像庫(kù),并最終在Kubernetes中運(yùn)行這個(gè)鏡像。流程如下:
stages:
- build
- release
build:
stage: build
script:
- docker build -t registry.cn-hangzhou.aliyuncs.com/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME:$CI_COMMIT_TAG .
- docker login -u $DOCKER_USERNAME -p $DOCKER_PASSWORD registry.cn-hangzhou.aliyuncs.com
- docker push registry.cn-hangzhou.aliyuncs.com/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME:$CI_COMMIT_TAG
only:
- /^v\d+\.\d+(\.\d+)?(-\S*)?$/
release:
stage: release
script:
- kubectl apply -f k8s/
only:
- /^v\d+\.\d+(\.\d+)?(-\S*)?$/
在這個(gè)文件中,我們首先聲明了我們的流程擁有build
和release
兩個(gè)階段,并在build
階段中完成構(gòu)建、推送到容器鏡像庫(kù)的過(guò)程,在release
階段中完成Kubernetes部署的過(guò)程。注意,這里我們只為tag為版本號(hào)的Git提交啟用CI/CD流程。
應(yīng)用部署
最后,在我們的Kubernetes中部署上我們的應(yīng)用。我們將使用一個(gè)名為deployment.yml
的文件來(lái)完成部署。該文件聲明了一個(gè)Deployment對(duì)象,用于在Kubernetes中運(yùn)行前端應(yīng)用。
apiVersion: apps/v1
kind: Deployment
metadata:
name: frontend-deployment
spec:
replicas: 1 # 運(yùn)行一個(gè)副本
selector:
matchLabels:
app: frontend
template:
metadata:
labels:
app: frontend
spec:
containers:
- name: frontend
image: registry.cn-hangzhou.aliyuncs.com/wbbry/frontend:latest # 鏡像名稱(chēng)
imagePullPolicy: Always
ports:
- containerPort: 80 # 前端端口
該文件指定了該Deployment對(duì)象的replicas
數(shù)量(這里為1),并聲明了容器鏡像的名稱(chēng)和端口號(hào)。完成這個(gè)部署文件之后,我們可以使用Kubernetes命令行工具(kubectl)來(lái)創(chuàng)建該Deployment對(duì)象:
kubectl apply -f deployment.yml
到此為止,我們的前端應(yīng)用就已經(jīng)應(yīng)該可以成功運(yùn)行在Kubernetes上了。
到此,關(guān)于“怎么將前端gitlab項(xiàng)目自動(dòng)化部署到k8s上”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!