SkaffoldであなたのローカルKubernetes発展を単純化する方法
8871 ワード
正直に答えましょう、我々が通常Kubernetes関連の環境を想像する方法?これまでのところ、 コンテナイメージを保存して、彼らをKubernetesのために利用できるようにするDocker Registry
YAMLはコンテナ、ポッドを説明する.我々は実際にKubernetesで実行したい.これらのYAMLファイルは私たちが作成したDocker画像を参照できます. 今何か新しいものを加えましょう.今私たちは実際のアプリに取り組んでいると仮定し、いくつかのコードの変更を行い、それらを展開したい.どうすればいいのでしょうか 最初にコードを変更します. 次に、新しいDocker画像をビルドします.私たちが離れてそれらを伝えることができるように、より良い彼らに古いDocker画像より異なるタグを与えます. その後、Dockerレジストリに新しいDocker画像を押してください. KYBERNETESにYAMLを再配備します.おそらく使用 🐌🐌🐌 それは多くのステップです!Kubernetesはクールですが、それは我々の開発の苦境を遅くします.
ここはどこです Docker画像を作成する プッシュする その後、使用してKuberNetesリソースを そして、それは1つのコマンドですべてをします.
Skaffold 〜13 Kです⭐ オープンソースのCLIツールは、継続的な開発とKubernetesアプリケーションの展開を支援する具体的に開発者を目指してGoogleによって作成された.
その後、ローカルのアプリケーションソースコードを反復処理できますdeploy to local [リモート] KubernetesクラスタSkaffoldは、ビルド、プッシュ、およびアプリケーションの配備のワークフローを処理します.
最も基本的なレベルでは、skaffoldはこのように動作しますit: あなたのアプリのKubernetes設定ファイルを作成します アプリケーションをローカルまたはリモートのクラスタに配備する あなたのソースコードをモニターし、必要に応じて自動的に再配備する あなたのローカル端末からあなたのローカル端末に しかし、Skaffoldもこの基本的な機能の上にいくつかの高度な機能を提供しています.まず最初に、skaffoldは拡張可能なプラグイン可能なアーキテクチャを提供します.そして、開発者が彼らのアプリケーションを構築して、配備することに関係している各々のステップのために適切なツールを選ぶのを許します.スカフェルドattempts to provide portability 異なるビルドシステム、イメージレジストリおよび配置ツール間のCI統合.
下の図は
Skaffoldは2つの異なるモードで使用できます.
コマンドを発行することで
コマンドを発行することで
足場の主な特徴は以下の通りです. それはあなたのソースコードのローカルな変更を監視し、自動的にビルド/ローカルまたはリモートKubernetesクラスタに展開をプッシュします. これは、リモートおよびローカルDockerエンジンやレジストリをサポートしています.(リモートDockerエンジンを使用すると、ビルド時間が大幅に増加することがあります. アプリケーション間の依存関係を追跡し、変更されたものを自動的に展開できます. さまざまなワークフローをサポートするために各実装を構成可能にするAPIをビルドして展開する機能を備えた既存のツールとワークフローをサポートします. Skaffoldの主な利点の一つは、それが提供する統合の数です.これにはネイティブのサポートがあります. ビルドキット Google cloud build 舵 Kustomize The
Linux用のスタンドアロン実行可能ファイルを使用して、Skaffoldインストールを完了します.インストール手順は次のとおりです.
Skaffoldの最新版をダウンロードして、それをアンパックして、あなたの所にそれを置いてください
このチュートリアルでは、スプリングブートアプリケーションを使用します.それは、中で単純な挨拶メッセージを返す1つの終点を提供します
アプリケーションを実行するには、まず
設定ファイルの作成後、目的のアプリケーションを配備する2つのオプションがあります.開発時にはコマンドを使用できます.
一度配備してコードの変更を追跡しない場合は、runコマンドを実行します.
成功した展開の後、アプリケーションがKubernetesクラスタでおなじみのKubectlコマンドを使用して配備されているかどうかを確認できます.
最後に、削除コマンドで配備されたアプリケーションを削除できます.
docker
コンテナイメージを構築するために(ローカルで実行しますが、通常はテスト用にのみ実行します).YAMLはコンテナ、ポッドを説明する.我々は実際にKubernetesで実行したい.これらのYAMLファイルは私たちが作成したDocker画像を参照できます.
kubectl
Kubernetes APIへのリクエストを作成するツールとして(そして、YAMLに基づくオブジェクトを作成する).helm
一緒にヤスリを包装して、ものを構成可能にするために.helm
: 我々が使用したいコンテナイメージはhelm
. したがって、展開する前に設定を変更します.ここはどこです
skaffold
写真が来る.Skaffoldは少し接着剤層です(これ以上ですが、今のところこれを使います).helm
) Dockerイメージで、それはちょうど造られますSkaffold 〜13 Kです⭐ オープンソースのCLIツールは、継続的な開発とKubernetesアプリケーションの展開を支援する具体的に開発者を目指してGoogleによって作成された.
その後、ローカルのアプリケーションソースコードを反復処理できますdeploy to local [リモート] KubernetesクラスタSkaffoldは、ビルド、プッシュ、およびアプリケーションの配備のワークフローを処理します.
最も基本的なレベルでは、skaffoldはこのように動作しますit:
skaffold
また、あなたのアプリケーションイメージを押すことによってDocker Registriesと対話することができます.それは明白なKubernetesマニフェストで働くことができますhelm
パッケージマネージャとしては任意です).下の図は
skaffold
ワークフローは、構成ファイルの生成や、両方の実行モードでの展開ライフサイクルを含みます.Skaffoldによる展開
Skaffoldは2つの異なるモードで使用できます.
⚙️ 開発モード
コマンドを発行することで
skaffold dev
. 開発モードでは、ソースコードの変更を監視し、自動的にすべての適切なDocker画像を生成し、Kubernetesクラスタに画像を展開します.さらに、それは展開されたアプリケーションからのログストリーミングを提供します.⚙️ 展開モード
コマンドを発行することで
skaffold run
. このモードでは、Skaffoldは一度だけパイプラインを実行し、パイプライン内の任意のエラーで終了します.これは、アプリケーションの開発の完了後に健全性チェックとして使用することができますので、便利です.足場の主な特徴は以下の通りです.
skaffold.yaml
主な構成ファイルであるファイルには、アプリケーションを構築し展開する方法を変更するためのいくつかのオプションがあります.それは本質的にもテストやプッシュ画像の世話をすることができますローカル開発のためのミニCI/CDソリューションです.Linux用のスタンドアロン実行可能ファイルを使用して、Skaffoldインストールを完了します.インストール手順は次のとおりです.
Skaffoldの最新版をダウンロードして、それをアンパックして、あなたの所にそれを置いてください
$PATH
. Skaffold実行可能とバージョンを確認する$ curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/latest/skaffold-linux-amd64 && \
sudo install skaffold /usr/local/bin/
アプリケーションの設定
このチュートリアルでは、スプリングブートアプリケーションを使用します.それは、中で単純な挨拶メッセージを返す1つの終点を提供します
JSON
形式.ここに例のアプリケーションを見つけることができます.アプリケーションを実行するには、まず
Dockerfile
アプリケーションを格納するファイル.以下に例を示します.FROM maven:3-jdk-11 as BUILD
COPY . /usr/src/app
RUN mvn --batch-mode -f /usr/src/app/pom.xml clean package
FROM openjdk:11-jre-slim
ENV PORT 42050
EXPOSE 42050
COPY --from=BUILD /usr/src/app/target /opt/target
WORKDIR /opt/target
CMD ["/bin/bash", "-c", "find -type f -name '*.jar' | xargs java -jar"]
に加えてDockerfile
, また、私たちはk8s-app.yaml
Skaffold設定ファイルを生成するファイル.シンプルバージョンk8s-app.yaml
ファイルを以下に示します:apiVersion: v1
kind: Pod
metadata:
name: skaffold-demo
spec:
containers:
- name: skaffold-demo
image: roukou/skaffold-demo
さて、skaffold設定ファイルはコマンドを発行することで生成できます.$ skaffold init
このコマンドはskaffold.yaml
file containing all needed information アプリケーションを所望のKubernetesクラスタに構築して配備するには.生成されるskaffold.yaml
ファイルはapiVersion: skaffold/v1beta28
kind: Config
build:
artifacts:
- image: roukou/skaffold-demo
deploy:
kubectl:
manifests:
- k8s-app.yaml
新しいプロジェクトを作成するとき、Skaffold Configsをブートすることができますinit
コマンド(非常に便利な機能).また、いくつかの設定を定義することができます:開発のための1つの設定、および実行コマンドを介してステージ環境に展開する別のものdev
この場合、Skaffoldは変更を監視しません.アプリケーション展開フロー
設定ファイルの作成後、目的のアプリケーションを配備する2つのオプションがあります.開発時にはコマンドを使用できます.
$ skaffold dev --default-repo localhost:32000
上記のコマンドは、ファイルが変更されたときにアプリケーションを継続的に展開します.それはすべての変更のソースコードファイルを監視し、高速再展開を行います.一度配備してコードの変更を追跡しない場合は、runコマンドを実行します.
$ skaffold run --default-repo localhost:32000
使用するinsecure MicroK8s repo ここでは、あなた自身を使用する自由です.もし--default-repo
がユーザによって提供される.there is no automated image name rewriting , そして、SkaffoldはYAMLで提供されるようにイメージをプッシュしようとします.成功した展開の後、アプリケーションがKubernetesクラスタでおなじみのKubectlコマンドを使用して配備されているかどうかを確認できます.
$ kubectl get pods
コマンドを使用してアプリケーションが実行されていることを確認できます.$ curl http:///skaffold/api/v1.0
また、アプリケーションが期待どおりに展開されていることを確認するには、Kubernetesダッシュボードを確認できます.最後に、削除コマンドで配備されたアプリケーションを削除できます.
$ skaffold delete
要約すると、Skaffoldは、ヘルムを必要としない非常に柔軟なソリューションであり、どのような統合を使用することができますどのような種類で非常に広範です.Reference
この問題について(SkaffoldであなたのローカルKubernetes発展を単純化する方法), 我々は、より多くの情報をここで見つけました https://dev.to/otomato_io/local-kubernetes-development-with-skaffold-i0kテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol