シニア高度なフロントエンド:展開の開発プロセスのフロントエンド

焼畑農業のフロントエンドといえば、それはフロントエンドエンジニアリングトピックにタイト確かです。/ VUE /角度、開発ES6 +、WebPACKの、バベル、typescriptですと、ノードのフロントエンドは徐々にこの大きな波のプロジェクトをオフに設定し、道をリードCDN開発した最後のスクリプトを交換してきた反応します。技術開発と生態オープンソースコミュニティの良いのおかげで、フロントエンドアプリケーションの可用性と効率が大幅に改善されました。
スラッシュのフロントエンドにするために使用し、火傷、および過去のフロントエンドアプリケーションの展開は焼畑農業です。何が副産物のフロントエンドエンジニアリングと、フロントエンドのアプリケーション展開の発展の恩恵を受けましたか?
これは単なる一部であり、より重要な理由は、DevOpsチームの台頭です。
より明確に、展開のフロントエンドの開発の歴史を理解する責任の平和維持幸運フロントエンド(または、より広く、ビジネス開発)部門の展開を理解するために、それぞれの時間変化の展開のフロントエンドは、二つの質問を検討することができます

よるHTTPレスポンスヘッダーとキャッシュ、フロントエンドアプリケーション?プロジェクトの開発のおかげで、パッケージのハッシュ値恒久的なキャッシングを行うことができますし、ファイルを取得することができます
ドメイン間で、/ APIのプロキシ設定を持ちますか?フロントエンドでの開発環境は、小さなサービス、WebPACKの-devのサーバーがクロスドメイン構成、本番環境を有効にしていることを開くことができます

これら二つの問題は、インタビューの高周波フロントエンドの問題ですが、フロントエンドの手の中に嘘を発言する権利かどうか
の時間がちょうど今年開発反応してきた、この時間は、パッケージにWebPACKのを使用してアプリケーションを開発するために反応に使用されています。しかし、フロントエンドの展開はまだ焼畑農業であります

この資料では、特定のドッカー、DevOpsチームとフロントエンドエンジニアリング知識ベースを持っていることが必要です。ない場合は、この一連の記事、および個人ドッカーセクションでは、サーバー、あなたの助けの運用・保守をご案内いたします。

焼畑農業
踏み台マシン
運用サーバーを
展開スクリプトに
、バックエンドのテンプレートの最初のセットを考えずに、展開スクリプトの展開に電子メールを送信するためにフロントエンドチューン彼のWebPACK、運用、保守幸せな最初のフロントエンドは、独立して展開することができます。さらに、ベース板を拡張するための独自の考え、フロントエンドは助けることはできませんが、笑って
何度も繰り返して、電子メールの展開のフロントエンドの上に髪を輝く運用および保守を再びproxy_passの構成を例示したが、書かれたtry_filesを、変更、コードを取りました。
このとき、静的ファイルのフロントエンドはnginxの実質的に長い。このようなnginxのプロファイルによってホストされている
サーバー{
; 80を聞く
サーバー名のshanyue.tech。

LOCATION / {
#避ける非ルート・パス404
try_files $ $ URI URI / /index.htmlが;
}

クロスドメインを解決するために、

位置/ API {
proxy_pass http://api.shanyue.tech。
}

ハッシュ値を持つ永続的なキャッシュ・コンフィギュレーション・ファイル

場所〜*(?:CSS | JS)$ {。
try_files $ URI = 404;
1Yの有効期限が切れます。
add_headerのCache-Control「公共」。
}

〜^ + ... + LOCATIONの$ {。
try_files $ URI = 404;
}
}
コードをコピーし、時には...頻繁に実行していない
良いではありません標準のデプロイメントスクリプトのフロントエンドノードのバージョン不満運用・保守を、フロントエンドのテスト環境には何の問題を叫びません
。この時点運用および保守費用は、展開に多くの労力を必要、あるいはテスト環境を展開するだけでなく、フロントエンドは、運用・保守に展開する方法に多くの労力を要します。深夜のライン上に、オンライン環境に影響を与える恐れのためにこの時間は、多くの場合、操作とフロントエンドと疲れのメンテナンス、選択
が、常にので
呂が言った、いつも、それはそれに反するとなっています。
今回は、関係なく、構成やクロスドメインキャッシュ構成、運用、保守のフロントエンドを理解していない運転・保守を管理することです。フロントエンドは、nginxのに慣れていないときでも設定は、フロントエンドで提供されて
ミラーリング用ドッキングウィンドウのビルド
導入ドッキングウィンドウを、大幅に展開スクリプトは、この大きなBUGを実行することはできません解決しました。dockerfileつまりデプロイメントスクリプト、展開スクリプトをdockerfile。これは、フロントエンドの運用・保守との摩擦を緩和大幅にある、すべての後に、より多くの、より信頼性の高いフロントエンド、何ら問題は(存在しない少なくとも展開スクリプトは笑いません
、サービスを提供するために、HTTPサービスのフロントエンドが使用できなくなっ静的なリソースで、この時間は、しかし、
フロントエンドを長いおおよそ次のように書いたdockerfile
ノードから:高山を

本番環境の代表

ENV PROJECT_ENV生産

多くのパッケージは異なる動作を行い、この環境変数に基づいて行われます

また、パッケージには、この環境変数のために最適化されたのWebPACKに行われますが、パッケージが死んでこの環境変数を書き込みますとき、反応するアプリ作成します

ENV NODE_ENV生産
WORKDIR /コード
ADD。/コード
RUNが&& NPMの実行ビルドをインストールNPM && -gのhttpサーバのインストールNPM
80を公開

-p 80は./public CMDのhttpサーバ
dockerfileもない稼働持って一人でコードをコピーは、他のフロントエンドは、フロントエンドアプリケーションを起動-dアップ構成ドッカーコマンドを実行するためにドッキングウィンドウ-compose.yaml、運用、保守を維持するために始めました。dockerfileとドッキングウィンドウ-compose.yaml、展開プロセスにおいてますます重要な役割でプレーを書いて最初のフロントエンド。ヘルプフロントエンド、さらにベースプレートを拡張するための独自のものではないことができると思いますが笑った
バージョン:「3」
サービス:
shiciを:
ビルド:.
EXPOSE:
- 80は
、このように実質的に細長いコンフィギュレーション・ファイルのコードnginxの運用・保守をコピー
{サーバ
80を聞いて、
サーバー名Shanyue .tech;

位置/ {
proxy_pass http://static.shanyue.tech。
}

LOCATION / API {
proxy_pass http://api.shanyue.tech;
}
}
設定nginxのに加えて、コードの運用・保守をコピーするだけでなく、コマンドを実行するには:ドッキングウィンドウ・コンアップは、-d
二つの質問に一番記事を熟考するために、この時間を

キャッシュは、原因のサービスのための静的ファイルからの変換に、フロントエンドのキャッシュ制御は、最初に引き渡さ(しかし、鏡の中のhttpサーバは、これを行うには適していません)
クロスドメイン、クロスドメインを設定nginxのはまだ運用・保守で

フロント部分は、彼は何をすべきかを行うことができ、これはとても幸せなことです
もちろん、改善dockerfileのためのフロントエンドも進化の遅いプロセスであり、この時間は、ミラーリングという問題は何ですか、?

あまりにも大きな鏡の建設が
長すぎるミラーを構築します

ミラーリング多段階最適化の建設
途中には、実際に私の他の記事を参照してくださいか、の中のプロセス、多くの浮き沈みを経験した:どのように使用するためにドッキングウィンドウの展開フロントエンドアプリケーション。
上記の2つの側面で最適化されています

ミラー容量10M + 1G +となる構築
ミラー+ 1分5分となる時間によって構築(プロジェクトの複雑さに応じて、ビルド時と静的リソースアップロード時にほとんどの時間)

ノードFROM:ビルダーとして高山

ENV PROJECT_ENV生産
ENV NODE_ENV生産

WORKDIR /コード

ADD package.json /コード
RUN --productionをインストールNPM

追加 。/コード

uploadCdn実行NPMは、OSSのスクリプトファイルに静的リソースをアップロードすることで、OSSの将来は、CDNの利用を加速します

RUN NPMの実行ビルド&& uploadCdnを実行NPM

の小さな体積ベース画像を選択します

nginxのFROM:アルパイン
COPYコード--from =ビルダー/公共/ index.htmlにコード/公共/ favicon.icoをを/ usr / share / nginxの/ HTML /
COPYコード--from =ビルダー/公共/静的を/ usr / share / nginxの/ HTML /静的
それを行うにはどのようにするコードをコピー

まずADDのpackage.json /コード、その後、NPMの後にすべてのファイルを追加します--productionインストールしてください。構築するための時間を削減ミラーキャッシュをフルに活用、
多段階のビルドは、大幅にミラーのボリュームを削減します

それはまたのようないくつかの小さな最適化を、持つことができます

キャッシュNPM NPM民間ベースイメージや倉庫、ビルドに時間を短縮し、インストールNPM時間を短縮
--productionが必要なパケットのみをインストールし、インストールNPM

フロントエンドの最適化された彼らのdockerfile、操作およびメンテナンスが半分のディスクスペースがアカウントの前にミラーリングされていることを言って、騒々しい数日の思考前にもありました見て、鏡の中の自分の貯金の思考数桁は、フロントエンドのボリューム、同社は思えますディスクを拡張、さらにに、独自の基盤について考え、オーバーヘッドサーバーの多くを保存し、助けることはできませんが、笑顔と笑う
一流品熟考への2つの質問に、この時間を

キャッシュ、バッファOSS上に配置されたフロントエンドによるキャッシュ制御は、OSSは、CDNを加速するために使用されます。フロントエンドのキャッシュ書き込みスクリプトによって、この時間を制御する
クロスドメイン、クロスドメインを設定nginxのはまだ運用・保守で

CI / CDとgitlab
今回の成果は、操作およびそれのメンテナンス感をあふれフロント?操作とグランドラインのメンテナンスは、展開するために、再び3つのアクションも繰り返し繰り返し、何度も何度もまだあります

コード引き出し
ドッキングウィンドウ・作曲アップ-d
再起動のnginxを

彼はCIを導入して運用・保守は、もはや、もはやそうは思わないことができます。gitlabのCIをサポートしている既存のコードのリポジトリgitlabを

CI、継続的インテグレーション、継続的インテグレーション
CD、連続的送達、連続配信

重要なことはCIではありません/ CDは現在、運用・保守業務ラインがなくなっている従わない前を見つめての展開を必要としないことが重要です。これらは、物事のCI / CDのであり、それが自動展開のために使用されています。CI / CDへの3つのことを述べた上で、
.gitlab-ci.ymlはgitlab CIプロファイルである、それはおそらく、この長いようになります
:展開
ステージ:展開
:唯一の
マスター-
スクリプト:
-ドッカー作曲アップ--build -d
タグ:
-シェル
の配信も大幅に糸くずに使用できるビジネス・コードの品質、テスト、パッケージのセキュリティチェック、さらにはマルチ・マルチ環境特性を強化する前に、コードのCI / CDは、より多くの遊離のデプロイビジネスのプロジェクトだけでなく、コピー展開、私は私の将来の記事で事のこの部分を書きます
以前/ /私のサーバーに配備ドッキングウィンドウドッキングウィンドウ・コンgitlab-CIの道に私は、サーバープロジェクトshfshanyue / shiciのレンダリングされていた、で興味の缶を見ていますその設定ファイル

shfshanyue / shici:Dockerfile
shfshanyue / shici:ドッカー-compose.yml
shfshanyue / shici:gitlab-ci.yml

あなたが個人的なサーバーを使用している場合、また、あなたが彼らが興味を持っているサービスをサポートし、CI / CDが自分のサーバーにデプロイサポートするフロントエンドアプリケーションとバックエンド・インタフェース行う示唆
としたい場合はCI / CDを行うgithubの結合することを、あなたはgithubの+ githubのアクションを試すことができ
、継続的インテグレーションをドローンのgithubのプログラムの導入と展開に:どのように展開するために私の以前の記事を参照することができ、また、あなたがdrone.ci試すことができます
使用kubernetesの展開
、ビジネスが成長しているとより多くのミラーリング、対処しにくいことができたドッキングウィンドウ-COMPOSEは、季節のアウトをkubernetes。そして、台湾からのサーバーは、複数のサーバが問題に配布される、多段階になってきた
複雑さを導入する以前の問題に対応しつつ、新しい技術の出現を。
健康診断、ローリング・アップグレード、弾性膨張、迅速なロールバック、資源の制約、およびなど、モニタリング改善:K8S展開のメリットは明確である
ことは、我々が遭遇した新しい何か問題ありますか?
ミラーサーバの構築は、サーバがコンテナサービスを提供し、継続的インテグレーションサーバが1ですか!
操作と実物のメンテナンスで独自のイメージリポジトリの必要性、すぐに抱いて良いの運用・保守を構築しますが、展開、複雑さのフロントエンド用と増加し
、前のプロセスを見てみましょう:

フロントエンドの構成dockerfileとドッキングウィンドウ-構成
本番環境のサーバCIランナープルコード(前の操作や保守として見ることができる)、ドッキングウィンドウ・コンアップは、サービスを開始-d。その後、再起動nginxのは、リバースプロキシ、外部サービスを行います

前者の方法に問題がある:ミラーサーバーを構築し、サーバはコンテナサービスを提供し、継続的インテグレーションサーバは1ですよ!したがって、独自のイメージリポジトリ、クラスタ缶アクセスK8S連続統合サーバーの必要性
は次のような手順の後組み合わせK8Sプロセス改善であります

フロントエンドの構成dockerfile、ミラーを構築し、プッシュ倉庫へのミラー
のフロントエンドアプリケーション構成K8Sリソース構成ファイルのための運用・保守、再プルミラーリングkubectlは-f適用、デプロイリソース

フロントエンドの運用・保守を尋ね、あなたはK8Sリソース構成ファイルのフロントエンド、そして記載されているいくつかの記事について書いて、あなたの基礎プレートの下に拡張する必要はありません。

使用K8Sはあなたの最初のアプリケーションをデプロイ:ポッド、展開およびサービス
の使用は、アプリケーションドメインの構成をK8S:イングレスの
使用K8Sをhttpsでドメインの

フロントエンドの後端がダース以上K8Sプロフィールを見た後、首を横に振ったし、忘れて忘れてしまった
一の運転・保守管理によって、ほとんどの長いこのように、この時、gitlab-ci.yamlを権利プロファイルを
配布:
ステージ:展開
のみ:
-マスター
スクリプト:
-ドッカービルド-t harbor.shanyue.tech/fe/shanyue
-プッシュharbor.shanyue.tech/fe/shanyueドッカー
- kubectl適用-f HTTPS://k8s-config.default.svc.cluster.local /shanyue.yaml
タグ:
-シェル
コード一番の記事二つの質問を熟考するために、この時間をコピーします

キャッシュ、キャッシュはフロントで制御される
クロスドメイン、クロスドメインまだ運用・保守管理、制御イングレス設定ファイルのバックエンドK8Sリソースで

使用ヘルムの展開は
、操作および保守のフロントエンドは、運用・保守の好意外からの新しいプロジェクトのために臨時の必要性を除いてあまり接触を持っている
が、最後の長い、ある日突然、でもフロントエンド環境変数が法律を可決していない自分自身を発見しませんでした!設定ファイルの検索操作やメンテナンスを変更するので、多くの場合、運用、保守にもうんざりしている
ので、一つの文章でそれを説明する場合には、舵を持って、それはK8S機能付きリソースプロファイルテンプレートです。フロントエンドとして、あなただけのパラメータを入力する必要があります。より詳細な内容は、舵K8S展開リソースを使用して私の以前の記事を参照することができ
、我々は、設定ファイルを書くためにこの長いようにフロントエンドとしてbitnami / nginxのを使用している場合ヘルムチャートかもしれません
:イメージ
レジストリ:harbor.shanyue.tech
リポジトリ:鉄/ Shanyueの
タグ:8a9ac0

イングレス:
有効:真
のホスト:

  • 名前:shanyue.tech
    パス:/

TLS:

  • ホスト:

    • shanyue.tech
      secretName:Shanyue-TLS

    livenessProbe:

    HTTPGET:

    道: /

    ポート:HTTP

    initialDelaySeconds:30

    timeoutSecondsの:5

    failureThreshold:6

    readinessProbe:

    HTTPGET:

    道: /

    ポート:HTTP

    initialDelaySeconds:5

    timeoutSecondsの:3

    periodSeconds 5

一番の記事二つの質問を熟考するためのコードにこの時間をコピーします

キャッシュ、キャッシュフロントエンドによって制御される
クロスドメイン、および後端部によって相互制御、後端はチャート内の構成ファイルvalues.yamlに配置され

その後の運用・保守の義務へのフロントエンド?
やるべきことのフロントエンドのニーズは、次のとおりです。

建物の正面dockerfile書き込みが、これは一つだけタイムの仕事ですが、参照して
舵を展開するときに使用するパラメータを指定します

それを行うために、その運用・保守

それはbitnamiの使用にある場合ヘルムチャートは、使用されるすべてのアイテムのフロントエンドを提供しても設けることなく、操作及びメンテナンス遅延/それをnginxの。ワンタイムの仕事があり
、それが直接指揮を執っ使用されている場合でも提供し、操作や怠惰なメンテナンスなし、指揮に基づいツール、過度のサービス権限の禁止を提供

FECは、自分のクラウドネイティブに焦点を当てることができ、ビジネス、運用、保守に集中できる責任の明確な区分はありませんでした
統一フロントエンドの展開プラットフォーム
フロントエンド・アプリケーションの運用・保守の性質が簡単に団結に、より多くの単一の静的ファイルの束であることを後でこの技術は、不均一な画質の各先端を避けるために。そのため、ノードベースイメージの統一された運用・保守を準備するフロントエンド統一の展開プラットフォームを行い、そしてこのプラットフォームは、それが何を行うことができます

CI / CD:デプロイ自動的に倉庫に特定のコードブランチをプッシュすると
HTTPヘッダー:あなたはキャッシュの最適化行うことができます。httpヘッダ資源、カスタマイズすることができます
nginxの場合は、/ APIを構成することができますので、解決クロス:HTTPリダイレクト/書き換えをドメインの問題
ホスト名:あなたがドメインを設定することができ
CDNを:CDNプッシュするあなたの静的なリソースを置く
HTTPSを:あなたのための証明書を準備
事前レンダリング:結合SPAは、プリレンダリングされません

CDNをアップロードし、フロントミラーを構築することはもはや必要ない、彼はただ大体この長いように、その上にプロファイルを作成する必要があります
ビルド:
コマンド:NPM RUNビルド
DIST:/ DIST

ホスト:

  • 名前:shanyue.tech
    パス:/

ヘッダ:

  • 場所:/ *
    値:
    • キャッシュコントロール:最大エージング= 7200
  • 場所:資産/ *
    値:
    • キャッシュコントロール:最大エージング= 31536000

リダイレクト:

  • From:/ API
    へ:https://api.shanyue.tech
    ステータス:200
    この時点でコードのコピー、単に設定ファイルを記述する必要がある前、あなたはすべてを行うには、フロントに属して行う必要があり、プロキシを設定、キャッシュを設定し、輸送することができます展開のフロントエンド何を心配するヴィクトリアまた、不要になった
    だけで書かれた彼のプロフィールを見て、フロントエンドは、道それを見た...
    しかし、あなたはそれに、あなたがすることができます興味があればほとんどのメーカーは唯一、そのような完全なフロントエンドの展開プラットフォームを持っていますnetlify試みの下で、あなたは私の記事を参照することができます使用することは、アプリケーションのフロントエンド展開netlify
    サーバーとバックエンドレンダリングデプロイ
    ほとんどのアプリケーションで静的リソースは、基本的に、フロントエンドで、残りは、サーバー側レンダリングのごく一部である、自然のサーバー側のレンダリングバックエンドサービスに、その展開は、バックエンドの展開として見ることができる
    など、状況のバックエンドの展開が複雑です

コンフィギュレーションサービス、バックエンドの機密データへの必要性へのアクセスを、しかしコードリポジトリ上の機密データを置くことはできません。あなたの中に、環境変数、領事やK8S configmap維持することができ
、アップリンクとダウンリンクのサービスを、あなたはデータベースに依存する必要があり、上流のサービス
アクセス制御、IPを制限し、黒と白のリスト
レート制限
など

私は、今後の記事では、バックエンドのK8Sを展開する方法を共有することになります

公開された22元の記事 ウォンの賞賛0 ビュー248

おすすめ

転載: blog.csdn.net/A669MM/article/details/104791834