|
Dies ist eine unveröffentlichte Dokumentation für Admission Controller 1.37-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.