展開し、公式strapiデモアプリ“FoodAdvisor”とKubernetes
18722 ワード
インターネットユーザー数の一定の上昇で、非常に利用可能でスケーラブルなWebアプリを作成するための需要は、史上最高値です.は、企業が自己管理ハードウェア上で自分のサーバーを実行する日です.
クラウドコンピューティングの出現は、ソフトウェア開発のクラウド・ネイティブ・モデルに向けて、ギアをシフトさせた.クラウドネイティブは雲のプロバイダを使用して、それはクラウドコンピューティングモデルをフルに活用するオールインワンアプローチのアプリを提供するために使用します.
クラウドネイティブ展開では、アプリケーションはマイクロサービス指向であり、アプリケーションの各部分がコンテナ化されます.コンテナーは、リソースの利用を最適化する方法でスケジュールされていることを保証するためにオーケストレーションされます.これは、アプリケーションがユーザーロードに応じてパフォーマンスとスケールを意味します.このアプローチは、スケーリングされて手動で維持されなければならない従来のモノリスアプリケーションとは異なります.
Kubernetes 自動コンテナの配置、スケーリング、および管理に使用されるコンテナのオーケストレーションシステムです.Kubernetesのおかげで、スケールが微風であるコンテナ化アプリを実行します.複数の労働者マシンを組み合わせてクラスタを形成し、各ワーカーマシンはアプリケーションに関連する別のコンテナを実行します.
あなたがKubernetesに新しいならばofficial tutorials は優れた出発点です.
ヘッドレスCMSによるKubernetesの活用
コンテンツ管理システム(CMSE)長い間の周りされている.伝統的に、彼らは1つの場所からすべての内容、イメージ、HTML、CSSとJavaScriptを提供しているモノリシックアプリケーションでした.これは内容がビューに結び付けられているので内容を再利用することは困難であった.
エーheadless CMS 別のアプローチを取り、ビューからコンテンツを分離します.ヘッドレスのCMSでは、コンテンツはコンテンツを表示するために複数のクライアントが消費するAPIを介して提供されます.個々の部品をコンテナ化し、互いに独立してスケーリングすることができますので、この分離は、クラウド固有のアーキテクチャに最適です.
Strapi オープンソースツールはノードで書かれています.は、比類のないカスタマイズと超高速ヘッドレスCMSを提供しています.それを実行する方法を直接参照するには、strapiは公式デモアプリケーションを提供しますFoodAdvisor それはStraapiのウェブサイトでプレビューされるか、またはローカルで、または、クラウドで展開されることができます.FoodAdvisorアプリは、異なるレストランのリストを示し、Strapiの機能のデモとして機能します.
このチュートリアルでは、FoodAdvisorアプリを展開するKubernetesを活用する方法を学びます.
必要条件
続くには、Kubernetesクラスタの実行が必要になります.Kubernetesクラスタを提供するクラウドプロバイダを使用することができますGoogle's GKE or Amazon's EKS , または使用することができますMinikube クラスタをローカルに設定します.
このチュートリアルでは、Minikubeとローカルクラスタを使用していると仮定します.Minikubeをインストールすることができますguide .
また、インストールする必要がありますkubectl Kubernetesクラスタを制御する
あなた自身のコンテナ化されたDockerイメージを準備したいならば、あなたもインストールする必要がありますDocker . あなた自身のDockerイメージを作成したくないならば、あなたは私が準備したものを使うことができます.
ローカルクラスタが次のコマンドを実行していることを確認します.
Kubernetesを使用してFoodAdvisorアプリを展開する
Minikubeクラスタが稼働していると、KubernetesとFoodAdvisorアプリを展開することができます.
Docker画像の準備
最初のステップとして、FoodAdvisorをクローンする必要がありますGitHub repo . このチュートリアルでは
Repoをクローニングした後に、バックエンドとフロントエンドのためにDockerイメージを準備します.あなたが必要になりますDocker Hub アカウントイメージをプッシュします.アカウントを作成したくない場合はDeploying the Backend そして、私がすでに準備したイメージを使ってください.
Dockerハブアカウントを作成した後、ユーザー名とパスワードを
に
では、次のdockerfileを作成します
バックエンドの配備
Dockerイメージを準備すると、バックエンドをKubernetesクラスタに展開できます.The
次の設定を保存します
YAMLファイルはDeployment 名前
変更を適用します
バックエンドはクラスタ内で実行中です.しかし、それはデフォルトで外の世界から隔離されます.クラスタの外部からサーバにリクエストを送ることができるようにするには、この場合、ポート1337に適切なポートを公開する必要があります.
フロントエンドの配備
次のステップはフロントエンドを展開し、バックエンドに接続することです.次の保存
バックエンドのように、このYAMLは指定されたDockerイメージを実行するPODを含む展開を作成します.
フロントエンドの配置に変更を適用します.
バックエンドと同様に、フロントエンドに到達するためにブラウザを使用できるようにポート3000を公開する必要があります.
侵入の作成
最後に、あなたはIngress クラスタに.イングルの仕事は、あなたが使用するURLに応じて、フロントエンドまたはバックエンドに着信リクエストをルーティングすることです.
以下の取得規則は、
一度だけこのステップを実行する必要があります.最後にイングルを適用します.
エディット
訪問
管理者ユーザーを作成したら、StreAPIのダッシュボードにアクセスし、あらかじめ設定されているサンプルデータを調べます.
フロントエンドにアクセスするには
おめでとう、KubernetesでFoodAdvisorを正常に展開しました.
結論
クラウドネイティブのアプローチは、近い将来アプリケーション開発のための事実上の標準になるだろう.このメソッドはモノリシックアプリケーションを廃止し、代わりにアプリケーションをスケーラブルな実行可能なマイクロサービスに分解します.ネットの結果を開発し、簡単に伝統的な展開を達成するのは難しいアプリケーションを管理することは簡単です.
このチュートリアルでは、簡単に公式のstrapiデモアプリケーションを展開するKubernetesで始めることができる方法を示した.この興味があれば、チェックアウトStrapi's website ヘッドレスCMSの詳細については.
クラウドコンピューティングの出現は、ソフトウェア開発のクラウド・ネイティブ・モデルに向けて、ギアをシフトさせた.クラウドネイティブは雲のプロバイダを使用して、それはクラウドコンピューティングモデルをフルに活用するオールインワンアプローチのアプリを提供するために使用します.
クラウドネイティブ展開では、アプリケーションはマイクロサービス指向であり、アプリケーションの各部分がコンテナ化されます.コンテナーは、リソースの利用を最適化する方法でスケジュールされていることを保証するためにオーケストレーションされます.これは、アプリケーションがユーザーロードに応じてパフォーマンスとスケールを意味します.このアプローチは、スケーリングされて手動で維持されなければならない従来のモノリスアプリケーションとは異なります.
Kubernetes 自動コンテナの配置、スケーリング、および管理に使用されるコンテナのオーケストレーションシステムです.Kubernetesのおかげで、スケールが微風であるコンテナ化アプリを実行します.複数の労働者マシンを組み合わせてクラスタを形成し、各ワーカーマシンはアプリケーションに関連する別のコンテナを実行します.
あなたがKubernetesに新しいならばofficial tutorials は優れた出発点です.
ヘッドレスCMSによるKubernetesの活用
コンテンツ管理システム(CMSE)長い間の周りされている.伝統的に、彼らは1つの場所からすべての内容、イメージ、HTML、CSSとJavaScriptを提供しているモノリシックアプリケーションでした.これは内容がビューに結び付けられているので内容を再利用することは困難であった.
エーheadless CMS 別のアプローチを取り、ビューからコンテンツを分離します.ヘッドレスのCMSでは、コンテンツはコンテンツを表示するために複数のクライアントが消費するAPIを介して提供されます.個々の部品をコンテナ化し、互いに独立してスケーリングすることができますので、この分離は、クラウド固有のアーキテクチャに最適です.
Strapi オープンソースツールはノードで書かれています.は、比類のないカスタマイズと超高速ヘッドレスCMSを提供しています.それを実行する方法を直接参照するには、strapiは公式デモアプリケーションを提供しますFoodAdvisor それはStraapiのウェブサイトでプレビューされるか、またはローカルで、または、クラウドで展開されることができます.FoodAdvisorアプリは、異なるレストランのリストを示し、Strapiの機能のデモとして機能します.
このチュートリアルでは、FoodAdvisorアプリを展開するKubernetesを活用する方法を学びます.
必要条件
続くには、Kubernetesクラスタの実行が必要になります.Kubernetesクラスタを提供するクラウドプロバイダを使用することができますGoogle's GKE or Amazon's EKS , または使用することができますMinikube クラスタをローカルに設定します.
このチュートリアルでは、Minikubeとローカルクラスタを使用していると仮定します.Minikubeをインストールすることができますguide .
また、インストールする必要がありますkubectl Kubernetesクラスタを制御する
あなた自身のコンテナ化されたDockerイメージを準備したいならば、あなたもインストールする必要がありますDocker . あなた自身のDockerイメージを作成したくないならば、あなたは私が準備したものを使うことができます.
ローカルクラスタが次のコマンドを実行していることを確認します.
minikube start
Minikube自動的に構成されますkubectl
このローカルクラスタと通信するために、手動設定が必要ない.Kubernetesを使用してFoodAdvisorアプリを展開する
Minikubeクラスタが稼働していると、KubernetesとFoodAdvisorアプリを展開することができます.
Docker画像の準備
最初のステップとして、FoodAdvisorをクローンする必要がありますGitHub repo . このチュートリアルでは
v2
FoodAdvisorアプリのoffers some improvements over the previous version .git clone https://github.com/strapi/foodadvisor.git
cd foodadvisor
git checkout v2
repoでは2つのディレクトリが見られます:api
and client
. 最初のディレクトリは、バックエンドstrapiサーバーとデモデータを保持します.The client
ディレクトリには、次に書かれたフロントエンドが含まれます.jsサーバーは、データベースとしてローカルSQLiteファイルを使用するので、このアプリを実行するために別のデータベースを設定する必要はありません.Repoをクローニングした後に、バックエンドとフロントエンドのためにDockerイメージを準備します.あなたが必要になりますDocker Hub アカウントイメージをプッシュします.アカウントを作成したくない場合はDeploying the Backend そして、私がすでに準備したイメージを使ってください.
Dockerハブアカウントを作成した後、ユーザー名とパスワードを
docker login
コマンド.に
api
ディレクトリを作成するDockerfile
:FROM node:14
WORKDIR /app
ADD ./package.json /app
ADD ./yarn.lock /app
RUN yarn install --frozen-lockfile
ADD . /app
RUN yarn seed
EXPOSE 1337
CMD ["yarn", "develop"]
エディット.env.example
ファイルと設定CLIENT_URL
変数http://foodadvisor.client
. 次に、同じディレクトリに次のコマンドを実行します.docker build -t <your-docker-hub-username>/foodadvisor-api .
docker image push <your-docker-hub-username>/foodadvisor-api:latest
あなたのDockerハブのユーザー名を置き換えることを忘れないでください.では、次のdockerfileを作成します
client
ディレクトリFROM node:16
WORKDIR /app
ADD ./package.json /app
ADD ./yarn.lock /app
ADD ./.env.development /app
RUN yarn install --frozen-lockfile
ADD . /app
EXPOSE 3000
CMD ["yarn", "dev"]
エディット.env.development
ファイルと設定NEXT_PUBLIC_API_URL
to http://foodadvisor.backend
そして、以下のコマンドを実行します.docker build -t <your-docker-hub-username>/foodadvisor-client .
docker image push <your-docker-hub-username>/foodadvisor-client:latest
今すぐDocker画像を使用するKubernetesの準備が整いました.バックエンドの配備
Dockerイメージを準備すると、バックエンドをKubernetesクラスタに展開できます.The
kubectl
コマンドはクラスタとの通信を扱うために使用されます.kubectl
設定を宣言し、クラスタに適用します.次の設定を保存します
deploy-backend.yaml
:apiVersion: apps/v1
kind: Deployment
metadata:
name: foodadvisor-backend
spec:
selector:
matchLabels:
app: foodadvisor
component: backend
template:
metadata:
labels:
app: foodadvisor
component: backend
spec:
containers:
- name: foodadvisor-api
image: heraldofsolace/foodadvisor-api
ports:
- containerPort: 1337
前の手順で独自のDocker画像を作成した場合はheraldofsolace/foodadvisor-api
to <your-docker-hub-username>/foodadvisor-api
.YAMLファイルはDeployment 名前
foodadvisor-backend
. 展開はPod , 指定したDockerイメージを使用してコンテナを1つ実行します.変更を適用します
kubectl apply -f deploy-backend.yaml
次のコマンドを実行すると、配備を確認できます.kubectl get deployments
バックエンドはクラスタ内で実行中です.しかし、それはデフォルトで外の世界から隔離されます.クラスタの外部からサーバにリクエストを送ることができるようにするには、この場合、ポート1337に適切なポートを公開する必要があります.
kubectl expose deployment foodadvisor-backend --port 1337
これはService 以下のコマンドを実行して確認できます.kubectl get services foodadvisor-backend
フロントエンドの配備
次のステップはフロントエンドを展開し、バックエンドに接続することです.次の保存
deploy-frontend.yaml
:apiVersion: apps/v1
kind: Deployment
metadata:
name: foodadvisor-frontend
spec:
selector:
matchLabels:
app: foodadvisor
component: frontend
template:
metadata:
labels:
app: foodadvisor
component: frontend
spec:
containers:
- name: foodadvisor-client
image: heraldofsolace/foodadvisor-client
ports:
- containerPort: 3000
もう一度、あなた自身のDockerイメージをheraldofsolace/foodadvisor-client
with <your-docker-hub-username>/foodadvisor-client
.バックエンドのように、このYAMLは指定されたDockerイメージを実行するPODを含む展開を作成します.
フロントエンドの配置に変更を適用します.
kubectl apply -f deploy-frontend.yaml
実行して展開を確認kubectl get deployments
.バックエンドと同様に、フロントエンドに到達するためにブラウザを使用できるようにポート3000を公開する必要があります.
kubectl expose deployment foodadvisor-frontend --port 3000
実行しているサービスを確認するkubectl get services foodadvisor-frontend
.侵入の作成
最後に、あなたはIngress クラスタに.イングルの仕事は、あなたが使用するURLに応じて、フロントエンドまたはバックエンドに着信リクエストをルーティングすることです.
以下の取得規則は、
http://foodadvisor.backend
以前に作成したバックエンドサービスと、http://foodadvisor.client
フロントエンドサービスに.apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: main-ingress
spec:
rules:
- host: foodadvisor.backend
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: foodadvisor-backend
port:
number: 1337
- host: foodadvisor.client
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: foodadvisor-frontend
port:
number: 3000
YAMLを保存するingress.yaml
. InteressをminiKubeで使うのはこれが初めてです.minikube addons enable ingress
NGinx Ingressコントローラが実行中であることを確認します.kubectl get pods -n ingress-nginx
一度だけこのステップを実行する必要があります.最後にイングルを適用します.
kubectl apply -f ingress.yaml
最後のステップはホスト名を作ることですhttp://foodadvisor.backend
and http://foodadvisor.client
あなたのオペレーティングシステムに知られているので、あなたのブラウザでそれらを開くことができます.そのためには、minikubeクラスタのIPアドレスを知る必要があります.minikube ip
エディット
/etc/hosts
そして最後に次の行を追加します.適切なIPアドレスを前の出力から置き換えます.192.168.99.100 foodadvisor.client
192.168.99.100 foodadvisor.backend
これらの変更を適切にhttp://foodadvisor.backend
and http://foodadvisor.client
Interessコントローラが彼らを拾って、彼らの適切な目的地に彼らを送るあなたのminikubeクラスタに送られます.訪問
http://foodadvisor.backend/admin
管理パネルにアクセスするには.これが初めてであるので、管理ユーザを作成するよう求められます.管理者ユーザーを作成したら、StreAPIのダッシュボードにアクセスし、あらかじめ設定されているサンプルデータを調べます.
フロントエンドにアクセスするには
http://foodadvisor.client
. あなたはFoodAdvisorアプリのホームページを参照してくださいする必要があります.おめでとう、KubernetesでFoodAdvisorを正常に展開しました.
結論
クラウドネイティブのアプローチは、近い将来アプリケーション開発のための事実上の標準になるだろう.このメソッドはモノリシックアプリケーションを廃止し、代わりにアプリケーションをスケーラブルな実行可能なマイクロサービスに分解します.ネットの結果を開発し、簡単に伝統的な展開を達成するのは難しいアプリケーションを管理することは簡単です.
このチュートリアルでは、簡単に公式のstrapiデモアプリケーションを展開するKubernetesで始めることができる方法を示した.この興味があれば、チェックアウトStrapi's website ヘッドレスCMSの詳細については.
Reference
この問題について(展開し、公式strapiデモアプリ“FoodAdvisor”とKubernetes), 我々は、より多くの情報をここで見つけました https://dev.to/strapi/deploying-and-scaling-the-official-strapi-demo-app-foodadvisor-with-kubernetes-471dテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol