|
Dieses Dokument wurde mithilfe automatisierter maschineller Übersetzungstechnologie übersetzt. Wir bemühen uns um korrekte Übersetzungen, übernehmen jedoch keine Gewähr für die Vollständigkeit, Richtigkeit oder Zuverlässigkeit der übersetzten Inhalte. Im Falle von Abweichungen ist die englische Originalversion maßgebend und stellt den verbindlichen Text dar. |
|
Dies ist eine unveröffentlichte Dokumentation für Admission Controller 1.34-dev. |
Funktionen der Container-Registry
Container-Registries können verwendet werden, um viele Arten von OCI-Objekten zu verteilen. Von bekannten Container-Images bis hin zu generischen OCI-Artefakten. OCI-Artefakte werden verwendet, um Objekte wie SUSE Security Admission Controller Richtlinien, Helm-Charts und mehr zu speichern.
Dies sind die Funktionen, die vom Admission Controller Host bereitgestellt werden, um mit Container-Registries zu interagieren.
OCI-Manifest-Digest abrufen
Dieser Callback berechnet den Digest eines OCI-Manifests. Der Digest kann verwendet werden, um ein Objekt zu identifizieren, das in einer OCI-Registry gespeichert ist. Dies ist eine unveränderliche Methode, im Gegensatz zu tags, die veränderlich sind.
Caching
Die Berechnung des Digests umfasst eine Reihe von Netzwerkanfragen zwischen dem Admission Controller Richtlinien-Host und der entfernten Registry. Diese Operationen können zeitaufwendig sein, daher werden die Ergebnisse für 1 Minute zwischengespeichert.
Authentifizierung
Interaktionen mit privaten Registries erfordern, dass der Admission Controller Richtlinien-Host sich bei der entfernten Registry authentifiziert.
Der Richtlinien-Host verwendet dasselbe Set von Anmeldeinformationen, das zum Abrufen von Richtlinien aus der entfernten Registry verwendet wird.
Kommunikationsprotokoll
Dies ist die Beschreibung des waPC-Protokolls, das verwendet wird, um diese Funktion bereitzustellen:
waPC-Funktion - v1/manifest_digest Ausgabe
{
# digest of the OCI object
"digest": string
}
Zum Beispiel, wenn der Manifest-Digest des busybox:latest Images angefordert wird, wäre die Nutzlast:
-
Eingabepayload:
"busybox:latest" -
Ausgabepayload:
{ "digest": "sha256:69e70a79f2d41ab5d637de98c1e0b055206ba40a8145e7bddb55ccc04e13cf8f"}
OCI-Manifest
Dieser Callback ruft das OCI-Objektmanifest ab. Wenn verfügbar, können diese Informationen verwendet werden, um spezifische Image-Manifeste für eine oder mehrere Plattformen zu identifizieren. Oder ein einzelnes Image-Manifest für das Image.
Caching
Das Abrufen dieser Informationen erfordert Netzwerkanfragen zwischen dem Admission Controller Richtlinien-Host und der entfernten Registry. Diese Operationen können zeitaufwendig sein, daher werden die Ergebnisse für 1 Minute zwischengespeichert.
Authentifizierung
Interaktionen mit privaten Registries erfordern, dass der Admission Controller Richtlinien-Host sich bei der entfernten Registry authentifiziert.
Der Richtlinien-Host verwendet denselben Satz von Anmeldeinformationen, der auch zum Abrufen von Richtlinien von der entfernten Registry verwendet wird.
Kommunikationsprotokoll
Dies ist die Beschreibung des waPC-Protokolls, das verwendet wird, um diese Funktion bereitzustellen:
waPC-Funktion - v1/oci_manifest Ausgabe
{
"schemaVersion": 2,
"mediaType": "application/vnd.oci.image.index.v1+json",
"manifests": [
{
"mediaType": "application/vnd.oci.image.manifest.v1+json",
"digest": "sha256:7d5e84b9314ba7058bfa209881919146ffc4a89c5ba14cfa8270a18c8d418c44",
"size": 1048,
"platform": {
"architecture": "amd64",
"os": "linux"
}
},
{
"mediaType": "application/vnd.oci.image.manifest.v1+json",
"digest": "sha256:ae1e98105555f3983496c15c70dafc87639b77830953d6470694b47e0e063e25",
"size": 1048,
"platform": {
"architecture": "arm64",
"os": "linux"
}
},
{
"mediaType": "application/vnd.oci.image.manifest.v1+json",
"digest": "sha256:e9fc0f86e26366abf29fd29e8c09d00df717f9038fd4298eaa39a0a2b4361fa4",
"size": 566,
"annotations": {
"vnd.docker.reference.digest": "sha256:7d5e84b9314ba7058bfa209881919146ffc4a89c5ba14cfa8270a18c8d418c44",
"vnd.docker.reference.type": "attestation-manifest"
},
"platform": {
"architecture": "unknown",
"os": "unknown"
}
},
{
"mediaType": "application/vnd.oci.image.manifest.v1+json",
"digest": "sha256:e8904ebb2841dc19ae458436eb01ddea3e8d6ea653c7d9476537f4029b1f45a2",
"size": 566,
"annotations": {
"vnd.docker.reference.digest": "sha256:ae1e98105555f3983496c15c70dafc87639b77830953d6470694b47e0e063e25",
"vnd.docker.reference.type": "attestation-manifest"
},
"platform": {
"architecture": "unknown",
"os": "unknown"
}
}
]
}
OR
{
"schemaVersion": 2,
"mediaType": "application/vnd.oci.image.manifest.v1+json",
"config": {
"mediaType": "application/vnd.oci.image.config.v1+json",
"digest": "sha256:61dc3269b9e8faeea32128560cdbd355e8c1dff31e32abc0223be039c5cc5e2d",
"size": 1775
},
"layers": [
{
"mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
"digest": "sha256:67d998e418791ec2955ec99753eb55f03ca96538976e5ccebfec08eae20056b5",
"size": 57033795
},
{
"mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
"digest": "sha256:be6185edcab66334dd5c7c2273fd6254100ece960e087541f3dba0616c440038",
"size": 188411978
},
{
"mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
"digest": "sha256:58a13f6770904193ca67beb50d424e69a39579e1581dbf8e02e1751f3b75f932",
"size": 70078992
}
],
"annotations": {
"org.opencontainers.image.base.digest": "sha256:67a7c41ccd5dfcb08face86546f0d25c0740f0d0225e39fecb8bbae8b95b847a",
"org.opencontainers.image.base.name": "docker.io/library/debian:latest"
}
}
Zum Beispiel, wenn das Manifest des ghcr.io/kubewarden/policy-server:v1.10.0 Images angefordert wird, würde die Nutzlast wie folgt aussehen:
-
Eingabepayload:
"ghcr.io/kubewarden/policy-server:v1.10.0" -
Ausgabepayload: der Body der erfolgreichen Antwort, die von der Registry erhalten wurde. Es kann ein OCI-Index-Image oder ein OCI-Image-Manifest sein. Die Details können je nach Registry und Image variieren.
OCI-Manifest und Konfigurationsinformationen
Dieser Callback ruft das OCI-Manifest und seine Konfigurationsinformationen ab. Diese Informationen können verwendet werden, um das Container-Image-Manifest und die Konfigurationsinformationen abzurufen, die von der Container-Laufzeit verwendet werden, um es auszuführen.
Caching
Das Abrufen dieser Informationen erfordert Netzwerkanfragen zwischen dem Admission Controller Richtlinien-Host und dem entfernten Registry. Diese Operationen können zeitaufwendig sein, daher werden die Ergebnisse für 1 Minute zwischengespeichert.
Authentifizierung
Interaktionen mit privaten Registries erfordern, dass der Admission Controller Richtlinien-Host sich bei der entfernten Registry authentifiziert.
Der Richtlinien-Host verwendet denselben Satz von Anmeldeinformationen, der auch zum Abrufen von Richtlinien von der entfernten Registry verwendet wird.
Kommunikationsprotokoll
Dies ist die Beschreibung des waPC-Protokolls, das verwendet wird, um diese Funktion bereitzustellen:
waPC-Funktion - v1/oci_manifest_config Ausgabe
{
"manifest": {
"schemaVersion": 2,
"mediaType": "application/vnd.oci.image.manifest.v1+json",
"config": {
"mediaType": "application/vnd.oci.image.config.v1+json",
"digest": "sha256:bc3511804cb29da6333f0187a333eba13a43a3a0a1737e9b50227a5cf057af74",
"size": 1592
},
"layers": [
{
"mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
"digest": "sha256:294efa324e89a020b06df261f77903fb9f46fdee79c54e4f6589f786f6c31bec",
"size": 428
},
{
"mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
"digest": "sha256:f0936413f7d0757b41777a624e5be83da28789d0c4b8b3f46853ca9c3bb6300f",
"size": 422
},
{
"mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
"digest": "sha256:cd2adfe5e808335e0c30eff616a9852a94cfbf8ecd455d1b893e1c858ddc3aeb",
"size": 22357278
},
{
"mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
"digest": "sha256:6c7ec51ccec3d4438c94e697258085ddf825c1e711df4d923b1794794196cf06",
"size": 37415
}
]
},
"digest": "sha256:6ebc3e17a9804a8d385fee819554ad95a05072d022c5bd2dd27556a5752d47f5",
"config": {
"created": "2024-06-05T13:48:01.671482413Z",
"architecture": "amd64",
"os": "linux",
"config": {
"User": "65533:65533",
"ExposedPorts": {
"3000/tcp": {}
},
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],
"Entrypoint": [
"/policy-server"
],
"WorkingDir": "/"
},
"rootfs": {
"type": "layers",
"diff_ids": [
"sha256:79f61adc25589b7b467a6becca5756f3b722ab7f9d0c18c205e89c08fdc8d45d",
"sha256:2a5e7791442784b3614921dcb51afdbe94ae9bfd3752e22e5eb81ce731f5bfbf",
"sha256:0d893e5416389fd105bc81d3694a5d5dbffc41237291df0aaa4efbc26632e91c",
"sha256:018ce7bd6fd46306e129aca44c1c103675dbe29e3aa842a0b7fb01507e8d02d2"
]
},
"history": [
{
"created": "2024-06-05T13:48:00.432722149Z",
"created_by": "COPY /etc/passwd /etc/passwd # buildkit",
"comment": "buildkit.dockerfile.v0"
},
{
"created": "2024-06-05T13:48:00.469118621Z",
"created_by": "COPY /etc/group /etc/group # buildkit",
"comment": "buildkit.dockerfile.v0"
},
{
"created": "2024-06-05T13:48:01.653480931Z",
"created_by": "COPY --chmod=0755 policy-server-x86_64 /policy-server # buildkit",
"comment": "buildkit.dockerfile.v0"
},
{
"created": "2024-06-05T13:48:01.671482413Z",
"created_by": "ADD Cargo.lock /Cargo.lock # buildkit",
"comment": "buildkit.dockerfile.v0"
},
{
"created": "2024-06-05T13:48:01.671482413Z",
"created_by": "USER 65533:65533",
"comment": "buildkit.dockerfile.v0",
"empty_layer": true
},
{
"created": "2024-06-05T13:48:01.671482413Z",
"created_by": "EXPOSE map[3000/tcp:{}]",
"comment": "buildkit.dockerfile.v0",
"empty_layer": true
},
{
"created": "2024-06-05T13:48:01.671482413Z",
"created_by": "ENTRYPOINT [\"/policy-server\"]",
"comment": "buildkit.dockerfile.v0",
"empty_layer": true
}
]
}
}
Zum Beispiel, wenn das Bildmanifest und die Konfigurationsinformationen des ghcr.io/kubewarden/policy-server:v1.13.0 Bildes angefordert werden, würde die Nutzlast wie folgt aussehen:
-
Eingabepayload:
"ghcr.io/kubewarden/policy-server:v1.13.0" -
Ausgabepayload: der Body der erfolgreichen Antwort, die von der Registry erhalten wurde. Es wird das OCI-Image-Manifest, den Image-Digest und die OCI-Image-Konfiguration enthalten.