github.com/rancher/types@v0.0.0-20220328215343-4370ff10ecd5/apis/management.cattle.io/v3/globaldns_types.go (about)

     1  package v3
     2  
     3  import (
     4  	"github.com/rancher/norman/types"
     5  	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     6  )
     7  
     8  type GlobalDNS struct {
     9  	types.Namespaced
    10  
    11  	metav1.TypeMeta `json:",inline"`
    12  	// Standard object’s metadata. More info:
    13  	// https://github.com/kubernetes/community/blob/master/contributors/devel/api-conventions.md#metadata
    14  	metav1.ObjectMeta `json:"metadata,omitempty"`
    15  
    16  	Spec   GlobalDNSSpec   `json:"spec,omitempty"`
    17  	Status GlobalDNSStatus `json:"status,omitempty"`
    18  }
    19  
    20  type GlobalDNSSpec struct {
    21  	FQDN                string   `json:"fqdn,omitempty" norman:"type=hostname,required"`
    22  	TTL                 int64    `json:"ttl,omitempty" norman:"default=300"`
    23  	ProjectNames        []string `json:"projectNames" norman:"type=array[reference[project]],noupdate"`
    24  	MultiClusterAppName string   `json:"multiClusterAppName,omitempty" norman:"type=reference[multiClusterApp]"`
    25  	ProviderName        string   `json:"providerName,omitempty" norman:"type=reference[globalDnsProvider],required"`
    26  	Members             []Member `json:"members,omitempty"`
    27  }
    28  
    29  type GlobalDNSStatus struct {
    30  	Endpoints        []string            `json:"endpoints,omitempty"`
    31  	ClusterEndpoints map[string][]string `json:"clusterEndpoints,omitempty"`
    32  }
    33  
    34  type GlobalDNSProvider struct {
    35  	types.Namespaced
    36  
    37  	metav1.TypeMeta `json:",inline"`
    38  	// Standard object’s metadata. More info:
    39  	// https://github.com/kubernetes/community/blob/master/contributors/devel/api-conventions.md#metadata
    40  	//ObjectMeta.Name = GlobalDNSProviderID
    41  	metav1.ObjectMeta `json:"metadata,omitempty"`
    42  
    43  	Spec GlobalDNSProviderSpec `json:"spec,omitempty"`
    44  }
    45  
    46  type GlobalDNSProviderSpec struct {
    47  	Route53ProviderConfig    *Route53ProviderConfig    `json:"route53ProviderConfig,omitempty"`
    48  	CloudflareProviderConfig *CloudflareProviderConfig `json:"cloudflareProviderConfig,omitempty"`
    49  	AlidnsProviderConfig     *AlidnsProviderConfig     `json:"alidnsProviderConfig,omitempty"`
    50  	Members                  []Member                  `json:"members,omitempty"`
    51  	RootDomain               string                    `json:"rootDomain"`
    52  }
    53  
    54  type Route53ProviderConfig struct {
    55  	AccessKey         string            `json:"accessKey" norman:"notnullable,required,minLength=1"`
    56  	SecretKey         string            `json:"secretKey" norman:"notnullable,required,minLength=1,type=password"`
    57  	CredentialsPath   string            `json:"credentialsPath" norman:"default=/.aws"`
    58  	RoleArn           string            `json:"roleArn,omitempty"`
    59  	Region            string            `json:"region" norman:"default=us-east-1"`
    60  	ZoneType          string            `json:"zoneType" norman:"default=public"`
    61  	AdditionalOptions map[string]string `json:"additionalOptions,omitempty"`
    62  }
    63  
    64  type CloudflareProviderConfig struct {
    65  	APIKey            string            `json:"apiKey" norman:"notnullable,required,minLength=1,type=password"`
    66  	APIEmail          string            `json:"apiEmail" norman:"notnullable,required,minLength=1"`
    67  	ProxySetting      *bool             `json:"proxySetting" norman:"default=true"`
    68  	AdditionalOptions map[string]string `json:"additionalOptions,omitempty"`
    69  }
    70  
    71  type UpdateGlobalDNSTargetsInput struct {
    72  	ProjectNames []string `json:"projectNames" norman:"type=array[reference[project]]"`
    73  }
    74  
    75  type AlidnsProviderConfig struct {
    76  	AccessKey         string            `json:"accessKey" norman:"notnullable,required,minLength=1"`
    77  	SecretKey         string            `json:"secretKey" norman:"notnullable,required,minLength=1,type=password"`
    78  	AdditionalOptions map[string]string `json:"additionalOptions,omitempty"`
    79  }