Documentation
¶
Overview ¶
package v1beta2 contains API Schema definitions for the controlplane v1beta2 API group +kubebuilder:object:generate=true +groupName=controlplane.cluster.x-k8s.io
Index ¶
- Variables
- type AWSRolesRef
- type ROSAControlPlane
- func (in *ROSAControlPlane) DeepCopy() *ROSAControlPlane
- func (in *ROSAControlPlane) DeepCopyInto(out *ROSAControlPlane)
- func (in *ROSAControlPlane) DeepCopyObject() runtime.Object
- func (r *ROSAControlPlane) GetConditions() clusterv1.Conditions
- func (r *ROSAControlPlane) SetConditions(conditions clusterv1.Conditions)
- type ROSAControlPlaneList
- type RosaControlPlaneSpec
- type RosaControlPlaneStatus
Constants ¶
This section is empty.
Variables ¶
var ( // GroupVersion is group version used to register these objects. GroupVersion = schema.GroupVersion{Group: "controlplane.cluster.x-k8s.io", Version: "v1beta2"} // SchemeBuilder is used to add go types to the GroupVersionKind scheme. SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion} // AddToScheme adds the types in this group-version to the given scheme. AddToScheme = SchemeBuilder.AddToScheme )
Functions ¶
This section is empty.
Types ¶
type AWSRolesRef ¶
type AWSRolesRef struct {
// The referenced role must have a trust relationship that allows it to be assumed via web identity.
// https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_oidc.html.
// Example:
// {
// "Version": "2012-10-17",
// "Statement": [
// {
// "Effect": "Allow",
// "Principal": {
// "Federated": "{{ .ProviderARN }}"
// },
// "Action": "sts:AssumeRoleWithWebIdentity",
// "Condition": {
// "StringEquals": {
// "{{ .ProviderName }}:sub": {{ .ServiceAccounts }}
// }
// }
// }
// ]
// }
//
// IngressARN is an ARN value referencing a role appropriate for the Ingress Operator.
//
// The following is an example of a valid policy document:
//
// {
// "Version": "2012-10-17",
// "Statement": [
// {
// "Effect": "Allow",
// "Action": [
// "elasticloadbalancing:DescribeLoadBalancers",
// "tag:GetResources",
// "route53:ListHostedZones"
// ],
// "Resource": "*"
// },
// {
// "Effect": "Allow",
// "Action": [
// "route53:ChangeResourceRecordSets"
// ],
// "Resource": [
// "arn:aws:route53:::PUBLIC_ZONE_ID",
// "arn:aws:route53:::PRIVATE_ZONE_ID"
// ]
// }
// ]
// }
IngressARN string `json:"ingressARN"`
// ImageRegistryARN is an ARN value referencing a role appropriate for the Image Registry Operator.
//
// The following is an example of a valid policy document:
//
// {
// "Version": "2012-10-17",
// "Statement": [
// {
// "Effect": "Allow",
// "Action": [
// "s3:CreateBucket",
// "s3:DeleteBucket",
// "s3:PutBucketTagging",
// "s3:GetBucketTagging",
// "s3:PutBucketPublicAccessBlock",
// "s3:GetBucketPublicAccessBlock",
// "s3:PutEncryptionConfiguration",
// "s3:GetEncryptionConfiguration",
// "s3:PutLifecycleConfiguration",
// "s3:GetLifecycleConfiguration",
// "s3:GetBucketLocation",
// "s3:ListBucket",
// "s3:GetObject",
// "s3:PutObject",
// "s3:DeleteObject",
// "s3:ListBucketMultipartUploads",
// "s3:AbortMultipartUpload",
// "s3:ListMultipartUploadParts"
// ],
// "Resource": "*"
// }
// ]
// }
ImageRegistryARN string `json:"imageRegistryARN"`
// StorageARN is an ARN value referencing a role appropriate for the Storage Operator.
//
// The following is an example of a valid policy document:
//
// {
// "Version": "2012-10-17",
// "Statement": [
// {
// "Effect": "Allow",
// "Action": [
// "ec2:AttachVolume",
// "ec2:CreateSnapshot",
// "ec2:CreateTags",
// "ec2:CreateVolume",
// "ec2:DeleteSnapshot",
// "ec2:DeleteTags",
// "ec2:DeleteVolume",
// "ec2:DescribeInstances",
// "ec2:DescribeSnapshots",
// "ec2:DescribeTags",
// "ec2:DescribeVolumes",
// "ec2:DescribeVolumesModifications",
// "ec2:DetachVolume",
// "ec2:ModifyVolume"
// ],
// "Resource": "*"
// }
// ]
// }
StorageARN string `json:"storageARN"`
// NetworkARN is an ARN value referencing a role appropriate for the Network Operator.
//
// The following is an example of a valid policy document:
//
// {
// "Version": "2012-10-17",
// "Statement": [
// {
// "Effect": "Allow",
// "Action": [
// "ec2:DescribeInstances",
// "ec2:DescribeInstanceStatus",
// "ec2:DescribeInstanceTypes",
// "ec2:UnassignPrivateIpAddresses",
// "ec2:AssignPrivateIpAddresses",
// "ec2:UnassignIpv6Addresses",
// "ec2:AssignIpv6Addresses",
// "ec2:DescribeSubnets",
// "ec2:DescribeNetworkInterfaces"
// ],
// "Resource": "*"
// }
// ]
// }
NetworkARN string `json:"networkARN"`
// KubeCloudControllerARN is an ARN value referencing a role appropriate for the KCM/KCC.
// Source: https://cloud-provider-aws.sigs.k8s.io/prerequisites/#iam-policies
//
// The following is an example of a valid policy document:
//
// {
// "Version": "2012-10-17",
// "Statement": [
// {
// "Action": [
// "autoscaling:DescribeAutoScalingGroups",
// "autoscaling:DescribeLaunchConfigurations",
// "autoscaling:DescribeTags",
// "ec2:DescribeAvailabilityZones",
// "ec2:DescribeInstances",
// "ec2:DescribeImages",
// "ec2:DescribeRegions",
// "ec2:DescribeRouteTables",
// "ec2:DescribeSecurityGroups",
// "ec2:DescribeSubnets",
// "ec2:DescribeVolumes",
// "ec2:CreateSecurityGroup",
// "ec2:CreateTags",
// "ec2:CreateVolume",
// "ec2:ModifyInstanceAttribute",
// "ec2:ModifyVolume",
// "ec2:AttachVolume",
// "ec2:AuthorizeSecurityGroupIngress",
// "ec2:CreateRoute",
// "ec2:DeleteRoute",
// "ec2:DeleteSecurityGroup",
// "ec2:DeleteVolume",
// "ec2:DetachVolume",
// "ec2:RevokeSecurityGroupIngress",
// "ec2:DescribeVpcs",
// "elasticloadbalancing:AddTags",
// "elasticloadbalancing:AttachLoadBalancerToSubnets",
// "elasticloadbalancing:ApplySecurityGroupsToLoadBalancer",
// "elasticloadbalancing:CreateLoadBalancer",
// "elasticloadbalancing:CreateLoadBalancerPolicy",
// "elasticloadbalancing:CreateLoadBalancerListeners",
// "elasticloadbalancing:ConfigureHealthCheck",
// "elasticloadbalancing:DeleteLoadBalancer",
// "elasticloadbalancing:DeleteLoadBalancerListeners",
// "elasticloadbalancing:DescribeLoadBalancers",
// "elasticloadbalancing:DescribeLoadBalancerAttributes",
// "elasticloadbalancing:DetachLoadBalancerFromSubnets",
// "elasticloadbalancing:DeregisterInstancesFromLoadBalancer",
// "elasticloadbalancing:ModifyLoadBalancerAttributes",
// "elasticloadbalancing:RegisterInstancesWithLoadBalancer",
// "elasticloadbalancing:SetLoadBalancerPoliciesForBackendServer",
// "elasticloadbalancing:AddTags",
// "elasticloadbalancing:CreateListener",
// "elasticloadbalancing:CreateTargetGroup",
// "elasticloadbalancing:DeleteListener",
// "elasticloadbalancing:DeleteTargetGroup",
// "elasticloadbalancing:DeregisterTargets",
// "elasticloadbalancing:DescribeListeners",
// "elasticloadbalancing:DescribeLoadBalancerPolicies",
// "elasticloadbalancing:DescribeTargetGroups",
// "elasticloadbalancing:DescribeTargetHealth",
// "elasticloadbalancing:ModifyListener",
// "elasticloadbalancing:ModifyTargetGroup",
// "elasticloadbalancing:RegisterTargets",
// "elasticloadbalancing:SetLoadBalancerPoliciesOfListener",
// "iam:CreateServiceLinkedRole",
// "kms:DescribeKey"
// ],
// "Resource": [
// "*"
// ],
// "Effect": "Allow"
// }
// ]
// }
// +immutable
KubeCloudControllerARN string `json:"kubeCloudControllerARN"`
// NodePoolManagementARN is an ARN value referencing a role appropriate for the CAPI Controller.
//
// The following is an example of a valid policy document:
//
// {
// "Version": "2012-10-17",
// "Statement": [
// {
// "Action": [
// "ec2:AssociateRouteTable",
// "ec2:AttachInternetGateway",
// "ec2:AuthorizeSecurityGroupIngress",
// "ec2:CreateInternetGateway",
// "ec2:CreateNatGateway",
// "ec2:CreateRoute",
// "ec2:CreateRouteTable",
// "ec2:CreateSecurityGroup",
// "ec2:CreateSubnet",
// "ec2:CreateTags",
// "ec2:DeleteInternetGateway",
// "ec2:DeleteNatGateway",
// "ec2:DeleteRouteTable",
// "ec2:DeleteSecurityGroup",
// "ec2:DeleteSubnet",
// "ec2:DeleteTags",
// "ec2:DescribeAccountAttributes",
// "ec2:DescribeAddresses",
// "ec2:DescribeAvailabilityZones",
// "ec2:DescribeImages",
// "ec2:DescribeInstances",
// "ec2:DescribeInternetGateways",
// "ec2:DescribeNatGateways",
// "ec2:DescribeNetworkInterfaces",
// "ec2:DescribeNetworkInterfaceAttribute",
// "ec2:DescribeRouteTables",
// "ec2:DescribeSecurityGroups",
// "ec2:DescribeSubnets",
// "ec2:DescribeVpcs",
// "ec2:DescribeVpcAttribute",
// "ec2:DescribeVolumes",
// "ec2:DetachInternetGateway",
// "ec2:DisassociateRouteTable",
// "ec2:DisassociateAddress",
// "ec2:ModifyInstanceAttribute",
// "ec2:ModifyNetworkInterfaceAttribute",
// "ec2:ModifySubnetAttribute",
// "ec2:RevokeSecurityGroupIngress",
// "ec2:RunInstances",
// "ec2:TerminateInstances",
// "tag:GetResources",
// "ec2:CreateLaunchTemplate",
// "ec2:CreateLaunchTemplateVersion",
// "ec2:DescribeLaunchTemplates",
// "ec2:DescribeLaunchTemplateVersions",
// "ec2:DeleteLaunchTemplate",
// "ec2:DeleteLaunchTemplateVersions"
// ],
// "Resource": [
// "*"
// ],
// "Effect": "Allow"
// },
// {
// "Condition": {
// "StringLike": {
// "iam:AWSServiceName": "elasticloadbalancing.amazonaws.com"
// }
// },
// "Action": [
// "iam:CreateServiceLinkedRole"
// ],
// "Resource": [
// "arn:*:iam::*:role/aws-service-role/elasticloadbalancing.amazonaws.com/AWSServiceRoleForElasticLoadBalancing"
// ],
// "Effect": "Allow"
// },
// {
// "Action": [
// "iam:PassRole"
// ],
// "Resource": [
// "arn:*:iam::*:role/*-worker-role"
// ],
// "Effect": "Allow"
// },
// {
// "Effect": "Allow",
// "Action": [
// "kms:Decrypt",
// "kms:ReEncrypt",
// "kms:GenerateDataKeyWithoutPlainText",
// "kms:DescribeKey"
// ],
// "Resource": "*"
// },
// {
// "Effect": "Allow",
// "Action": [
// "kms:CreateGrant"
// ],
// "Resource": "*",
// "Condition": {
// "Bool": {
// "kms:GrantIsForAWSResource": true
// }
// }
// }
// ]
// }
//
// +immutable
NodePoolManagementARN string `json:"nodePoolManagementARN"`
// ControlPlaneOperatorARN is an ARN value referencing a role appropriate for the Control Plane Operator.
//
// The following is an example of a valid policy document:
//
// {
// "Version": "2012-10-17",
// "Statement": [
// {
// "Effect": "Allow",
// "Action": [
// "ec2:CreateVpcEndpoint",
// "ec2:DescribeVpcEndpoints",
// "ec2:ModifyVpcEndpoint",
// "ec2:DeleteVpcEndpoints",
// "ec2:CreateTags",
// "route53:ListHostedZones",
// "ec2:CreateSecurityGroup",
// "ec2:AuthorizeSecurityGroupIngress",
// "ec2:AuthorizeSecurityGroupEgress",
// "ec2:DeleteSecurityGroup",
// "ec2:RevokeSecurityGroupIngress",
// "ec2:RevokeSecurityGroupEgress",
// "ec2:DescribeSecurityGroups",
// "ec2:DescribeVpcs",
// ],
// "Resource": "*"
// },
// {
// "Effect": "Allow",
// "Action": [
// "route53:ChangeResourceRecordSets",
// "route53:ListResourceRecordSets"
// ],
// "Resource": "arn:aws:route53:::%s"
// }
// ]
// }
// +immutable
ControlPlaneOperatorARN string `json:"controlPlaneOperatorARN"`
KMSProviderARN string `json:"kmsProviderARN"`
}
AWSRolesRef contains references to various AWS IAM roles required for operators to make calls against the AWS API.
func (*AWSRolesRef) DeepCopy ¶
func (in *AWSRolesRef) DeepCopy() *AWSRolesRef
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSRolesRef.
func (*AWSRolesRef) DeepCopyInto ¶
func (in *AWSRolesRef) DeepCopyInto(out *AWSRolesRef)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ROSAControlPlane ¶
type ROSAControlPlane struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec RosaControlPlaneSpec `json:"spec,omitempty"`
Status RosaControlPlaneStatus `json:"status,omitempty"`
}
func (*ROSAControlPlane) DeepCopy ¶
func (in *ROSAControlPlane) DeepCopy() *ROSAControlPlane
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ROSAControlPlane.
func (*ROSAControlPlane) DeepCopyInto ¶
func (in *ROSAControlPlane) DeepCopyInto(out *ROSAControlPlane)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ROSAControlPlane) DeepCopyObject ¶
func (in *ROSAControlPlane) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*ROSAControlPlane) GetConditions ¶
func (r *ROSAControlPlane) GetConditions() clusterv1.Conditions
GetConditions returns the control planes conditions.
func (*ROSAControlPlane) SetConditions ¶
func (r *ROSAControlPlane) SetConditions(conditions clusterv1.Conditions)
SetConditions sets the status conditions for the AWSManagedControlPlane.
type ROSAControlPlaneList ¶
type ROSAControlPlaneList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []ROSAControlPlane `json:"items"`
}
func (*ROSAControlPlaneList) DeepCopy ¶
func (in *ROSAControlPlaneList) DeepCopy() *ROSAControlPlaneList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ROSAControlPlaneList.
func (*ROSAControlPlaneList) DeepCopyInto ¶
func (in *ROSAControlPlaneList) DeepCopyInto(out *ROSAControlPlaneList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ROSAControlPlaneList) DeepCopyObject ¶
func (in *ROSAControlPlaneList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type RosaControlPlaneSpec ¶
type RosaControlPlaneSpec struct {
// The Subnet IDs to use when installing the cluster.
// SubnetIDs should come in pairs; two per availability zone, one private and one public.
Subnets []string `json:"subnets"`
// AWS AvailabilityZones of the worker nodes
// should match the AvailabilityZones of the Subnets.
AvailabilityZones []string `json:"availabilityZones"`
// Block of IP addresses used by OpenShift while installing the cluster, for example "10.0.0.0/16".
MachineCIDR *string `json:"machineCIDR"`
// The AWS Region the cluster lives in.
Region *string `json:"region"`
// Openshift version, for example "openshift-v4.12.15".
Version *string `json:"version"`
// ControlPlaneEndpoint represents the endpoint used to communicate with the control plane.
// +optional
ControlPlaneEndpoint clusterv1.APIEndpoint `json:"controlPlaneEndpoint"`
// AWS IAM roles used to perform credential requests by the openshift operators.
RolesRef AWSRolesRef `json:"rolesRef"`
// The ID of the OpenID Connect Provider.
OIDCID *string `json:"oidcID"`
// TODO: these are to satisfy ocm sdk. Explore how to drop them.
AccountID *string `json:"accountID"`
CreatorARN *string `json:"creatorARN"`
InstallerRoleARN *string `json:"installerRoleARN"`
SupportRoleARN *string `json:"supportRoleARN"`
}
func (*RosaControlPlaneSpec) DeepCopy ¶
func (in *RosaControlPlaneSpec) DeepCopy() *RosaControlPlaneSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RosaControlPlaneSpec.
func (*RosaControlPlaneSpec) DeepCopyInto ¶
func (in *RosaControlPlaneSpec) DeepCopyInto(out *RosaControlPlaneSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type RosaControlPlaneStatus ¶
type RosaControlPlaneStatus struct {
// ExternalManagedControlPlane indicates to cluster-api that the control plane
// is managed by an external service such as AKS, EKS, GKE, etc.
// +kubebuilder:default=true
ExternalManagedControlPlane *bool `json:"externalManagedControlPlane,omitempty"`
// Initialized denotes whether or not the control plane has the
// uploaded kubernetes config-map.
// +optional
Initialized bool `json:"initialized"`
// Ready denotes that the AWSManagedControlPlane API Server is ready to
// receive requests and that the VPC infra is ready.
// +kubebuilder:default=false
Ready bool `json:"ready"`
// ErrorMessage indicates that there is a terminal problem reconciling the
// state, and will be set to a descriptive error message.
// +optional
FailureMessage *string `json:"failureMessage,omitempty"`
// Conditions specifies the cpnditions for the managed control plane
Conditions clusterv1.Conditions `json:"conditions,omitempty"`
}
func (*RosaControlPlaneStatus) DeepCopy ¶
func (in *RosaControlPlaneStatus) DeepCopy() *RosaControlPlaneStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RosaControlPlaneStatus.
func (*RosaControlPlaneStatus) DeepCopyInto ¶
func (in *RosaControlPlaneStatus) DeepCopyInto(out *RosaControlPlaneStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.