Azure Red Hat OpenShift RP
Перейти к файлу
Jim Minter b797f342a4
document minimum az version
2020-01-28 14:42:56 -06:00
.github/workflows remove FEATURE_OPERATIONS flag 2020-01-22 08:00:53 -06:00
.pipelines Juliens/az pipelines fix (#3) 2020-01-27 15:46:13 -05:00
cmd/aro add cosmosdb metrics 2020-01-25 09:05:37 +00:00
deploy add clusters key vault 2020-01-23 08:23:13 -06:00
docs document minimum az version 2020-01-28 14:42:56 -06:00
hack Merge pull request #116 from jim-minter/e2e-followup 2020-01-28 06:52:18 -06:00
pkg Merge pull request #128 from mjudeikis/cosmosdb.panic 2020-01-28 08:23:51 -06:00
python fixing wrong logic 2020-01-21 15:28:03 -05:00
swagger move console to consoleProfile 2020-01-21 13:53:53 +00:00
test standardise on using oc in v4, not cs 2020-01-24 08:55:55 -06:00
vendor Juliens/az pipelines fix (#3) 2020-01-27 15:46:13 -05:00
.env Implement ARO extension 2019-12-15 22:06:27 -06:00
.gitignore Juliens/az pipelines fix (#3) 2020-01-27 15:46:13 -05:00
.sha256sum move console to consoleProfile 2020-01-21 13:53:53 +00:00
CONTRIBUTING.md add CONTRIBUTING.md 2019-12-16 19:16:53 -06:00
Dockerfile.aro run microdnf update 2020-01-10 16:55:12 -06:00
Dockerfile.mdm add mdm image 2020-01-10 16:06:37 -06:00
Dockerfile.proxy run microdnf update 2020-01-10 16:55:12 -06:00
Gopkg.lock Juliens/az pipelines fix (#3) 2020-01-27 15:46:13 -05:00
Gopkg.toml Juliens/az pipelines fix (#3) 2020-01-27 15:46:13 -05:00
LICENSE Initial commit 2019-10-15 22:43:52 -05:00
Makefile Merge pull request #116 from jim-minter/e2e-followup 2020-01-28 06:52:18 -06:00
README.md Review changes 2020-01-24 09:57:39 +10:00
SECURITY.md add SECURITY.md 2019-12-16 19:16:53 -06:00
cgmanifest.json update manifest 2020-01-27 16:05:01 -05:00
env.example installation instructions for multi-tenant development environment 2019-12-30 12:02:05 -06:00

README.md

Azure Red Hat OpenShift Resource Provider

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 using the production RP, follow using az aro.

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

Contributing

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.microsoft.com.

When you submit a pull request, a CLA-bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repositories using our CLA.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.

Repository map

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

  • cmd/aro: 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/mirror: OpenShift release mirror tooling.

    • 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...