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内のアプリケーショントラッキングを初期化します。
アプリケーションステータスの確認
このコマンドを実行して、管理対象アプリケーションの大まかな動作ステータス (実行中、保留中、デグレード状態など) をチェックします。
Helm チャートオーケストレーションの詳細を表示する
次のコマンドを実行すると、ライブ同期イベント、ターゲットリビジョンステータス、Helm チャートの詳細ログ設定が表示されます。
アプリケーションを削除する
次のコマンドを実行してアプリケーション設定を削除し、実行中の Helm チャートリソースをターゲットクラスタから引き出します。