• Stars
    star
    120
  • Rank 295,983 (Top 6 %)
  • Language
    Go
  • License
    Apache License 2.0
  • Created over 5 years ago
  • Updated 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Operator for deploying and managing Quay

Quay Operator

CI

Opinionated deployment of Quay container registry on Kubernetes.

Welcome

The original version of the quay-operator is available on the v1 branch. The next generation operator, known as TNG or v2, is developed on master branch.

Principles

  • Kubernetes is a powerful platform with an abundance of existing and future features. Always prefer to leverage something Kubernetes does better than try to implement it again.
  • Favor declarative application management to improve everyone's sanity and understanding of the state.
  • Make things simple by default, but always allow diving deeper to discover the details of what is going on.

Getting Started

This Operator can be installed on any Kubernetes cluster running the Operator Lifecycle Manager. Simply create the provided CatalogSource to make the package available on the cluster, then create the Subscription to install it.

You can find the latest operator release on operatorhub.io.

The fastest way to get started is by deploying the operator in an OCP/OKD cluster using the setup scripts provided in the hack directory:

./hack/storage.sh  # install noobaa via ODF operator
./hack/deploy.sh
oc create -n <your-namespace> -f ./config/samples/managed.quayregistry.yaml

Or run the steps one by one.

Step by step

Create the CatalogSource:

$ kubectl create -n openshift-marketplace -f ./bundle/quay-operator.catalogsource.yaml

Wait a few seconds for the package to become available:

$ kubectl get packagemanifest --all-namespaces | grep quay

Create the OperatorGroup:

$ kubectl create -n <your-namespace> -f ./bundle/quay-operator.operatorgroup.yaml

Create the Subscription to install the Operator:

$ kubectl create -n <your-namespace> -f ./bundle/quay-operator.subscription.yaml

Using the Operator

Component Container Images

When using a downstream build or container image overrides which are hosted in private repositories, you can provide pull secrets by adding them to the default ServiceAccount in the namespace.

Batteries-included, zero-config

Install RHOCS Operator using OperatorHub:

Create NooBaa object in openshift-storage namespace:

$ kubectl create -n openshift-storage -f ./kustomize/components/objectstorage/quay-datastore.noobaa.yaml

Wait a few minutes for Noobaa to be phase: Ready:

$ kubectl get -n openshift-storage noobaas noobaa -w
NAME     MGMT-ENDPOINTS              S3-ENDPOINTS                IMAGE                                                                                                            PHASE   AGE
noobaa   [https://10.0.32.3:30318]   [https://10.0.32.3:31958]   registry.redhat.io/ocs4/mcg-core-rhel8@sha256:56624aa7dd4ca178c1887343c7445a9425a841600b1309f6deace37ce6b8678d   Ready   3d18h

Create QuayRegistry instance:

$ kubectl create -n <your-namespace> -f ./config/samples/managed.quayregistry.yaml

Community

Contributing

Pull requests and bug reports are always welcome!

Local Development

Prerequisites

  • KUBECONFIG environment variable set in shell to valid k8s cluster
  • go
  • kubectl
  • kubebuilder
  • docker

Create the QuayRegistry CRD:

$ kubectl create -f ./bundle/upstream/manifests/*.crd.yaml

Run the controller:

$ make run

Tests:

$ make test

Building custom CatalogSource:

  1. Build and push the Quay Operator container:
$ docker build -t <some-registry>/<namespace>/quay-operator:dev .
$ docker push <some-registry>/<namespace>/quay-operator:dev
  1. Replace the image field in bundle/upstream/manifests/quay-operator.clusterserviceversion.yaml with the image above.

  2. Build and push an Operator bundle:

$ docker build -t <some-registry>/<namespace>/quay-operator-bundle:dev -f ./bundle/Dockerfile ./bundle
$ docker push <some-registry>/<namespace>/quay-operator-bundle:dev
  1. Build and push an Operator index image using opm:
$ cd bundle/upstream
$ opm index add --bundles <some-registry>/<namespace>/quay-operator-bundle:dev --tag <some-registry>/<namespace>/quay-operator-index:dev
$ docker push <some-registry>/<namespace>/quay-operator-index:dev
  1. Replace the spec.image field in bundle/quay-operator.catalogsource.yaml with the image above.

  2. Create the custom CatalogSource:

$ kubectl create -n openshift-marketplace -f ./bundle/quay-operator.catalogsource.yaml

More Repositories

1

clair

Vulnerability Static Analysis for Containers
Go
10,288
star
2

quay

Build, Store, and Distribute your Applications and Containers
Python
2,479
star
3

jwtproxy

An HTTP-Proxy that adds AuthN through JWTs
Go
408
star
4

claircore

foundation modules for scanning container packages and reporting vulnerabilities
Go
142
star
5

container-security-operator

Identify image vulnerabilities in Kubernetes pods
Go
104
star
6

quayctl

quayctl is a command-line client for Quay
Go
91
star
7

mirror-registry

A standalone registry used to mirror images for Openshift installations.
Go
55
star
8

dba-operator

Kubernetes Operator that orchestrates relational database schema migrations
Go
35
star
9

registry-monitor

a simple server that pushes and pulls to a registry
Go
29
star
10

quay-bridge-operator

Utilization of Red Hat Quay as the default image registry for an OpenShift Container Platform environment
Go
20
star
11

quay-builder

A worker process used by Quay to build containers
Go
12
star
12

quay-ansible

Jinja
11
star
13

quay-docs

Project Quay documentation
Jinja
11
star
14

clair-jwt

clair behind jwtproxy in one container
Shell
8
star
15

quay-performance-scripts

Repository to warehouse Quay performance scripts.
Python
6
star
16

clair-action

Clair in the CI. Github actions, tekton pipelines etc.
Go
5
star
17

config-tool

Configuration Validation Tool for Quay
Go
4
star
18

zlog

Contextual logging for go.
Go
4
star
19

quay-ui

UI repo for quay
TypeScript
2
star
20

alas

amazon linux alas parser
Go
2
star
21

claircore-acceptance

a repository to drive claircore acceptance testing
2
star
22

quay-cloudflare-cdn-worker

Worker for CloudFlare to be used as CDN in Quay
JavaScript
2
star
23

clair-notification-spec

A spec for ClairCore and ClairV4 notifications.
2
star
24

clair-load-test

Go
1
star
25

community

All things related to the Quay Community
1
star
26

rhcc-survey

Red Hat Container Catalog survey tool
Go
1
star
27

quay-service-tool

Service tool for running quay admin tasks
TypeScript
1
star
28

clair-enrichment-spec

Working specification for Clair V4 Enrichments
1
star
29

limits

Go package for detecting resource limits.
Go
1
star
30

clair-workspace

Some help with testing changes across Clair repositories.
1
star
31

clair-operator

a *beta* Clair operator
Rust
1
star
32

quay-ci-app

Go
1
star
33

bastion

Configuration for the bastion containers.
1
star
34

quay-builder-qemu

Shell
1
star