|
Dies ist eine unveröffentlichte Dokumentation für Admission Controller 1.37-dev. |
Kubernetes-Funktionen
Die kontextsensitiven Richtlinien von SUSE Security Admission Controller benötigen Zugriff auf Ressourcen aus dem Kubernetes-Cluster, in dem sie ausgeführt werden. Dafür stellen die Admission Controller SDKs Funktionen zur Verfügung, die das waPC-Kommunikationsprotokoll verwenden, um mit dem Hostsystem zu kommunizieren und Daten über den Cluster anzufordern.
waPC-Protokollvertrag
Intern nutzen die SDKs diese Funktionen, die von der Richtlinien-Host-Umgebung bereitgestellt werden:
-
list_resources_by_namespace: Geben Sie einen Ressourcentyp und einen Namespace an, und listen Sie alle Ressourcen dieses Typs auf, die darin definiert sind. Dies kann nicht verwendet werden, um clusterweite Ressourcen wieNamespaceaufzulisten. -
list_resources_all: Geben Sie einen Ressourcentyp an, und listen Sie alle Ressourcen dieses Typs auf, die im gesamten Cluster definiert sind. Dies kann verwendet werden, um clusterweite Ressourcen wieNamespaceaufzulisten. -
get_resource: Finden Sie die genaue Ressource, die durch den angegebenen Ressourcentyp, den gegebenen Namen und einen optionalen Namespace-Identifikator identifiziert wird.
Diese Gast-Host-Kommunikation erfolgt über den standardmäßigen waPC-Host-Aufrufmechanismus. Jeder Gast, der den waPC-Interkommunikationsmechanismus implementiert, kann diese Informationen vom Host anfordern.
waPC hat die folgenden Funktionsargumente, wenn ein Aufruf vom Gast an den Host durchgeführt wird:
-
Bindung -
kubewarden -
Namespace -
kubernetes -
Operation -
list_resources_all,list_resources_by_namespaceoderget_resource -
Payload - Eingabepayload - siehe unten
und gibt zurück:
-
Payload - Ausgabepayload - siehe unten
Vertraglich oder durch Konvention können Richtlinien die Informationen des Kubernetes-Clusters auf folgende Weise abrufen:
Operation - list_resources_all
Eingabegerät
# API Group version. Use `+v1+` for the `+core+` group and
# `+groupName/groupVersion+` for all other groups
"api_version": string,
# Resource kind
"kind": string,
# Label selector to filter the resources
"label_selector": string,
# Field selector to filter the resources
"field_selector": string,
# Field masks: A list of fields to include in the response.
#
# If strictly defined, the host will prune the Kubernetes resource to contain *only*
# the specified fields, reducing memory usage and serialization overhead.
"field_masks": [string]
Ausgabe
Gibt ein Kubernetes List zurück, das eine Sammlung von Kubernetes-Objekten desselben Typs ist.
|
Verwenden Sie diese API-Funktion, um clusterweite Ressourcen abzurufen (z. B. Namespaces) |
Operation - list_resources_by_namespace
Eingabegerät
{
# API Group version. Use `+v1+` for the `+core+` group and
# `+groupName/groupVersion+` for all other groups
"api_version": string,
# Resource kind
"kind": string,
# Namespace where the requested resource lives in
"namespace": string,
# Label selector to filter the resources
"label_selector": string,
# Field selector to filter the resources
"field_selector": string,
# Field masks: A list of fields to include in the response.
#
# If strictly defined, the host will prune the Kubernetes resource to contain *only*
# the specified fields, reducing memory usage and serialization overhead.
"field_masks": [string]
}
Ausgabe
Gibt ein Kubernetes List zurück, das eine Sammlung von Kubernetes-Objekten desselben Typs ist.
|
Diese API-Funktion gibt einen Fehler zurück, wenn sie verwendet wird, um clusterweite Ressourcen abzurufen (zum Beispiel Namespaces).
Verwenden Sie das |
Operation - get_resource
Caching
Das Ergebnis der get_resource Operation wird standardmäßig fünf Sekunden lang zwischengespeichert, um die Leistung zu verbessern und unnötige Last auf dem Kubernetes-API-Server zu reduzieren.
Verwenden Sie das disable_cache Feld, um den Cache zu umgehen, wenn frische Daten benötigt werden.
Eingabegerät
{
# API Group version. Use `+v1+` for the `+core+` group
# and `+groupName/groupVersion+` for all other groups
"api_version": string,
# Singular PascalCase name of the resource
"kind": string,
# Namespace scoping the search
"namespace": string,
# The name of the resource
"name": string,
# Disable caching of results obtained from Kubernetes API Server
"disable_cache": bool,
# Field masks: A list of fields to include in the response.
#
# If strictly defined, the host will prune the Kubernetes resource to contain *only*
# the specified fields, reducing memory usage and serialization overhead.
"field_masks": [string]
}