如何將前端gitlab項目自動化部署到k8s上

本文主要介紹了如何將前端項目自動化部署到基于kubernetes的容器環境中。這里我們使用gitlab ci/cd來完成這一過程,其中,gitlab作為用于代碼管理、版本控制和協作的平臺,kubernetes作為容器編排和部署的工具,能夠讓前端開發過程更加高效和便捷。

  1. GitLab配置

首先在GitLab上創建一個項目,并將其與Git倉庫關聯。隨后,在項目設置中開啟CI/CD功能,選擇需要使用的Runner。這里我們將安裝GitLab Runner,并將其注冊到GitLab的Runner列表中。

  1. GitLab Runner安裝與配置

安裝GitLab Runner的過程相對簡單,只需要根據不同系統和平臺的安裝指南進行相應操作即可。

在安裝完成后,我們需要對GitLab Runner進行配置。假設你已經有一個Kubernetes的集群,我們需要將GitLab Runner配置為在該集群上運行。具體的配置過程如下:

① 首先,我們需要給Runner配置一個Kubernetes的Service Account,該Service Account需要被授權訪問集群中的Kubernetes API。

立即學習前端免費學習筆記(深入)”;

② 隨后,我們需要將這個Runner配置為使用該Service Account來訪問API。為此,我們需要在Runner的配置文件(config.toml)中設置以下字段:

[[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相關的config map的名稱,runner-secret為與Runner相關的secret的名稱。

③ 最后,我們需要更新并重啟GitLab Runner,使其能夠使用在Kubernetes中運行的容器。運行以下命令可以自動重啟GitLab Runner:

sudo gitlab-runner restart
  1. 實現自動化部署

獲得了一個配置好的Runner之后,我們就可以開始實現自動化部署了。這里我們使用一個名為.gitlab-ci.yml的文件來定義我們的CI/CD流程。

首先,我們需要定義一個Dockerfile,以便在Kubernetes中運行容器時使用。該Dockerfile將在構建Docker鏡像時使用,如下所示:

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為基礎鏡像,復制我們的前端文件到Nginx的默認目錄,并替換默認的Nginx配置文件以便于我們的應用能夠正常運行。

隨后,在.gitlab-ci.yml文件中定義我們的CI/CD流程。具體地,我們將在該文件中聲明該項目的構建過程,然后將該構建后的Docker鏡像推送到容器鏡像庫,并最終在Kubernetes中運行這個鏡像。流程如下:

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:     - /^vd+.d+(.d+)?(-S*)?$/  release:   stage: release   script:     - kubectl apply -f k8s/   only:     - /^vd+.d+(.d+)?(-S*)?$/

在這個文件中,我們首先聲明了我們的流程擁有build和release兩個階段,并在build階段中完成構建、推送到容器鏡像庫的過程,在release階段中完成Kubernetes部署的過程。注意,這里我們只為tag為版本號的Git提交啟用CI/CD流程。

  1. 應用部署

最后,在我們的Kubernetes中部署上我們的應用。我們將使用一個名為deployment.yml的文件來完成部署。該文件聲明了一個Deployment對象,用于在Kubernetes中運行前端應用。

apiVersion: apps/v1 kind: Deployment metadata:   name: frontend-deployment spec:   replicas: 1 # 運行一個副本   selector:     matchLabels:       app: frontend   template:     metadata:       labels:         app: frontend     spec:       containers:         - name: frontend           image: registry.cn-hangzhou.aliyuncs.com/wbbry/frontend:latest # 鏡像名稱           imagePullPolicy: Always           ports:             - containerPort: 80 # 前端端口

該文件指定了該Deployment對象的replicas數量(這里為1),并聲明了容器鏡像的名稱和端口號。完成這個部署文件之后,我們可以使用Kubernetes命令行工具(kubectl)來創建該Deployment對象:

kubectl apply -f deployment.yml

到此為止,我們的前端應用就已經應該可以成功運行在Kubernetes上了。

結論

本文介紹了如何將前端項目自動化部署到基于Kubernetes的容器環境中。重點介紹了GitLab CI/CD、Kubernetes和Docker的使用,并通過一個完整的DEMO來演示了部署流程。希望這篇文章對前端開發工程師有所幫助。

? 版權聲明
THE END
喜歡就支持一下吧
點贊13 分享