Kubernetes tools für erwachsene - Kyverno

21 Jul 2023 - Lesezeit: 3 Minuten

Installation von Kyverno

Die Installation von Kyverno ist einfach und unkompliziert. Folge den Schritten unten, um Kyverno in einem Kubernetes-Cluster zu installieren:

1. Füge das Kyverno-Helm-Repository hinzu:

helm repo add kyverno https://kyverno.github.io/kyverno/
helm repo update

2. Installiere Kyverno mit Helm:

helm install kyverno-policies kyverno/kyverno-policies -n kyverno

Das war's schon! Kyverno ist jetzt einsatzbereit und bereit, Kubernetes-Policies zu verwalten.

Beispiel: Standardmäßige Quotas auf Namespaces anwenden

Nehmen wir an, man möchte standardmäßig Ressourcenquotas auf alle Namespaces in einem Cluster anwenden, um sicherzustellen, dass Ressourcen verantwortungsbewusst genutzt werden. Mit Kyverno kann man dies mühelos erreichen.

Erstelle eine YAML-Datei mit dem Namen "namespace-default-quota.yaml" und füge den folgenden Inhalt hinzu:

apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
  name: add-ns-quota
  annotations:
    policies.kyverno.io/title: Add Quota
    policies.kyverno.io/category: Multi-Tenancy, EKS Best Practices
    policies.kyverno.io/subject: ResourceQuota, LimitRange
    policies.kyverno.io/minversion: 1.6.0
    policies.kyverno.io/description: >-
      To better control the number of resources that can be created in a given
      Namespace and provide default resource consumption limits for Pods,
      ResourceQuota and LimitRange resources are recommended.
      This policy will generate ResourceQuota and LimitRange resources when
      a new Namespace is created.      
spec:
  rules:
  - name: generate-resourcequota
    match:
      any:
      - resources:
          kinds:
          - Namespace
    generate:
      apiVersion: v1
      kind: ResourceQuota
      name: default-resourcequota
      synchronize: true
      namespace: "{{request.object.metadata.name}}"
      data:
        spec:
          hard:
            requests.cpu: '4'
            requests.memory: '16Gi'
            limits.cpu: '4'
            limits.memory: '16Gi'
  - name: generate-limitrange
    match:
      any:
      - resources:
          kinds:
          - Namespace
    generate:
      apiVersion: v1
      kind: LimitRange
      name: default-limitrange
      synchronize: true
      namespace: "{{request.object.metadata.name}}"
      data:
        spec:
          limits:
          - default:
              cpu: 500m
              memory: 1Gi
            defaultRequest:
              cpu: 200m
              memory: 256Mi
            type: Container

Mit diesem Policy-Template sorgt man dafür, dass Ressourcenquotas standardmäßig auf alle Namespaces angewendet werden. Wenn man jetzt einen Namespace erstellt und keine spezifischen Ressourcenquotas definiert, wird automatisch das Standard-Quota gemäß der Policy auf den Namespace angewendet.

Wendet die Policy auf den Cluster an:

kubectl apply -f namespace-default-quota.yaml

Jetzt werden alle neuen Namespaces automatisch mit dem Standard-Quota versehen, und man kann sicher sein, dass Ressourcen verantwortungsbewusst genutzt werden.

Fazit

Kyverno vereinfacht das Policy-Management in Kubernetes und bietet eine effiziente Möglichkeit, Sicherheitsrichtlinien in einem Cluster umzusetzen.

Quellen und Links:

Es wurden noch keine Kommentare verfasst, sei der erste!