Azure Red Hat OpenShift RP
Перейти к файлу
Jim Minter 510e57160d
add SECURITY.md
2019-12-16 19:16:53 -06:00
.github/workflows update supported python versions 2019-12-16 10:51:36 -06:00
cmd/rp add code license boilerplate 2019-12-16 19:16:50 -06:00
deploy add code license boilerplate 2019-12-16 19:16:50 -06:00
docs add production parameters file 2019-12-16 11:17:59 -06:00
hack add code license boilerplate 2019-12-16 19:16:50 -06:00
pkg add code license boilerplate 2019-12-16 19:16:50 -06:00
python add code license boilerplate 2019-12-16 19:16:50 -06:00
swagger/redhatopenshift/resource-manager Rename "Create" to "CreateOrUpdate" 2019-12-16 11:26:24 -06:00
test add code license boilerplate 2019-12-16 19:16:50 -06:00
vendor middleware test enhancements 2019-12-16 13:30:58 -06:00
.env Implement ARO extension 2019-12-15 22:06:27 -06:00
.gitignore Implement ARO extension 2019-12-15 22:06:27 -06:00
.sha256sum run "make client" 2019-12-16 11:26:24 -06:00
CONTRIBUTING.md add CONTRIBUTING.md 2019-12-16 19:16:53 -06:00
Dockerfile move healthz back onto 8443 and use authentication middleware 2019-11-26 07:22:00 -06:00
Gopkg.lock disable CloudProviderRateLimit for now 2019-12-11 21:14:53 -06:00
Gopkg.toml client generation updates 2019-11-30 14:04:43 -06:00
LICENSE Initial commit 2019-10-15 22:43:52 -05:00
Makefile add tool to add code license boilerplate 2019-12-16 19:14:21 -06:00
README.md typos 2019-12-16 10:56:29 -06:00
SECURITY.md add SECURITY.md 2019-12-16 19:16:53 -06:00
TODO.md update TODO 2019-12-11 21:22:55 -06:00
cgmanifest.json disable CloudProviderRateLimit for now 2019-12-11 21:14:53 -06:00
env.example typos 2019-12-16 10:56:29 -06:00

README.md

github.com/jim-minter/rp

Notice

For information relating to the generally available Azure Red Hat OpenShift v3 service, please see the following links:

Quickstarts

  • If you have a whitelisted subscription and want to use az aro to create a cluster, follow using az aro.

  • If you want to deploy a development RP, follow deploy development RP.

Repository map

  • .github/workflows: CI workflows using GitHub Actions.

  • cmd/rp: RP entrypoint.

  • deploy: ARM templates to deploy RP in development and production.

  • docs: Documentation.

  • hack: Build scripts and utilities.

  • pkg: RP source code:

    • pkg/api: RP internal and external API definitions.

    • pkg/backend: RP backend workers.

    • pkg/client: Autogenerated ARO service Go client.

    • pkg/database: RP CosmosDB wrapper layer.

    • pkg/deploy: /deploy ARM template generation code.

    • pkg/env: RP environment-specific shims for running in production, development or test

    • pkg/frontend: RP frontend webserver.

    • pkg/install: OpenShift installer wrapper layer.

    • pkg/swagger: /swagger Swagger specification generation code.

    • pkg/util: Utility libraries.

  • python: Autogenerated ARO service Python client and az aro client extension.

  • swagger: Autogenerated ARO service Swagger specification.

  • test: End-to-end tests.

  • vendor: Vendored Go libraries.

Basic architecture

  • pkg/frontend is intended to become a spec-compliant RP web server. It is backed by CosmosDB. Incoming PUT/DELETE requests are written to the database with an non-terminal (Updating/Deleting) provisioningState.

  • pkg/backend reads documents with non-terminal provisioningStates, asynchronously updates them and finally updates document with a terminal provisioningState (Succeeded/Failed). The backend updates the document with a heartbeat - if this fails, the document will be picked up by a different worker.

  • As CosmosDB does not support document patch, care is taken to correctly pass through any fields in the internal model which the reader is unaware of (see github.com/ugorji/go/codec.MissingFielder). This is intended to help in upgrade cases and (in the future) with multiple microservices reading from the database in parallel.

  • Care is taken to correctly use optimistic concurrency to avoid document corruption through concurrent writes (see RetryOnPreconditionFailed).

  • The pkg/api architecture differs somewhat from github.com/openshift/openshift-azure: the intention is to fix the broken merge semantics and try pushing validation into the versioned APIs to improve error reporting.

  • Everything is intended to be crash/restart/upgrade-safe, horizontally scaleable, upgradeable...