Azure Red Hat OpenShift RP
Перейти к файлу
Jim Minter 22e0cc5b91
deep copy items when adding them to database checkers/fixtures
2020-12-09 16:22:52 -06:00
.github remove ehashman from CODEOWNERS 2020-12-08 19:19:22 -06:00
.pipelines Fix CI 2020-12-04 09:31:46 -06:00
cmd/aro emit metrics for portal queries 2020-12-09 16:22:51 -06:00
deploy add missing HOSTNAME environment variable for portal 2020-12-09 16:22:52 -06:00
docs portal initial commit 2020-12-09 16:22:51 -06:00
hack remove non-standard domainName ARM template parameter and use clusterParentDomainName 2020-12-09 16:22:52 -06:00
pkg add Authenticated field to SSH struct to eliminate race condition 2020-12-09 16:22:52 -06:00
python Merge pull request #1219 from jim-minter/minor-fixes 2020-12-08 19:43:29 -06:00
swagger fixups 2020-12-04 09:39:50 -06:00
test deep copy items when adding them to database checkers/fixtures 2020-12-09 16:22:52 -06:00
vendor vendor 2020-12-09 16:22:50 -06:00
.env Implement ARO extension 2019-12-15 22:06:27 -06:00
.gitignore Merge pull request #1088 from ihcsim/log-deployment-mode 2020-10-22 20:07:04 -05:00
.golangci.yml enable lint on CI 2020-11-19 08:09:59 -06:00
.sha256sum fixups 2020-12-04 09:39:50 -06:00
CONTRIBUTING.md add CONTRIBUTING.md 2019-12-16 19:16:53 -06:00
Dockerfile.aro Adds e2e image publishing into CI pipelines 2020-07-27 12:05:09 +01:00
Dockerfile.fluentbit Adding INT deployment pipelines (#214) 2020-03-09 08:40:34 -06:00
Dockerfile.proxy run microdnf update 2020-01-10 16:55:12 -06:00
Dockerfile.routefix add Dockerfile.routefix 2020-06-25 10:54:44 -05:00
LICENSE Initial commit 2019-10-15 22:43:52 -05:00
Makefile add system:aro-sre clusterrole and clusterrolebinding 2020-12-09 16:22:50 -06:00
README.md Add monitoring controller to configure prometheus to persist data 2020-11-20 15:52:43 +11:00
SECURITY.md add SECURITY.md 2019-12-16 19:16:53 -06:00
deps.go vendor 2020-11-19 08:09:58 -06:00
env.example Add aro-operator 2020-07-29 15:46:23 +01:00
go.mod vendor 2020-12-09 16:22:50 -06:00
go.sum vendor 2020-12-09 16:22:50 -06:00
linter_exclusions.yml fix python linter 2020-08-06 12:59:42 +01:00

README.md

Azure Red Hat OpenShift Resource Provider

Welcome!

For information relating to the generally available Azure Red Hat OpenShift v4 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/operator/controllers: A list of controllers instantiated by the operator component.

      • alertwebhook: Ensures that the receiver endpoint defined in the alertmanager-main secret matches the webserver endpoint at aro-operator-master.openshift-azure-operator:8080, to avoid the AlertmanagerReceiversNotConfigured warning.

      • checker: Watches the Cluster resource for changes and perform a set of checks for outbound internet connectivity.

      • genevalogging: Ensures all the Geneva logging resources in the openshift-azure-logging namespace matches the pre-defined specification found in pkg/operator/controllers/genevalogging/genevalogging.go.

      • pullsecret: Ensures that the ACR credentials in the openshift-config/pull-secret secret match those in the openshift/azure-operator/cluster secret.

      • workaround: Applies a set of temporay workarounds to the ARO cluster.

      • routefix: Ensures all the routefix resources in the namespace openshift-azure-routefix remain on the cluster.

      • monitoring: Ensures Prometheus is configured to persist data.

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