ヘルムセキュリティ

Kubernetes 甚の最も人気のあるパッケヌゞ マネヌゞャヌに関する物語の本質は、絵文字を䜿甚しお衚すこずができたす。

  • ボックスは Helm (最新の Emoji リリヌスに最も近いものです) です。
  • ロック - セキュリティ;
  • この小さな男が問題の解決策です。

ヘルムセキュリティ

実際には、すべおがもう少し耇雑になり、ストヌリヌには次のような技術的な詳现が満茉です。 Helm を安党にする方法.

  • 知らなかったり忘れおしたった堎合に備えお、Helm ずは䜕なのかを簡単に説明したす。 それはどのような問題を解決するのか、そしおそれぱコシステムのどこに䜍眮するのか。
  • Helm アヌキテクチャを芋おみたしょう。 コンポヌネントのアヌキテクチャを理解せずに、セキュリティや、ツヌルや゜リュヌションの安党性を高める方法に぀いおの䌚話は成立したせん。
  • Helm コンポヌネントに぀いお説明したしょう。
  • 最も切実な疑問は将来、぀たり Helm 3 の新しいバヌゞョンです。 

この蚘事の内容はすべお Helm 2 に圓おはたりたす。このバヌゞョンは珟圚運甚䞭であり、おそらく珟圚䜿甚しおいるバヌゞョンであり、セキュリティ リスクが含たれおいるバヌゞョンです。


スピヌカヌに぀いお: アレクサンダヌ・ハペロフアレックス) は 10 幎間にわたっお開発され、コンテンツの改善に貢献しおいたす モスクワ Python Conf++ そしお委員䌚に参加したした ヘルムサミット。 珟圚、圌は Chainstack で開発リヌダヌずしお働いおいたす。これは、開発マネヌゞャヌず最終リリヌスの提䟛を担圓する担圓者のハむブリッドです。 ぀たり、補品の開発から運甚たですべおが行われる戊堎にありたす。

Chainstack は、小芏暡で掻発に成長しおいる新興䌁業であり、その䜿呜は、クラむアントが分散アプリケヌションの運甚のむンフラストラクチャず耇雑さを忘れられるようにするこずです。開発チヌムはシンガポヌルにありたす。 Chainstack に暗号通貚の売買を䟝頌するのではなく、゚ンタヌプラむズ ブロックチェヌン フレヌムワヌクに぀いお話したいず申し出れば、喜んで答えおくれるでしょう。

ヘルメット

これは、Kubernetes のパッケヌゞ (チャヌト) マネヌゞャヌです。 アプリケヌションを Kubernetes クラスタヌに移行するための最も盎感的で汎甚的な方法。

ヘルムセキュリティ

もちろん、ここで話しおいるのは、独自の YAML マニフェストを䜜成しお小さなナヌティリティを䜜成するよりも、より構造的で産業的なアプロヌチに぀いおです。

Helm は珟圚入手可胜で人気のある最高のものです。

なぜヘルムなのか 䞻な理由は、CNCF によっおサポヌトされおいるためです。 Cloud Native は倧芏暡な組織であり、Kubernetes、etcd、Fluentd などのプロゞェクトの芪䌚瀟です。

もう 2019 ぀の重芁な事実は、Helm が非垞に人気のあるプロゞェクトであるずいうこずです。 12 幎 XNUMX 月に Helm を安党にする方法に぀いお話し始めたずき、このプロゞェクトには GitHub で XNUMX 個のスタヌが぀きたした。 XNUMX月たでにその数はXNUMX侇XNUMX千人になった。

Helm に興味がある人は倚いので、ただ䜿甚しおいない堎合でも、そのセキュリティに぀いお知っおおくず圹に立ちたす。 安党性は重芁です。

コア Helm チヌムは Microsoft Azure によっおサポヌトされおいるため、他の倚くのプロゞェクトずは異なり、かなり安定したプロゞェクトです。 3 月䞭旬の Helm 2 Alpha XNUMX のリリヌスは、非垞に倚くの人々がこのプロゞェクトに取り組んでおり、Helm を開発および改善する意欲ず゚ネルギヌを持っおいるこずを瀺しおいたす。

ヘルムセキュリティ

Helm は、Kubernetes でのアプリケヌション管理のいく぀かの根本的な問題を解決したす。

  • アプリケヌションのパッケヌゞ化。 WordPress 䞊の「Hello, World」のようなアプリケヌションでも、すでに耇数のサヌビスで構成されおおり、それらをたずめおパッケヌゞ化する必芁がありたす。
  • これらのアプリケヌションの管理に䌎う耇雑さを管理したす。
  • アプリケヌションのむンストヌルたたはデプロむ埌に終了しないラむフサむクル。 それは存続し続けたすが、曎新する必芁がありたす。Helm はこれを支揎し、これに察する適切な察策ずポリシヌを導入しようずしたす。

袋詰め それは明確な方法で線成されおいたす。Linux、Windows、たたは MacOS の通垞のパッケヌゞ マネヌゞャヌの動䜜に完党に準拠したメタデヌタがありたす。 ぀たり、リポゞトリ、さたざたなパッケヌゞの䟝存関係、アプリケヌションのメタ情報、蚭定、構成機胜、情報のむンデックス䜜成などです。Helm を䜿甚するず、これらすべおを取埗しおアプリケヌションで䜿甚できたす。

耇雑さの管理。 同じタむプのアプリケヌションが倚数ある堎合は、パラメヌタ化が必芁です。 テンプレヌトはこれに由来したすが、テンプレヌトを䜜成する独自の方法を考え出す必芁を避けるために、Helm が提䟛するものをすぐに䜿甚できたす。

アプリケヌションのラむフサむクル管理 -私の意芋では、これは最も興味深い未解決の質問です。 これが私が昔ヘルムに来た理由です。 私たちはアプリケヌションのラむフサむクルを垞に監芖する必芁があり、CI/CD ずアプリケヌションのサむクルをこのパラダむムに移行したいず考えおいたした。

Helm を䜿甚するず、次のこずが可胜になりたす。

  • 導入を管理し、構成ずリビゞョンの抂念を導入したす。
  • ロヌルバックが正垞に実行されたす。
  • さたざたなむベントにフックを䜿甚したす。
  • 远加のアプリケヌションチェックを远加し、その結果に応答したす。

さらに ヘルムには「バッテリヌ」が付いおいたす - プラグむンの圢で含めるこずができる膚倧な数の䟿利なもので、あなたの生掻を簡玠化したす。 プラグむンは独立しお䜜成でき、完党に分離されおおり、調和のずれたアヌキテクチャを必芁ずしたせん。 䜕かを実装したい堎合は、それをプラグむンずしお実行し、堎合によっおはアップストリヌムに含めるこずをお勧めしたす。

Helm は XNUMX ぀の䞻芁な抂念に基づいおいたす。

  • チャヌトリポゞトリ — マニフェストで䜿甚できるパラメヌタ化の説明ず配列。 
  • 蚭定 —぀たり、適甚される倀 (テキスト、数倀など)。
  • リリヌス 䞊郚の XNUMX ぀のコンポヌネントを収集し、それらを合わせお Release に倉換したす。 リリヌスはバヌゞョン管理できるため、むンストヌル時には小さく、アップグレヌド、ダりングレヌド、たたはロヌルバック時には倧きくなる、組織化されたラむフ サむクルを実珟できたす。

ヘルムアヌキテクチャ

この図は、Helm の高レベルのアヌキテクチャを抂念的に瀺しおいたす。

ヘルムセキュリティ

Helm は Kubernetes に関連するものであるこずを思い出しおください。 したがっお、Kubernetes クラスタヌ (四角圢) なしではやっおいけたせん。 kube-apiserver コンポヌネントはマスタヌ䞊に存圚したす。 Helm がなければ Kubeconfig がありたす。 Helm は、コンピュヌタヌ、ラップトップ、メむンフレヌムなど、あらゆるものにむンストヌルされる XNUMX ぀の小さなバむナリ (Helm CLI ナヌティリティ) を提䟛したす。

しかし、これでは十分ではありたせん。 Helm には Tiller ず呌ばれるサヌバヌ コンポヌネントがありたす。 これはクラスタヌ内での Helm の圹割を衚しおおり、他のクラスタヌず同様に、Kubernetes クラスタヌ内のアプリケヌションです。

Chart Repo の次のコンポヌネントは、チャヌトを含むリポゞトリです。 公匏リポゞトリもあれば、䌁業やプロゞェクトのプラむベヌトリポゞトリもあるかもしれたせん。

盞互䜜甚

Helm を䜿甚しおアプリケヌションをむンストヌルする堎合に、アヌキテクチャ コンポヌネントがどのように察話するかを芋おみたしょう。

  • 私たちは話しおいる Helm install, リポゞトリ (Chart Repo) にアクセスし、Helm チャヌトを取埗したす。

  • Helm ナヌティリティ (Helm CLI) は Kubeconfig ず察話しお、どのクラスタヌに接続するかを刀断したす。 
  • この情報を受け取るず、ナヌティリティはクラスタヌ内にある Tiller をアプリケヌションずしお参照したす。 
  • Tiller は Kube-apiserver を呌び出しお、Kubernetes でアクションを実行し、いく぀かのオブゞェクト (サヌビス、ポッド、レプリカ、シヌクレットなど) を䜜成したす。

次に、図を耇雑にしお、Helm アヌキテクチャ党䜓が危険にさらされる可胜性のある攻撃ベクトルを確認したす。 そしお、私たちは圌女を守ろうずしたす。

攻撃ベクトル

最初の朜圚的な匱点は、 特暩API - ナヌザヌ。 蚈画の䞀環ずしお、これは Helm CLI ぞの管理者アクセス暩を取埗したハッカヌです。

特暩のない API ナヌザヌ たた、近くにあるず危険が生じる可胜性がありたす。 このようなナヌザヌは異なるコンテキストを持ちたす。たずえば、Kubeconfig 蚭定で XNUMX ぀のクラスタヌ名前空間に固定できたす。

最も興味深い攻撃ベクトルは、Tiller 近くのクラスタヌ内に垞駐し、それにアクセスできるプロセスである可胜性がありたす。 これは、クラスタヌのネットワヌク環境を監芖する Web サヌバヌたたはマむクロサヌビスです。

珍しいものの、たすたす人気が高たっおいる攻撃の亜皮には、Chart Repo が関係しおいたす。 悪意のある䜜成者によっお䜜成されたチャヌトには安党でないリ゜ヌスが含たれおいる可胜性がありたすが、それを信じおチャヌトを完成させたす。 たたは、公匏リポゞトリからダりンロヌドしたチャヌトを眮き換えお、たずえばポリシヌの圢匏でリ゜ヌスを䜜成し、そのアクセスを゚スカレヌションするこずもできたす。

ヘルムセキュリティ

これら XNUMX ぀の偎面すべおからの攻撃をかわしお、Helm アヌキテクチャのどこに問題があるのか​​、そしおおそらくどこに問題がないのかを把握しおみたしょう。

図を拡倧しお芁玠を远加しおみたしょう。ただし、基本的なコンポヌネントはすべおそのたたにしおおきたす。

ヘルムセキュリティ

Helm CLI は Chart Repo ず通信し、Kubeconfig ず察話し、䜜業がクラスタヌの Tiller コンポヌネントに転送されたす。

Tiller は XNUMX ぀のオブゞェクトで衚されたす。

  • Tiller-deploy svc。特定のサヌビスを公開したす。
  • Tiller-deploy ポッド (図では XNUMX ぀のレプリカ内の単䞀コピヌ)。ロヌド党䜓が実行され、クラスタヌにアクセスしたす。

察話にはさたざたなプロトコルずスキヌムが䜿甚されたす。 セキュリティの芳点から、私たちは次のこずに最も関心を持っおいたす。

  • Helm CLI がチャヌト リポゞトリにアクセスするメカニズム: どのようなプロトコル、認蚌があるか、そしおそれを䜿甚しお䜕ができるか。
  • Helm CLI が kubectl を䜿甚しお Tiller ず通信する際に䜿甚するプロトコル。 これはクラスタヌ内にむンストヌルされる RPC サヌバヌです。
  • Tiller 自䜓は、クラスタヌ内に存圚し、Kube-apiserver ず察話するマむクロサヌビスにアクセスできたす。

ヘルムセキュリティ

これらすべおの領域に぀いお順番に説明しおいきたす。

RBAC

RBAC が有効になっおいない限り、Helm たたはクラスタヌ内のその他のサヌビスのセキュリティに぀いお話しおも意味がありたせん。

これは最新の掚奚事項ではないようですが、倚くの人が運甚環境であっおもただ RBAC を有効にしおいないず思いたす。これは、非垞に手間がかかり、倚くの蚭定が必芁なためです。 ただし、これを行うこずをお勧めしたす。

ヘルムセキュリティ

https://rbac.dev/ — RBAC のりェブサむト匁護士。 これには、RBAC のセットアップに圹立ち、RBAC が優れおいる理由ず、基本的に運甚環境で RBAC を䜿甚する方法を瀺す、倧量の興味深い資料が含たれおいたす。

Tiller ず RBAC がどのように機胜するかを説明しおみたす。 Tiller は、特定のサヌビス アカりントの䞋でクラスタヌ内で動䜜したす。 通垞、RBAC が構成されおいない堎合、これはスヌパヌナヌザヌになりたす。 基本構成では、Tiller が管理者になりたす。 これが、Tiller がクラスタヌぞの SSH トンネルであるず蚀われる理由です。 実際、これは真実であるため、䞊の図の既定のサヌビス アカりントの代わりに別の専甚サヌビス アカりントを䜿甚できたす。

Helm を初期化し、サヌバヌに初めおむンストヌルするずきは、次を䜿甚しおサヌビス アカりントを蚭定できたす。 --service-account。 これにより、必芁な最小限の暩限セットを持぀ナヌザヌを䜿甚できるようになりたす。 確かに、そのような「ガヌランド」、぀たりRoleずRoleBindingを䜜成する必芁がありたす。

ヘルムセキュリティ

残念ながら、Helm はこれを行っおくれたせん。 Helm を枡すために、あなたたたは Kubernetes クラスタヌ管理者は、サヌビス アカりントのロヌルずロヌルバむンディングのセットを事前に準備する必芁がありたす。

疑問が生じたす。Role ず ClusterRole の違いは䜕ですか? 違いは、特殊な名前空間でのみ機胜する通垞のロヌルやロヌルバむンディングずは異なり、ClusterRole はすべおの名前空間で機胜するこずです。 クラスタヌ党䜓ずすべおの名前空間に察しおポリシヌを構成するこずも、各名前空間に察しお個別にカスタマむズするこずもできたす。

RBAC が別の倧きな問題を解決するこずは蚀及する䟡倀がありたす。 残念ながら、Helm はマルチテナントではない (マルチテナントをサポヌトしおいない) ず倚くの人が䞍満を抱いおいたす。 耇数のチヌムがクラスタヌを䜿甚しお Helm を䜿甚する堎合、このクラスタヌ内でポリシヌを蚭定しおアクセスを制限するこずは基本的に䞍可胜です。これは、Helm が実行される特定のサヌビス アカりントがあり、その䞋からクラスタヌ内のすべおのリ゜ヌスが䜜成されるためです。 、それは時々非垞に䞍䟿です。 これは真実です - バむナリ ファむル自䜓やプロセスず同様に、 Helm Tiller にはマルチテナンシヌの抂念がありたせん.

ただし、クラスタヌ内で Tiller を耇数回実行できる優れた方法がありたす。 これに問題はなく、Tiller はすべおの名前空間で起動できたす。 したがっお、RBAC、Kubeconfig をコンテキストずしお䜿甚し、特別な Helm ぞのアクセスを制限できたす。

このようになりたす。

ヘルムセキュリティ

たずえば、異なるチヌム (XNUMX ぀の名前空間) のコンテキストを持぀ XNUMX ぀の Kubeconfig がありたす: 開発チヌム甚の X チヌムず管理クラスタヌ甚です。 管理クラスタには独自のワむド Tiller があり、これは Kube-system 名前空間にあり、察応する高床なサヌビス アカりントです。 たた、開発チヌム甚の別の名前空間により、サヌビスを特別な名前空間にデプロむできるようになりたす。

これは実行可胜なアプロヌチです。Tiller は予算に倧きな圱響を䞎えるほど電力を消費したせん。 これは簡単な解決策の XNUMX ぀です。

自由に Tiller を個別に構成し、チヌム、特定の開発者、たたは環境 (開発、ステヌゞング、運甚) のコンテキストを Kubeconfig に提䟛できたす (すべおが同じクラスタヌ䞊に存圚するかどうかは疑わしいですが、これは可胜です)。

話を続けお、RBAC から話題を倉えお、ConfigMap に぀いお話したしょう。

ConfigMap

Helm はデヌタ ストアずしお ConfigMap を䜿甚したす。 アヌキテクチャに぀いお話したずき、リリヌス、構成、ロヌルバックなどに関する情報を保存するデヌタベヌスはどこにもありたせんでした。これには ConfigMaps が䜿甚されたす。

ConfigMap の䞻な問題は既知です。ConfigMap は原理的に安党ではありたせん。 機密デヌタを保存するこずは䞍可胜です。 ここでは、パスワヌドなど、サヌビスの範囲を超えおはいけないすべおのこずに぀いお話したす。 珟時点での Helm の最もネむティブな方法は、ConfigMap の䜿甚からシヌクレットの䜿甚に切り替えるこずです。

これは非垞に簡単に行われたす。 Tiller 蚭定をオヌバヌラむドし、ストレヌゞがシヌクレットになるように指定したす。 その埌、展開ごずに、ConfigMap ではなくシヌクレットを受け取りたす。

ヘルムセキュリティ

シヌクレット自䜓は奇劙な抂念であり、あたり安党ではないず䞻匵する人もいるでしょう。 ただし、Kubernetes 開発者自身がこれを行っおいるこずを理解する䟡倀がありたす。 バヌゞョン 1.10 以降、぀たりかなり前から、少なくずもパブリック クラりドでは、適切なストレヌゞに接続しおシヌクレットを保存するこずが可胜でした。 チヌムは珟圚、シヌクレット、個々のポッド、たたはその他の゚ンティティぞのアクセスをより適切に分散する方法に取り組んでいたす。

Storage Helm をシヌクレットに転送するこずをお勧めしたす。そうすれば、シヌクレットは䞀元的に保護されたす。

もちろん残りたす デヌタストレヌゞ制限は1MB。 ここでの Helm は、ConfigMap の分散ストレヌゞずしお etcd を䜿甚したす。 そこで圌らは、これがレプリケヌションなどに適したデヌタチャンクであるず考えたした。 これに぀いおは Reddit で興味深い議論がありたす。週末にこの面癜い読み物を芋぀けるか、抜粋を読むこずをお勧めしたす。 ここで.

チャヌトリポゞトリ

チャヌトは瀟䌚的に最も脆匱であり、特にストック ゜リュヌションを䜿甚する堎合は「䞭間者」の発生源になる可胜性がありたす。 たず最初に、HTTP 経由で公開されるリポゞトリに぀いお話したす。

Helm Repo を HTTPS 経由で公開する必芁があるこずは間違いありたせん。これが最良のオプションであり、安䟡です。

に泚意を払う チャヌト眲名メカニズム。 このテクノロゞヌは非垞にシンプルです。 これは GitHub で䜿甚するものず同じもので、公開キヌず秘密キヌを備えた通垞の PGP マシンです。 必芁なキヌを甚意し、すべおに眲名しお、これが実際にあなたのチャヌトであるこずを確認しおください。

加えお、 Helm クラむアントは TLS をサポヌトしたす (サヌバヌ偎の HTTP の意味ではなく、盞互 TLS)。 通信するにはサヌバヌキヌずクラむアントキヌを䜿甚できたす。 正盎に蚀うず、私は盞互蚌明曞が奜きではないので、そのような仕組みは䜿っおいたせん。 基本的に、 チャヌトミュヌゞアム - Helm 2 の Helm リポゞトリをセットアップするためのメむン ツヌル - 基本認蚌もサポヌトしおいたす。 より䟿利で静かな堎合は、基本認蚌を䜿甚できたす。

プラグむンもありたす ヘルム-GCを䜿甚するず、Google Cloud Storage で Chart Repos をホストできるようになりたす。 これは非垞に䟿利で、うたく機胜し、説明されおいるすべおのメカニズムがリサむクルされるため、非垞に安党です。

ヘルムセキュリティ

HTTPS たたは TLS を有効にし、mTLS を䜿甚し、基本認蚌を有効にしおリスクをさらに軜枛するず、Helm CLI ず Chart Repo を䜿甚した安党な通信チャネルが埗られたす。

gRPC API

次のステップは非垞に重芁です。Tiller を保護するこずです。Tiller はクラスタヌ内にあり、䞀方ではサヌバヌですが、他方では、それ自䜓が他のコンポヌネントにアクセスし、誰かになりすたそうずしたす。

すでに述べたように、Tiller は gRPC を公開するサヌビスであり、Helm クラむアントは gRPC 経由で Tiller にアクセスしたす。 もちろん、デフォルトでは TLS は無効になっおいたす。 なぜこれが行われたのかは議論の䜙地がありたすが、最初のセットアップを簡玠化するためだず思われたす。

本番環境やステヌゞングの堎合でも、gRPC で TLS を有効にするこずをお勧めしたす。

私の意芋では、チャヌトの mTLS ずは異なり、これはここでは適切であり、PQI むンフラストラクチャの生成、蚌明曞の䜜成、Tiller の起動、初期化䞭の蚌明曞の転送ずいう非垞に簡単に実行されたす。 この埌、生成された蚌明曞ず秘密キヌを自分自身に提瀺しお、すべおの Helm コマンドを実行できたす。

ヘルムセキュリティ

こうするこずで、クラスタヌの倖郚から Tiller ぞのすべおのリク゚ストから身を守るこずができたす。

そのため、Tiller ぞの接続チャネルを確保し、すでに RBAC に぀いお議論し、Kubernetes API サヌバヌの暩限を調敎しお、察話できるドメむンを削枛したした。

保護されたヘルム

最終的な図を芋おみたしょう。 同じアヌキテクチャで、同じ矢印が付いおいたす。

ヘルムセキュリティ

すべおの接続を安党に緑色で描画できるようになりたした。

  • Chart Repo の堎合は、TLS たたは mTLS ず基本認蚌を䜿甚したす。
  • Tiller の mTLS は、TLS を䜿甚しお gRPC サヌビスずしお公開され、蚌明曞を䜿甚したす。
  • クラスタヌは、R​​ole ず RoleBinding を持぀特別なサヌビス アカりントを䜿甚したす。 

私たちはクラスタヌを倧幅に保護したしたが、賢い人がこう蚀いたした。

「絶察に安党な解決策は XNUMX ぀だけありたす。それは、電源を切ったコンピュヌタヌであり、コンクリヌトの箱の䞭に眮かれ、兵士によっお守られおいるのです。」

デヌタを操䜜しお新しい攻撃ベクトルを芋぀けるには、さたざたな方法がありたす。 しかし、私はこれらの掚奚事項が安党性に関する基本的な業界暙準を達成するず確信しおいたす。

ボヌナス

この郚分はセキュリティずは盎接関係ありたせんが、圹立ちたす。 あたり知られおいない面癜いこずをいく぀か玹介したす。 たずえば、公匏および非公匏のチャヌトを怜玢する方法です。

リポゞトリ内 github.com/helm/charts 珟圚、玄 300 のチャヌトず XNUMX ぀のストリヌム (stable ず incubator) がありたす。 貢献した人なら誰でも、保育噚から厩舎に行くのがいかに難しく、厩舎から飛び出すのがいかに簡単かをよく知っおいたす。 ただし、これは、パッケヌゞを䟿利に怜玢できるポヌタルではないずいう単玔な理由から、Prometheus やその他の奜きなもののチャヌトを怜玢するのに最適なツヌルではありたせん。

でもサヌビスはあるよ ハブ.ヘルム.shこれにより、チャヌトの怜玢がさらに䟿利になりたす。 最も重芁なのは、さらに倚くの倖郚リポゞトリず玄 800 のチャヌムが利甚できるこずです。 さらに、䜕らかの理由でチャヌトを安定版に送信したくない堎合は、リポゞトリに接続できたす。

Hub.helm.sh を詊しお、䞀緒に開発したしょう。 このサヌビスは Helm プロゞェクトの䞋にあり、フロント゚ンド開発者で倖芳を改善したいだけであれば、その UI に貢献するこずもできたす。

こちらにも泚目しおいただきたいのですが、 オヌプンサヌビスブロヌカヌAPIの統合。 面倒でわかりにくいように思えたすが、誰もが盎面する問題を解決したす。 簡単な䟋で説明したしょう。

ヘルムセキュリティ

埓来のアプリケヌションである WordPress を実行したい Kubernetes クラスタヌがありたす。 通垞、すべおの機胜を利甚するにはデヌタベヌスが必芁です。 さたざたな゜リュヌションがあり、たずえば、独自のステヌトフル サヌビスを起動できたす。 これはあたり䟿利ではありたせんが、倚くの人がそうしおいたす。

私たち Chainstack のように、MySQL や PostgreSQL などのマネヌゞド デヌタベヌスをサヌバヌに䜿甚しおいる䌁業もいたす。 そのため、圓瀟のデヌタベヌスはクラりド内のどこかに配眮されおいたす。

しかし、問題が発生したす。サヌビスをデヌタベヌスに接続し、デヌタベヌス フレヌバヌを䜜成し、資栌情報を転送しお、それを䜕らかの方法で管理する必芁がありたす。 通垞、これらはすべおシステム管理者たたは開発者によっお手動で行われたす。 申し蟌みが少ない堎合でも問題ありたせん。 数が倚い堎合はコンバむンが必芁です。 そのようなハヌベスタヌがありたす - それはサヌビスブロヌカヌです。 これにより、パブリック クラりド クラスタヌ甚の特別なプラグむンを䜿甚し、API であるかのように、ブロヌカヌを通じおプロバむダヌにリ゜ヌスを泚文できたす。 これを行うには、ネむティブ Kubernetes ツヌルを䜿甚できたす。

ずおもシンプルです。 たずえば、基本局を䜿甚しお Azure のマネヌゞド MySQL にク゚リを実行できたす (これは構成可胜です)。 Azure API を䜿甚しお、デヌタベヌスが䜜成され、䜿甚できるように準備されたす。 これに干枉する必芁はありたせん。プラグむンがこれを担圓したす。 たずえば、OSBA (Azure プラグむン) は資栌情報をサヌビスに返し、それを Helm に枡したす。 クラりド MySQL で WordPress を䜿甚できるようになり、管理されたデヌタベヌスをたったく扱わず、内郚のステヌトフル サヌビスに぀いお心配する必芁がなくなりたす。

Helm は、䞀方ではサヌビスのデプロむを可胜にし、他方ではクラりド プロバむダヌのリ゜ヌスを消費できるようにする接着剀ずしお機胜するず蚀えたす。

独自のプラグむンを䜜成しお、このストヌリヌ党䜓をオンプレミスで䜿甚するこずができたす。 そうすれば、䌁業クラりド プロバむダヌ甚の独自のプラグむンを䜜成するだけです。 特に芏暡が倧きく、開発、ステヌゞング、たたは機胜のむンフラストラクチャ党䜓を迅速にデプロむしたい堎合は、このアプロヌチを詊すこずをお勧めしたす。 これにより、運甚や DevOps が楜になりたす。

すでに述べたもう䞀぀の発芋は、 Helm-gcs プラグむンこれにより、Google バケット (オブゞェクト ストレヌゞ) を䜿甚しお Helm チャヌトを保存できるようになりたす。

ヘルムセキュリティ

䜿甚を開始するには XNUMX ぀のコマンドのみが必芁です。

  1. プラグむンをむンストヌルしたす。
  2. それを開始したす。
  3. gcp にあるバケットぞのパスを蚭定したす。
  4. 暙準的な方法でチャヌトを公開したす。

利点は、ネむティブ gcp メ゜ッドが認蚌に䜿甚されるこずです。 サヌビス アカりント、開発者アカりントなど、奜きなものを䜿甚できたす。 非垞に䟿利で、運甚コストもかかりたせん。 私ず同じように、opsless の哲孊を掚進する堎合、特に小芏暡なチヌムにずっお、これは非垞に䟿利です。

代替案

Helm だけがサヌビス管理゜リュヌションではありたせん。 これに぀いおは倚くの疑問があり、それがおそらく第 XNUMX バヌゞョンがこれほど早く登堎した理由でしょう。 もちろん代替手段はありたす。

これらは、Ksonnet や Metaparticle などの特殊な゜リュヌションにするこずができたす。 埓来のむンフラストラクチャ管理ツヌル (Ansible、Terraform、Chef など) を、私が説明したのず同じ目的に䜿甚できたす。

最埌に解決策がありたす オペレヌタヌフレヌムワヌク、人気が高たっおいたす。

Operator Framework は、Helm の代替ずしお怜蚎すべき最䞊䜍の遞択肢です。

CNCF ず Kubernetes によりネむティブであり、 しかし参入障壁ははるかに高い、より倚くのプログラムを䜜成し、マニフェストの蚘述を少なくする必芁がありたす。

Draft、Scaffoldなど、さたざたなアドオンがありたす。 たずえば、開発者がテスト環境をデプロむするために Helm を送信しお起動するサむクルが簡玠化されるなど、䜜業が倧幅に楜になりたす。 私は圌らを゚ンパワラヌず呌びたす。

これは、すべおがどこにあるかを瀺す芖芚的なチャヌトです。

ヘルムセキュリティ

X 軞は䜕が起こっおいるかを個人的に制埡できるレベル、Y 軞は Kubernetes のネむティブ性のレベルです。 Helm バヌゞョン 2 はその䞭間に䜍眮したす。 バヌゞョン 3 では、それほど倧きくはありたせんが、制埡ずネむティブ性のレベルの䞡方が向䞊したした。 Ksonnet レベルの゜リュヌションは、䟝然ずしお Helm 2 よりも劣っおいたす。しかし、この䞖界に他に䜕があるのか​​を知るためには、怜蚎する䟡倀がありたす。 もちろん、構成マネヌゞャヌはナヌザヌの管理䞋にありたすが、それは決しお Kubernetes にネむティブなものではありたせん。

Operator Framework は完党に Kubernetes にネむティブであり、より゚レガントか぀綿密に管理できるようになりたす (ただし、゚ントリヌ レベルに぀いおは芚えおおいおください)。 むしろ、これは、Helm を䜿甚しお膚倧な数のアプリケヌションをパッケヌゞ化するためのマスハヌベスタヌではなく、特殊なアプリケヌションずその管理の䜜成に適しおいたす。

゚クステンダヌは、単に制埡を少し改善したり、ワヌクフロヌを補完したり、CI/CD パむプラむンの手を抜いたりするだけです。

ヘルムの未来

良いニュヌスは、Helm 3 が登堎するずいうこずです。Helm 3.0.0-alpha.2 のアルファ版がすでにリリヌスされおいるので、詊しおみるこずができたす。 非垞に安定しおいたすが、機胜はただ制限されおいたす。

Helm 3 が必芁な理由は䜕ですか? たず、今回のお話は、 ティラヌの倱螪、コンポヌネントずしお。 すでにおわかりのずおり、アヌキテクチャのセキュリティの芳点からすべおが簡玠化されるため、これは倧きな前進です。

Helm 2 が䜜成されたずき、぀たり Kubernetes 1.8 の頃、あるいはそれ以前のころ、倚くの抂念が未熟でした。 たずえば、CRD コンセプトは珟圚積極的に実装されおおり、Helm は CRDを䜿甚する構造を保存したす。 サヌバヌ郚分をメンテナンスせずにクラむアントのみを䜿甚するこずも可胜になりたす。 したがっお、ネむティブ Kubernetes コマンドを䜿甚しお構造ずリ゜ヌスを操䜜したす。 これは倧きな前進です。

衚瀺されたす ネむティブOCIリポゞトリのサポヌト (オヌプンコンテナむニシアチブ)。 これは倧きな取り組みであり、Helm は䞻にチャヌトを投皿するこずに興味を持っおいたす。 たずえば、Docker Hub は倚くの OCI 暙準をサポヌトしおいるずいうこずになりたす。 掚枬ではありたせんが、おそらく埓来の Docker リポゞトリ プロバむダヌが Helm チャヌトをホストする機䌚を提䟛し始めるでしょう。

私にずっお物議を醞す話は、 Luaのサポヌト、スクリプトを䜜成するためのテンプレヌト ゚ンゞンずしお。 私は Lua の倧ファンではありたせんが、これは完党にオプションの機胜です。 これを 3 回確認したした。Lua を䜿甚する必芁はありたせん。 したがっお、Lua を䜿えるようになりたい人、Go が奜きな人は、私たちの巚倧なキャンプに参加し、そのために go-tmpl を䜿甚しおください。

最埌に、私に決定的に欠けおいたのは、 スキヌマの出珟ずデヌタ型の怜蚌。 int たたは string に関する問題はなくなり、れロを二重匕甚笊で囲む必芁もなくなりたす。 これを倀ずしお明瀺的に蚘述できる JSONS スキヌマが衚瀺されたす。

倧幅に手盎しされる予定 むベント駆動型モデル。 それはすでに抂念的に説明されおいたす。 Helm 3 ブランチを芋るず、むベントやフック、その他のものがどれだけ远加されおいるかがわかりたす。これにより、デプロむメント プロセスずその反応が倧幅に簡玠化され、䞀方で制埡が远加されたす。

Helm 3 は、よりシンプルで、より安党で、より楜しいものになりたす。これは、Helm 2 が気に入らないからではなく、Kubernetes がより高床になっおいるためです。 したがっお、Helm は Kubernetes の開発を䜿甚し、その䞊に Kubernetes の優れたマネヌゞャヌを䜜成できたす。

もう䞀぀の良いニュヌスは、 DevOpsConf アレクサンダヌ・ハペロフはこう蚀いたす。 コンテナは安党に保おたすか? 開発、テスト、運甚プロセスの統合に関する䌚議がモスクワで開催されるこずをお知らせしたす。 30月1日ずXNUMX月XNUMX日。 20月XNUMX日たでならただできるよ レポヌトを送信 ゜リュヌションに関するあなたの経隓に぀いお教えおください たくさんのうちの䞀぀ DevOps アプロヌチのタスク。

カンファレンスのチェックポむントずニュヌスをフォロヌしおください。 メヌリングリスト О 電報チャンネル.

出所 habr.com

コメントを远加したす