-
Notifications
You must be signed in to change notification settings - Fork 32
Add in-cluster offline devfile registry installation manual instruction #159
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
54dcd54
8b48c9c
41c4f5d
460a4ef
8809d78
496f1b7
f355285
a8843b2
c8a9b0b
380519f
702b047
dc8d130
92df126
30ea0c4
c24828f
5be8e3a
ad85faa
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
:description: Installation of In-Cluster Offline Devfile Registry | ||
:navtitle: Offline Devfile Registry | ||
:keywords: devfile, registry, stacks | ||
|
||
= Installation of In-Cluster Offline Devfile Registry | ||
|
||
A devfile refers to various resources, such as container images and starter projects. The current devfile registry currently does not store those supporting resources. Therefore, you must have access to those resources when using those devfiles. | ||
|
||
To support the air gap installation of the devfile registry, the air gap scenario divides into two stages: | ||
|
||
. Build a devfile registry based on one or more source repositories so that the registry contains all the resources available for offline installation. | ||
. Install the devfile registry to a cluster to make it available for users to access the registry. | ||
|
||
include::partial$proc_stage-1-build-and-package-a-devfile-registry.adoc[] | ||
|
||
include::partial$proc_stage-2-install-a-devfile-registry-to-a-cluster.adoc[] | ||
|
||
include::partial$proc_update-strategy-for-refreshing-registry-contents.adoc[] |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,173 @@ | ||
[id="stage-1-build-and-package-a-devfile-registry_{context}"] | ||
== Stage 1: Build and Package a Devfile Registry | ||
|
||
The main goal of this stage is: | ||
|
||
. Pull in resources into the registry as part of the registry build. | ||
. Modify the devfile to update references to those offline resources as part of the registry build. | ||
|
||
.Prerequisites | ||
|
||
* Golang 1.17.x or higher | ||
* Docker 17.05 or higher or Podman 4.0.x or higher | ||
* Git | ||
* Curl | ||
* Archive Tools (such as `unzip`) | ||
|
||
=== Create Offline Registry | ||
|
||
Download / clone the link:https://github.com/devfile/registry[devfile/registry] repository. | ||
|
||
.Procedure | ||
michael-valdron marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
* Clone through HTTPS | ||
+ | ||
[source,bash] | ||
---- | ||
git clone https://github.com/devfile/registry.git /path/to/registry | ||
---- | ||
+ | ||
* Clone through SSH | ||
+ | ||
[source,bash] | ||
---- | ||
git clone [email protected]:devfile/registry.git /path/to/registry | ||
---- | ||
|
||
.Additional resources | ||
|
||
* To create your own registry Git repository, see xref:building-a-custom-devfile-registry.adoc[Building a custom devfile registry] | ||
|
||
=== Install Stack Images | ||
|
||
You will first need to collect all the image tags used in the stacks needed for offline access. The image tags collected are to each be pulled, re-tagged, and installed into the image repository accessible by the offline cluster. Procedure here will require you to **change the devfile**. | ||
|
||
.Procedure | ||
michael-valdron marked this conversation as resolved.
Show resolved
Hide resolved
|
||
. Use the `docker pull` or the `podman pull` to pull down an image for a stack component: | ||
+ | ||
[source,bash] | ||
---- | ||
podman pull registry.access.redhat.com/ubi8/nodejs-16:latest | ||
---- | ||
+ | ||
. Use the `docker tag` or the `podman tag` to re-tag the image that uses the form `<registry_host>:<port>/<project>/<image>`: | ||
+ | ||
[source,bash] | ||
---- | ||
podman tag registry.access.redhat.com/ubi8/nodejs-16:latest \ | ||
<registry_host>:<port>/<project>/nodejs-16:latest | ||
---- | ||
+ | ||
. Use the `docker push` or `podman push` to push the re-tagged image to the image repository at `<registry_host>:<port>`: | ||
+ | ||
[source,bash] | ||
---- | ||
podman push <registry_host>:<port>/<project>/nodejs-16:latest | ||
---- | ||
|
||
.Additional resources | ||
|
||
* For more on interacting with the OpenShift Image Registry, see link:https://docs.openshift.com/container-platform/4.10/registry/accessing-the-registry.html[Accessing the registry] | ||
|
||
=== Packaging Starter Projects | ||
|
||
To package starter projects you will need to download them manually then place them under `/stacks/<stack>/<zip>-offline.zip`. Procedure here will require you to **change the devfile**. | ||
|
||
*Note*: Starter projects must be packaged under an archive with the suffix `-offline` to be pulled into the registry. | ||
|
||
.Procedure | ||
|
||
. `zip` - Download archive | ||
+ | ||
Example | ||
+ | ||
[source,bash] | ||
---- | ||
cd /path/to/registry | ||
curl -L https://code.quarkus.io/d?e=io.quarkus%3Aquarkus-resteasy&e=io.quarkus%3Aquarkus-micrometer&e=io.quarkus%3Aquarkus-smallrye-health&e=io.quarkus%3Aquarkus-openshift&cn=devfile \ | ||
-o stacks/java-quarkus/community-offline.zip | ||
---- | ||
+ | ||
. `git` - Package cloned contents into a directory then archive | ||
+ | ||
Example | ||
+ | ||
[source,bash] | ||
---- | ||
cd /path/to/registry | ||
git clone https://github.com/odo-devfiles/nodejs-ex.git \ | ||
stacks/nodejs/nodejs-starter-offline | ||
cd stacks/nodejs | ||
zip -r nodejs-starter-offline.zip nodejs-starter-offline | ||
---- | ||
|
||
=== Modify Devfile | ||
|
||
Change the devfile so you can update references to those offline resources as part of the registry build. For all the items pulled into the registry, update the corresponding devfile entries to reference the resources within the offline version in the registry: | ||
|
||
. All location references to `starterProjects` will change to local paths relative to the stacks directory. | ||
. Stack component image references will change to use the offline accessible image repository. | ||
|
||
.Procedure | ||
|
||
. Under `starterProjects`, find the starter project definition you want to make offline. | ||
. Under the definition for the starter project find either `git` or `zip`: | ||
+ | ||
.Starter Project Before | ||
==== | ||
---- | ||
... | ||
starterProjects: | ||
- name: nodejs-starter | ||
git: | ||
remotes: | ||
origin: https://github.com/odo-devfiles/nodejs-ex.git | ||
... | ||
---- | ||
==== | ||
+ | ||
. Do one of the following depending on the block type: | ||
* If `git`, replace all of the `git` block with a `zip` block and add the `location` to be the path to the local file under the stack root directory (`<registry_root>/stacks/<stack>/`). | ||
* If `zip`, just replace the value of `location` to the local file under the stack root directory (`<registry_root>/stacks/<stack>/`). | ||
|
||
.Verification step | ||
|
||
To confirm you modified your devfile, verify your altered starter project definition is similar to the following example: | ||
|
||
.Altered Starter Project Definition | ||
==== | ||
---- | ||
... | ||
starterProjects: | ||
- name: nodejs-starter | ||
zip: | ||
location: nodejs-starter-offline.zip | ||
... | ||
---- | ||
==== | ||
|
||
.Additional resources | ||
|
||
* To learn more about starter projects in devfiles, see xref:adding-projects-to-a-devfile.adoc[Adding projects to a devfile] | ||
|
||
=== Build Registry | ||
|
||
.Procedure | ||
|
||
. If not already at the root of the registry, change to the root of the registry. | ||
+ | ||
[source,bash] | ||
---- | ||
cd /path/to/registry | ||
---- | ||
+ | ||
. Build the registry image. | ||
+ | ||
[source,bash] | ||
---- | ||
bash .ci/build.sh | ||
---- | ||
|
||
.Additional resources | ||
|
||
* For more information about building your own registry image, see xref:building-a-custom-devfile-registry.adoc[Building a custom devfile registry] |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
[id="stage-2-install-a-devfile-registry-to-a-cluster_{context}"] | ||
michael-valdron marked this conversation as resolved.
Show resolved
Hide resolved
|
||
== Stage 2: Install a Devfile Registry to a cluster | ||
|
||
In this stage, you will push the container images to a registry available to the offline cluster. | ||
|
||
.Prerequisites | ||
|
||
* Docker 17.05 or higher or Podman 4.0.x or higher | ||
|
||
=== Install Image into Cluster Image Registry | ||
|
||
The process of installing the built images into an offline image registry depends on which image registry has deployed and which image registry you have access to. | ||
|
||
.Procedure | ||
|
||
. Use the `docker tag` or the `podman tag` to re-tag the image using the form `<registry_host>:<port>/<project>/<image>`: | ||
+ | ||
[source,bash] | ||
---- | ||
podman tag devfile-index <registry_host>:<port>/<project>/devfile-index | ||
---- | ||
+ | ||
. Use the `docker push` or `podman push` to push the re-tagged image to the cluster image registry at `<registry_host>:<port>`: | ||
+ | ||
[source,bash] | ||
---- | ||
podman push <registry_host>:<port>/<project>/devfile-index | ||
---- | ||
|
||
.Additional resources | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. You also need a step that mentions updating each devfile's image references to the new, pushed image. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Oh good catch I will add this here. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @johnmcollier Done. Check out new section called |
||
|
||
* For more on interacting with the OpenShift Image Registry, see link:https://docs.openshift.com/container-platform/4.10/registry/accessing-the-registry.html[Accessing the registry] |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
[id="update-strategy-for-refreshing-registry-contents_{context}"] | ||
== Update strategy for refreshing registry contents | ||
|
||
Steps to update an already deployed registry in the air gap scenario: | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Is this document for updating an already running offline registry, or making an already running online registry, offline? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @johnmcollier Already running offline registry. |
||
|
||
. Follow offline registry instructions in the above sections and rerun the registry build script to rebuild the devfile registry. | ||
. Update the existing offline devfile registry deployment with a newly built and updated offline devfile registry image. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would make this step a prereq:
=== Create Offline Registry
.Prerequisite
Download and clone the link:https://github.com/devfile/registry[devfile/registry] repository.
.Procedure
< the steps you have >
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@jc-berger Could we rephrase it to be like: "The devfile/registry repository has been cloned"?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@jc-berger This is the only step in this section, the phrase is only describing which the following commands do.