Git Product home page Git Product logo

oc-mirror's Introduction

oc-mirror

oc-mirror is an OpenShift Client (oc) plugin that manages OpenShift release, operator catalog, helm charts, and associated container images for mirror registries that support OpenShift environments.

Community

Please join us for our oc-mirror weekly community meeting Thursdays at 12pm EST https://zoom.us/j/99871298397?pwd=eHYrYlQxTDJaOTQ2bDl3VXlRMjFpUT09 . Retrieve the meeting passcode from the first comment in the following issue: openshift#349 .

Usage

asciicast

The mirror registry reg.mirror.com is used in this example. Replace this value with a real registry host, or create a docker.io/library/registry:2 container locally.\

DISCLAIMER: oc-mirror is not compatible with Quay below version 3.6.

Configuration Examples

Example configurations can be found in the docs here

Environment Prep

  1. Download pull secret and place at ~/.docker/config.json1.
    • Your mirror registry secret must have both push and pull scopes.
  2. Build:
    make build

Building the ImageSet Config

Backends

IMPORTANT: Backends must be configured to utilize the lifecycle management features of oc-mirror. Examples are below.

apiVersion: mirror.openshift.io/v1alpha2
kind: ImageSetConfiguration
archiveSize: 1
storageConfig:
  local:
    path: /home/user/workspace
apiVersion: mirror.openshift.io/v1alpha2
kind: ImageSetConfiguration
storageConfig:
  registry:
    imageURL: localhost:5000/metadata:latest
    skipTLS: true

Content Discovery

Updates

  • List updates since the last oc-mirror run
    ./bin/oc-mirror list updates --config imageset-config.yaml

Releases

  1. List all available release payloads for a version of OpenShift (defaults to stable)
    ./bin/oc-mirror list releases --version=4.9
  2. List all available channels to query for a version of OpenShift
    ./bin/oc-mirror list releases --channels --version=4.9
  3. List all available release payloads for a version of OpenShift in a specified channel
    ./bin/oc-mirror list releases --channel=fast-4.9

Operators

  1. List all available catalogs for a version of OpenShift
    ./bin/oc-mirror list operators --catalogs --version=4.9
  2. List all available packages in a catalog
    ./bin/oc-mirror list operators --catalog=catalog-name
  3. List all available channels in a package
    ./bin/oc-mirror list operators --catalog=catalog-name --package=package-name
  4. List all available versions in a channel
    ./bin/oc-mirror list operators --catalog=catalog-name --package=package-name --channel=channel-name

Mirroring

Fully Disconnected

  • Create then publish to your mirror registry:
    ./bin/oc-mirror --config imageset-config.yaml file://archives
    ./bin/oc-mirror --from /path/to/archives docker://reg.mirror.com

Partially Disconnected

  • Publish mirror to mirror
    ./bin/oc-mirror --config imageset-config.yaml docker://localhost:5000

Additional Features

  • Get information on your imageset using describe
    ./bin/oc-mirror describe /path/to/archives
  • List updates since last run for releases and operators
    ./bin/oc-mirror list updates --config imageset-config.yaml

For configuration and options, see the expanded overview and usage docs.

1 For this example, the create and publish steps are run on the same machine. Therefore your ~/.docker/config.json or ${XDG_RUNTIME_DIR}/containers/auth.json should contain auth config for both release/catalog source images and your mirror registry.

oc-mirror Spec

See the config spec for an in-depth description of fields.

Note: The imageset-config.yaml is only used during bundle creation.

Development

Requirements

  • All top-level requirements
  • go version 1.16+

Build

make
./bin/oc-mirror -h

Test

Unit:

make test-unit

E2E:

make test-e2e

oc-mirror's People

Contributors

jpower432 avatar openshift-merge-robot avatar estroz avatar david-rh avatar jharmison-redhat avatar sfxworks avatar usrbinkat avatar redhatdan avatar ianwatsonrh avatar bergerhoffer avatar dmesser avatar openshift-bot avatar dinhxuanvu avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.