Rancher アプリケーション ストアに基づく K8s サービスのワンクリック アップグレード ソリューションの紹介

Rancher アプリケーション ストアに基づく K8s サービスのワンクリック アップグレード ソリューションの紹介

著者:郭 洋勇、所属:成都ビジネスサポートセンター、スマートホームオペレーションセンター

ラボガイド

クラウド コンピューティングが徐々にクラウド ネイティブへと移行するにつれて、従来のエンタープライズ アプリケーションがコンテナーに変換され、K8s クラスターに移植されるケースが増えています。クラウドネイティブの DevOps アプリケーション開発モデルにより、アジャイルなアプリケーション開発を実現し、ビジネスアプリケーションの反復速度を向上させ、ユーザーのニーズに効率的に対応することができます。従来のクラウド コンピューティング プラットフォームとは異なり、クラウド ネイティブ アプリケーションは、ssh やその他の方法を介してクラウド ホスト上で名前空間操作を直接実行することはできず、Jenkins や Gitlab-CI などの従来の継続的デリバリー ミドルウェアに接続するには、いくつかの変更が必要になります。

パート01 概要

K8s は、業界では Kubernetes の一般的な略語です。これは、Cloud Native Foundation (CNCF) の中核製品です。クラウド ネイティブ コンテナーを管理およびオーケストレーションするためのオープン ソース ソフトウェア システムのセットが含まれています。クラウド ネイティブのコンテナ化された展開、計画、更新、監視、メンテナンスのための完全な機能セットを提供します。 K8s 上に構築されたクラウド ネイティブ プラットフォームは、プロジェクトと名前空間に基づいて、アカウント権限とリソース構成の分離を適切に実現できます。 CNCF の最新の統計によると、世界のバックエンド開発者の 31%、つまり 560 万人以上が現在 K8s を使用しています。 K8s は、クラウド ネイティブ変換に最適なソリューションになりました。

Rancher は、ハイブリッド クラウド + ローカル データ センターでの K8s クラスターの集中的な展開と管理を可能にする、オープン ソースのエンタープライズ レベルのマルチ クラスター K8s 管理プラットフォームです。コンテナを使用するチームに完全なソフトウェア スタックを提供し、あらゆるインフラストラクチャ アーキテクチャにわたって複数の K8s クラスターを管理する際の運用上およびセキュリティ上の課題を解決します。 Rancher は、統合された K8s クラスター管理ページを提供することに加えて、ユーザーが継続的デリバリー プラットフォームに接続できるようにするための非常に完全な API も提供します。 Rancher 管理ページは、K8s オープンソース コミュニティのもう 1 つの重要なツールである Helm と組み合わせて、K8s アプリケーションのワンクリック自動アップグレードを実現できます。 Helm は Kubernetes (https://v2.helm.sh) を管理するためのアプリケーション管理ツールであり、centos の yum、python の pip、node の npm に相当します。

パート02 実装方法

以下では、Rancher2.6.3を例に、RancherのAPIを介してK8sアプリケーションのワンクリックアップグレードを実装する方法を段階的に紹介します。まず、API ドッキングの前に、アプリ ストアに基づいた初期化操作を完了する必要があります。初期化操作には以下が含まれます。

1. オーケストレーションされた Helm 構成ファイル パッケージを統合 Helm アプリケーション ストアにプッシュし、 「アプリケーション ストア => アプリケーション ストアの追加」を通じて Helm アプリケーション ストア構成を Rancher のストア設定に追加します。

2. アプリストア設定を追加した後、 「App Store =》起動」からアプリリストを表示または更新し、起動するアプリを選択し、名前空間を指定してインストールすることができます。

次に、Rancher 管理ページからアプリケーション リストの更新、アプリケーションのアップグレード、アプリケーションのロールバックに関連する API インターフェイス URL を表示して確認し、API インターフェイス呼び出しに必要な認証トークンを作成する必要があります。詳細な操作は次のとおりです。

1. Rancher の機能メニュー => API とキーから、 API キーを作成し、API キーのスコープを指定します。

2. Rancher 管理ページに移動し、「App Store => 管理 => API ビュー => 更新」をクリックして、 App Store リストを更新するための API をチェックして確認します。

ストア リストを更新するための API は比較的シンプルで、具体的な形式は次のとおりです。

 curl -H"認証:ベアラー {API_KEY}" \
-X ポスト \
-k --接続タイムアウト 20 -m 30 --再試行遅延 2 --再試行 3 \
{Rancher_Domain}/v3/projectCatalogs/{Project_ID}:{APP_Store}?action=refresh

変数フィールドでは、API_KEY は最初の手順で作成された API キー、Rancher_Domain は Rancher ページのドメイン名、Project_ID はアプリケーション ストアが動作するプロジェクトの ID、APP_Store は更新する必要があるアプリケーション ストアの名前です。

3. 「App Store => アプリリスト => API ビュー => アップグレード/ロールバック」に移動して、アプリに関連する API インターフェース情報を確認します。

アプリケーション更新 API は少し複雑ですが、いくつかの重要な変数フィールドを変更するだけで済みます。具体的な形式は次のとおりです。

 curl -H "認証:ベアラー {API_KEY}" \
-d "{"externalId":"catalog://?catalog='{APP_Store}'&template='{APP_Name}'&version='{APP_Version}'", "forceUpgrade":true, "valuesYaml":""}'"\
-X POST -k --接続タイムアウト 20 -m 30 --再試行遅延 2 --再試行 3 \
{Rancher_Domain}/v3/project/local:{プロジェクトID}/apps/{プロジェクトID}

変数フィールドでは、API_KEY は最初の手順で作成された API キー、Rancher_Domain は Rancher ページのドメイン名、Project_ID はアプリケーション ストアが適用されるプロジェクトの ID、APP_Store は更新する必要があるアプリケーション ストアの名前、APP_Name はアップグレードする必要があるアプリケーションの名前、APP_Version はアップグレードのターゲット バージョン番号です。

最後に、アプリケーション関連の API URL と API キーに基づいて、アプリケーション リストの更新とアプリケーションのアップグレード/ロールバックのスクリプトを記述できます。スクリプトには以下が含まれます。

- アプリケーションリスト更新スクリプト

 curl -H"認証:ベアラートークン-pggq6:zlr95srxvb88vqdtctrt8h2d5k79k94h964x2vxvmhf7zk754ltskz" \
-X ポスト \
-k --接続タイムアウト 20 -m 30 --再試行遅延 2 --再試行 3 \
https://rancher.5gvr.komect.com/v3/projectCatalogs/p-6rt82:vr-chartmuseum?action=refresh

- アプリケーションアップグレードスクリプト

 curl -H "認証:ベアラートークン-pggq6:zlr95srxvb88vqdtctrt8h2d5k79k94h964x2vxvmhf7zk754ltskz" \
-d "{"externalId":"catalog://?catalog='vr-chartmusem'&template='cmvr-ingress'&version='1.0.0.beta'", "forceUpgrade":true, "valuesYaml":""}'"\
-X POST -k --接続タイムアウト 20 -m 30 --再試行遅延 2 --再試行 3 \
https://rancher.5gvr.komect.com/v3/project/local:p-6rt82/apps/p-6rt82

この時点で、Rancher がアプリケーション リストとアプリケーションのアップグレードに必要な API 呼び出しを自動的に更新するためのスクリプトの作成が完了しました。 K8s アプリケーションの自動グレースケール アップグレードを実現するには、Jenkins や Gitlab-ci などの継続的リリース ミドルウェアのジョブに関連スクリプトを統合するだけで済みます。従来の ssh スクリプト操作と比較して、より安全で効率的です。

もちろん、アプリケーション リストの更新とアプリケーションのアップグレードのための上記の 2 つの API に加えて、必要に応じて、Rancher 管理ページを通じて Deployment、Statefulset、または特定の Pod 専用の API インターフェースを学習し、より自動化された運用および保守機能を拡張することもできます。

参考文献

[1]100枚未満のスライドでKubernetesをわかりやすく解説 https://collabnix.com/demystifying-kubernetes-in-less-than-100-slides/

[2]CNCFランドスケープガイド https://landscape.cncf.io/guide#orchestration-management--scheduling-orchestration

[3] Rancher中国語ドキュメント https://docs.rancher.cn/​

<<:  IDC: 世界のパブリッククラウドサービスの収益は2021年に29%増加し、4,000億ドルを超える

>>:  クラウドネイティブ環境で仮想マシンを実行するための 4 つのオープンソース ツール

推薦する

共同購入サイト「24quan」が営業停止、従業員は集団で「長期休暇」

20日、共同購入サイト「24quan」は突然、共同購入業務の停止と従業員による集団「長期休暇」の実施...

インターネットのグローバル化:海外トラフィックの配当期間は過ぎたのか?

2018 年の海外インターネット業界を一言で表すとしたら何になりますか?多くの人が最も直感的に感じる...

Facebookはトルコ当局へのユーザーデータ提供を否定

Sina Technology News:北京時間6月27日早朝のニュースによると、Facebook...

クラウド セキュリティについて尋ねるべき 9 つの重要な質問

1. クラウド環境のコンプライアンスはどの程度ですか?クラウドで運用している企業組織には、規制やセキ...

QQメールグループプロモーションをうまく行う方法

みなさんこんにちは。私はSEOプロモーション業界に参入したばかりの新人です。毎日少し戸惑っていますが...

どのような友達リンクが高品質の外部リンクであるかについて簡単に説明します

高品質のフレンドリーリンクをどのように見分けるのでしょうか?最近、鄭州SEOは主要プラットフォームで...

OVH-$69/D-1520/32gメモリ(DDR4)/2X2Tハードディスク/250m無制限

皆様にお知らせしたいのですが、ovh はサーバーの新バージョンをリリースしました。以前の CPU は...

ついにクラウドエッジコラボレーションをわかりやすく説明してくれる人が出てきた

前述したように、クラウド コンピューティングはクラウドベースのコンピューティング方法であり、クラウド...

AppleはiPad3.comドメイン名の取得に成功した

7月6日のニュース:海外メディアの報道によると、Appleは最近、iPad3.comドメイン名の所有...

Kリストに掲載された企業ウェブサイトのランキング回復プロセス

最近最適化した企業ウェブサイトの全プロセスを皆さんと共有したいと思います。このウェブサイトは、Bai...

VPS格安販売業者、最も安いVPS

VPS を使用する顧客はレベルが異なり、目的も多様であるため、一部の友人は VPS に対して特に高い...

投稿した外部リンクを理解していますか?

ウェブマスターは、毎日 50、100 以上の外部リンクを投稿するために熱心に取り組んでいます。しかし...

時間との競争: Weimob のデータ復旧にはなぜ時間がかかるのでしょうか?

WeMallの「データベースを削除して逃走」事件から数日が経過した。 WeMallのサービスは完全に...

ウェブサイトの起動速度がウェブサイト全体の運用に与える影響の分析

今日は、ウェブサイトの起動速度がウェブサイト全体の動作に与える影響を詳しく分析します。ぜひ私とコミュ...