この記事では主に、フロントエンド プロジェクトを Kubernetes ベースのコンテナ環境に自動的にデプロイする方法を紹介します。ここでは、GitLab CI/CD を使用してこのプロセスを完了します。GitLab はコード管理、バージョン管理、コラボレーションのためのプラットフォームとして機能し、Kubernetes はコンテナ オーケストレーションとデプロイのためのツールとして機能します。これにより、フロントエンド開発プロセスがより効率的になり、便利。
まず、GitLab でプロジェクトを作成し、Git リポジトリに関連付けます。次に、プロジェクト設定で CI/CD 機能をオンにし、使用するランナーを選択します。ここではGitLab Runnerをインストールし、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
構成済みの 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*)?$/
このファイルでは、まずプロセスに build
と release
の 2 つのステージがあることを宣言し、build# で# ビルドしてコンテナー イメージ ライブラリにプッシュするプロセスは # ステージで完了し、Kubernetes デプロイメント プロセスは
release ステージで完了します。ここでは、タグがバージョン番号である Git コミットに対してのみ CI/CD プロセスを有効にすることに注意してください。
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 サイトの他の関連記事を参照してください。