Giter Club home page Giter Club logo

telco-gitops's Introduction

TELCO GITOPS "AS-IS" REFERENCES

โ— Red Hat does not provide commercial support for the content of these repos

#############################################################################
DISCLAIMER: THESE ARE UNSUPPORTED COMMUNITY TOOLS.

THE REFERENCES ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
#############################################################################

The design philosophy of this repository follows these GitOps Principles to deploy, manage and operate OpenShift clusters for Telco use cases.

Directory Description
/base contains common operators and configs manifests for Telco blueprints
/blueprints various Telco cluster type configurations blueprints
/clusters examples of managed cluster configurations
/mgmt examples of management cluster configurations
/cnf CNF examples

Development structure

โ— This work is under heavy development -- no guarantees of backwards compatibility on changes on main branch

Branch Description Status
main Development branch using stable OCP releases and upcoming releases. Fast-moving development
ocp-4.8 GitOps structure used for OpenShift 4.8.x stable releases Balanced and steady progress
ocp-4.7 GitOps structure used for OpenShift 4.7.x stable releases No changes. Bug Fixes only
ocp-4.6 GitOps structure used for OpenShift 4.6.16 to 4.6.18 releases. No longer maintained (unreleased)

NOTE: This is main branch. Currently being refactored with OCP 4.8 as default.

telco-gitops's People

Contributors

alosadagrande avatar broskos avatar novacain1 avatar nsatsia avatar williamcaban avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

telco-gitops's Issues

Include preSync hooks checking if the operator is deployed before configuring it

Hi folks,

This is another change that we think might be good to be included in the official repo. The point here is that before applying PAO or SR-IOV or any other operator configuration we want to check that the operator is actually deployed.

In order to do that we included a preSync hook in each operator config folder. An example of PAO configuration (profile + presync) can be found here. See that first we are just checking that the operator is Running and when it is running the Sync phase can start, basically applying the performance profile. The same has been configured for SRIOV here

In order to do that we need to configure a couple of things in the remote cluster so we can execute "oc commands" locally. Basically, we need to apply the clusterRole and clusterRolebindings that you already created in the management cluster. We included these permissions in the base configuration of the remote clusters, see a working example here . In that case, we are just calling the same ClusterRoles and ClusterRoleBindings used for the management cluster (notice that oc client must be in 4.8.x version otherwise HTTPS files won't be applied). Another approach is just to leave both files in the base remote cluster folder as shown here

So the point is that these permissions will allow us to run pre and post-sync hooks in remote clusters as well. Also, it will introduce some logic when it comes to applying configuration since it won't apply if the operator is still installing. I think this should be included with all the operators that require post configuration.

Let me know your thoughts and how I can contribute.

[RFE] Explore resource utilization of remote in-cluster ArgoCD

In non-dense clusters (like Core and non-DU clusters), it is possible to use an in-cluster ArgoCD instance to do pull of configurations. This model removes dependencies on a centralized instance and allow for highly distributable and scalable GitOps model.

The main caveats that need to be addressed for this model are:

  • the unknown resource utilization brackets to make this work on a cluster based on number of nodes, MCPs and CNFs
  • the lack of centralized visibility to be aware of the status of each clusters. This could be address by RHACM but need to be documented and tested?
  • how to maintain hierarchical GitOps model between organization desired configurations vs localized customizations?
  • when can a centralized deployment GitOps be used in conjunction to a distributed in-cluster config & operations GitOps?

[RFE] Document design of telco-gitops

There is are design considerations (like labeling scheme, mono-repo vs multi-repo, the type and privileges of ArgoCD instances, etc), that are built into the design of the repo but no public information on them is available. This RFE is for:

  • How to use telco-gitops repo on various configurations for RAN & Core deployments (Combined, CU pool, DU pool, SNO DU, Core, etc)
  • Include documentation of labeling scheme and how to extend it
  • Include documentation ArgoCD instances and privileges
  • Include documentation of service accounts and roles
  • Include documentation on options for mgmt clusters

Use public reference from clusters by @williamcaban and @novacain1

1.21+ k8s/ocp kustomize breaks using patches

It appears that any patch files (look under telco-gitops/base/operators/openshift-sriov-network-operator/kustomization.yaml) or (telco-gitops/blueprints/combined-ran/kustomization.yaml) break rendering under OpenShift clients based on 4.8+.

oc kustomize .

Error: accumulating resources: accumulation err='accumulating resources from 'github.com/novacain1/telco-gitops/blueprints/combined-ran?ref=main': evalsymlink failure on '/home/dcain/carslab-public/rhocp-clusters/skylark.cars.lab/github.com/novacain1/telco-gitops/blueprints/combined-ran?ref=main' : lstat /home/dcain/carslab-public/rhocp-clusters/skylark.cars.lab/github.com: no such file or directory': recursed accumulation of path '/tmp/kustomize-435906337/blueprints/combined-ran': no matches for IdId operators.coreos.com_v1alpha1_Subscription|~X|sriov-network-operator-subscription; failed to find unique target for patch operators.coreos.com_v1alpha1_Subscription|sriov-network-operator-subscription

Removing patch files from the above two sources in telco-gitops restores rendering.

Believe there was a major change in the clients from k8s 1.20 (ocp 4.7) to now:
https://github.com/kubernetes-sigs/kustomize#kubectl-integration

Kubectl version Kustomize version
< v1.14 n/a
v1.14-v1.20 v2.0.3
v1.21 v4.0.5

[RFE] Update labelling flow

The labelling approach with Kustomize assumes the resource definition is part of the bases or manifests and for that reason does not work well for existing elements like nodes, Pods or deployments.

The labelling flow should account for:

  • Follow GitOps principles and have a continuous remediation cycle
  • Work for labeling any objects that already exists on a cluster (e.g. nodes, secrets, pods, etc)
  • Should work when the consumed by GitOps controllers

Example of options to investigate:

Include gitopscluster custom resource so remote clusters join automatically central Argo instance

Hi,

We have been using this custom resource that has been included recently in RHACM that allows provisioned clusters to be managed by the central ArgoCD instance installed in the hub cluster.

Here is a working example of the GitOpsCluster CR that needs to be applied to the management cluster. Once added you need to include the following label into the ManagedCluster CR for every cluster that wants to be managed by the central Argo instance.

I think that with this new CR you can skip some manual steps included in the README that allows to automatically include the recently installed cluster into central ArgoCD. I am not sure where it should be added to your repo since RHACM installation is a requirement. In my forked repository, it is included in the management repo since it is something that is going to be installed in the management cluster, actually inside the config-ztp folder.

Let me know your thoughts.

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.