d0683139fe
This commit integrates the Azure provider to the Airship 2.0 project. It adds the following folders: - manifest/function/capz: This folder contains all manifests required for the integration of Azure provider. - manifest/function/k8scontrol-capz: This folder contains the base manifest for the Azure Workload cluster. - manifest/site/az-test-site: This folder contains the manifests used for initializing the CAPI and CAPZ components on the management cluster invoking "airshipctl cluster init" and manifests used for deploying a Workload cluster on the Azure Cloud by invoking the command "airshipctl phase apply azure". - tools/deployment/azure: provides the script shell that are used in the zuul gates and local test. Updated files: - zuul.d/project.yaml and zuul.d/jobs.yaml have been updated to include gates for validating the Azure provider integration. Change-Id: Icbdc7f6f42c159f48dd11e35626da3bc016f5487
744 lines
34 KiB
YAML
744 lines
34 KiB
YAML
|
|
---
|
|
apiVersion: apiextensions.k8s.io/v1
|
|
kind: CustomResourceDefinition
|
|
metadata:
|
|
annotations:
|
|
controller-gen.kubebuilder.io/version: v0.3.0
|
|
creationTimestamp: null
|
|
name: azureclusters.infrastructure.cluster.x-k8s.io
|
|
spec:
|
|
group: infrastructure.cluster.x-k8s.io
|
|
names:
|
|
categories:
|
|
- cluster-api
|
|
kind: AzureCluster
|
|
listKind: AzureClusterList
|
|
plural: azureclusters
|
|
singular: azurecluster
|
|
scope: Namespaced
|
|
versions:
|
|
- name: v1alpha2
|
|
schema:
|
|
openAPIV3Schema:
|
|
description: AzureCluster is the Schema for the azureclusters API
|
|
properties:
|
|
apiVersion:
|
|
description: 'APIVersion defines the versioned schema of this representation
|
|
of an object. Servers should convert recognized schemas to the latest
|
|
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
|
type: string
|
|
kind:
|
|
description: 'Kind is a string value representing the REST resource this
|
|
object represents. Servers may infer this from the endpoint the client
|
|
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
|
type: string
|
|
metadata:
|
|
type: object
|
|
spec:
|
|
description: AzureClusterSpec defines the desired state of AzureCluster
|
|
properties:
|
|
additionalTags:
|
|
additionalProperties:
|
|
type: string
|
|
description: AdditionalTags is an optional set of tags to add to Azure
|
|
resources managed by the Azure provider, in addition to the ones
|
|
added by default.
|
|
type: object
|
|
location:
|
|
type: string
|
|
networkSpec:
|
|
description: NetworkSpec encapsulates all things related to Azure
|
|
network.
|
|
properties:
|
|
subnets:
|
|
description: Subnets is the configuration for the control-plane
|
|
subnet and the node subnet.
|
|
items:
|
|
description: SubnetSpec configures an Azure subnet.
|
|
properties:
|
|
cidrBlock:
|
|
description: CidrBlock is the CIDR block to be used when
|
|
the provider creates a managed Vnet.
|
|
type: string
|
|
id:
|
|
description: ID defines a unique identifier to reference
|
|
this resource.
|
|
type: string
|
|
internalLBIPAddress:
|
|
description: InternalLBIPAddress is the IP address that
|
|
will be used as the internal LB private IP. For the control
|
|
plane subnet only.
|
|
type: string
|
|
name:
|
|
description: Name defines a name for the subnet resource.
|
|
type: string
|
|
role:
|
|
description: Role defines the subnet role (eg. Node, ControlPlane)
|
|
type: string
|
|
securityGroup:
|
|
description: SecurityGroup defines the NSG (network security
|
|
group) that should be attached to this subnet.
|
|
properties:
|
|
id:
|
|
type: string
|
|
ingressRule:
|
|
description: IngressRules is a slice of Azure ingress
|
|
rules for security groups.
|
|
items:
|
|
description: IngressRule defines an Azure ingress
|
|
rule for security groups.
|
|
properties:
|
|
description:
|
|
type: string
|
|
destination:
|
|
description: Destination - The destination address
|
|
prefix. CIDR or destination IP range. Asterix
|
|
'*' can also be used to match all source IPs.
|
|
Default tags such as 'VirtualNetwork', 'AzureLoadBalancer'
|
|
and 'Internet' can also be used.
|
|
type: string
|
|
destinationPorts:
|
|
description: DestinationPorts - The destination
|
|
port or range. Integer or range between 0 and
|
|
65535. Asterix '*' can also be used to match
|
|
all ports.
|
|
type: string
|
|
protocol:
|
|
description: SecurityGroupProtocol defines the
|
|
protocol type for a security group rule.
|
|
type: string
|
|
source:
|
|
description: Source - The CIDR or source IP range.
|
|
Asterix '*' can also be used to match all source
|
|
IPs. Default tags such as 'VirtualNetwork',
|
|
'AzureLoadBalancer' and 'Internet' can also
|
|
be used. If this is an ingress rule, specifies
|
|
where network traffic originates from.
|
|
type: string
|
|
sourcePorts:
|
|
description: SourcePorts - The source port or
|
|
range. Integer or range between 0 and 65535.
|
|
Asterix '*' can also be used to match all ports.
|
|
type: string
|
|
required:
|
|
- description
|
|
- protocol
|
|
type: object
|
|
type: array
|
|
name:
|
|
type: string
|
|
tags:
|
|
additionalProperties:
|
|
type: string
|
|
description: Tags defines a map of tags.
|
|
type: object
|
|
type: object
|
|
required:
|
|
- name
|
|
type: object
|
|
type: array
|
|
vnet:
|
|
description: Vnet is the configuration for the Azure virtual network.
|
|
properties:
|
|
cidrBlock:
|
|
description: CidrBlock is the CIDR block to be used when the
|
|
provider creates a managed virtual network.
|
|
type: string
|
|
id:
|
|
description: ID is the identifier of the virtual network this
|
|
provider should use to create resources.
|
|
type: string
|
|
name:
|
|
description: Name defines a name for the virtual network resource.
|
|
type: string
|
|
resourceGroup:
|
|
description: ResourceGroup is the name of the resource group
|
|
of the existing virtual network or the resource group where
|
|
a managed virtual network should be created.
|
|
type: string
|
|
tags:
|
|
additionalProperties:
|
|
type: string
|
|
description: Tags is a collection of tags describing the resource.
|
|
type: object
|
|
required:
|
|
- name
|
|
type: object
|
|
type: object
|
|
resourceGroup:
|
|
type: string
|
|
required:
|
|
- location
|
|
- resourceGroup
|
|
type: object
|
|
status:
|
|
description: AzureClusterStatus defines the observed state of AzureCluster
|
|
properties:
|
|
apiEndpoints:
|
|
description: APIEndpoints represents the endpoints to communicate
|
|
with the control plane.
|
|
items:
|
|
description: APIEndpoint represents a reachable Kubernetes API endpoint.
|
|
properties:
|
|
host:
|
|
description: The hostname on which the API server is serving.
|
|
type: string
|
|
port:
|
|
description: The port on which the API server is serving.
|
|
type: integer
|
|
required:
|
|
- host
|
|
- port
|
|
type: object
|
|
type: array
|
|
bastion:
|
|
description: VM describes an Azure virtual machine.
|
|
properties:
|
|
addresses:
|
|
description: Addresses contains the Azure instance associated
|
|
addresses.
|
|
items:
|
|
description: NodeAddress contains information for the node's
|
|
address.
|
|
properties:
|
|
address:
|
|
description: The node address.
|
|
type: string
|
|
type:
|
|
description: Node address type, one of Hostname, ExternalIP
|
|
or InternalIP.
|
|
type: string
|
|
required:
|
|
- address
|
|
- type
|
|
type: object
|
|
type: array
|
|
availabilityZone:
|
|
type: string
|
|
id:
|
|
type: string
|
|
identity:
|
|
description: VMIdentity defines the identity of the virtual machine,
|
|
if configured.
|
|
type: string
|
|
image:
|
|
description: Storage profile
|
|
properties:
|
|
gallery:
|
|
type: string
|
|
id:
|
|
type: string
|
|
name:
|
|
type: string
|
|
offer:
|
|
type: string
|
|
publisher:
|
|
type: string
|
|
resourceGroup:
|
|
type: string
|
|
sku:
|
|
type: string
|
|
subscriptionID:
|
|
type: string
|
|
version:
|
|
type: string
|
|
type: object
|
|
name:
|
|
type: string
|
|
osDisk:
|
|
properties:
|
|
diskSizeGB:
|
|
format: int32
|
|
type: integer
|
|
managedDisk:
|
|
properties:
|
|
storageAccountType:
|
|
type: string
|
|
required:
|
|
- storageAccountType
|
|
type: object
|
|
osType:
|
|
type: string
|
|
required:
|
|
- diskSizeGB
|
|
- managedDisk
|
|
- osType
|
|
type: object
|
|
startupScript:
|
|
type: string
|
|
tags:
|
|
additionalProperties:
|
|
type: string
|
|
description: Tags defines a map of tags.
|
|
type: object
|
|
vmSize:
|
|
description: Hardware profile
|
|
type: string
|
|
vmState:
|
|
description: State - The provisioning state, which only appears
|
|
in the response.
|
|
type: string
|
|
type: object
|
|
network:
|
|
description: Network encapsulates Azure networking resources.
|
|
properties:
|
|
apiServerIp:
|
|
description: APIServerIP is the Kubernetes API server public IP
|
|
address.
|
|
properties:
|
|
dnsName:
|
|
type: string
|
|
id:
|
|
type: string
|
|
ipAddress:
|
|
type: string
|
|
name:
|
|
type: string
|
|
type: object
|
|
apiServerLb:
|
|
description: APIServerLB is the Kubernetes API server load balancer.
|
|
properties:
|
|
backendPool:
|
|
properties:
|
|
id:
|
|
type: string
|
|
name:
|
|
type: string
|
|
type: object
|
|
frontendIpConfig:
|
|
type: object
|
|
id:
|
|
type: string
|
|
name:
|
|
type: string
|
|
sku:
|
|
description: LoadBalancerSKU enumerates the values for load
|
|
balancer sku name.
|
|
type: string
|
|
tags:
|
|
additionalProperties:
|
|
type: string
|
|
description: Tags defines a map of tags.
|
|
type: object
|
|
type: object
|
|
securityGroups:
|
|
additionalProperties:
|
|
description: SecurityGroup defines an Azure security group.
|
|
properties:
|
|
id:
|
|
type: string
|
|
ingressRule:
|
|
description: IngressRules is a slice of Azure ingress rules
|
|
for security groups.
|
|
items:
|
|
description: IngressRule defines an Azure ingress rule
|
|
for security groups.
|
|
properties:
|
|
description:
|
|
type: string
|
|
destination:
|
|
description: Destination - The destination address
|
|
prefix. CIDR or destination IP range. Asterix '*'
|
|
can also be used to match all source IPs. Default
|
|
tags such as 'VirtualNetwork', 'AzureLoadBalancer'
|
|
and 'Internet' can also be used.
|
|
type: string
|
|
destinationPorts:
|
|
description: DestinationPorts - The destination port
|
|
or range. Integer or range between 0 and 65535.
|
|
Asterix '*' can also be used to match all ports.
|
|
type: string
|
|
protocol:
|
|
description: SecurityGroupProtocol defines the protocol
|
|
type for a security group rule.
|
|
type: string
|
|
source:
|
|
description: Source - The CIDR or source IP range.
|
|
Asterix '*' can also be used to match all source
|
|
IPs. Default tags such as 'VirtualNetwork', 'AzureLoadBalancer'
|
|
and 'Internet' can also be used. If this is an ingress
|
|
rule, specifies where network traffic originates
|
|
from.
|
|
type: string
|
|
sourcePorts:
|
|
description: SourcePorts - The source port or range.
|
|
Integer or range between 0 and 65535. Asterix '*'
|
|
can also be used to match all ports.
|
|
type: string
|
|
required:
|
|
- description
|
|
- protocol
|
|
type: object
|
|
type: array
|
|
name:
|
|
type: string
|
|
tags:
|
|
additionalProperties:
|
|
type: string
|
|
description: Tags defines a map of tags.
|
|
type: object
|
|
type: object
|
|
description: SecurityGroups is a map from the role/kind of the
|
|
security group to its unique name, if any.
|
|
type: object
|
|
type: object
|
|
ready:
|
|
description: Ready is true when the provider resource is ready.
|
|
type: boolean
|
|
type: object
|
|
type: object
|
|
served: true
|
|
storage: false
|
|
subresources:
|
|
status: {}
|
|
- additionalPrinterColumns:
|
|
- description: Cluster to which this AzureCluster belongs
|
|
jsonPath: .metadata.labels.cluster\.x-k8s\.io/cluster-name
|
|
name: Cluster
|
|
type: string
|
|
- jsonPath: .status.ready
|
|
name: Ready
|
|
type: boolean
|
|
- jsonPath: .spec.resourceGroup
|
|
name: Resource Group
|
|
priority: 1
|
|
type: string
|
|
- jsonPath: .spec.subscriptionID
|
|
name: SubscriptionID
|
|
priority: 1
|
|
type: string
|
|
- jsonPath: .spec.location
|
|
name: Location
|
|
priority: 1
|
|
type: string
|
|
- description: Control Plane Endpoint
|
|
jsonPath: .spec.controlPlaneEndpoint.host
|
|
name: Endpoint
|
|
priority: 1
|
|
type: string
|
|
name: v1alpha3
|
|
schema:
|
|
openAPIV3Schema:
|
|
description: AzureCluster is the Schema for the azureclusters API
|
|
properties:
|
|
apiVersion:
|
|
description: 'APIVersion defines the versioned schema of this representation
|
|
of an object. Servers should convert recognized schemas to the latest
|
|
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
|
type: string
|
|
kind:
|
|
description: 'Kind is a string value representing the REST resource this
|
|
object represents. Servers may infer this from the endpoint the client
|
|
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
|
type: string
|
|
metadata:
|
|
type: object
|
|
spec:
|
|
description: AzureClusterSpec defines the desired state of AzureCluster
|
|
properties:
|
|
additionalTags:
|
|
additionalProperties:
|
|
type: string
|
|
description: AdditionalTags is an optional set of tags to add to Azure
|
|
resources managed by the Azure provider, in addition to the ones
|
|
added by default.
|
|
type: object
|
|
controlPlaneEndpoint:
|
|
description: ControlPlaneEndpoint represents the endpoint used to
|
|
communicate with the control plane.
|
|
properties:
|
|
host:
|
|
description: The hostname on which the API server is serving.
|
|
type: string
|
|
port:
|
|
description: The port on which the API server is serving.
|
|
format: int32
|
|
type: integer
|
|
required:
|
|
- host
|
|
- port
|
|
type: object
|
|
location:
|
|
type: string
|
|
networkSpec:
|
|
description: NetworkSpec encapsulates all things related to Azure
|
|
network.
|
|
properties:
|
|
subnets:
|
|
description: Subnets is the configuration for the control-plane
|
|
subnet and the node subnet.
|
|
items:
|
|
description: SubnetSpec configures an Azure subnet.
|
|
properties:
|
|
cidrBlock:
|
|
description: CidrBlock is the CIDR block to be used when
|
|
the provider creates a managed Vnet.
|
|
type: string
|
|
id:
|
|
description: ID defines a unique identifier to reference
|
|
this resource.
|
|
type: string
|
|
internalLBIPAddress:
|
|
description: InternalLBIPAddress is the IP address that
|
|
will be used as the internal LB private IP. For the control
|
|
plane subnet only.
|
|
type: string
|
|
name:
|
|
description: Name defines a name for the subnet resource.
|
|
type: string
|
|
role:
|
|
description: Role defines the subnet role (eg. Node, ControlPlane)
|
|
type: string
|
|
routeTable:
|
|
description: RouteTable defines the route table that should
|
|
be attached to this subnet.
|
|
properties:
|
|
id:
|
|
type: string
|
|
name:
|
|
type: string
|
|
type: object
|
|
securityGroup:
|
|
description: SecurityGroup defines the NSG (network security
|
|
group) that should be attached to this subnet.
|
|
properties:
|
|
id:
|
|
type: string
|
|
ingressRule:
|
|
description: IngressRules is a slice of Azure ingress
|
|
rules for security groups.
|
|
items:
|
|
description: IngressRule defines an Azure ingress
|
|
rule for security groups.
|
|
properties:
|
|
description:
|
|
type: string
|
|
destination:
|
|
description: Destination - The destination address
|
|
prefix. CIDR or destination IP range. Asterix
|
|
'*' can also be used to match all source IPs.
|
|
Default tags such as 'VirtualNetwork', 'AzureLoadBalancer'
|
|
and 'Internet' can also be used.
|
|
type: string
|
|
destinationPorts:
|
|
description: DestinationPorts - The destination
|
|
port or range. Integer or range between 0 and
|
|
65535. Asterix '*' can also be used to match
|
|
all ports.
|
|
type: string
|
|
name:
|
|
type: string
|
|
priority:
|
|
description: Priority - A number between 100 and
|
|
4096. Each rule should have a unique value for
|
|
priority. Rules are processed in priority order,
|
|
with lower numbers processed before higher numbers.
|
|
Once traffic matches a rule, processing stops.
|
|
format: int32
|
|
type: integer
|
|
protocol:
|
|
description: SecurityGroupProtocol defines the
|
|
protocol type for a security group rule.
|
|
type: string
|
|
source:
|
|
description: Source - The CIDR or source IP range.
|
|
Asterix '*' can also be used to match all source
|
|
IPs. Default tags such as 'VirtualNetwork',
|
|
'AzureLoadBalancer' and 'Internet' can also
|
|
be used. If this is an ingress rule, specifies
|
|
where network traffic originates from.
|
|
type: string
|
|
sourcePorts:
|
|
description: SourcePorts - The source port or
|
|
range. Integer or range between 0 and 65535.
|
|
Asterix '*' can also be used to match all ports.
|
|
type: string
|
|
required:
|
|
- description
|
|
- name
|
|
- protocol
|
|
type: object
|
|
type: array
|
|
name:
|
|
type: string
|
|
tags:
|
|
additionalProperties:
|
|
type: string
|
|
description: Tags defines a map of tags.
|
|
type: object
|
|
type: object
|
|
required:
|
|
- name
|
|
type: object
|
|
type: array
|
|
vnet:
|
|
description: Vnet is the configuration for the Azure virtual network.
|
|
properties:
|
|
cidrBlock:
|
|
description: CidrBlock is the CIDR block to be used when the
|
|
provider creates a managed virtual network.
|
|
type: string
|
|
id:
|
|
description: ID is the identifier of the virtual network this
|
|
provider should use to create resources.
|
|
type: string
|
|
name:
|
|
description: Name defines a name for the virtual network resource.
|
|
type: string
|
|
resourceGroup:
|
|
description: ResourceGroup is the name of the resource group
|
|
of the existing virtual network or the resource group where
|
|
a managed virtual network should be created.
|
|
type: string
|
|
tags:
|
|
additionalProperties:
|
|
type: string
|
|
description: Tags is a collection of tags describing the resource.
|
|
type: object
|
|
required:
|
|
- name
|
|
type: object
|
|
type: object
|
|
resourceGroup:
|
|
type: string
|
|
subscriptionID:
|
|
type: string
|
|
required:
|
|
- location
|
|
type: object
|
|
status:
|
|
description: AzureClusterStatus defines the observed state of AzureCluster
|
|
properties:
|
|
conditions:
|
|
description: Conditions defines current service state of the AzureCluster.
|
|
items:
|
|
description: Condition defines an observation of a Cluster API resource
|
|
operational state.
|
|
properties:
|
|
lastTransitionTime:
|
|
description: Last time the condition transitioned from one status
|
|
to another. This should be when the underlying condition changed.
|
|
If that is not known, then using the time when the API field
|
|
changed is acceptable.
|
|
format: date-time
|
|
type: string
|
|
message:
|
|
description: A human readable message indicating details about
|
|
the transition. This field may be empty.
|
|
type: string
|
|
reason:
|
|
description: The reason for the condition's last transition
|
|
in CamelCase. The specific API may choose whether or not this
|
|
field is considered a guaranteed API. This field may not be
|
|
empty.
|
|
type: string
|
|
severity:
|
|
description: Severity provides an explicit classification of
|
|
Reason code, so the users or machines can immediately understand
|
|
the current situation and act accordingly. The Severity field
|
|
MUST be set only when Status=False.
|
|
type: string
|
|
status:
|
|
description: Status of the condition, one of True, False, Unknown.
|
|
type: string
|
|
type:
|
|
description: Type of condition in CamelCase or in foo.example.com/CamelCase.
|
|
Many .condition.type values are consistent across resources
|
|
like Available, but because arbitrary conditions can be useful
|
|
(see .node.status.conditions), the ability to deconflict is
|
|
important.
|
|
type: string
|
|
required:
|
|
- status
|
|
- type
|
|
type: object
|
|
type: array
|
|
failureDomains:
|
|
additionalProperties:
|
|
description: FailureDomainSpec is the Schema for Cluster API failure
|
|
domains. It allows controllers to understand how many failure
|
|
domains a cluster can optionally span across.
|
|
properties:
|
|
attributes:
|
|
additionalProperties:
|
|
type: string
|
|
description: Attributes is a free form map of attributes an
|
|
infrastructure provider might use or require.
|
|
type: object
|
|
controlPlane:
|
|
description: ControlPlane determines if this failure domain
|
|
is suitable for use by control plane machines.
|
|
type: boolean
|
|
type: object
|
|
description: 'FailureDomains specifies the list of unique failure
|
|
domains for the location/region of the cluster. A FailureDomain
|
|
maps to Availability Zone with an Azure Region (if the region support
|
|
them). An Availability Zone is a separate data center within a region
|
|
and they can be used to ensure the cluster is more resilient to
|
|
failure. See: https://docs.microsoft.com/en-us/azure/availability-zones/az-overview
|
|
This list will be used by Cluster API to try and spread the machines
|
|
across the failure domains.'
|
|
type: object
|
|
network:
|
|
description: Network encapsulates the state of Azure networking resources.
|
|
properties:
|
|
apiServerIp:
|
|
description: APIServerIP is the Kubernetes API server public IP
|
|
address.
|
|
properties:
|
|
dnsName:
|
|
type: string
|
|
id:
|
|
type: string
|
|
ipAddress:
|
|
type: string
|
|
name:
|
|
type: string
|
|
type: object
|
|
apiServerLb:
|
|
description: APIServerLB is the Kubernetes API server load balancer.
|
|
properties:
|
|
backendPool:
|
|
description: BackendPool defines a load balancer backend pool
|
|
properties:
|
|
id:
|
|
type: string
|
|
name:
|
|
type: string
|
|
type: object
|
|
frontendIpConfig:
|
|
description: FrontendIPConfig - DO NOT USE this empty struct
|
|
is here to preserve backwards compatibility and should be
|
|
removed in v1alpha4
|
|
type: object
|
|
id:
|
|
type: string
|
|
name:
|
|
type: string
|
|
sku:
|
|
description: SKU defines an Azure load balancer SKU.
|
|
type: string
|
|
tags:
|
|
additionalProperties:
|
|
type: string
|
|
description: Tags defines a map of tags.
|
|
type: object
|
|
type: object
|
|
type: object
|
|
ready:
|
|
description: Ready is true when the provider resource is ready.
|
|
type: boolean
|
|
type: object
|
|
type: object
|
|
served: true
|
|
storage: true
|
|
subresources:
|
|
status: {}
|
|
status:
|
|
acceptedNames:
|
|
kind: ""
|
|
plural: ""
|
|
conditions: []
|
|
storedVersions: []
|