Skip to content
Azure Red Hat OpenShift RP
Go Python Shell Makefile
Branch: master
Clone or download

Latest commit

Latest commit 378c019 May 13, 2020

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.pipelines remove location parameter May 13, 2020
cmd/aro mirror without max limit May 12, 2020
deploy Bump Geneva images Apr 27, 2020
docs Merge pull request #516 from petrkotas/add-python-howto May 11, 2020
hack add missing -o pipefail May 6, 2020
pkg Merge pull request #665 from mjudeikis/mirror May 12, 2020
python [WIP] Replace custom int validator in az aro (#557) Apr 29, 2020
swagger remove swagger artifacts May 7, 2020
test Merge pull request #337 from mjudeikis/add.correlationID Mar 30, 2020
vendor rebase installer May 5, 2020
.env Implement ARO extension Dec 16, 2019
.gitignore add config.yaml for deployer tooling Mar 22, 2020
.sha256sum add additional vm sizes Apr 16, 2020
CONTRIBUTING.md add CONTRIBUTING.md Dec 17, 2019
Dockerfile.aro run microdnf update Jan 10, 2020
Dockerfile.fluentbit Adding INT deployment pipelines (#214) Mar 9, 2020
Dockerfile.proxy run microdnf update Jan 10, 2020
Gopkg.lock rebase installer May 5, 2020
Gopkg.toml Vendor Mar 25, 2020
LICENSE Initial commit Oct 16, 2019
Makefile Temporarily pin azure-mgmt-loganalytics to 0.2.0 Apr 14, 2020
README.md Direct users to the Azure docs for production deployment Apr 7, 2020
SECURITY.md add SECURITY.md Dec 17, 2019
cgmanifest.json generate cgmanifest May 5, 2020
env.example installation instructions for multi-tenant development environment Dec 30, 2019

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

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

  • .pipelines: CI workflows using Azure pipelines.

  • 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/genevalogging: Daemonset for Geneva logging.

    • pkg/install: OpenShift installer wrapper layer.

    • pkg/metrics: Handles RP metrics via statsd.

    • pkg/mirror: OpenShift release mirror tooling.

    • pkg/monitor: Monitors running clusters.

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

Useful links

You can’t perform that action at this time.