Project

Profile

Help

Pulp Container Roadmap » History » Sprint/Milestone 21

ipanova@redhat.com, 08/15/2019 04:51 PM

1 1 ipanova@redhat.com
# Pulp Docker Roadmap
2 2 ipanova@redhat.com
3
~~~
4
This is a living document that is moving towards a long term plan to develop Docker plugin for Pulp 3.0 and beyond.
5
~~~
6 1 ipanova@redhat.com
7 18 ipanova@redhat.com
~~~
8
With Pulp as a docker registry you can:
9
10
- Mirror container image repositories hosted on Docker-hub, Google Container Registry, Quay.io, etc
11
- Reduce disk use space by mirroring container image repositories using the "on demand" policy. An image is only downloaded once it has been requested by a client.
12
- Use local filesystem or an object storage store such as S3 to host all the container images.
13
- Curate container images by whitelisting what is mirrored from an external repository.
14
- Curate container images by creating repository versions with a specific set of images.
15
- Create versioned repositories that can be promoted or rolled back with a single operation.
16
17
Pulp also has:
18
- tasking system that can be used to perform a variety of specialized work such as analysis of content. e.g. integration with clair-scanner
19
- a large community of users
20
- a commuity of plugin developers
21
~~~
22
23 16 ipanova@redhat.com
<span style="color: #458b74;">green</span>  
24 14 ipanova@redhat.com
h2. Supported Content Types
25 1 ipanova@redhat.com
26
### MVP
27
28 16 ipanova@redhat.com
  - <span style="color: #458b74;">Image manifest schema2 and schema1</span>
29
  - {color: #458b74} Manifest list
30
  - {color: #458b74} Blob
31
  - {color: #458b74} Tag
32 2 ipanova@redhat.com
33 1 ipanova@redhat.com
## Pulp Docker Plugin Use Cases
34
35
### MVP
36
37 2 ipanova@redhat.com
##### Sync
38 8 ipanova@redhat.com
39 16 ipanova@redhat.com
  - <span style="color: #458b74;">As a user I can sync docker repo from docker registry</span>
40 1 ipanova@redhat.com
41
<!-- end list -->
42 8 ipanova@redhat.com
43 16 ipanova@redhat.com
  - {color: #458b74} assumes registry is compliant v2 api specs
44
  - {color: #458b74} with token based auth
45 21 ipanova@redhat.com
  - {color: #458b74} with basic auth
46 16 ipanova@redhat.com
  - {color: #458b74} specify \`feed\` and \`upstream_name\`
47 8 ipanova@redhat.com
48
<!-- end list -->
49 1 ipanova@redhat.com
50 19 ipanova@redhat.com
  - {color: #458b74} As a user I can sync a registry by whitelisting tags ( Filtered Sync)
51
  - {color: #458b74} As a user i can lazily fetch docker repo by specifying the download policy
52 21 ipanova@redhat.com
  - {color: #458b74} As a user I can sync a private docker repo from docker registry  
53 20 ipanova@redhat.com
    \*{color: #458b74} As a user I can sync from a docker repo published by Pulp ( pulp2pulp3 and pulp3pulp3 sync)
54 17 ipanova@redhat.com
  - {color: #458b74} As a user, I can mirror the content of a remote repository with an additive behaviour, so content is never removed locally.
55 19 ipanova@redhat.com
  - As a user I can validate the size and the checksum of downloaded content against metadata ( #2625 #2624)
56 1 ipanova@redhat.com
57
**NOTE**: dropping enable_v1, enable_v2, mask_id options
58
59 8 ipanova@redhat.com
##### Publish
60
61 16 ipanova@redhat.com
  - {color: #458b74} As a user I can distribute docker content
62
  - {color: #458b74} As a user, I can specify publish_directory( i.e base_path) from which the content will be served( provided by pulp_core)
63 1 ipanova@redhat.com
  - As a user, I can specify repo-registry-id that will be used in the docker registry
64 13 ipanova@redhat.com
  - As a user i can specify redirect-url which will lead to the location the content is stored
65 1 ipanova@redhat.com
  - As a user I can specify whether i want to convert docker image schema2 to schema1( aka schema convertor, for older clients support)
66 20 ipanova@redhat.com
  - As a user I cam pull from docker registry that has auth mechanish  
67
    \* token auth  
68
    \* basic auth
69 8 ipanova@redhat.com
70 1 ipanova@redhat.com
As a result the above section should enable clients to perform \`docker/podman pull\`
71
72 21 ipanova@redhat.com
**NOTE** dropping protected option
73
74
##### Filtering
75
76
  - %{color: #458b74} As a user I can filter tags and images by digest, media_type, tag_name %
77
78 1 ipanova@redhat.com
##### Addition of the content to the repo with deps
79
80
  - As a user I can add Manifest and all Blobs it references to the destination repo
81
  - As a user I can add Manifest List and all Manifests and Blobs it references to the destination repo
82 2 ipanova@redhat.com
  - As a user I can add Tag and all its' associated content it references to the destination repo
83 1 ipanova@redhat.com
84 21 ipanova@redhat.com
##### Removal of the content from the repo with deps
85 1 ipanova@redhat.com
86 21 ipanova@redhat.com
  - As a user I can remove Manifest and all Blobs it references from the repo
87
  - As a user I can remove Manifest List and all Manifests and Blobs it references from the repo
88
  - As a user I can remove Tag and all its' associated content it references from the repo
89
90
**NOTE** units that are referenced by other units are not removed, unless force flag is specified
91
92
##### Force removal of the content from the repo with deps
93
94
  - As a user I can remove Manifest and all Blobs it references from the repo
95
  - As a user I can remove Manifest List and all Manifests and Blobs it references from the repo
96
  - As a user I can remove Tag and all its' associated content it references from the repo
97
98
##### Copy of the content form source repo to the dest repo with deps
99
100
  - As a user I can copy by digest Manifest and all Blobs it references from the source repo to the destination repo
101
  - As a user I can copy by digest Manifest List and all Manifests and Blobs it references from the source repo to the destination repo
102
  - As a user I can copy Tag by name and all its' associated content it references from the source repo to the destination repo
103
104
##### Adding/removing Tag via pulp api
105
106
  - As a user I can Tag an imagine in a repo
107
  - As a user I can Untag an imagine in a repo
108
  - As a user I can point existing Tag to a different image in a repo
109
110 1 ipanova@redhat.com
### Post-MVP 4.1+
111
112 21 ipanova@redhat.com
##### Sync
113
114
  - As a user, I can sync from a repository with Forein Layers and save them in pulp for disconnected env.
115
  - As a user, I can exactly mirror the content of a remote repository( mirror on sync)
116
117
##### Publish
118
119
  - As a user I can distribute docker content using a remote server ( rsync exporter)
120
121 3 ipanova@redhat.com
##### Upload Artifacts( units are not created):
122 2 ipanova@redhat.com
123 3 ipanova@redhat.com
  - As a user I can upload  
124 1 ipanova@redhat.com
    \* Manifest Lists  
125 16 ipanova@redhat.com
    \* Image Manifests  
126
    \* Blobs  
127
    \* (no upload of tags)
128
129 13 ipanova@redhat.com
##### Create Content Units from uploaded Artifacts( MVP docker content types)
130 16 ipanova@redhat.com
131 19 ipanova@redhat.com
##### Multi-unit Upload from Tarball:
132 1 ipanova@redhat.com
133
  - As a user I can upload a skopeo generated tarball that contains one or many content units
134 16 ipanova@redhat.com
135 1 ipanova@redhat.com
##### Enable v2/catalog endpoint
136 10 ipanova@redhat.com
137 13 ipanova@redhat.com
##### Custom Live API (4.1+))
138 11 ipanova@redhat.com
139 7 ipanova@redhat.com
  - some dedicated storage for the metadata files ( remove the need of in-memory database)
140 13 ipanova@redhat.com
  - enable docker push functionality or provide this as a separate plugin/package
141 8 ipanova@redhat.com
142 3 ipanova@redhat.com
## What will be dropped in Pulp3
143 1 ipanova@redhat.com
144 2 ipanova@redhat.com
  - v1 API support. In Pulp3 we'll have just v2 api registry and corresponding v2 content types
145
  - v1/search. There is no v2/search so \`docker search\` for v2 content will not work. If upstream docker will add support for v2 docker content search by the time we deliver docker plugin for pulp3 we will reconsider and include the endpoint.
146 1 ipanova@redhat.com
  - content protection. In Pulp3 docker repos will not support entitlement cert protection. ( option \`protected\` is dropped)
147 7 ipanova@redhat.com
  - export content into a tar file. It was possible to do so for v1 content.
148 13 ipanova@redhat.com
  - Crane is not longer used as a registry API. Pulp 3's ability to serve custom live APIs has made it possible for Crane's feature set to be incorporated into the pulp_docker plugin