この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。

これは未公開の文書です Admission Controller 1.34-dev.

コンテナレジストリの機能

コンテナレジストリは、さまざまなタイプのOCIオブジェクトを配布するために使用できます。 よく知られたコンテナイメージから一般的なOCIアーティファクトまで。 OCIアーティファクトは、SUSE Security Admission Controller ポリシー、Helmチャートなどのオブジェクトを保存するために使用されます。

これらは、コンテナレジストリと対話するために Admission Controller ホストによって公開される機能です。

OCIマニフェストダイジェストを取得する

このコールバックは、OCIマニフェストのダイジェストを計算します。ダイジェストは、OCIレジストリに保存されたオブジェクトを特定するために使用できます。これは不変の方法であり、`tags`が可変であるのとは対照的です。

キャッシング

ダイジェストの計算には、Admission Controllerポリシーホストとリモートレジストリ間の一連のネットワークリクエストが関与します。 これらの操作は時間がかかる場合があるため、結果は1分間キャッシュされます。

認証

プライベートレジストリとの対話には、Admission Controllerポリシーホストがリモートレジストリに対して認証を行う必要があります。

ポリシーホストは、リモートレジストリからポリシーを取得するために使用されるのと同じ資格情報のセットを使用します。

通信プロトコル

これは、この機能を公開するために使用されるwaPCプロトコルの説明です:

waPC関数 - `v1/manifest_digest`入力

# OCI URI - JSON encoded string
string

waPC関数 - `v1/manifest_digest`出力

{
  # digest of the OCI object
  "digest": string
}

例えば、`busybox:latest`イメージのマニフェストダイジェストを要求する際、ペイロードは次のようになります:

  • 入力ペイロード: "busybox:latest"

  • 出力ペイロード: { "digest": "sha256:69e70a79f2d41ab5d637de98c1e0b055206ba40a8145e7bddb55ccc04e13cf8f"}

OCIマニフェスト

このコールバックはOCIオブジェクトのマニフェストを取得します。利用可能な場合、この情報は特定のイメージマニフェストを識別するために使用できます。または、イメージの単一マニフェストです。

キャッシング

この情報を取得するには、Admission Controllerポリシーホストとリモートレジストリ間でネットワークリクエストが必要です。これらの操作は時間がかかる場合があるため、結果は1分間キャッシュされます。

認証

プライベートレジストリとのやり取りには、Admission Controllerポリシーホストがリモートレジストリに対して認証を行う必要があります。

ポリシーホストは、リモートレジストリからポリシーを取得するために使用されるのと同じ資格情報のセットを使用します。

通信プロトコル

これは、この機能を公開するために使用されるwaPCプロトコルの説明です:

waPC関数 - `v1/oci_manifest`入力

# OCI URI - JSON encoded string
string

waPC関数 - `v1/oci_manifest`出力

{
    "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"
        }
}

例えば、`ghcr.io/kubewarden/policy-server:v1.10.0`イメージのマニフェストをリクエストする場合、ペイロードは次のようになります:

  • 入力ペイロード: "ghcr.io/kubewarden/policy-server:v1.10.0"

  • 出力ペイロード: レジストリから取得した成功した応答の本文。 それはhttps://github.com/opencontainers/image-spec/blob/main/image-index.md[OCIインデックスイメージ]またはhttps://github.com/opencontainers/image-spec/blob/main/manifest.md[OCIイメージマニフェスト]である可能性があります。 詳細はレジストリとイメージによって異なる場合があります。

OCIマニフェストと設定

このコールバックはOCIイメージのマニフェストとその設定を取得します。この情報は、コンテナイメージのマニフェストと、コンテナランタイムがそれを実行するために使用する設定情報を取得するために使用できます。

キャッシング

この情報を取得するには、Admission Controllerポリシーホストとリモートレジストリ間でネットワークリクエストが必要です。これらの操作は時間がかかる場合があるため、結果は1分間キャッシュされます。

認証

プライベートレジストリとのやり取りには、Admission Controllerポリシーホストがリモートレジストリに対して認証を行う必要があります。

ポリシーホストは、リモートレジストリからポリシーを取得するために使用されるのと同じ資格情報のセットを使用します。

通信プロトコル

これは、この機能を公開するために使用されるwaPCプロトコルの説明です:

waPC関数 - `v1/oci_manifest_config`入力

# OCI URI - JSON encoded string
string

waPC関数 - `v1/oci_manifest_config`出力

{
  "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
      }
    ]
  }
}

例えば、`ghcr.io/kubewarden/policy-server:v1.13.0`イメージのマニフェストと設定をリクエストする場合、ペイロードは次のようになります:

  • 入力ペイロード: "ghcr.io/kubewarden/policy-server:v1.13.0"

  • 出力ペイロード: レジストリから取得した成功した応答の本文。それにはhttps://github.com/opencontainers/image-spec/blob/main/manifest.md[OCIイメージマニフェスト]、イメージダイジェスト、およびhttps://github.com/opencontainers/image-spec/blob/main/config.md[OCIイメージ設定]が含まれます。