Kubernetes Gitopsを段階的に実装する方法を説明します

Kubernetes Gitopsを段階的に実装する方法を説明します

導入

コンテナ化は、アプリケーションの管理と展開に対する一般的なアプローチとなり、さまざまな環境にわたってアプリケーションを一貫してパッケージ化、配布、実行する簡単な方法を提供します。このブログ記事では、Docker を使用して Spring Boot アプリケーションをコンテナ化し、Kubernetes クラスターにデプロイするプロセスについて説明します。プロセスを簡素化するために、コード サンプルとステップバイステップの説明も提供されます。

前提条件

  1. Java 開発キット (JDK) 8 以上
  2. Maven または Gradle
  3. ドッカー
  4. Kubernetes クラスター (Minikube、EKS、GKE など)

ステップ1: Spring Bootアプリケーションを作成する

まず、Spring Initializr Web サービスを使用して、シンプルな Spring Boot アプリケーションを作成します。これを行うには、https://start.spring.io/ にアクセスして必要なオプションを選択するか、Spring Boot CLI で次のコマンドを使用します。

 $ spring init --dependencies=web my-spring-boot-app

このコマンドは、Spring Boot アプリケーションを作成します。 Web アプリケーションは、my-spring-boot-app というディレクトリにあります。

ステップ2: アプリケーションを構築する

アプリケーション ディレクトリに変更し、Maven または Gradle を使用してアプリケーションをビルドします。

メイヴン:

 $ cd my-spring-boot-app $ ./mvnw clean install

グレード:

 $ cd my-spring-boot-app $ ./gradlew clean build

ステップ3: Dockerfileを作成する

アプリケーション ディレクトリのルートに、次の内容を含む Dockerfile というファイルを作成します。

 FROM openjdk:8-jdk-alpine EXPOSE 8080 ARG JAR_FILE=target/*.jar COPY ${JAR_FILE} app.jar ENTRYPOINT ["java", "-jar", "/app.jar"]

この Dockerfile は、ベースイメージを指定し、アプリケーション ポートを公開し、ビルドされた JAR ファイルをコンテナーにコピーし、アプリケーションを実行するためのエントリ ポイントを定義します。

ステップ4: Dockerイメージを構築する

次のコマンドを使用して Docker イメージをビルドします。

 $ docker build -t my-spring-boot-app:latest

ステップ5: Dockerイメージをレジストリにプッシュする

Docker イメージを Docker Hub、Google Container Registry、Amazon Elastic Container Registry などのレジストリにプッシュします。 <your-dockerhub-username> を Docker Hub のユーザー名に置き換えます。

 $ docker tag my-spring-boot-app:latest <your-dockerhub-username>/my-spring-boot-app:latest $ docker push <your-dockerhub-username>/my-spring-boot-app:latest

ステップ6: Kubernetesデプロイメントを作成する

次の内容を含む、deployment.yaml というファイルを作成します。

 apiVersion: apps/v1 kind: Deployment metadata: name: my-spring-boot-app spec: replicas: 3 selector: matchLabels: app: my-spring-boot-app template: metadata: labels: app: my-spring-boot-app spec: containers: - name: my-spring-boot-app image: <your-dockerhub-username>/my-spring-boot-app:latest ports: - containerPort: 8080

この構成は、Spring Boot アプリケーションのレプリカ 3 つを含む Kubernetes デプロイメントを定義します。

ステップ7: Kubernetesサービスを作成する

次の内容を含む service.yaml というファイルを作成します。

 apiVersion: v1 kind: Service metadata: name: my-spring-boot-app spec: selector: app: my-spring-boot-app ports: - protocol: TCP port: 80 targetPort: 8080 type: LoadBalancer

この構成は、ポート 80 で Spring Boot アプリケーションを公開し、レプリカ間のトラフィックを負荷分散する Kubernetes サービスを定義します。

ステップ8: Kubernetesにデプロイする

次のコマンドを使用して、Kubernetes 構成をクラスターに適用します。

 $ kubectl apply -f deployment.yaml $ kubectl apply -f service.yaml

ステップ9: アプリケーションにアクセスする

外部 IP アドレスがサービスに割り当てられるまで待ちます。次のコマンドでサービスの外部 IP を確認します。

 $ kubectl get svc my-spring-boot-app

外部 IP が利用可能になったら、ブラウザまたは任意の HTTP クライアントで IP アドレスとポート 80 を使用してアプリケーションにアクセスします。

結論は

このブログ記事では、Docker を使用して Spring Boot アプリケーションをコンテナ化し、Kubernetes クラスターにデプロイするプロセスを説明しました。このアプローチは、アプリケーションのライフサイクルの管理、展開の簡素化、さまざまな環境間での一貫した動作の保証に役立ちます。 Docker や Kubernetes などのコンテナ化およびオーケストレーション テクノロジは、最新のアプリケーションの開発と展開にとって重要なツールになっています。

<<:  アリババクラウド史上最大の値下げ:コア製品の価格が全面的に引き下げられ、最大値下げは50%に達する

>>:  エッジコンピューティングと IoT を推進するトレンド

推薦する

ramnode: 年間 12 ドルから、1G メモリ/1 コア/40g SSD/1T トラフィック、ロサンゼルス/シアトル/アトランタ/ニューヨーク/アムステルダム

非常に信頼性の高い旧ブランドの VPS である Ramnode は、長年特別なプロモーションを行って...

ブランドマーケティングを行う際にこの3つのポイントを理解していなければ、すべて無駄になってしまいます!

多くの人は、マーケティングの知識を本から学び、その方法が自分に適しているかどうかを考えずにそれを習慣...

著作権法案は第46条を削除し、オンライン侵害の定義に関する新たな条項を追加する。

著作権法第2次草案、意見募集中 著作権の法的許諾範囲を「教科書や新聞・雑誌の転載の法的許諾」に絞り込...

クラウドコンピューティング管理プラットフォームの選び方

複数のクラウドとは、クラウド コンピューティング環境で複数の単一クラウドまたはハイブリッド クラウド...

uanode: ウクライナ VPS、1Gbps 無制限トラフィック、月額 3 ドル未満、著作権侵害の申し立てなし

uanode は 2009 年に登録されたウクライナの会社で、ウクライナにコンピューター ルームを持...

テンセントクラウドは金融クラウド事業戦略をアップグレードし、新しいインフラストラクチャと新しい接続に重点を置く

9月10日、テンセントグローバルデジタルエコシステムカンファレンスの金融セッションで、テンセントクラ...

実践スキル: 分散システムを体系的に学ぶにはどうすればよいでしょうか?

分散システムについて学ぶ前に、最初に解決する必要がある質問は、「分散システムはどのような問題を解決す...

Ramnode - サイト全体の60%割引コード/KVMはWindowsで使用可能

Ramnode の最高割引が再び登場しました。60 % オフの割引コード: SRSLY40 。この割...

vmbox-6.5 USD/3 GB RAM/75 GB HDD/3 TB トラフィック/シングルホップ データセンター

vmbox.co は 2013 年 5 月に初めて HostCat に登場しました。同社は 2 年の...

1gbits: 月額 15 ドル、世界中の 20 のデータセンター、サーバー + VPS、1Gbps の帯域幅、無制限のトラフィック

1gbits は、公式にはリトアニアの商人であることが示されており、ドメイン名は 年に登録され、最後...

Crystone クレイジードメイン名プロモーション $1.com (1 人あたり最大 10 個)

Crystone Host は 15 年の歴史を持つホスティング会社です。300,000 以上の W...

ウェブサイトの乾癬が再浮上、ブラックリンクとの戦いが加速

最近、一部のネットユーザーがWeiboで、Dedecmsで構築された多くのウェブサイトがハッキングさ...

WeChatオープンクラスPROの完全概要

2008年以来、義務教育を受けている子どもたちが毎年初めにテレビをつけて新学年の最初の授業を見るのが...

ウェブマスターネットワークニュース:電子商取引が生鮮食品市場に参入。アリランが「クラウドキャット」を発売

1. 電子商取引が「コールドチェーン」の欠点を補うために生鮮食品市場に参入電子商取引は「コールドチェ...

Java バックエンド テクノロジー: Java 仮想マシン スタックの探索

Java に精通している学生は、JVM がスタックベースであることを知っておく必要があります。しかし...