aquasecurity/aqua-helm
GitHub: aquasecurity/aqua-helm
这是一个用于在 Kubernetes 中部署 Aqua Security 安全组件的 Helm Charts 仓库,简化安全基础设施的安装和管理。
Stars: 89 | Forks: 189


# 概述
本页提供了在 Kubernetes 集群中使用 [Helm 包管理器](https://helm.sh/) 部署 Aqua Enterprise 的说明。
请参考 Aqua Enterprise 产品文档以了解更广泛的背景:[使用 Helm Charts 部署 Kubernetes](https://docs.aquasec.com/v2022.4/docs/kubernetes-with-helm)。
## 目录
- [概述](#overview)
- [目录](#contents)
- [Helm Charts](#helm-charts)
- [部署说明](#deployment-instructions)
- [(可选) 添加 Aqua Helm 仓库](#optional-add-the-aqua-helm-repository)
- [适用于 Helm 2.x](#for-helm-2x)
- [适用于 Helm 3.x](#for-helm-3x)
- [部署 Helm Charts](#deploy-the-helm-charts)
- [错误 2](#error-2)
- [错误 3](#error-3)
- [快速启动部署(非生产用途)](#quick-start-deployment-not-for-production-purposes)
- [问题与反馈](#issues-and-feedback)
## Helm Charts
此仓库包含以下 Charts;它们可以单独部署:
| Chart | 描述 | 最新 Chart 版本 |
|-------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------|
| [Server](server/) | 部署控制台、数据库和网关组件;可选部署 Envoy 组件 | 2022.4.36 |
| [Enforcer](enforcer/) | 部署 Aqua Enforcer 守护进程集 | 2022.4.30 |
| [Scanner](scanner/) | 部署 Aqua Scanner 部署 | 2022.4.15 |
| [KubeEnforcer](kube-enforcer/) | 部署 Aqua KubeEnforcer | 2022.4.79 |
| [Gateway](gateway) | 部署 Aqua 独立网关 | 2022.4.18 |
| [Tenant-Manager](tenant-manager/) | 部署 Aqua 租户管理器 | 2022.4.1 |
| [Cyber Center](cyber-center/) | 为离线环境(气隙)部署 Aqua CyberCenter | 2022.4.6 |
| [Cloud Connector](cloud-connector/) | 部署 Aqua Cloud Connector | 2022.4.5 |
| [QuickStart](aqua-quickstart/) | 不适用于生产用途(参见[下文](#quick-start-deployment-not-for-production-purposes))。部署控制台、数据库、网关和 KubeEnforcer 组件 | 2022.4.2 |
| [Codesec-Agent](codesec-agent/) | 部署 Argon Broker | 1.2.11 |
# 部署说明
Aqua Enterprise 部署包含以下组件:
- Server(控制台、数据库和网关)
- Enforcer
- KubeEnforcer
- Scanner(可选)
请遵循本节中的步骤进行生产级部署。您可以克隆 aqua-helm git 仓库,或者添加我们的 Helm 私有仓库 ([https://helm.aquasec.com](https://helm.aquasec.com))。
### (可选) 添加 Aqua Helm 仓库
1. 通过执行以下命令将 Aqua Helm 仓库添加到您的本地 Helm 仓库:
```
helm repo add aqua-helm https://helm.aquasec.com
helm repo update
```
2. 在我们的 Aqua Helm 仓库中搜索所有最新版本的组件
##### 适用于 Helm 2.x
```
helm search aqua-helm
# 示例
helm search aqua-helm --versions
helm search aqua-helm --version 2022.4
```
##### 适用于 Helm 3.x
```
helm search repo aqua-helm
# 示例
helm search repo aqua-helm --versions
helm search repo aqua-helm --version 2022.4
```
示例输出:
```
NAME CHART VERSION APP VERSION DESCRIPTION
aqua-helm/codesec-agent 1.2.11 2022.4 A Helm chart for the Argon Broker Deployment
aqua-helm/cloud-connector 2022.4.4 2022.4 A Helm chart for Aqua Cloud-Connector
aqua-helm/cyber-center 2022.4.6 2022.4 A Helm chart for Aqua CyberCenter
aqua-helm/enforcer 2022.4.30 2022.4 A Helm chart for the Aqua Enforcer
aqua-helm/kube-enforcer 2022.4.79 2022.4 A Helm chart for the Aqua KubeEnforcer Starboard/Trivy
aqua-helm/gateway 2022.4.18 2022.4 A Helm chart for the Aqua Gateway
aqua-helm/scanner 2022.4.15 2022.4 A Helm chart for the Aqua Scanner CLI component
aqua-helm/server 2022.4.36 2022.4 A Helm chart for the Aqua Console components
aqua-helm/tenant-manager 2022.4.1 2022.4 A Helm chart for the Aqua Tenant Manager
```
### 部署 Helm Charts
1. 添加 Aqua Helm 仓库
helm repo add aqua-helm https://helm.aquasec.com
helm repo update
通过[变更日志](./CHANGELOG.md)或运行以下命令检查可用的 chart 版本。
helm search repo aqua-helm/enforcer --versions
创建 `aqua` 命名空间。
kubectl create namespace aqua
创建 `aqua-registry` secret
kubectl create secret docker-registry aqua-registry-secret \
--docker-server=registry.aquasec.com \
--docker-username=$YOUR_REGISTRY_USER \
--docker-password=$YOUR_REGISTRY_PASSWORD \
-n aqua
2. 部署 [**Server**](server/) chart。
helm upgrade --install --namespace aqua aqua aqua-helm/server --version $VERSION \
--set imageCredentials.create=false \
--set global.platform=$PLATFORM
3. 部署 [**Enforcer**](enforcer/) chart。
helm upgrade --install --namespace aqua aqua-enforcer aqua-helm/enforcer --version $VERSION \
--set imageCredentials.create=false \
--set global.platform=$PLATFORM
4. 部署 [**KubeEnforcer**](kube-enforcer/) chart。
helm upgrade --install --namespace aqua kube-enforcer aqua-helm/kube-enforcer --version $VERSION \
--set global.platform=$PLATFORM \
--set certsSecret.autoGenerate=true
5. (可选) 部署 [**Scanner**](scanner/) chart。
helm upgrade --install --namespace aqua scanner aqua-helm/scanner --version $VERSION \
--set user=$AQUA_CONSOLE_USERNAME \
--set password=$AQUA_CONSOLE_PASSWORD
6. 网关默认随 Server chart 一起部署,高级网关部署选项可在[**此处**](gateway/)找到。
7. (可选) 部署 [**TenantManager**](tenant-manager/) chart。
helm upgrade --install --namespace aqua tenant-manager aqua-helm/tenant-manager --version $VERSION \
--set platform=$PLATFORM
8. (可选) 部署 [**Cyber-Center**](cyber-center/) chart。
helm upgrade --install --namespace aqua aqua-cyber-center aqua-helm/cyber-center --version $VERSION \
--set imageCredentials.create=false
9. (可选) 部署 [**Cloud-Connector**](cloud-connector) chart。
helm upgrade --install --namespace aqua aqua-cloud-connector aqua-helm/cloud-connector --version $VERSION \
--set userCreds.username=$AQUA_CONSOLE_USERNAME \
--set userCreds.password=$AQUA_CONSOLE_PASSWORD \
--set authType.tokenAuth=false \
--set authType.userCreds=true
10. 在浏览器中通过 {{ .Release.Name }}-console-svc 服务和端口访问 Aqua UI,要查看服务详情:
kubectl get svc -n aqua
* 示例:
* http://< 控制台 IP/DNS >:8080* (默认无 SSL 访问) 或
* https://< 控制台 IP/DNS >:443* (如果已在 server chart 中为控制台组件配置 SSL)
### 故障排查
**本节并非详尽无遗。它描述了我们在部署期间遇到的一些常见问题。**
#### 错误 1
* 错误信息:**UPGRADE/INSTALL FAILED, configmaps is forbidden.**
* 示例:
```
Error: UPGRADE FAILED: configmaps is forbidden: User "system:serviceaccount:kube-system:default" cannot list configmaps in the namespace "kube-system"
```
* 解决方案:为 Tiller 创建一个可供使用的服务账户。
```
kubectl create serviceaccount --namespace kube-system tiller
kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'
helm init --service-account tiller --upgrade
```
#### 错误 2
* 错误信息:**No persistent volumes available for this claim and no storage class is set.**
* 解决方案:大多数托管 Kubernetes 部署在设置时**不**包含所有可能的存储提供商变体。请参考您平台对应的[官方 Kubernetes 存储类别指南](https://kubernetes.io/docs/concepts/storage/storage-classes/)。
更多信息请参见[存储文档](docs/storage.md)。
#### 错误 3
* 错误信息:执行 `kubectl get events -n aqua` 时,您可能会遇到 **No persistent volumes available for this claim and no storage class is set** 或
**PersistentVolumeClaim is not bound**。
* 解决方案:如果遇到这些错误中的任何一个,您需要在 chart 部署之前创建一个使用通用或现有存储类别的持久卷。在 values.yaml 文件中指定 `db.persistence.storageClass`。仓库中包含一个使用 `aqua-storage` 的示例文件。
```
kubectl apply -f pv-example.yaml
```
# 快速启动部署(非生产用途)
快速启动部署快速且简单。
它们旨在为非生产目的部署 Aqua Enterprise,例如概念验证 (POC) 以及用于教学、开发和测试的环境。
使用 [**aqua-quickstart**](aqua-quickstart) chart 来
1. 克隆 GitHub 仓库
```
git clone https://github.com/aquasecurity/aqua-helm.git
cd aqua-helm/
```
2. 创建 `aqua` 命名空间。
```
kubectl create namespace aqua
```
3. 部署 aqua-quickstart chart
```
helm upgrade --install --namespace aqua aqua ./aqua-quickstart --set imageCredentials.username=<>,imageCredentials.password=<>
```
# 问题与反馈
如果您遇到任何问题或想对部署提供反馈,我们鼓励您在 GitHub 上提出问题。
标签:Aqua 安全, Helm 图表, Helm 部署, Kubernetes 部署, NIDS, Web截图, 企业安全, 子域名突变, 安全组件, 容器化, 容器安全, 容器编排, 网络资产管理, 部署