Open Cluster Management API

Open Cluster Management API

Go Report Card

The api repository defines relevant concepts and types for problem domains related to managing 0..* Kubernetes clusters.

Community, discussion, contribution, and support

Check the CONTRIBUTING Doc for how to contribute to the repo.


Getting Started

Prerequisites

Check the Development Doc for how to contribute to the repo.

Security Response

If you've found a security issue that you'd like to disclose confidentially please contact Red Hat's Product Security team. Details at https://access.redhat.com/security/team/contact

Comments
  • support Registration FeatureGates to pass feature gates(e.g. V1beta1CSRAPICompatibility) to registration

    support Registration FeatureGates to pass feature gates(e.g. V1beta1CSRAPICompatibility) to registration

    add HubRegistrationFeatureGates to ClusterManager Spec, and SpokeRegistrationFeatureGates to Klusterlet Spec.

    input is like:

      hubRegistrationFeatureGates:
      - V1beta1CSRAPICompatibility=true
    
      spokeRegistrationFeatureGates:
      - AddonManagement=true
      - V1beta1CSRAPICompatibility=true
    

    And then, registration-operator will convert them to --feature-gates=AddonManagement=true,--feature-gates=V1beta1CSRAPICompatibility=true, add pass to registration deployment

    We need to set V1beta1CSRAPICompatibility dynamically to registration controller.

    The PR of registration-operator pr 230 on project api, I will modify go.mod and vendor after merging this PR

    an example of klustelet CR image

    Signed-off-by: ivan-cai [email protected]

  • Introduce a PlaceWork API.

    Introduce a PlaceWork API.

    • Initial commit
    • Allows the specification of a ManifestWork.Spec
    • Allows Placement targeting of the ManifestWork.Spec
    • The controller will take the API Spec details and PlacementDecision and create new ManifestWork resources in the appropriate clusters
    • It will also remove ManifestWorks from the appropriate clusters

    Signed-off-by: Joshua Packer [email protected]

  • Make ManagedClusterSet exclusive

    Make ManagedClusterSet exclusive

    We have a proposal about how to make ManagedClusterSet exclusive: https://docs.google.com/document/d/1Dl-8g6pJS6wA-MXiaBijDjwXLPX7cJ-HQCoQKIRDze0/edit#, which was discussed in ACM Architecture Topics Open Forum on Sept. 3rd. And it's agreed that option 3 is a better solution. That's the reason why I made this change.

  • Bugfix: Adding `omitempty` jsontag for ManifestWork.status.conditions

    Bugfix: Adding `omitempty` jsontag for ManifestWork.status.conditions

    $ kubectl apply --server-side -f manifestwork-example.yaml .... .... I0506 15:03:19.363009 25916 request.go:1097] Request Body: {"apiVersion":"work.open-cluster-management.io/v1","kind":"ManifestWork","metadata":{"creationTimestamp":"2021-04-30T12:18:44Z","labels":{"foo":"bar"},"name":"demo-test","namespace":"zuoxiu-local"},"status":{"conditions":[]}} .... .... I0506 15:03:19.386561 25916 request.go:1097] Response Body: {"kind":"Status","apiVersion":"v1","metadata":{},"status":"Failure","message":"Apply failed with 1 conflict: conflict with "work" using work.open-cluster-management.io/v1: .status.conditions","reason":"Conflict","details":{"causes":[{"reason":"FieldManagerConflict","message":"conflict with "work" using work.open-cluster-management.io/v1","field":".status.conditions"}]},"code":409} F0506 15:03:19.387107 25916 helpers.go:115] error: Apply failed with 1 conflict: conflict with "work" using work.open-cluster-management.io/v1: .status.conditions Please review the fields above--they currently have other managers. Here...

    b/c the status.conditions field doesnt have the omitempty tag, the server-side applying for manifestwork resources will be constantly failing due to apply conflict. as we can tell from the patch request body, a correct SSA body omitting status subresource should be {"status":{}}, this pull will make SSA work on the manifestwork resources.

  • Add placement APIs

    Add placement APIs

    The related task: https://github.com/open-cluster-management/backlog/issues/10715

    The enhancement proposal: https://github.com/open-cluster-management/enhancements/tree/master/enhancements/sig-architecture/6-placements

    Signed-off-by: Yang Le [email protected]

  • add work helpers

    add work helpers

    Signed-off-by: Zhiwei Yin [email protected]

    issue: https://github.com/open-cluster-management-io/addon-framework/issues/127

    1. add work helpers
    2. upgrade k8s to v0.24.0 because the the old pkg "github.com/googleapis/gnostic"and the new "github.com/google/gnostic/extensions" conflict
  • Add a helper function to get all valid ManagedClusterSetBindings

    Add a helper function to get all valid ManagedClusterSetBindings

    Signed-off-by: Mike Ng [email protected]

    Based on the community meeting discussion, this repo was recommended to be a place where some OCM cluster API helper functions can live. I am looking for some feedback before I proceed with enhancing the tests and adding more test cases.

  • add API AddOnPlacementScore

    add API AddOnPlacementScore

    The related feature request: open-cluster-management-io/community#52 Ref: https://github.com/open-cluster-management/backlog/issues/18210

    Signed-off-by: haoqing0110 [email protected]

  • move registration feature gates to api, can be used by registration-o…

    move registration feature gates to api, can be used by registration-o…

    move registration feature gates to api, can be used by registration-operator for check input feature gates if valid.

    Signed-off-by: ivan-cai [email protected]

  • Update API objects to be more descriptive

    Update API objects to be more descriptive

    This markdown doc describes updates to the API to align names with existing conventions within ACM and to provide more straightforward language for discussing what has been called the nucleus operator.

  • using plural cluster in api group

    using plural cluster in api group

    Our generated client cannot list the spokecluster due to

    Failed to list *v1.SpokeCluster: the server could not find the requested resource (get spokeclusters.cluster.open-cluster-management.io)
    

    this because we register the api with a singular cluster in api group (spokeclusters.cluster.open-cluster-management.io), I think we should use the plural form

  • The v1beta1 klusterlet CRD is invalid

    The v1beta1 klusterlet CRD is invalid

    The klusterlet CRD generated for kubernetes cluster which's version is <=1.16 is invalid

    If we apply this CRD to a 1.16.3 kubernetes cluster, will get:

    # kubectl apply -f operator/v1/0001_00_operator.open-cluster-management.io_klusterlets.crd.yaml
    The CustomResourceDefinition "klusterlets.operator.open-cluster-management.io" is invalid:
    * spec.validation.openAPIV3Schema.properties[spec].properties[registrationConfiguration].properties[featureGates].items.properties[mode].default: Forbidden: must not be set
    * spec.validation.openAPIV3Schema.properties[spec].properties[workConfiguration].properties[featureGates].items.properties[mode].default: Forbidden: must not be set
    

    Another validation result from GitHub action

  • WIP:Remove default value of feature gate mode

    WIP:Remove default value of feature gate mode

    Signed-off-by: zhujian [email protected] Remove the default value of feature gate mode. because if we want to import a managed cluster which Kubernetes version is <= 1.16, it will use v1beta1 CustomResourceDefinition, but the v1beta1 CustomResourceDefinition does not support +kubebuilder:default

    ~And the default value of the feature gate false is a little confusing. if we configure a feature specifically, In most cases, I think we want our specified feature to be enabled.~

  • Addon certificate tracking and more addon status condition types

    Addon certificate tracking and more addon status condition types

    1. syncing a few existing condition types from the addon-framework, including RegistrationApplied and ManifestApplied
    2. extending new fields in the addon status to track the validtiy of the certificate
Simple-Weather-API - Simple weather api app created using golang and Open Weather API key
Simple-Weather-API - Simple weather api app created using golang and Open Weather API key

Simple Weather API Simple weather api app created using golang and Open Weather

Feb 6, 2022
💾 Wolke API is the API behind Wolke image storage and processing aswell as user management

?? Wolke API Wolke API is the API behind Wolke image storage and processing aswell as user management Deploying To deploy Wolke Bot you'll need podman

Dec 21, 2021
Go(lang) client library for accessing information of an Apache Mesos cluster.

megos Go(lang) client library for accessing an Apache Mesos cluster. Features Determine the Mesos leader Get the current state of every mesos node (ma

Sep 27, 2022
Integrate AWS EKS Anywhere cluster with AWS Services
 Integrate AWS EKS Anywhere cluster with AWS Services

This article provides step-by-step instruction on integrating AWS EKS Anywhere with AWS Services so the applications running on customer data center can securely connect with these services.

Mar 6, 2022
A Pulumi multi language component to create an IAM role for an EKS cluster

xyz Pulumi Component Provider (Go) This repo is a boilerplate showing how to create a Pulumi component provider written in Go. You can search-replace

Oct 27, 2021
CoreDNS plugin implementing K8s multi-cluster services DNS spec.

multicluster Name multicluster - implementation of Multicluster DNS Description This plugin implements the Kubernetes DNS-Based Multicluster Service D

Dec 3, 2022
Create an ESK cluster using CDK and Golang.

Welcome to your CDK Go project! This is a blank project for Go development with CDK. NOTICE: Go support is still in Developer Preview. This implies th

Feb 14, 2022
SDK to provide access to JUNO API (Open Banking) (2.0.0)

Juno API - Golang SDK Juno API (Open Banking) (2.0.0) Why? This project is part of my personal portfolio, so, I'll be happy if you could provide me an

Aug 9, 2021
Go API Client for NASA's Open APIs

Go Client for Nasa Open APIs Description The Go Client for Nasa Open APIs is a Go Client for the following Nasa Open APIs: APOD: Astronomy Picture of

Sep 24, 2021
This is the new api repository for Feel the Movies. Written in Go, totally open source.
This is the new api repository for Feel the Movies. Written in Go, totally open source.

This is the new API repository for Feel the Movies. Written in Go, totally open source. App Currently available for Android only. I have plans for an

Sep 18, 2022
Identity & Access Management simplified and secure.
Identity & Access Management simplified and secure.

IAM Zero Identity & Access Management simplified and secure. ?? Get Started | ?? Support What is IAM Zero? IAM Zero detects identity and access manage

Dec 30, 2022
RESTful based volume management framework for GlusterFS

Heketi Heketi provides a RESTful management interface which can be used to manage the life cycle of GlusterFS volumes. With Heketi, cloud services lik

Nov 18, 2020
gRPC Network Management Interface

gNMI - gRPC Network Management Interface This repository contains reference Go implementations for gNMI. Note: This is not an official Google product.

Jan 8, 2023
lightweight, self-service AWS IAM management
lightweight, self-service AWS IAM management

Contents Overview Architecture Prerequisites Workflow What groups exist? Who do I ask for access? What groups am I in? How do I add group members? How

Jan 16, 2022
Redash-go-sdk - An SDK for the programmatic management of Redash, in Go
Redash-go-sdk - An SDK for the programmatic management of Redash, in Go

Redash Go SDK An SDK for the programmatic management of Redash. The main compone

Dec 13, 2022
Khan - An interactive CLI management tool for Nomad

Khan An interactive CLI management tool for Hashicorp's Nomad Why Nomad has a gr

Apr 26, 2022
Go(lang) client library for Cachet (open source status page system).

cachet Go(lang) client library for Cachet (open source status page system). Features Full API support Components Incidents Metrics Subscribers Various

Sep 27, 2022
A go sdk for baidu netdisk open platform 百度网盘开放平台 Go SDK

Pan Go Sdk 该代码库为百度网盘开放平台Go语言的SDK

Nov 22, 2022
Sync your bank transactions with google sheets using Open Banking APIs

Sync your bank transactions with google sheets using Open Banking APIs

Jul 22, 2022