この記事では主に、フロントエンド プロジェクトを 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 # 前端端口
replicas 番号 (ここでは 1) を指定し、コンテナ イメージの名前とポート番号を宣言します。このデプロイメント ファイルが完了したら、Kubernetes コマンド ライン ツール (kubectl) を使用して Deployment オブジェクトを作成できます。
kubectl apply -f deployment.yml
以上がフロントエンド Gitlab プロジェクトを k8s に自動的にデプロイする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。