github.com/cockroachdb/cockroach@v20.2.0-alpha.1+incompatible/pkg/cmd/roachprod/vm/azure/doc.go (about)

     1  // Copyright 2019 The Cockroach Authors.
     2  //
     3  // Use of this software is governed by the Business Source License
     4  // included in the file licenses/BSL.txt.
     5  //
     6  // As of the Change Date specified in that file, in accordance with
     7  // the Business Source License, use of this software will be governed
     8  // by the Apache License, Version 2.0, included in the file
     9  // licenses/APL.txt.
    10  
    11  // Package azure allows roachprod to create instances within the
    12  // Microsoft Azure cloud.
    13  //
    14  // Much of the REST API code in this package is based off of
    15  // https://github.com/Azure-Samples/azure-sdk-for-go-samples The API
    16  // package is automatically generated from a REST API definition.
    17  //
    18  // Azure terminology differs somewhat from GCP and AWS. The top-level
    19  // container for resources and billing is is a "Subscription". All
    20  // computational resources (VMs, IPs, network configs) belong to a
    21  // "Resource Group", which lives in a particular "Location", such as
    22  // "eastus", and which are roughly equivalent to other cloud provider's
    23  // regions. Individual availability zones don't surface directly unless
    24  // replica sets are used. Roachprod uses resource groups for lifecycle
    25  // management, allowing all resources used by a cluster to be extended
    26  // or deleted at once.
    27  //
    28  // TODO(bob): Add support for deploying with replica sets.
    29  //
    30  // The following resources are created for each cluster:
    31  //
    32  //  Roachprod "commons"
    33  //  | Resource Group (one per Location / Region)
    34  //  |   VNet          (10.<offset>/16)
    35  //  |     Subnet      (10.<offset>/18 range)
    36  //
    37  //  Per cluster
    38  //  | Resource Group (one per Location / Region)
    39  //  |   []IPAddress   (public IP address for each VM)
    40  //  |   []NIC         (bound to IPAddress and to a common Subnet)
    41  //  |   []VM          (bound to a NIC)
    42  //  |     OSDisk      (100GB, standard SSD storage)
    43  //
    44  // Roachprod creates a "common" resource group, VNet, and Subnet for
    45  // each location that clusters may be deployed into. Each NIC that is
    46  // created will be bound to a common subnet. All of the managed VNets
    47  // are peered together. This allows arbitrary connectivity between
    48  // roachprod-managed clusters (e.g. to test cluster migration
    49  // strategies).
    50  package azure