ホームページ >開発ツール >Git >フロントエンド Gitlab プロジェクトを k8s に自動的にデプロイする方法

フロントエンド Gitlab プロジェクトを k8s に自動的にデプロイする方法

PHPz
PHPzオリジナル
2023-03-29 12:44:481596ブラウズ

この記事では主に、フロントエンド プロジェクトを Kubernetes ベースのコンテナ環境に自動的にデプロイする方法を紹介します。ここでは、GitLab CI/CD を使用してこのプロセスを完了します。GitLab はコード管理、バージョン管理、コラボレーションのためのプラットフォームとして機能し、Kubernetes はコンテナ オーケストレーションとデプロイのためのツールとして機能します。これにより、フロントエンド開発プロセスがより効率的になり、便利。

  1. GitLab の構成

まず、GitLab でプロジェクトを作成し、Git リポジトリに関連付けます。次に、プロジェクト設定で CI/CD 機能をオンにし、使用するランナーを選択します。ここではGitLab Runnerをインストールし、GitLabのRunnerリストに登録してみます。

  1. GitLab Runner のインストールと構成

GitLab Runner のインストール プロセスは比較的簡単で、さまざまなシステムとプラットフォームのインストール ガイドに従うだけです。

インストールが完了したら、GitLab Runner を構成する必要があります。すでに Kubernetes クラスターがあると仮定して、クラスター上で実行されるように GitLab Runner を構成する必要があります。具体的な構成プロセスは次のとおりです:

① まず、ランナーの Kubernetes サービス アカウントを構成する必要があります。サービス アカウントには、クラスター内の Kubernetes API へのアクセスが承認されている必要があります。

② 次に、サービス アカウントを使用して API にアクセスするようにこのランナーを構成する必要があります。これを行うには、ランナーの構成ファイル (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-secret は、ランナーに関連するシークレットの名前です。

③ 最後に、Kubernetes で実行されているコンテナを使用できるように、GitLab Runner を更新して再起動する必要があります。次のコマンドを実行して、GitLab Runner を自動的に再起動します。

sudo gitlab-runner restart
  1. 自動デプロイメントの実現

構成済みの Runner を取得したら、自動デプロイメントの実装を開始できます。ここでは、.gitlab-ci.yml という名前のファイルを使用して CI/CD プロセスを定義します。

まず、Kubernetes でコンテナーを実行するときに使用する Dockerfile を定義する必要があります。この 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 Default ディレクトリに移動し、アプリケーションが正常に実行できるように、デフォルトの 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 の 2 つのステージがあることを宣言し、build# で# ビルドしてコンテナー イメージ ライブラリにプッシュするプロセスは # ステージで完了し、Kubernetes デプロイメント プロセスは release ステージで完了します。ここでは、タグがバージョン番号である Git コミットに対してのみ CI/CD プロセスを有効にすることに注意してください。

    アプリケーションのデプロイメント
最後に、アプリケーションを Kubernetes にデプロイします。

deployment.yml というファイルを使用してデプロイメントを完了します。このファイルは、Kubernetes でフロントエンド アプリケーションを実行するための Deployment オブジェクトを宣言します。

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 の使用に焦点を当て、完全なデモを通じてデプロイメント プロセスを示します。この記事がフロントエンド開発エンジニアのお役に立てれば幸いです。

以上がフロントエンド Gitlab プロジェクトを k8s に自動的にデプロイする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。