Giter VIP home page Giter VIP logo

cluster-api-provider-azure's Introduction

Kubernetes Cluster API Provider Azure


Kubernetes-native declarative infrastructure for Azure.

What is the Cluster API Provider Azure

The Cluster API brings declarative, Kubernetes-style APIs to cluster creation, configuration and management.

The API itself is shared across multiple cloud providers allowing for true Azure hybrid deployments of Kubernetes.

Quick Start

Check out the Cluster API Quick Start to create your first Kubernetes cluster on Azure using Cluster API.

Flavors

See the flavors documentation to know which cluster templates are provided by CAPZ.

Getting Help

If you need help with CAPZ, please visit the #cluster-api-azure channel on Slack, open a GitHub issue, or join us at Office Hours.


Compatibility

Cluster API Versions

Currently, CAPZ is compatible only with the v1beta1 version of CAPI (v1.0.x). Support for v1alpha3 (v0.3.x) and v1alpha4 (v0.4.x) is deprecated and has been removed.

Kubernetes Versions

The Azure provider is able to install and manage the versions of Kubernetes supported by the Cluster API (CAPI) project.

Managed Clusters (AKS)

Managed Clusters (AKS) follow their own Kubernetes version support policy. Please use the Azure portal or CLI to find the versions supported in your cluster's location.

For more information on Kubernetes version support, see the Cluster API book.


Documentation

Please see our Book for in-depth user documentation.

Additional docs can be found in the /docs directory, and the index is here.

Getting involved and contributing

Are you interested in contributing to cluster-api-provider-azure? We, the maintainers and community, would love your suggestions, contributions, and help! Also, the maintainers can be contacted at any time to learn more about how to get involved.

To set up your environment checkout the development guide.

In the interest of getting more new people involved, we tag issues with good first issue. These are typically issues that have smaller scope but are good ways to start to get acquainted with the codebase.

We also encourage ALL active community participants to act as if they are maintainers, even if you don't have "official" write permissions. This is a community effort, we are here to serve the Kubernetes community. If you have an active interest and you want to get involved, you have real power! Don't assume that the only people who can get things done around here are the "maintainers".

We also would love to add more "official" maintainers, so show us what you can do!

This repository uses the Kubernetes bots. See a full list of the commands here.

Office hours

The community holds office hours every week, with sessions open to all users and developers.

Office hours are hosted on a zoom video chat every Thursday at 09:00 (PT) / 12:00 (ET) Convert to your timezone and are published on the Kubernetes community meetings calendar. Please add your questions or ideas to the agenda.

Other ways to communicate with the contributors

Please check in with us in the #cluster-api-azure channel on Slack.

Github issues

Bugs

If you think you have found a bug please follow the instructions below.

  • Please spend a small amount of time giving due diligence to the issue tracker. Your issue might be a duplicate.
  • Get the logs from the cluster controllers. Please paste this into your issue.
  • Open a bug report.
  • Remember users might be searching for your issue in the future, so please give it a meaningful title to help others.
  • Feel free to reach out to the cluster-api community on kubernetes slack.

Tracking new features

We also use the issue tracker to track features. If you have an idea for a feature, or think you can help Cluster API Provider Azure become even more awesome, then follow the steps below.

  • Open a feature request.
  • Remember users might be searching for your issue in the future, so please give it a meaningful title to help others.
  • Clearly define the use case, using concrete examples. EG: I type this and cluster-api-provider-azure does that.
  • Some of our larger features will require some design. If you would like to include a technical design for your feature please include it in the issue.
  • After the new feature is well understood, and the design agreed upon we can start coding the feature. We would love for you to code it. So please open up a WIP (work in progress) pull request, and happy coding.

cluster-api-provider-azure's People

Contributors

alexeldeib avatar awesomenix avatar cecilerobertmichon avatar cpanato avatar dependabot[bot] avatar devigned avatar dtzar avatar evalle avatar fiunchinho avatar invidian avatar jackfrancis avatar jont828 avatar jsturtevant avatar justaugustus avatar k8s-ci-robot avatar lochanrn avatar lzhecheng avatar marosset avatar marwanad avatar mboersma avatar mweibel avatar nader-ziada avatar nawazkh avatar nojnhuh avatar prajyot-parab avatar shysank avatar sonasingh46 avatar tariq1890 avatar willie-yao avatar zmalik avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cluster-api-provider-azure's Issues

VM cannot be attached to backend pool (NIC needs to either use a Standard SKU PIP or not have a PIP attached) & backend pool reconciliation code doesn't exist

/kind bug

Fixed in #99
ref: #92

What steps did you take and what happened:
[A clear and concise description of what the bug is.]

What did you expect to happen:

Anything else you would like to add:
[Miscellaneous information that will assist in solving the issue.]

Environment:

  • cluster-api-provider-azure version: v0.1.0-alpha.3
  • Kubernetes version: (use kubectl version): 1.13.3
  • OS (e.g. from /etc/os-release): Ubuntu 18.04

/assign

Add cluster and machine actuators tests

I did a bad thing in #68 and commented out the cluster and machine actuator tests, because the associated code had been fully refactored and the current code doesn't fit the old tests.

We've got to rewrite new tests ASAP.
/help
/priority critical-urgent
/cc @tariq1890 @soggiest

Investigating using distroless/static for image building

/kind feature

ref: #92, https://github.com/kubernetes-sigs/cluster-api-provider-azure/pull/88/files#r259902819

Describe the solution you'd like
[A clear and concise description of what you want to happen.]

Anything else you would like to add:
[Miscellaneous information that will assist in solving the issue.]

Environment:

  • cluster-api-provider-azure version: v0.1.0-alpha.3
  • Kubernetes version: (use kubectl version): 1.13.3
  • OS (e.g. from /etc/os-release): Ubuntu 18.04

/help

Update project admins

Now that the project has been migrated into k-sigs, we need to define GitHub admins and maintainers.
/assign

Deleting a machine deletes the entire resource group

Right now, the machine's actuator Delete function deletes the entire resource group associated with it.

This should be updated to only delete the resources associated with the VM (OS Disk, Public IP address, virtual machine).

Implement Cluster Actuator

Implement both Delete and Reconcile operations.

Possible refactor: Move the creation of the network SG and NIC to be cluster actuator's responsibility instead of doing it as part of the machine deployment.

Improve PR status checks

This overlaps with #11 with an emphasis on getting feedback on PRs quickly. In particular, we want to be able to do automated runs with gofmt, dep ensure, plus other useful static code analysis tools.

Store public IP DNS name in Cluster object for use in machine scripts (includes updating associated types)

/kind feature

Fixed in #99
ref: #92

Describe the solution you'd like
[A clear and concise description of what you want to happen.]

Anything else you would like to add:
[Miscellaneous information that will assist in solving the issue.]

Environment:

  • cluster-api-provider-azure version: v0.1.0-alpha.3
  • Kubernetes version: (use kubectl version): 1.13.3
  • OS (e.g. from /etc/os-release): Ubuntu 18.04

/assign

Types need to be updated (+ regenerate deepcopy, CRDs, RBAC)

/kind feature

ref: #92

Describe the solution you'd like
[A clear and concise description of what you want to happen.]

Anything else you would like to add:
[Miscellaneous information that will assist in solving the issue.]

Environment:

  • cluster-api-provider-azure version: v0.1.0-alpha.3
  • Kubernetes version: (use kubectl version): 1.13.3
  • OS (e.g. from /etc/os-release): Ubuntu 18.04

/assign

Subnets + NSGs: ReconcileNetwork should implement two subnets, control plane and node, with NSGs scoped to the role.

/kind feature

ref: #92

Describe the solution you'd like
[A clear and concise description of what you want to happen.]

Anything else you would like to add:
[Miscellaneous information that will assist in solving the issue.]

Environment:

  • cluster-api-provider-azure version: v0.1.0-alpha.3
  • Kubernetes version: (use kubectl version): 1.13.3
  • OS (e.g. from /etc/os-release): Ubuntu 18.04

/help

[Umbrella] capz MVP - Known Issues

As we move through a few refactoring efforts (#68, #88), it's a good time to capture some of the work required to bring us to a MVP capz implementation.

Here are some known issues that we'd want to resolve for the mvp:

  • (#100) master builds (i.e., make binaries-dev works), but doesn't result in a working cluster
  • (#97) Repo versioning
  • (#98) Document development process
  • (#101) capz needs to be deployed in a region that supports Availability Zones
    • Resources (VM + NIC public IP) are hard-coded to Zone 3
  • (#102) VM cannot be attached to backend pool (NIC needs to either use a Standard SKU PIP or not have a PIP attached) & backend pool reconciliation code doesn't exist
  • (#103) Store public IP DNS name in Cluster object for use in machine scripts (includes updating associated types)
  • (#104) Control plane VM is open to the internet
  • (#105) Subnets + NSGs: ReconcileNetwork should implement two subnets, control plane and node, with NSGs scoped to the role
  • (#106) Implement/update delete methods for Cluster/Machine objects

Additional things to consider, but are not strictly required for mvp:

I'll get these into their own issues; just wanted to open this umbrella as a starting point.

/milestone mvp
/cc @soggiest @tariq1890

master builds (i.e., make binaries-dev works), but doesn't result in a working cluster

/kind bug

Partially addressed in #99
ref: #92

What steps did you take and what happened:
[A clear and concise description of what the bug is.]

What did you expect to happen:

Anything else you would like to add:
[Miscellaneous information that will assist in solving the issue.]

Environment:

  • cluster-api-provider-azure version: v0.1.0-alpha.3
  • Kubernetes version: (use kubectl version): 1.13.3
  • OS (e.g. from /etc/os-release): Ubuntu 18.04

/assign

Dedupe dependencies and move startup scripts to cloud-init

/kind feature

ref: #92

Describe the solution you'd like
[A clear and concise description of what you want to happen.]

Anything else you would like to add:
[Miscellaneous information that will assist in solving the issue.]

Environment:

  • cluster-api-provider-azure version: v0.1.0-alpha.3
  • Kubernetes version: (use kubectl version): 1.13.3
  • OS (e.g. from /etc/os-release): Ubuntu 18.04

/help

Control plane NSG is open to the internet

/kind bug

ref: #92

What steps did you take and what happened:
[A clear and concise description of what the bug is.]

What did you expect to happen:

Anything else you would like to add:
[Miscellaneous information that will assist in solving the issue.]

Environment:

  • cluster-api-provider-azure version: v0.1.0-alpha.3
  • Kubernetes version: (use kubectl version): 1.13.3
  • OS (e.g. from /etc/os-release): Ubuntu 18.04

Update helper packages (tokens, certificates, etc.)

/kind feature

ref: #92

Describe the solution you'd like
[A clear and concise description of what you want to happen.]

Anything else you would like to add:
[Miscellaneous information that will assist in solving the issue.]

Environment:

  • cluster-api-provider-azure version: v0.1.0-alpha.3
  • Kubernetes version: (use kubectl version): 1.13.3
  • OS (e.g. from /etc/os-release): Ubuntu 18.04

/help

Implement/update delete methods for Cluster/Machine objects

/kind feature

ref: #92

Describe the solution you'd like
[A clear and concise description of what you want to happen.]

Anything else you would like to add:
[Miscellaneous information that will assist in solving the issue.]

Environment:

  • cluster-api-provider-azure version: v0.1.0-alpha.3
  • Kubernetes version: (use kubectl version): 1.13.3
  • OS (e.g. from /etc/os-release): Ubuntu 18.04

/help

Clean up Makefile

/kind feature

ref: #92

Describe the solution you'd like
[A clear and concise description of what you want to happen.]

Anything else you would like to add:
[Miscellaneous information that will assist in solving the issue.]

Environment:

  • cluster-api-provider-azure version: v0.1.0-alpha.3
  • Kubernetes version: (use kubectl version): 1.13.3
  • OS (e.g. from /etc/os-release): Ubuntu 18.04

/assign

Switch to Azure Pipelines for CI

Some features that may be worthwhile for the project (especially for integration tests):

  • Unlimited CI/CD minutes
  • 10 parallel jobs for free
  • Microsoft hosted agents for all OSes
  • Extensions marketplace

One downside with Azure Pipelines is the inability to cache files across subsequent runs of the same pipeline. There might be less need for this cache, given the unlimited CI times

Upsides of Travis is that jobs can cache files to be used by other jobs/builds and downsides are the 50 minute time limit per job and max 5 concurrent builds

Implement better testing workflow

The integration tests are currently triggered manually after a preliminary code review.

It would be nice to have this somewhat automated. Previously, Travis was set to trigger builds on PRs (before the repo was made public). However, there are a few issues with this. Most importantly, a PR could contain specially crafted code to dump secrets/POST them to some server somewhere.

In addition, we could probably split the integration tests and the unit tests.

Add dep check back to the CI

Dep check seems to have been removed with the new bazel artifacts. We need to add a new Makefile check so that dep check is made available for use in the CI cycles.

Adopt a Reconcile/Delete pattern for exported methods

Describe the solution you'd like
The goals are two-fold here:

  1. Adopt a consistent pattern/interface for retrieving/modifying/deleting Cluster/Machine/Azure resources
  2. Minimize calls to Azure by storing more information in Cluster & Machine objects

For each actuator reconciler, we currently have Reconcile and Delete methods which operate over the lower-level Azure resources.

Instead of handling implementation details in the top-level reconciler, we should scope them to the resources that they're operating over. As an example, a SubnetSpec should instead be generated/manipulated by a subnet reconciler:

subnetSpec := &subnets.Spec{
Name: azure.GenerateControlPlaneSubnetName(s.scope.Cluster.Name),
CIDR: azure.DefaultControlPlaneSubnetCIDR,
VnetName: azure.GenerateVnetName(s.scope.Cluster.Name),
SecurityGroupName: azure.GenerateControlPlaneSecurityGroupName(s.scope.Cluster.Name),
}

As a concrete reference, see the ReconcileNetwork() method for Cluster API Provider AWS.

A secondary problem is that in our current actuator reconciler model, we make a variety of Create/Update calls to the Azure API, in instances where a Get would suffice. This means we're attempting to modify a majority of the Azure resources we create on every round-trip of a reconciler.

Finally, we do not fully utilize the defined types in the capz API, instead accepting an ambiguous spec and returning a loosely-defined interface, instead of a concrete type.

This means that we are required to query Azure for cluster/machine information, instead of being able to reference the ClusterSpec, ClusterStatus, MachineSpec, and MachineStatus directly, which should be our sources of truth.


As a solution, we can:

  • Redefine the Service interface to present only Reconcile and Delete methods
  • Add a temporary interface (GetterService) to represent packages that don't adhere to the Reconcile/Delete model
  • Refactor packages to adhere to Reconcile/Delete model, which will convert and store Azure resource information in the relevant Spec or Status
  • Redefine package-level CreateOrUpdate/Gets as unexported methods (only to be used by the package-level Reconcile/Delete)
  • Remove references to unexported methods from the top-level reconcilers
  • Remove the temporary GetterService interface

The work to accomplish this has begun in #174.

ref: #92
/kind feature

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.