GithubHelp home page GithubHelp logo

shaneutt / quay-operator Goto Github PK

View Code? Open in Web Editor NEW

This project forked from quay/quay-operator

0.0 1.0 0.0 35.71 MB

Operator for deploying and managing Quay

License: Apache License 2.0

Dockerfile 0.24% Go 93.24% Makefile 0.78% Shell 5.74%

quay-operator's Introduction

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

quay-operator's People

Contributors

alecmerdler avatar sabre1041 avatar ricardomaraschini avatar jonathankingfc avatar flavianmissi avatar syed avatar billdett avatar scouturier avatar ibazulic avatar hdonnay avatar dmage avatar hammermeetnail avatar nichitagutu avatar cnuland avatar juozasa avatar dmesser avatar thomasmckay avatar itewk avatar dmvolod avatar drichtarik avatar dgangaia avatar jonathanicholas avatar krishchow avatar mbach04 avatar jjmengze avatar samycoenen avatar tjololo avatar harishsurf avatar aolle avatar

Watchers

 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.