GitOps ツールによる Helm チャートのデプロイメント

GitOps フレームワークを使用して Kubernetes クラスタを管理している場合は、手動のhelm installコマンドを実行する代わりに、業界標準のツールを使用して Tenable One Cloud Exposure Helm チャートを簡単にデプロイおよび管理できます。

Git リポジトリを信頼できる唯一の情報源として確立することで、GitOps ツールはクラスタを希望する設定と自動的に同期し、手動による設定のドリフトを防ぎ、Git バージョン管理履歴を使用して Helm チャートのバージョン管理とパラメーターを簡単に追跡できるようにします。

Tenable は、Helm チャートのデプロイメントを管理するために Flux と Argo CD セットアップ の両方をサポートしています。

フラックスセットアップ

Fluxは、カスタムKubernetesリソース(HelmRepository、 HelmRelease、 Kustomization)に基づくモジュラー構成スタイルを利用して、Gitリポジトリから直接更新プログラムをプルします。

フラックスの初期化

Helm チャートをデプロイする前に、Flux がインストールされ、クラスタ環境に対して適切に設定されていることを確認してください。Flux 入門ガイドの公式実装手順に従うことができます。

リポジトリのレイアウトを設定する

クラウドサイバーエクスポージャー Helm チャートをデプロイするには、次のディレクトリレイアウトを使用して Git リポジトリ内のファイルを整理します。

コピー
./clusters/my-cluster/
  tenable-sync.yaml        # Flux Kustomization (The entry point)
./apps/tenable/
  kustomization.yaml       # Grouping all the files together
  tenable-repo.yaml        # HelmRepository source definition
  tenable-release.yaml     # HelmRelease deployment configuration
  tenable-secrets.yaml     # Kubernetes Secret for sensitive tokens

設定マニフェストの追加

Git リポジトリで、次の YAML ファイルをアプリケーションディレクトリ (./apps/tenable/) 内に追加します。

tenable-repo.yaml

このマニフェストは、Flux が公式 クラウドサイバーエクスポージャー Helm チャートをどこでフェッチするかを定義します。

コピー

YAML

apiVersion: source.toolkit.fluxcd.io/v1
kind: HelmRepository
metadata:
  name: tenable
  namespace: tenable-cloud-security-kubernetes-cluster
spec:
  interval: 1h
  url: https://charts.tenable.com/

tenable-release.yaml

これには、デプロイメントの手順が含まれています。クラウドサイバーエクスポージャー チャートバージョンがリンクされ、カスタムパブリック値がマッピングされ、プライベート認証値がシークレットファイルから Helm チャートにバインドされます。

コピー

YAML

apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
  name: tenable-cloud-security-kubernetes-cluster
  namespace: tenable-cloud-security-kubernetes-cluster
spec:
  interval: 1h
  install:
    createNamespace: true
  chart:
    spec:
      chart: cloud-security-kubernetes-cluster
      version: '>=1.0.0'
      sourceRef:
        kind: HelmRepository
        name: tenable
        namespace: flux-system
  values:
    apiUrl: "{}"
    containerImage:
      registryUsername: "{}"
  valuesFrom:
    - kind: Secret
      name: tenable-cloud-security-secrets
      valuesKey: apiKeyToken
      targetPath: apiKeyToken
    - kind: Secret
      name: tenable-cloud-security-secrets
      valuesKey: registryPassword
      targetPath: containerImage.registryPassword

tenable-secrets.yaml

このマニフェストには、Helm チャートの機密トークンと認証データが格納されています。これらの値を適用する前に、必ず Base64 でエンコードしてください。

コピー

YAML

apiVersion: v1
kind: Secret
metadata:
  name: tenable-cloud-security-secrets
  namespace: tenable-cloud-security-kubernetes-cluster
type: Opaque
data:
  apiKeyToken: {}
  registryPassword: {}

kustomization.yaml

このファイルは、Kubernetes マニフェストをバンドルするために同じ ./apps/tenable/ ディレクトリに存在する必要があります。

コピー

YAML

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
  - tenable-repo.yaml
  - tenable-secrets.yaml
  - tenable-release.yaml

エントリポイントの作成

クラスタ設定パス (./clusters/my-cluster/tenable-sync.yaml) でエントリポイントマニフェストを作成します。これにより、Helm チャートを実行するためにどのフォルダーをモニタリングおよび同期するべきかが Flux に通知されます。

コピー

YAML

apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
  name: tenable-app
  namespace: flux-system
spec:
  interval: 10m
  path: ./apps/tenable
  prune: true
  sourceRef:
    kind: GitRepository
    name: flux-system

Argo CD セットアップ

Argo CD は、統一されたアプリケーションカスタムリソース定義 (CRD) を介して Helm チャートの管理を直接処理し、Helm チャートのデプロイの状態を追跡するための一元化された Web ダッシュボードを提供します。

Argo CD のインストール

Argo CD をクラスタにインストールするには、公式の Helm リポジトリコマンドを使用できます。

コピー

Bash

# Add the official Argo Helm repository
helm repo add argo https://argoproj.github.io/argo-helm

# Install Argo CD into its own namespace
helm install argo-cd argo/argo-cd --namespace argocd --create-namespace

# Make sure all platform pods are running successfully
kubectl get pods -n argocd

便利な Argo CD アクション

以下で概説するアクションを使用して、コマンドラインから クラウドサイバーエクスポージャー Helm チャートの状態を追跡、監視、維持できます。

Argo CD アプリケーションマニフェスト

Helm チャートをデプロイするには、 Application マニフェストと呼ばれる YAML 形式の設定ファイルを作成する必要があります。このマニフェストは、Argo CD に対して Tenable Helm リポジトリをモニタリングし、特定のクラスタパラメーターに基づいてそのコンポーネントをデプロイするように指示します。

この YAML 設定ファイルを保存し、追跡対象の Git リポジトリに直接コミットする必要があります。

次の設定を Application.yamlとして保存します。

コピー

YAML

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: tenable-cloud-security
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://charts.tenable.com
    chart: cloud-security-kubernetes-cluster
    targetRevision: "1.1.0" # The CHART VERSION you need to run (fetch via: helm search repo tenable)
    helm:
      parameters:
        - name: apiKeyToken
          value: ""
        - name: apiUrl
          value: ""
        - name: containerImage.registryUsername
          value: ""
        - name: containerImage.registryPassword
          value: ""
        - name: name
          value: "cluster"
        - name: containerImage.registry
          value: ""
  destination:
    server: https://kubernetes.default.svc
    namespace:       # The target deployment namespace for the Tenable sensor
  syncPolicy:
    automated:
      selfHeal: true # Automatically reverts manual cluster modifications back to the Git state
      prune: true    # Automatically removes resources deleted from your config

アプリケーションマニフェストの適用

次のコマンドを実行してアプリケーションマニフェストを登録し、Argo CD内のアプリケーショントラッキングを初期化します。

コピー

Bash

kubectl apply -f Application.yaml
注意: Helm チャートのデプロイメントのライフサイクルは、Argo CD によってアクティブに管理され、内部的にレンダリングされます。結果として、 helm list -A などのローカルターミナルコマンドを実行する場合、リストされたデプロイメントは表示されません。

アプリケーションステータスの確認

このコマンドを実行して、管理対象アプリケーションの大まかな動作ステータス (実行中、保留中、デグレード状態など) をチェックします。

コピー

Bash

kubectl get applications -n argocd

Helm チャートオーケストレーションの詳細を表示する

次のコマンドを実行すると、ライブ同期イベント、ターゲットリビジョンステータス、Helm チャートの詳細ログ設定が表示されます。

コピー

Bash

kubectl アプリケーションを説明します tenable-cloud-security -n argocd

アプリケーションを削除する

次のコマンドを実行してアプリケーション設定を削除し、実行中の Helm チャートリソースをターゲットクラスタから引き出します。

コピー

Bash

kubectl delete application tenable-cloud-security -n argocd