Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add cri-o proposal #177

Merged
merged 8 commits into from
Apr 8, 2019
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
220 changes: 220 additions & 0 deletions proposals/cri-o.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,220 @@
== CRI-O

*Name of project*: cri-o

*Description*:

CRI-O is a stable container runtime specifically tailored for Kubernetes.
A founding principal was not "reinventing the wheel" and so the project uses shared components, refined approaches tested in production, and existing battle-tested code.
Further, it is tuned for performance, stability, compatibility, and adherence to standards, particularly the Kubernetes Conformance tests.
In short CRI-O is a building block of a Kubernetes cluster, to facilitate the life cycle of containers as required by the Kubernetes Container-Runtime-Interface (CRI).

CRI-O was born in kubernetes-incubator and grew to production stable there.
Some have claimed since being a kubernetes project that it is already "a CNCF project", but it is often left as an after thought in brand, awareness and support as a top-level project.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Where is it you want the brand and awareness to go? Is there some form of support you are looking for as a top level project?

For example, when Helm shifted out of Kubernetes there was a need for help organizing Helm conferences (currently prepping for a second) and it had many contributors (it's the 3rd most contributed to CNCF project) where support for scaling that was needed.

Is cri-o looking to be more than a container runtime for k8s? Is there something else going on?

I ask these questions as I'm curios to understand more of where cri-o is going.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm glad that kubernetes-incubator was renamed kubernetes-sigs, but cri-o has outgrown that level of incubation.
And truthfully due to not getting the same level of press as containerd or rkt, I get feedback that folks infer it is not considered on the same level.
No cri-o conferences needed. 😃

This proposal is effective to promote from the kubernetes incubator a project that has fully matured.

*Sponsor / Advisor from TOC*: Brendan Burns <[email protected]>

*Unique Identifier*: cri-o

*License*: ALv2

*Maturity Level*: Incubating

*Source control repositories*: https://github.com/kubernetes-sigs/cri-o

*Initial Committers*:

- mrunalp
- runcom
- cyphar
- mikebrow
- sameo
- rhatdan
- nalind
- giuseppe
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For those wondering, initial committers is made up of people from Red Hat, Suse, Intel, and IBM.

Instead of Initial Committers should these be labeled Maintainers?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

that's a fine suggestion. I was mimicking prior proposals, but they would be initial maintainers.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does CNCF have distinct definitions for Committers and Maintainers?


*Infrastructure requirements*: CI, CNCF Cluster, TravisCI

*Issue tracker*: https://github.com/kubernetes-sigs/cri-o/issues

*Mailing lists*

* #cri-o on Freenode IRC
* https://kubernetes.slack.com/messages/crio

*Website*: https://cri-o.io
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I noticed on the website the branding says:

Lightweight Container Runtime for Kubernetes

Would the change to the CNCF also be shifting it from one "for Kubernertes" to one that others can use for other purposes as well?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if those other use cases only conform to the kubernetes CRI, then maybe but numero uno is k8s. 😄


*Release methodology and mechanics*

Major releases are matching to Kubernetes major releases.
Minor releases are as needed.

*Social media accounts*:

* Blog: https://medium.com/cri-o/

*Existing sponsorship*:

* Red Hat (lead)
* Intel
* SUSE

*Adopters*:
jonboulle marked this conversation as resolved.
Show resolved Hide resolved

* Red Hat - Default container runtime for their OpenShift product
* Intel
* kata-containers - primary CRI runtime worked with
* openSUSE - Default for kubic (https://kubic.opensuse.org/blog/2018-09-17-crio-default/)
* SUSE - on track for their CaaSP offering (https://www.suse.com/releasenotes/x86_64/SUSE-CAASP/3.0/#Intro.New)
* Lyft - Default container runtime for their kubernetes deployment
* Cillium - Default example for deployment on kubernetes (https://github.com/cilium/cilium/tree/master/examples/kubernetes/)
* Nvidia
* Datica - Default runtime for their CKS offering (https://datica.com/compliant-kubernetes-service/)

*Statement on alignment with CNCF mission*:

CRI-O's mission and goal is to align with and provide everything that Kubernetes expects from a container-runtime, and nothing more.
Based on the OpenContainer Initiative (OCI) format for container images, runtimes and distribution, with compatibility for existing docker formats as well.
The CRI-O project is imbued with the spirit of Kubernetes and the CNCF mission.

*Contributors*: https://github.com/kubernetes-sigs/cri-o/graphs/contributors

*External Dependencies*: Full list: https://github.com/kubernetes-sigs/cri-o/blob/master/vendor.conf (https://github.com/kubernetes-sigs/cri-o/blob/c6455c30771245c357c987ac5892bc77f2fb12b0/vendor.conf is the version at time of writing). By LICENSE is:

* ALv2
- github.com/containerd/cgroups
- github.com/containerd/console
- github.com/containerd/continuity
- github.com/containernetworking/cni
- github.com/containers/image
- github.com/containers/libpod
- github.com/containers/storage
- github.com/coreos/go-systemd
- github.com/coreos/pkg
- github.com/cri-o/ocicni
- github.com/docker/distribution
- github.com/docker/docker
- github.com/docker/go-connections
- github.com/docker/go-units
- github.com/docker/libtrust
- github.com/docker/spdystream
- github.com/go-openapi/analysis
- github.com/go-openapi/errors
- github.com/go-openapi/jsonpointer
- github.com/go-openapi/jsonreference
- github.com/go-openapi/loads
- github.com/go-openapi/spec
- github.com/go-openapi/strfmt
- github.com/go-openapi/swag
- github.com/golang/glog
- github.com/golang/groupcache
- github.com/google/btree
- github.com/google/gofuzz
- github.com/googleapis/gnostic
- github.com/matttproud/golang_protobuf_extensions
- github.com/mistifyio/go-zfs
- github.com/modern-go/concurrent
- github.com/modern-go/reflect2
- github.com/mrunalp/fileutils
- github.com/opencontainers/go-digest
- github.com/opencontainers/image-spec
- github.com/opencontainers/runc
- github.com/opencontainers/runtime-spec
- github.com/opencontainers/runtime-tools
- github.com/opencontainers/selinux
- github.com/pquerna/ffjson
- github.com/prometheus/client_golang
- github.com/prometheus/client_model
- github.com/prometheus/common
- github.com/prometheus/procfs
- github.com/soheilhy/cmux
- github.com/vishvananda/netlink
- github.com/vishvananda/netns
- github.com/xeipuuv/gojsonpointer
- github.com/xeipuuv/gojsonreference
- github.com/xeipuuv/gojsonschema
- google.golang.org/genproto
- google.golang.org/grpc
- gopkg.in/square/go-jose.v2
- gopkg.in/yaml.v2
- k8s.io/api
- k8s.io/apiextensions-apiserver
- k8s.io/apimachinery
- k8s.io/apiserver
- k8s.io/client-go
- k8s.io/csi-api
- k8s.io/kube-openapi
- k8s.io/kubernetes
- k8s.io/utils
* BSD-2
- github.com/godbus/dbus
- github.com/pkg/errors
- github.com/seccomp/libseccomp-golang
- github.com/syndtr/gocapability
- gopkg.in/mgo.v2
* BSD-3
- github.com/PuerkitoBio/purell
- github.com/PuerkitoBio/urlesc
- github.com/cyphar/filepath-securejoin
- github.com/fsnotify/fsnotify
- github.com/gogo/protobuf
- github.com/golang/protobuf
- github.com/gorilla/context
- github.com/gorilla/mux
- github.com/imdario/mergo
- github.com/mtrmac/gpgme
- github.com/pmezard/go-difflib
- github.com/spf13/pflag
- github.com/ulikunitz/xz
- github.com/vbatts/tar-split
- golang.org/x/crypto
- golang.org/x/net
- golang.org/x/oauth2
- golang.org/x/sys
- golang.org/x/text
- golang.org/x/time
- gopkg.in/cheggaaa/pb.v1
- gopkg.in/fsnotify.v1
- gopkg.in/inf.v0
- gopkg.in/tomb.v1
* MIT
- github.com/Azure/go-ansiterm
- github.com/BurntSushi/toml
- github.com/Microsoft/go-winio
- github.com/Microsoft/hcsshim
- github.com/asaskevich/govalidator
- github.com/beorn7/perks
- github.com/blang/semver
- github.com/buger/goterm
- github.com/dgrijalva/jwt-go
- github.com/docker/docker-credential-helpers
- github.com/emicklei/go-restful
- github.com/emicklei/go-restful-swagger12
- github.com/exponent-io/jsonpath
- github.com/fatih/camelcase
- github.com/ghodss/yaml
- github.com/go-zoo/bone
- github.com/gregjones/httpcache
- github.com/hpcloud/tail
- github.com/json-iterator/go
- github.com/kr/pty
- github.com/mailru/easyjson
- github.com/mattn/go-runewidth
- github.com/mitchellh/go-wordwrap
- github.com/mitchellh/mapstructure
- github.com/peterbourgon/diskv
- github.com/renstrom/dedent
- github.com/sirupsen/logrus
- github.com/tchap/go-patricia
- github.com/ugorji/go
- github.com/urfave/cli
* ISC
- github.com/davecgh/go-spew
- github.com/ostreedev/ostree-go
- github.com/stretchr/testify
* MPLv2
- github.com/hashicorp/errwrap
- github.com/hashicorp/go-multierror
- github.com/hashicorp/golang-lru