GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - operator-framework/operator-controller: A new and improved management framework for extending Kubernetes with Operators

BranchesTags
Open more actions menu

Latest commit

 

History

2,036 Commits
2,036 Commits

Folders and files

NameName
Last commit message
Last commit date
.claude
.claude
 
 
.github
.github
 
 
api
api
 
 
applyconfigurations
applyconfigurations
 
 
cmd
cmd
 
 
config
config
 
 
dev
dev
 
 
docs
docs
 
 
hack
hack
 
 
helm
helm
 
 
internal
internal
 
 
kind-config
kind-config
 
 
manifests
manifests
 
 
scripts
scripts
 
 
test
test
 
 
testdata
testdata
 
 
.dockerignore
.dockerignore
 
 
.gitignore
.gitignore
 
 
.golangci.yaml
.golangci.yaml
 
 
.goreleaser.yml
.goreleaser.yml
 
 
.tilt-support
.tilt-support
 
 
.tiltignore
.tiltignore
 
 
AGENTS.md
AGENTS.md
 
 
CONTRIBUTING.md
CONTRIBUTING.md
 
 
DCO
DCO
 
 
Dockerfile.catalogd
Dockerfile.catalogd
 
 
Dockerfile.object-controller
Dockerfile.object-controller
 
 
Dockerfile.operator-controller
Dockerfile.operator-controller
 
 
LICENSE
LICENSE
 
 
Makefile
Makefile
 
 
Makefile.venv
Makefile.venv
 
 
OWNERS
OWNERS
 
 
OWNERS_ALIASES
OWNERS_ALIASES
 
 
PROJECT
PROJECT
 
 
README.md
README.md
 
 
RELEASE.md
RELEASE.md
 
 
Tiltfile
Tiltfile
 
 
codecov.yml
codecov.yml
 
 
crd-diff-config.yaml
crd-diff-config.yaml
 
 
go.mod
go.mod
 
 
go.sum
go.sum
 
 
mkdocs.yml
mkdocs.yml
 
 
netlify.toml
netlify.toml
 
 
requirements.txt
requirements.txt
 
 
runtime.txt
runtime.txt
 
 

Repository files navigation

unit-test e2e codecov

operator-controller

The operator-controller is the central component of Operator Lifecycle Manager (OLM) v1. It extends Kubernetes with an API through which users can install extensions.

Overview

OLM v1 is the follow-up to OLM v0. Its purpose is to provide APIs, controllers, and tooling that support the packaging, distribution, and lifecycling of Kubernetes extensions. It aims to:

  • align with Kubernetes designs and user assumptions
  • provide secure, high-quality, and predictable user experiences centered around declarative GitOps concepts
  • give cluster admins the minimal necessary controls to build their desired cluster architectures and to have ultimate control

OLM v1 consists of the following components:

  • operator-controller
  • catalogd
  • object-controller (experimental): reconciles mutable ClusterObjectDeployment templates and immutable ClusterObjectSet revisions, independently of ClusterExtension and ClusterCatalog

Standard installations use operator-controller and catalogd. With the experimental BoxcutterRuntime enabled, operator-controller resolves and renders bundles into ClusterObjectDeployments; object-controller creates their revisions and reconciles the managed resources in phases. Object-controller can also be deployed standalone. See the architecture for component responsibilities.

For a more complete overview of OLM v1 and how it differs from OLM v0, see our overview.

Documentation

The documentation currently lives at website. The source of the documentation exists in this repository, see docs directory.

Getting Started

To get started with OLM v1, please see our Getting Started documentation.

ClusterCatalog

Quickstart DEMO

ClusterCatalog Demo

ClusterCatalog Quickstart Steps

Procedure steps marked with an asterisk (*) are likely to change with future API updates.

NOTE: The examples below use the -k flag in curl to skip validating the TLS certificates. This is for demonstration purposes only.

  1. To get started with OLM v1, please see our Getting Started documentation.

  2. Create a ClusterCatalog object that points to the OperatorHub Community catalog by running the following command:

    $ kubectl apply -f - << EOF
    apiVersion: olm.operatorframework.io/v1
    kind: ClusterCatalog
    metadata:
      name: operatorhubio
    spec:
      source:
        type: Image
        image:
          ref: quay.io/operatorhubio/catalog:latest
    EOF
  3. Verify the ClusterCatalog object was created successfully by running the following command:

    $ kubectl describe clustercatalog/operatorhubio

    Example output

    Name:         operatorhubio
    Namespace:
    Labels:       olm.operatorframework.io/metadata.name=operatorhubio
    Annotations:  <none>
    API Version:  olm.operatorframework.io/v1
    Kind:         ClusterCatalog
    Metadata:
      Creation Timestamp:  2024-10-17T13:48:46Z
      Finalizers:
        olm.operatorframework.io/delete-server-cache
      Generation:        1
      Resource Version:  7908
      UID:               34eeaa91-9f8e-4254-9937-0ae9d25e92df
    Spec:
      Availability Mode:  Available
      Priority:  0
      Source:
        Image:
          Ref:            quay.io/operatorhubio/catalog:latest
        Type:             Image
    Status:
      Conditions:
        Last Transition Time:  2024-10-17T13:48:59Z
        Message:               Successfully unpacked and stored content from resolved source
        Observed Generation:   1
        Reason:                Succeeded
        Status:                False
        Type:                  Progressing
        Last Transition Time:  2024-10-17T13:48:59Z
        Message:               Serving desired content from resolved source
        Observed Generation:   1
        Reason:                Available
        Status:                True
        Type:                  Serving
      Last Unpacked:           2024-10-17T13:48:58Z
      Resolved Source:
        Image:
          Last Successful Poll Attempt:  2024-10-17T14:49:59Z
          Ref:                           quay.io/operatorhubio/catalog@sha256:82be554b15ff246d8cc428f8d2f4cf5857c02ce3225d95d92a769ea3095e1fc7
        Type:                            Image
      Urls:
        Base:  https://catalogd-service.olmv1-system.svc/catalogs/operatorhubio
    Events:    <none>
  4. Port forward the catalogd-service service in the olmv1-system namespace:

    $ kubectl -n olmv1-system port-forward svc/catalogd-service 8080:443
  5. Access the v1/all service endpoint and filter the results to a list of packages by running the following command:

    $ curl https://localhost:8080/catalogs/operatorhubio/api/v1/all | jq -s '.[] | select(.schema == "olm.package") | .name'

    Example output

      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                    Dload  Upload   Total   Spent    Left  Speed
    100  110M  100  110M    0     0   112M      0 --:--:-- --:--:-- --:--:--  112M
    "ack-acm-controller"
    "ack-apigatewayv2-controller"
    "ack-applicationautoscaling-controller"
    "ack-cloudtrail-controller"
    "ack-cloudwatch-controller"
    "ack-dynamodb-controller"
    "ack-ec2-controller"
    "ack-ecr-controller"
    "ack-eks-controller"
    "ack-elasticache-controller"
    "ack-emrcontainers-controller"
    "ack-eventbridge-controller"
    "ack-iam-controller"
    "ack-kinesis-controller"
    ...
  6. Run the following command to get a list of channels for the ack-acm-controller package:

    $ curl https://localhost:8080/catalogs/operatorhubio/api/v1/all | jq -s '.[] | select(.schema == "olm.channel") | select(.package == "ack-acm-controller") | .name'

    Example output

      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                    Dload  Upload   Total   Spent    Left  Speed
    100  110M  100  110M    0     0   115M      0 --:--:-- --:--:-- --:--:--  116M
    "alpha"
  7. Run the following command to get a list of bundles belonging to the ack-acm-controller package:

    $ curl https://localhost:8080/catalogs/operatorhubio/api/v1/all | jq -s '.[] | select(.schema == "olm.bundle") | select(.package == "ack-acm-controller") | .name'

    Example output

      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                    Dload  Upload   Total   Spent    Left  Speed
    100  110M  100  110M    0     0   122M      0 --:--:-- --:--:-- --:--:--  122M
    "ack-acm-controller.v0.0.1"
    "ack-acm-controller.v0.0.2"
    "ack-acm-controller.v0.0.4"
    "ack-acm-controller.v0.0.5"
    "ack-acm-controller.v0.0.6"
    "ack-acm-controller.v0.0.7"

License

Copyright 2022-2024.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

About

A new and improved management framework for extending Kubernetes with Operators

operator-framework.github.io/operator-controller/

Resources

Readme
Apache-2.0 license

Contributing

Contributing
Activity
Custom properties

Stars

216 stars

Watchers

13 watching

Forks

86 forks
Report repository

Releases

Packages

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.