resource manifest distribution among multiple clusters.

Providing content to managed clusters

Support a primitive that enables resources to be applied to a managed cluster.

Community, discussion, contribution, and support

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


Getting Started

Prerequisites

These instructions assume:

  • You have a running kubernetes cluster
  • You have KUBECONFIG environment variable set to a kubeconfig file giving you cluster-admin role on that cluster

Deploy Work Agent

  1. Run make deploy-work-agent

  2. To clean the environment, run make clean-work-agent

Comments
  • Check if finalizer exists before applying manifests

    Check if finalizer exists before applying manifests

    It's related to https://github.com/open-cluster-management/backlog/issues/3332. In order to ensure all maintained resources of a manifestwork will be cleaned once manifestwork is deleted, we cannot apply manifests of a manifestwork until it has the finalizer (cluster.open-cluster-management.io/manifest-work-cleanup).

  • Address remaining comments on pr #25

    Address remaining comments on pr #25

    This is a follow-up of https://github.com/open-cluster-management/work/pull/25. I addressed remaining comments except https://github.com/open-cluster-management/work/pull/25#discussion_r447260503

  • Add finalizer on role/rolebinding for work agent

    Add finalizer on role/rolebinding for work agent

    Create controllers running on hub to add finalizer on role/rolebinding for work agent. It ensures that all manifest works in a certain cluster namespace are deleted before role/rolebinding in the same namespace is deleted.

  • Handle unknown kind returned by GuessObjectGroupVersionKind()

    Handle unknown kind returned by GuessObjectGroupVersionKind()

    To fix https://github.com/open-cluster-management/backlog/issues/3250,

    • Handle unknown kind returned by GuessObjectGroupVersionKind()
    • Add apiextensions v1beta1 to scheme by default.
  • Delete unmanaged AppliedManifestWork

    Delete unmanaged AppliedManifestWork

    Signed-off-by: Jian Qiu [email protected]

    1. record agent id in appliedmanifestwork
    2. delete the appliedmanifestwork if it is owned by this agent but lose the management.
  • How to apply a workload to many clusters? Do I have to create multiple ManifestWorks?

    How to apply a workload to many clusters? Do I have to create multiple ManifestWorks?

    If i want to apply a deployment to cluster a and b, do I have to create two ManifestWorks to apply the deployment to cluster a and cluster b? If i want to update the workload, do I have to update all the ManifestWorks about the workload?

  • Allow work agent to be run on different identity

    Allow work agent to be run on different identity

    Currently work agent is run as an admin on the spoke. We should consider let user to define another identity in the manifestwork, so a manifestwork can be executed on the spoke with lower privilege.

    • [ ] check the executor subject permission for action apply
    • [ ] check the executor subject permission for action delete
    • [ ] cache the subject access review results
    • [ ] add a webhook to check the execute-as permission on the hub cluster
  • What is the AppliedMainfestWork for?

    What is the AppliedMainfestWork for?

    In the code, there are MainfestWork and AppliedMainfestWork. Why do we need both of them? What is the purpose of this design? Is it for deletion when managed cluster unjoined from hub cluster?

  • we should not directly put secret payload in the manifests field

    we should not directly put secret payload in the manifests field

    There are security concern since secret in kube is stores in different way and can be encrypted which can not be done if its content is in the manifestwork.

    This is the community discussion https://kubernetes.slack.com/archives/C01GE7YSUUF/p1641473993005700

    /kind feature /assign @qiujian16

Related tags
ArgoCD is widely used for enabling CD GitOps. ArgoCD internally builds manifest from source data in Git repository, and auto-sync it with target clusters.
ArgoCD is widely used for enabling CD GitOps. ArgoCD internally builds manifest from source data in Git repository, and auto-sync it with target clusters.

ArgoCD Interlace ArgoCD is widely used for enabling CD GitOps. ArgoCD internally builds manifest from source data in Git repository, and auto-sync it

Dec 14, 2022
Terraform Provider for Azure (Resource Manager)Terraform Provider for Azure (Resource Manager)
Terraform Provider for Azure (Resource Manager)Terraform Provider for Azure (Resource Manager)

Terraform Provider for Azure (Resource Manager) Version 2.x of the AzureRM Provider requires Terraform 0.12.x and later, but 1.0 is recommended. Terra

Oct 16, 2021
Fadvisor(FinOps Advisor) is a collection of exporters which collect cloud resource pricing and billing data guided by FinOps, insight cost allocation for containers and kubernetes resource
Fadvisor(FinOps Advisor) is a collection of exporters which collect cloud resource pricing and billing data guided by FinOps, insight cost allocation for containers and kubernetes resource

[TOC] Fadvisor: FinOps Advisor fadvisor(finops advisor) is used to solve the FinOps Observalibility, it can be integrated with Crane to help users to

Jan 3, 2023
KinK is a helper CLI that facilitates to manage KinD clusters as Kubernetes pods. Designed to ease clusters up for fast testing with batteries included in mind.
KinK is a helper CLI that facilitates to manage KinD clusters as Kubernetes pods. Designed to ease clusters up for fast testing with batteries included in mind.

kink A helper CLI that facilitates to manage KinD clusters as Kubernetes pods. Table of Contents kink (KinD in Kubernetes) Introduction How it works ?

Dec 10, 2022
PolarDB Stack is a DBaaS implementation for PolarDB-for-Postgres, as an operator creates and manages PolarDB/PostgreSQL clusters running in Kubernetes. It provides re-construct, failover swtich-over, scale up/out, high-available capabilities for each clusters.
PolarDB Stack is a DBaaS implementation for PolarDB-for-Postgres, as an operator creates and manages PolarDB/PostgreSQL clusters running in Kubernetes. It provides re-construct, failover swtich-over, scale up/out, high-available capabilities for each clusters.

PolarDB Stack开源版生命周期 1 系统概述 PolarDB是阿里云自研的云原生关系型数据库,采用了基于Shared-Storage的存储计算分离架构。数据库由传统的Share-Nothing,转变成了Shared-Storage架构。由原来的N份计算+N份存储,转变成了N份计算+1份存储

Nov 8, 2022
kubectl plugin for signing Kubernetes manifest YAML files with sigstore
kubectl plugin for signing Kubernetes manifest YAML files with sigstore

k8s-manifest-sigstore kubectl plugin for signing Kubernetes manifest YAML files with sigstore ⚠️ Still under developement, not ready for production us

Nov 28, 2022
Terraform provider for Slack's App Manifest API

Terraform Provider Scaffolding (Terraform Plugin SDK) This template repository is built on the Terraform Plugin SDK. The template repository built on

Jan 9, 2022
Deploy, manage, and secure applications and resources across multiple clusters using CloudFormation and Shipa

CloudFormation provider Deploy, secure, and manage applications across multiple clusters using CloudFormation and Shipa. Development environment setup

Feb 12, 2022
Fast docker image distribution plugin for containerd, based on CRFS/stargz
Fast docker image distribution plugin for containerd, based on CRFS/stargz

[ ⬇️ Download] [ ?? Browse images] [ ☸ Quick Start (Kubernetes)] [ ?? Quick Start (nerdctl)] Stargz Snapshotter Read also introductory blog: Startup C

Dec 29, 2022
A Rancher and Kubernetes optimized immutable Linux distribution based on openSUSE

RancherOS v2 WORK IN PROGRESS RancherOS v2 is an immutable Linux distribution built to run Rancher and it's corresponding Kubernetes distributions RKE

Nov 14, 2022
Truly Minimal Linux Distribution for Containers

Statesman Statesman is a minimal Linux distribution, running from memory, that has just enough functionality to run OCI-compatible containers. Rationa

Nov 12, 2021
Walker's alias method is an efficient algorithm to sample from a discrete probability distribution.

walker-alias Walker's alias method is an efficient algorithm to sample from a discrete probability distribution. This means given an arbitrary probabi

Jun 14, 2022
A Kubernetes operator that allows for automatic provisioning and distribution of cert-manager certs across namespaces

cached-certificate-operator CachedCertificate Workflow When a CachedCertificate is created or updated the operator does the following: Check for a val

Sep 6, 2022
RancherOS v2 is an immutable Linux distribution built to run Rancher and it's corresponding Kubernetes distributions RKE2 and k3s

RancherOS v2 is an immutable Linux distribution built to run Rancher and it's corresponding Kubernetes distributions RKE2 and k3s. It is built using the cOS-toolkit and based on openSUSE

Dec 27, 2022
S3pd - CLI utility that downloads multiple s3 objects at a time, with multiple range-requests issued per object

S3 Parallel Downloader CLI utility that downloads multiple s3 objects at a time,

May 13, 2022
👀 A Kubernetes cluster resource sanitizer
👀 A Kubernetes cluster resource sanitizer

Popeye - A Kubernetes Cluster Sanitizer Popeye is a utility that scans live Kubernetes cluster and reports potential issues with deployed resources an

Jan 1, 2023
Helm Operator is designed to managed the full lifecycle of Helm charts with Kubernetes CRD resource.

Helm Operator Helm Operator is designed to install and manage Helm charts with Kubernetes CRD resource. Helm Operator does not create the Helm release

Aug 25, 2022
The Tailscale Resource Provider lets you manage Tailscale resources

Tailscale Resource Provider The Tailscale Resource Provider lets you manage Tailscale resources. Installing This package is available in many language

Nov 2, 2022