首頁  >  文章  >  開發工具  >  如何將前端gitlab專案自動化部署到k8s上

如何將前端gitlab專案自動化部署到k8s上

PHPz
PHPz原創
2023-03-29 12:44:481585瀏覽

本文主要介紹如何將前端專案自動化部署到基於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:
    - /^v\d+\.\d+(\.\d+)?(-\S*)?$/

release:
  stage: release
  script:
    - kubectl apply -f k8s/
  only:
    - /^v\d+\.\d+(\.\d+)?(-\S*)?$/

在這個文件中,我們首先聲明了我們的流程擁有buildrelease兩個階段,並在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來示範了部署流程。希望這篇文章對前端開發工程師有幫助。

以上是如何將前端gitlab專案自動化部署到k8s上的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn