Add apparmor support to Hostconfig-operator
This commit adds apparmor support to hostconfig-operator. with this apparmor support we can add/remove custom apparmor profiles to every nodes managed via hostconfig-operator. Signed-off-by: Sreejith Punnapuzha <Sreejith.Punnapuzha@outlook.com> Change-Id: I018d96c50e2557da72874a553cfef43b331aa079
This commit is contained in:
parent
83cb9239ee
commit
c1a7ba3a11
@ -197,6 +197,9 @@ be executed on the kubernetes nodes.
|
|||||||
exec: Array object specifying list of scripts along with arguments
|
exec: Array object specifying list of scripts along with arguments
|
||||||
and environment variables that can be executed on the nodes.
|
and environment variables that can be executed on the nodes.
|
||||||
|
|
||||||
|
apparmor: Array object specifying the apparmor profile that need to be
|
||||||
|
applied on kubernetes nodes.
|
||||||
|
|
||||||
The demo_examples folder has some examples listed which can be
|
The demo_examples folder has some examples listed which can be
|
||||||
used to initially to play with the above variables
|
used to initially to play with the above variables
|
||||||
|
|
||||||
|
@ -74,6 +74,21 @@ spec:
|
|||||||
type: object
|
type: object
|
||||||
description: "The configuration details that needs to be performed on the targeted kubernetes nodes."
|
description: "The configuration details that needs to be performed on the targeted kubernetes nodes."
|
||||||
properties:
|
properties:
|
||||||
|
apparmor:
|
||||||
|
description: "An array of apparmor configuration to be performed on the target nodes."
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
filename:
|
||||||
|
type: string
|
||||||
|
profile:
|
||||||
|
type: string
|
||||||
|
state:
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- filename
|
||||||
|
- state
|
||||||
exec:
|
exec:
|
||||||
description: "An array of script configuration that would be executed on the target nodes"
|
description: "An array of script configuration that would be executed on the target nodes"
|
||||||
type: array
|
type: array
|
||||||
|
6
airship-host-config/roles/apparmor/handlers/main.yml
Normal file
6
airship-host-config/roles/apparmor/handlers/main.yml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
- name: apparmor reload
|
||||||
|
service:
|
||||||
|
name: apparmor
|
||||||
|
state: reloaded
|
||||||
|
become: yes
|
39
airship-host-config/roles/apparmor/tasks/main.yml
Normal file
39
airship-host-config/roles/apparmor/tasks/main.yml
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
---
|
||||||
|
- name: install > Packages
|
||||||
|
package:
|
||||||
|
name: apparmor
|
||||||
|
state: present
|
||||||
|
become: yes
|
||||||
|
|
||||||
|
- name: configs > Ensures destination directories exists
|
||||||
|
file:
|
||||||
|
path: /etc/apparmor.d
|
||||||
|
state: directory
|
||||||
|
recurse: true
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: "0755"
|
||||||
|
become: yes
|
||||||
|
|
||||||
|
- name: configs > Create files
|
||||||
|
copy:
|
||||||
|
content: "{{ item.profile }}"
|
||||||
|
dest: "/etc/apparmor.d/{{ item.filename }}"
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: "0644"
|
||||||
|
when: item.state|default('present') != 'absent'
|
||||||
|
with_items: "{{ config.apparmor }}"
|
||||||
|
become: yes
|
||||||
|
notify:
|
||||||
|
- apparmor reload
|
||||||
|
|
||||||
|
- name: configs > Remove files
|
||||||
|
file:
|
||||||
|
path: "/etc/apparmor.d/{{ item.filename }}"
|
||||||
|
state: absent
|
||||||
|
when: item.state|default('present') == 'absent'
|
||||||
|
with_items: "{{ config.apparmor }}"
|
||||||
|
become: yes
|
||||||
|
notify:
|
||||||
|
- apparmor reload
|
25
demo_examples/example_apparmor.yaml
Normal file
25
demo_examples/example_apparmor.yaml
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
# This CR when executed configures the passed sysctl and ulimit
|
||||||
|
# configuration on the kubernetes master nodes.
|
||||||
|
|
||||||
|
apiVersion: hostconfig.airshipit.org/v1alpha1
|
||||||
|
kind: HostConfig
|
||||||
|
metadata:
|
||||||
|
name: example-apparmor
|
||||||
|
spec:
|
||||||
|
host_groups:
|
||||||
|
- name: "kubernetes.io/hostname"
|
||||||
|
values:
|
||||||
|
- "hostconfig-control-plane"
|
||||||
|
config:
|
||||||
|
apparmor:
|
||||||
|
- filename: bin.example.sh
|
||||||
|
profile: |
|
||||||
|
#include <tunables/global>
|
||||||
|
#
|
||||||
|
/bin/example.sh {
|
||||||
|
#include <abstractions/base>
|
||||||
|
#
|
||||||
|
/bin/example.sh r,
|
||||||
|
deny /tmp/sample.txt w,
|
||||||
|
}
|
||||||
|
state: present
|
@ -45,6 +45,7 @@ with expiration detail.
|
|||||||
* Added support to upgrade packages and restart the corresponding services
|
* Added support to upgrade packages and restart the corresponding services
|
||||||
Current implementation supports installing/upgrading docker, containerd and apache2.
|
Current implementation supports installing/upgrading docker, containerd and apache2.
|
||||||
It also supports installing python3-openstackclient and python3-novaclient binaries.
|
It also supports installing python3-openstackclient and python3-novaclient binaries.
|
||||||
|
* Added support to apply custom apparmor profiles to kubernetes nodes
|
||||||
|
|
||||||
## Architecture
|
## Architecture
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user