Coder Social home page Coder Social logo

lfn-cnti / bestpractices Goto Github PK

View Code? Open in Web Editor NEW
104.0 104.0 54.0 4.38 MB

📞📱☎️📡🌐 The focus of the Cloud Native Telecom Initiative (CNTI) Best Practices community is to define cloud native networking best practices

Home Page: https://wiki.lfnetworking.org/display/LN/Best+Practices

License: Other

Makefile 100.00%

bestpractices's People

Contributors

agentpoyo avatar cbkhare avatar claudiobartolini avatar csatarigergely avatar dependabot[bot] avatar electrocucaracha avatar gauravgahlot avatar iawells avatar jeffsaelens avatar lixuna avatar mmiklus avatar nsagark avatar petorre avatar rabi-abdel avatar rich-l avatar rmerz avatar ronit-nandwani avatar sheetaljoshi avatar sishbi avatar slashben avatar smitholi67 avatar sronanrh avatar taylor avatar tliron avatar tokt avatar tomkivlin avatar vukg avatar wjsvec avatar wvwatson avatar xmulligan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bestpractices's Issues

Add CBPP-0002: Container should execute process(es) as non-root user to Table of Contents

Add CBPP-0002: Container should execute process(es) as non-root user to Table of Contents under security category

CBPP-0002: Container should execute process(es) as non-root user

Description:
Containers have a list of their own users independent of the host system, one of which is UID 0, the root user. Containers should run processes as a user other than root which makes it easier to run the container images securely.

Reference: CBPP-0002

Update template around user stories

From Feb 01 meeting:
User stories as optional should be removed, if there is none, start a GitHub discussion
Caveats should also not be optional, or it should be renamed to tradeoffs
Watson to make PR

Best practice proposal: avoid static reference to external resources

Instead look to use dynamic approaches, e.g. labels.

Need to be clear about what is dynamic configuration vs hard-coded static configuration.

[Best Practice Proposal]: Production CNFs should use a specific version instead of latest tag for container images

Summary

A production CNF should use an immutable tag that maps to a semantic version of the application.

"You should avoid using the :latest tag when deploying containers in production as it is harder to track which version of the image is running and more difficult to roll back properly."

Ref https://kubernetes.io/docs/concepts/containers/images/

Motivation

No response

Goals

No response

Non-Goals

No response

Proposal

Using the latest tag is an anti-pattern..

The :latest tag is what is applied to an image which does not have a tag, which does not mean, as some people expect, that :latest always points to the most-recently-pushed version of an image.

Workload Context

No response

User Stories

No response

Notes, Caveats, Constraints

As a related item we recommend locking image tags on the container registry for production releases to avoid overwriting a known good image. https://learn.microsoft.com/en-us/azure/container-registry/container-registry-image-tag-version#lock-deployed-image-tags

References

CNF WG Committers

from: https://github.com/opengovernance/opengovernance.dev#process
How can the project contributors become committers?
How are project committers removed?

We have elected our co-chairs and say things can be merged after so many approvals, but we never actually defined who is able to commit to the repo or how someone can become a committer.

We may want to consider something from https://github.com/cncf/project-template/blob/main/GOVERNANCE-maintainer.md

Now that we all know the rules to commit from #131 I am personally in favor of having more people with commit access.

"Do not run containers with the privilege flag" as a best practice

I believe we could add a best practice for 'don't use privilege'. We could add a user story to justify it (something about making the platform robust to application behaviour) but I believe the best practice can stand alone.

The higher level principle is:

See discussion https://github.com/cncf/cnf-wg/discussions/25 for not running containers with privilege flag.

Users Stories

There should be a place for users (CSPs) to submit their user stories and high level objectives. It could be structured similarly to the CCDPs. The user stories should be used to inform the cloud native best practices.

Proposal: Switch from org or individual to individual with org affiliation listed.

Proposal: Switch from org or individual to individual with org affiliation listed.

This will better represent our community which consists of individual contributors. It encourages participation and contributions regardless of your organization affiliation. If needed we can still make decisions based on representation of a single org based on the listed org for each individual.

Reference:

Originally posted by @taylor in https://github.com/cncf/cnf-wg/discussions/126

Add Resilience to Table of Contents

We need a glossary

Common terms likely to be used in multiple use cases or in best practices should have a glossary. That way, many use cases can do without a glossary because the terms will be globally defined.

Best practice proposal: A CNFs containers should have one process category (or type)

A microservice should have only one process (or set of parent/child processes) that is managed by a non home grown supervisor or orchestrator. The microservice should not spawn other process types (e.g. executables) as a way to contributeto the workload but rather should interact with other processes through a microservice API.
from CNF Test Suite

WIP / draft proposal

Reference(s):

Add "Eligibility to vote and "Voting procedure" sections to charter.md

What we have now:

One section for Elections:
https://github.com/cncf/cnf-wg/blob/master/charter.md#elections

What we’d like to have:

Suggested sub-categories:

Timeline

Co-chairs and tech leads will be elected for one year terms and may run for reelection.

Eligibility to Vote

Each organization listed in the interested parties document has one vote. Interested parties can be added at any time, but must be added at least one week before any election to have a vote. Any contributor from an organization may cast the vote for that organization. Each organization can cast one vote for a co-chair candidate in each of the communities (Kubernetes (K8s) Community, Service Provider (SP) Community, and CNF Developer (Dev) Community), three total votes. Each organization can vote for as many tech leads as they see fit.

Voting procedure

Elections will be held using a time-limited Ranked Choice Voting ranking on CIVS. Ballots will be emailed to one representative of each organization listed in the interested parties document. Tech leads must win at least 60% of the votes cast to be elected.

Requirements for multi-interface

I believe it is long overdue to have a clear documented understanding behind the requirements for multiple interfaces within a cloud-native network function, independent from the fact that technical implementations already exist to support them.

Is multi-interface required for :

a) traffic segmentation
b) isolation, security
c) performance
d) hardware dependencies
e) because this is how we did PNF, VNFs
f) all of the above

Understanding the real justification behind this will help better understand how CNFs and infrastructure might be evolving and potential simplification (ie avoiding too much toil).

Explain how you can submit a change on a PR

Github lets you add change proposals to PRs, which is more efficient than reading someone's comment and writing up the change yourself. However, it's caught out several people, me included - it's not obvious you can do this if you've never done it before.

Add a note to the reviewer help to explain how this works and how to do it, and that changes are in fact welcome and preferred over comments when you know exactly what change you're looking for.

Create Pull Request template

Create template for use cases

From #46 https://github.com/cncf/cnf-wg/pull/46#discussion_r566053891

@rabi-abdel
i think it will be useful to clearly specify what information we need to see in a use case, in a bullet list.

Problem statment.
impact to real-life actor.
etc.

@jeffsaelens
To Rabi's point, at some point we'd probably want a template for use cases and a means of pointing back to them from the best practices (this could also be a one to many scenario so some thought might be needed). I know we are trying to keep people's creative spirits soaring, but we might want more specificity as to when to use "discussions" for more free form thoughts on paper versus when a drafted proposal is appropriate.

Update reference urls for CNF Test Suite

Update reference urls for CNF Test Suite

Reason for change

  • the repo name for the CNF Test Suite has been changed from cnf-conformance to cnf-testsuite.
  • the super linter will fail if it sees references files in cnf-conformance

Changes requested

  • update all files that should point to the new repo cnf-testsuite

How this will be tested

  • The super linter should not show "dead link" errors pointing to files in the cnf-conformance repo

Adding group Values

We should add our group values to make it clear.

Values / Principles
It is also good practice to include a statement of values or principles within your governance documentation. While the scope includes information about what your project does, your values / principles define how you work. They often include statements about openness, transparency, inclusion, being welcoming and respectful, and much more.

These are all living documents that should be expected to change over time as the project evolves. For sandbox projects, this might be a simple one or two sentence statement about what the project does, and by the time a project has graduated, they would probably have a more detailed mission statement, scope, and values / principles. All of this documentation should be consistent with the mission and values in the CNCF Charter.

https://docs.google.com/document/d/1QawLfsz2_n2Y0nPuMzTy9tF9Tu3iFanq5PJgXK-yr3Y/edit?ts=604bb3e4

Limit line length in .md files

I suggest we limit line length in MD files to 80 characters.

Now, I know that modern editors will word wrap MD files and I know that the MD format does not care about line length. However, github is making some really hard to interpret diffs of files when they have long line lengths in them.

I suggest we note this in our style guide and add CI to check for it on new pull requests.

Best practice proposal: readiness probes for CNFs

Something about readiness for a CNF to receive real network traffic

What does it mean to be an "interested party"?

From 2021-03-15 meeting:
What does it mean to be an interested party? - create issue. (Per above, does Frederick need to be an interested party to have voting rights?) Does being an interested party have any obligations, since that’s what legal depts will worry about?

For companies or individuals that want to add themselves as an interested parties, does it have any legal ramifications. Currently it gives them the right to vote in elections, but nothing else is defined.

Can we borrow something from SIG Contributor Strategy? https://github.com/cncf/sig-contributor-strategy/tree/master/governance/docs

2020-04-27:

Update charter with org-merge voting rules

From the discussion, the text we like most is:

As an aside, note that this is more about the reputation of this group being co-opted in the future than it is about it being seen as a mouthpiece for a vested interest in the present. If it's obviously a mouthpiece, that's an issue, but it will impact our reputation and therefore adoption of our recommendations. If our group is co-opted in the future, however, then a group will be able to take advantage of our established reputation.

  1. Define representation groups that we wish to control representation on. For instance: one chair per independent organisation, 30% of community votes, 30% of tech leads (to avoid majorities of conspirators).
  2. A organisation is defined as a single company.
  3. If a member (define 'member') raises a concern of independence: first they must demonstrate a relationship between organisations that lead to the conclusion they should be treated as a single organisation (e.g ownership, contractor-contractee); second, the relationship will be debated, since this does not necessarily demonstrate that the organisations are acting together; and third, action will be taken only if a majority of uninvolved members (choose your membership set and quorum here) votes for it. The action would be that the multiple entities would be considered one organisation under the charter.
  4. If, through this process, an organisation becomes overrepresented, the seats for that organisation will all be put up for a special election. The seats are open to all members, both previous holders and any other nominees.
  5. In any elections (presuming we use STV or something similar), the members with least votes in an overrepresented group will be excluded from election (this should already be in some other part of the charter). Where there are multiple candidates with the same number of least votes, it's a coin toss (ditto).
  6. The decision on independence or dependence may be revisited after a period of not less than three months. A member may raise it for discussion and the process in point 3 shall be repeated. No immediate re-election of members shall occur if the organisations now are deemed independent; this will be taken into consideration in the next natural election cycle.
    To game the above rules, you'd require a majority of the membership conspiring against some part of the community that had overrepresentation if and only if it were considered a bloc, and that bloc would need some corporate relationship, so it would be an unproductive thing to try and do unless a real concern existed. (I can't claim 'everyone not in my company is conspiring against me', for instance, because I haven't got valid grounds to raise the concern.)

It does not present multiple independent blocs agreeing to vote in concert. What prevents that is a healthy and diverse membership, and there's nothing the rules can do about that.

[Best Practice Proposal]: liveness probes for CNFs

Summary

A cloud native principle is that application developers understand their own resilience requirements better than operators[1]. This is exemplified in the Kubernetes best practice of pods declaring how they should be managed through the liveness and readiness entries in the pod's configuration.

Motivation

liveness probes are part of the onboarding and the ongoing health checks for CNFs.

Goals

No response

Non-Goals

No response

Proposal

No response

Workload Context

No response

User Stories

No response

Notes, Caveats, Constraints

No response

References

liveness probes are part of the onboarding and the ongoing health checks for CNFs.

[Presentation] CNF WG BoF at Open Networking and Edge Summit

Title: CNF WG BoF: Bring Your Networking Challenge, We’ll Find a Cloud Native Best Practice

Speakers: CNF WG Co-chairs, @iawells @jeffsaelens @taylor

Event details:

Tasks:

  • create presentation slide deck
  • outline of high level talking points
  • create shared meeting notes for attendees to contribute in a read/write way (in addition to verbally on zoom)
  • promote on cnf-wg mailing list
  • promote on cnf-wg slack
  • promote on tug slack
  • promote on cnf-testsuite-dev slack
  • promote by @cnfconformance twitter
  • upload pdf slide deck to https://sched.co/og1s

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.