Skip to content

Commit 92ef169

Browse files
author
robot
committed
robot: project falco chart upgrades from 2.0.17 to 7.0.2
Signed-off-by: robot <[email protected]>
1 parent ff527eb commit 92ef169

File tree

127 files changed

+27105
-6370
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

127 files changed

+27105
-6370
lines changed

charts/falco/config

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ export USE_OPENSOURCE_CHART=false
44
export REPO_URL=https://falcosecurity.github.io/charts
55
export REPO_NAME=falcosecurity
66
export CHART_NAME=falco
7-
export VERSION=2.0.17
7+
export VERSION=7.0.2
88

99
# pr, issue, none
1010
export UPGRADE_METHOD=pr

charts/falco/falco/Chart.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
apiVersion: v2
2-
appVersion: 0.32.2
2+
appVersion: 0.42.1
33
description: Falco
44
home: https://falco.org
55
icon: https://raw.githubusercontent.com/cncf/artwork/master/projects/falco/horizontal/color/falco-horizontal-color.svg
@@ -16,8 +16,8 @@ maintainers:
1616
name: falco
1717
sources:
1818
- https://github.com/falcosecurity/falco
19-
version: 2.0.17
19+
version: 7.0.2
2020
dependencies:
2121
- name: falco
22-
version: "2.0.17"
22+
version: "7.0.2"
2323
repository: "https://falcosecurity.github.io/charts"

charts/falco/falco/README.md

Lines changed: 555 additions & 55 deletions
Large diffs are not rendered by default.
Lines changed: 259 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,259 @@
1+
# Helm chart Breaking Changes
2+
- [5.0.0](#500)
3+
- [Default Falco Image](#default-falco-image)
4+
- [4.0.0](#400)
5+
- [Drivers](#drivers)
6+
- [K8s Collector](#k8s-collector)
7+
- [Plugins](#plugins)
8+
- [3.0.0](#300)
9+
- [Falcoctl](#falcoctl-support)
10+
- [Rulesfiles](#rulesfiles)
11+
- [Falco Images](#drop-support-for-falcosecurityfalco-image)
12+
- [Driver Loader Init Container](#driver-loader-simplified-logic)
13+
14+
15+
### 7.0.0
16+
17+
### Deprecated container metadata collectors have been removed
18+
19+
The following collectors options were deprecated in the Falco chart v4.22 and have been removed from the chart:
20+
- `collectors.containerd`
21+
- `collectors.cri`
22+
- `collectors.docker`
23+
24+
Please use the `collectors.containerEngine` instead.
25+
26+
## 6.0.0
27+
28+
### Falco Talon configuration changes
29+
30+
The following backward-incompatible changes have been made to `values.yaml`:
31+
- `falcotalon` configuration has been renamed to `falco-talon`
32+
- `falcotalon.enabled` has been renamed to `responseActions.enabled`
33+
34+
## 5.0.0
35+
### Default Falco Image
36+
**Starting with version 5.0.0, the Helm chart now uses the default Falco container image, which is a distroless image without any additional tools installed.**
37+
Previously, the chart used the `debian` image with the several tools included to avoid breaking changes during upgrades. The new image is more secure and lightweight, but it does not include these tools.
38+
39+
If you rely on some tool—for example, when using the `program_output` feature—you can manually override the `image.tag` value to use a different image flavor. For instance, setting `image.tag` to `0.41.0-debian` will restore access to the tools available in the Debian-based image.
40+
41+
## 4.0.0
42+
### Drivers
43+
The `driver` section has been reworked based on the following PR: https://github.com/falcosecurity/falco/pull/2413.
44+
It is an attempt to uniform how a driver is configured in Falco.
45+
It also groups the configuration based on the driver type.
46+
Some of the drivers has been renamed:
47+
* kernel modules has been renamed from `module` to `kmod`;
48+
* the ebpf probe has not been changed. It's still `ebpf`;
49+
* the modern ebpf probe has been renamed from `modern-bpf` to `modern_ebpf`.
50+
51+
The `gvisor` configuration has been moved under the `driver` section since it is considered a driver on its own.
52+
53+
### K8s Collector
54+
The old Kubernetes client has been removed in Falco 0.37.0. For more info checkout this issue: https://github.com/falcosecurity/falco/issues/2973#issuecomment-1877803422.
55+
The [k8s-metacollector](https://github.com/falcosecurity/k8s-metacollector) and [k8s-meta](https://github.com/falcosecurity/plugins/tree/master/plugins/k8smeta) substitute
56+
the old implementation.
57+
58+
The following resources needed by Falco to connect to the API server are no longer needed and has been removed from the chart:
59+
* service account;
60+
* cluster role;
61+
* cluster role binding.
62+
63+
When the `collectors.kubernetes` is enabled the chart deploys the [k8s-metacollector](https://github.com/falcosecurity/k8s-metacollector) and configures Falco to load the
64+
[k8s-meta](https://github.com/falcosecurity/plugins/tree/master/plugins/k8smeta) plugin.
65+
66+
By default, the `collectors.kubernetes.enabled` is off; for more info, see the following issue: https://github.com/falcosecurity/falco/issues/2995.
67+
68+
### Plugins
69+
The Falco docker image does not ship anymore the plugins: https://github.com/falcosecurity/falco/pull/2997.
70+
For this reason, the `resolveDeps` is now enabled in relevant values files (ie. `values-k8saudit.yaml`).
71+
When installing `rulesfile` artifacts `falcoctl` will try to resolve its dependencies and install the required plugins.
72+
73+
## 3.0.0
74+
The new chart deploys new *k8s* resources and new configuration variables have been added to the `values.yaml` file. People upgrading the chart from `v2.x.y` have to port their configuration variables to the new `values.yaml` file used by the `v3.0.0` chart.
75+
76+
If you still want to use the old values, because you do not want to take advantage of the new and shiny **falcoctl** tool then just run:
77+
```bash=
78+
helm upgrade falco falcosecurity/falco \
79+
--namespace=falco \
80+
--reuse-values \
81+
--set falcoctl.artifact.install.enabled=false \
82+
--set falcoctl.artifact.follow.enabled=false
83+
```
84+
This way you will upgrade Falco to `v0.34.0`.
85+
86+
**NOTE**: The new version of Falco itself, installed by the chart, does not introduce breaking changes. You can port your previous Falco configuration to the new `values.yaml` by copy-pasting it.
87+
88+
89+
### Falcoctl support
90+
91+
[Falcoctl](https://github.com/falcosecurity/falcoctl) is a new tool born to automatize operations when deploying Falco.
92+
93+
Before the `v3.0.0` of the charts *rulesfiles* and *plugins* were shipped bundled in the Falco docker image. It precluded the possibility to update the *rulesfiles* and *plugins* until a new version of Falco was released. Operators had to manually update the *rulesfiles or add new *plugins* to Falco. The process was cumbersome and error-prone. Operators had to create their own Falco docker images with the new plugins baked into it or wait for a new Falco release.
94+
95+
Starting from the `v3.0.0` chart release, we add support for **falcoctl** in the charts. By deploying it alongside Falco it allows to:
96+
- *install* artifacts of the Falco ecosystem (i.e plugins and rules at the moment of writing)
97+
- *follow* those artifacts(only *rulesfile* artifacts are recommended), to keep them up-to-date with the latest releases of the Falcosecurity organization. This allows, for instance, to update rules detecting new vulnerabilities or security issues without the need to redeploy Falco.
98+
99+
The chart deploys *falcoctl* using an *init container* and/or *sidecar container*. The first one is used to install artifacts and make them available to Falco at start-up time, the latter runs alongside Falco and updates the local artifacts when new updates are detected.
100+
101+
Based on your deployment scenario:
102+
103+
1. Falco without *plugins* and you just want to upgrade to the new Falco version:
104+
```bash=
105+
helm upgrade falco falcosecurity/falco \
106+
--namespace=falco \
107+
--reuse-values \
108+
--set falcoctl.artifact.install.enabled=false \
109+
--set falcoctl.artifact.follow.enabled=false
110+
```
111+
When upgrading an existing release, *helm* uses the new chart version. Since we added new template files and changed the values schema(added new parameters) we explicitly disable the **falcoctl** tool. By doing so, the command will reuse the existing configuration but will deploy Falco version `0.34.0`
112+
113+
2. Falco without *plugins* and you want to automatically get new *falco-rules* as soon as they are released:
114+
```bash=
115+
helm upgrade falco falcosecurity/falco \
116+
--namespace=falco \
117+
```
118+
Helm first applies the values coming from the new chart version, then overrides them using the values of the previous release. The outcome is a new release of Falco that:
119+
* uses the previous configuration;
120+
* runs Falco version `0.34.0`;
121+
* uses **falcoctl** to install and automatically update the [*falco-rules*](https://github.com/falcosecurity/rules/);
122+
* checks for new updates every 6h (default value).
123+
124+
125+
3. Falco with *plugins* and you want just to upgrade Falco:
126+
```bash=
127+
helm upgrade falco falcosecurity/falco \
128+
--namespace=falco \
129+
--reuse-values \
130+
--set falcoctl.artifact.install.enabled=false \
131+
--set falcoctl.artifact.follow.enabled=false
132+
```
133+
Very similar to scenario `1.`
134+
4. Falco with plugins and you want to use **falcoctl** to download the plugins' *rulesfiles*:
135+
* Save **falcoctl** configuration to file:
136+
```yaml=
137+
cat << EOF > ./falcoctl-values.yaml
138+
####################
139+
# falcoctl config #
140+
####################
141+
falcoctl:
142+
image:
143+
# -- The image pull policy.
144+
pullPolicy: IfNotPresent
145+
# -- The image registry to pull from.
146+
registry: docker.io
147+
# -- The image repository to pull from.
148+
repository: falcosecurity/falcoctl
149+
# -- Overrides the image tag whose default is the chart appVersion.
150+
tag: "main"
151+
artifact:
152+
# -- Runs "falcoctl artifact install" command as an init container. It is used to install artfacts before
153+
# Falco starts. It provides them to Falco by using an emptyDir volume.
154+
install:
155+
enabled: true
156+
# -- Extra environment variables that will be pass onto falcoctl-artifact-install init container.
157+
env: {}
158+
# -- Arguments to pass to the falcoctl-artifact-install init container.
159+
args: ["--verbose"]
160+
# -- Resources requests and limits for the falcoctl-artifact-install init container.
161+
resources: {}
162+
# -- Security context for the falcoctl init container.
163+
securityContext: {}
164+
# -- Runs "falcoctl artifact follow" command as a sidecar container. It is used to automatically check for
165+
# updates given a list of artifacts. If an update is found it downloads and installs it in a shared folder (emptyDir)
166+
# that is accessible by Falco. Rulesfiles are automatically detected and loaded by Falco once they are installed in the
167+
# correct folder by falcoctl. To prevent new versions of artifacts from breaking Falco, the tool checks if it is compatible
168+
# with the running version of Falco before installing it.
169+
follow:
170+
enabled: true
171+
# -- Extra environment variables that will be pass onto falcoctl-artifact-follow sidecar container.
172+
env: {}
173+
# -- Arguments to pass to the falcoctl-artifact-follow sidecar container.
174+
args: ["--verbose"]
175+
# -- Resources requests and limits for the falcoctl-artifact-follow sidecar container.
176+
resources: {}
177+
# -- Security context for the falcoctl-artifact-follow sidecar container.
178+
securityContext: {}
179+
# -- Configuration file of the falcoctl tool. It is saved in a configmap and mounted on the falcotl containers.
180+
config:
181+
# -- List of indexes that falcoctl downloads and uses to locate and download artiafcts. For more info see:
182+
# https://github.com/falcosecurity/falcoctl/blob/main/proposals/20220916-rules-and-plugin-distribution.md#index-file-overview
183+
indexes:
184+
- name: falcosecurity
185+
url: https://falcosecurity.github.io/falcoctl/index.yaml
186+
# -- Configuration used by the artifact commands.
187+
artifact:
188+
189+
# -- List of artifact types that falcoctl will handle. If the configured refs resolves to an artifact whose type is not contained
190+
# in the list it will refuse to downloade and install that artifact.
191+
allowedTypes:
192+
- rulesfile
193+
install:
194+
# -- Do not resolve the depenencies for artifacts. By default is true, but for our use carse we disable it.
195+
resolveDeps: false
196+
# -- List of artifacts to be installed by the falcoctl init container.
197+
refs: [k8saudit-rules:0.5]
198+
# -- Directory where the *rulesfiles* are saved. The path is relative to the container, which in this case is an emptyDir
199+
# mounted also by the Falco pod.
200+
rulesfilesDir: /rulesfiles
201+
# -- Same as the one above but for the artifacts.
202+
pluginsDir: /plugins
203+
follow:
204+
# -- List of artifacts to be installed by the falcoctl init container.
205+
refs: [k8saudit-rules:0.5]
206+
# -- Directory where the *rulesfiles* are saved. The path is relative to the container, which in this case is an emptyDir
207+
# mounted also by the Falco pod.
208+
rulesfilesDir: /rulesfiles
209+
# -- Same as the one above but for the artifacts.
210+
pluginsDir: /plugins
211+
EOF
212+
```
213+
* Set `falcoctl.artifact.install.enabled=true` to install *rulesfiles* of the loaded plugins. Configure **falcoctl** to install the *rulesfiles* of the plugins you are loading with Falco. For example, if you are loading **k8saudit** plugin then you need to set `falcoctl.config.artifact.install.refs=[k8saudit-rules:0.5]`. When Falco is deployed the **falcoctl** init container will download the specified artifacts based on their tag.
214+
* Set `falcoctl.artifact.follow.enabled=true` to keep updated *rulesfiles* of the loaded plugins.
215+
* Proceed to upgrade your Falco release by running:
216+
```bash=
217+
helm upgrade falco falcosecurity/falco \
218+
--namespace=falco \
219+
--reuse-values \
220+
--values=./falcoctl-values.yaml
221+
```
222+
5. Falco with **multiple sources** enabled (syscalls + plugins):
223+
1. Upgrading Falco to the new version:
224+
```bash=
225+
helm upgrade falco falcosecurity/falco \
226+
--namespace=falco \
227+
--reuse-values \
228+
--set falcoctl.artifact.install.enabled=false \
229+
--set falcoctl.artifact.follow.enabled=false
230+
```
231+
2. Upgrading Falco and leveraging **falcoctl** for rules and plugins. Refer to point 4. for **falcoctl** configuration.
232+
233+
234+
### Rulesfiles
235+
Starting from `v0.3.0`, the chart drops the bundled **rulesfiles**. The previous version was used to create a configmap containing the following **rulesfiles**:
236+
* application_rules.yaml
237+
* aws_cloudtrail_rules.yaml
238+
* falco_rules.local.yaml
239+
* falco_rules.yaml
240+
* k8s_audit_rules.yaml
241+
242+
The reason why we are dropping them is pretty simple, the files are already shipped within the Falco image and do not apport any benefit. On the other hand, we had to manually update those files for each Falco release.
243+
244+
For users out there, do not worry, we have you covered. As said before the **rulesfiles** are already shipped inside
245+
the Falco image. Still, this solution has some drawbacks such as users having to wait for the next releases of Falco
246+
to get the latest version of those **rulesfiles**. Or they could manually update them by using the [custom rules](.
247+
/README.md#loading-custom-rules).
248+
249+
We came up with a better solution and that is **falcoctl**. Users can configure the **falcoctl** tool to fetch and install the latest **rulesfiles** as provided by the *falcosecurity* organization. For more info, please check the **falcoctl** section.
250+
251+
**NOTE**: if any user (wrongly) used to customize those files before deploying Falco please switch to using the
252+
[custom rules](./README.md#loading-custom-rules).
253+
254+
### Drop support for `falcosecurity/falco` image
255+
256+
Starting from version `v2.0.0` of the chart the`falcosecurity/falco-no-driver` is the default image. We were still supporting the `falcosecurity/falco` image in `v2.0.0`. But in `v2.2.0` we broke the chart when using the `falcosecurity/falco` image. For more info please check out the following issue: https://github.com/falcosecurity/charts/issues/419
257+
258+
#### Driver-loader simplified logic
259+
There is only one switch to **enable/disable** the driver-loader init container: driver.loader.enabled=true. This simplification comes as a direct consequence of dropping support for the `falcosecurity/falco` image. For more info: https://github.com/falcosecurity/charts/issues/418

0 commit comments

Comments
 (0)