origin

package module
v0.0.0-...-e4a8a9b Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 10, 2026 License: Apache-2.0 Imports: 0 Imported by: 1

README

Origin Kubernetes

Go Report Card GoDoc Licensed under Apache License version 2.0

This repo was previously the core Kubernetes tracking repo for OKD, and where OpenShift's hyperkube and openshift-test binaries were maintained. As of July 2020, the purpose and maintenance strategy of the repo varies by branch.

Maintenance of main and release-x.x branches for 4.6 and above

These branches no longer include the code required to produce hyperkube binaries, and are limited to maintaining the openshift-tests binary. Responsibility for maintaining hyperkube has transitioned to the openshift/kubernetes repo.

Backports and carries against upstream should be proposed to openshift/kubernetes. If changes merged to openshift/kubernetes need to land in origin, it will be necessary to follow up with a PR to origin that bumps the vendoring.

Branch names are correlated across the 2 repositories such that changes merged to a given branch in openshift/kubernetes should be vendored into the same branch in origin (e.g. master in openshift/kubernetes is vendored into main in origin).

NOTE: Vendoring of the main and release-x.x branches of openshift/kubernetes into the equivalent branches in origin is intended to be temporary. At some point in the near future, origin will switch to vendoring origin-specific branches (e.g origin-4.6-kubernetes-1.19.2) to minimize the scope of backports and carries that need to be considered in the context of openshift/kubernetes rebases.

Test exclusion rules

Test exclusion is now handled through environmental selector based filtering rather than test annotations. Environmental selectors allow tests to be filtered or skipped based on the cluster environment and configuration. For example, selectors can be defined that match kube e2e tests that are known to be incompatible with specific OpenShift configurations and exclude those tests from running.

Maintenance of test exclusion rules is split between the openshift/kubernetes and origin repos to ensure that PRs proposed to openshift/kubernetes can be validated against the set of kube e2e tests known to be compatible with OpenShift.

Test exclusion rules for kubernetes e2e tests are maintained in: https://github.com/openshift/kubernetes/blob/master/openshift-hack/cmd/k8s-tests-ext:

Test exclusion rules for openshift e2e tests are maintained in: https://github.com/openshift/origin/blob/main/pkg/test/extensions:

To update test exclusion rules for kube e2e tests, update the environmental selectors in openshift/kubernetes. For OpenShift e2e tests, update the selectors in origin.

Vendoring from openshift/kubernetes

These origin branches vendor k8s.io/kubernetes and some of its staging repos (e.g. k8s.io/api) from our openshift/kubernetes fork. Upstream staging repos are used where possible, but some tests depends on functionality that is only present in the fork.

When a change has merged to an openshift/kubernetes branch that needs to be vendored into the same branch in origin, the hack/update-kube-vendor.sh helper script simplifies updating the go module configuration for all dependencies sourced from openshift/kubernetes for that branch. The script requires either the name of a branch or a SHA from openshift/kubernetes:

$ hack/update-kube-vendor.sh <openshift/kubernetes branch name or SHA>

The script also supports performing a fake bump to validate an as-yet unmerged change to openshift/kubernetes. This can be accomplished by supplying the name of a fork repo as the second argument to the script:

$ hack/update-kube-vendor.sh <branch name or SHA> github.com/myname/kubernetes

Once the script has executed, the vendoring changes will need to be committed and proposed to the repo.

Working around '410 Gone' error

If the script returns '410 Gone' as per the error that follows, it may be that the golang checksum server does not yet know about the target SHA.

go: k8s.io/kubernetes@v1.21.1 (replaced by github.com/openshift/kubernetes@v1.21.2-0.20210603185452-2dfc46b23003): verifying go.mod: g
ithub.com/openshift/kubernetes@v1.21.2-0.20210603185452-2dfc46b23003/go.mod: reading https://sum.golang.org/lookup/github.com/openshif
t/kubernetes@v1.21.2-0.20210603185452-2dfc46b23003: 410 Gone
        server response: not found:

The workaround is to set GOSUMDB=off to disable the checksum database for the vendoring update:

$ GOSUMDB=off hack/update-kube-vendor.sh <branch name or SHA>

Maintenance of release-4.5, release-4.4 and release-4.3

Releases prior to 4.6 continue to maintain hyperkube in the origin repo in the release-4.x branches. Persistent carries and backports for those branches should continue to be submitted directly to origin. openshift/kubernetes is not involved except for rebases.

End-to-End (e2e) and Extended Tests

End to end tests (e2e) should verify a long set of flows in the product as a user would see them. Two e2e tests should not overlap more than 10% of function and are not intended to test error conditions in detail. The project examples should be driven by e2e tests. e2e tests can also test external components working together.

All e2e tests are compiled into the openshift-tests binary. To build the test binary, run make.

To run a specific test, or an entire suite of tests, read test/extended/README for more information.

Updating external examples

hack/update-external-example.sh will pull down example files from external repositories and deposit them under the examples directory. Run this script if you need to refresh an example file, or add a new one. See the script and examples/quickstarts/README.md for more details.

Documentation

Overview

This is the source repository for OpenShift Origin - the best way to build, manage, and deploy applications in the cloud. The OpenShift 3.0 codebase is based around container images and containers and the Kubernetes container management system.

Directories

Path Synopsis
cmd
openshift-tests command
Package examples contains sample applications for trying out the concepts in OpenShift 3.
Package examples contains sample applications for trying out the concepts in OpenShift 3.
deployment command
hack
jsonformat command
listtests command
pkg
Package pkg contains all of the libraries for OpenShift 3.
Package pkg contains all of the libraries for OpenShift 3.
apis/testextension/v1
Package v1 contains API Schema definitions for the testextension v1 API group +groupName=testextension.redhat.io
Package v1 contains API Schema definitions for the testextension v1 API group +groupName=testextension.redhat.io
clusterversion
Package clusterversion contains utitlities to access version information for the cluster.
Package clusterversion contains utitlities to access version information for the cluster.
cmd
test/preconditions
Package preconditions provides infrastructure for detecting and reporting cluster precondition failures in test suites.
Package preconditions provides infrastructure for detecting and reporting cluster precondition failures in test suites.
version
Package version supplies version information collected at build time to OpenShift and Kubernetes components.
Package version supplies version information collected at build time to OpenShift and Kubernetes components.
test
extended
Package extended contains extended tests for OpenShift Origin
Package extended contains extended tests for OpenShift Origin
extended/edge_topologies
TNF node replacement: restore Kubernetes Secrets from on-disk backup YAML (shared by BMC + etcd recovery).
TNF node replacement: restore Kubernetes Secrets from on-disk backup YAML (shared by BMC + etcd recovery).
extended/edge_topologies/utils
Package utils provides common cluster utilities: topology validation, CLI management, node filtering, and operator health checks.
Package utils provides common cluster utilities: topology validation, CLI management, node filtering, and operator health checks.
extended/edge_topologies/utils/apis
Package apis provides BareMetalHost utilities: status checks, provisioning state monitoring, and Metal3 operations.
Package apis provides BareMetalHost utilities: status checks, provisioning state monitoring, and Metal3 operations.
extended/edge_topologies/utils/core
Package core provides file utilities: permission constants, temp file creation, and template processing.
Package core provides file utilities: permission constants, temp file creation, and template processing.
extended/edge_topologies/utils/services
Package services provides etcd utilities: error classification, retry detection, and learner state handling.
Package services provides etcd utilities: error classification, retry detection, and learner state handling.
extended/util/compat_otp/version
Package version supplies version information collected at build time to OpenShift and Kubernetes components.
Package version supplies version information collected at build time to OpenShift and Kubernetes components.
extended/util/openshift/clusterversionoperator
Package clusterversionoperator contains utilities for exercising the cluster-version operator.
Package clusterversionoperator contains utilities for exercising the cluster-version operator.
tools
changelog command
etcdhelper command
gotest2junit command
junitreport command

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL