controllers

package
v0.8.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 26, 2022 License: Apache-2.0 Imports: 29 Imported by: 0

Documentation

Index

Constants

View Source
const CLOUDFLARE_ENDPOINT = "https://api.cloudflare.com/client/v4/"

CLOUDFLARE_ENDPOINT is the Cloudflare API base URL from https://api.cloudflare.com/#getting-started-endpoints.

View Source
const TXT_PREFIX = "_managed."

TXT_PREFIX is the prefix added to TXT records for whom the corresponding DNS records are managed by the operator.

Variables

This section is empty.

Functions

This section is empty.

Types

type CloudflareAPI

type CloudflareAPI struct {
	Log             logr.Logger
	TunnelName      string
	TunnelId        string
	AccountName     string
	AccountId       string
	Domain          string
	APIToken        string
	APIKey          string
	APIEmail        string
	ValidAccountId  string
	ValidTunnelId   string
	ValidTunnelName string
	ValidZoneId     string
}

CloudflareAPI config object holding all relevant fields to use the API

func (*CloudflareAPI) CreateCloudflareTunnel

func (c *CloudflareAPI) CreateCloudflareTunnel() (string, string, error)

CreateCloudflareTunnel creates a Cloudflare Tunnel and returns the tunnel Id and credentials file

func (*CloudflareAPI) DeleteCloudflareTunnel

func (c *CloudflareAPI) DeleteCloudflareTunnel() error

DeleteCloudflareTunnel deletes a Cloudflare Tunnel

func (*CloudflareAPI) DeleteDNSId added in v0.7.0

func (c *CloudflareAPI) DeleteDNSId(fqdn, dnsId string) error

DeleteDNSId deletes DNS entry for the given dnsId

func (*CloudflareAPI) GetAccountId

func (c *CloudflareAPI) GetAccountId() (string, error)

GetAccountId gets AccountId from Account Name

func (*CloudflareAPI) GetDNSCNameId added in v0.7.0

func (c *CloudflareAPI) GetDNSCNameId(fqdn string) (string, error)

GetDNSCNameId returns the ID of the CNAME record requested

func (*CloudflareAPI) GetManagedDnsTxt added in v0.7.0

func (c *CloudflareAPI) GetManagedDnsTxt(fqdn string) (string, DnsManagedRecordTxt, bool, error)

GetManagedDnsTxt gets the TXT record corresponding to the fqdn

func (*CloudflareAPI) GetTunnelCreds

func (c *CloudflareAPI) GetTunnelCreds(tunnelSecret string) (string, error)

GetTunnelCreds gets Tunnel Credentials from Tunnel secret

func (*CloudflareAPI) GetTunnelId

func (c *CloudflareAPI) GetTunnelId() (string, error)

GetTunnelId gets Tunnel Id from available information

func (*CloudflareAPI) GetZoneId

func (c *CloudflareAPI) GetZoneId() (string, error)

GetZoneId gets Zone Id from DNS domain

func (*CloudflareAPI) InsertOrUpdateCName

func (c *CloudflareAPI) InsertOrUpdateCName(fqdn, dnsId string) (string, error)

InsertOrUpdateCName upsert DNS CNAME record for the given FQDN to point to the tunnel

func (*CloudflareAPI) InsertOrUpdateTXT added in v0.7.0

func (c *CloudflareAPI) InsertOrUpdateTXT(fqdn, txtId, dnsId string) error

InsertOrUpdateTXT upsert DNS TXT record for the given FQDN to point to the tunnel

func (*CloudflareAPI) ValidateAll

func (c *CloudflareAPI) ValidateAll() error

ValidateAll validates the contents of the CloudflareAPI struct

type CloudflareAPIMultiResponse

type CloudflareAPIMultiResponse struct {
	Result []struct {
		Id      string
		Name    string
		Content string
	}
	Errors []struct {
		Message string
	}
	Success bool
}

CloudflareAPIMultiResponse object containing a slice of Results with a Name and Id field

type CloudflareAPIResponse

type CloudflareAPIResponse struct {
	Result struct {
		Id              string
		Name            string
		CredentialsFile map[string]string `json:"credentials_file"`
	}
	Success bool
	Errors  []struct {
		Message string
	}
}

CloudflareAPIResponse object containing Result with a Name and Id field (includes an optional CredentialsFile for Tunnel responses)

type CloudflareAPITunnelCreate

type CloudflareAPITunnelCreate struct {
	Name         string
	TunnelSecret string `json:"tunnel_secret"`
}

CloudflareAPITunnelCreate object containing Cloudflare API Input for creating a Tunnel

type ClusterTunnelReconciler added in v0.3.0

type ClusterTunnelReconciler struct {
	client.Client
	Scheme    *runtime.Scheme
	Namespace string
	Recorder  record.EventRecorder
	// contains filtered or unexported fields
}

ClusterTunnelReconciler reconciles a ClusterTunnel object

func (*ClusterTunnelReconciler) Reconcile added in v0.3.0

func (r *ClusterTunnelReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error)

Reconcile is part of the main kubernetes reconciliation loop which aims to move the current state of the cluster closer to the desired state. TODO(user): Modify the Reconcile function to compare the state specified by the ClusterTunnel object against the actual cluster state, and then perform operations to make the cluster state reflect the state specified by the user.

For more details, check Reconcile and its Result here: - https://pkg.go.dev/sigs.k8s.io/controller-runtime@v0.10.0/pkg/reconcile

func (*ClusterTunnelReconciler) SetupWithManager added in v0.3.0

func (r *ClusterTunnelReconciler) SetupWithManager(mgr ctrl.Manager) error

SetupWithManager sets up the controller with the Manager.

type Configuration

type Configuration struct {
	TunnelId      string                   `yaml:"tunnel"`
	Ingress       []UnvalidatedIngressRule `yaml:"ingress,omitempty"`
	WarpRouting   WarpRoutingConfig        `yaml:"warp-routing,omitempty"`
	OriginRequest OriginRequestConfig      `yaml:"originRequest,omitempty"`
	SourceFile    string                   `yaml:"credentials-file"`
	Metrics       string                   `yaml:"metrics,omitempty"`
	NoAutoUpdate  bool                     `yaml:"no-autoupdate,omitempty"`
}

Configuration is a cloudflared configuration yaml model

type DnsManagedRecordTxt added in v0.7.0

type DnsManagedRecordTxt struct {
	DnsId      string // DnsId of the managed record
	TunnelName string // TunnelName of the managed record
	TunnelId   string // TunnelId of the managed record
}

DnsManagedRecordTxt object that represents each managed DNS record in a separate TXT record

type IngressIPRule

type IngressIPRule struct {
	Prefix *string `yaml:"prefix,omitempty"`
	Ports  []int   `yaml:"ports,omitempty"`
	Allow  bool    `yaml:"allow,omitempty"`
}

IngressIPRule is a cloudflared origin ingress IP rule config model

type OriginRequestConfig

type OriginRequestConfig struct {
	// HTTP proxy timeout for establishing a new connection
	ConnectTimeout *time.Duration `yaml:"connectTimeout,omitempty"`
	// HTTP proxy timeout for completing a TLS handshake
	TLSTimeout *time.Duration `yaml:"tlsTimeout,omitempty"`
	// HTTP proxy TCP keepalive duration
	TCPKeepAlive *time.Duration `yaml:"tcpKeepAlive,omitempty"`
	// HTTP proxy should disable "happy eyeballs" for IPv4/v6 fallback
	NoHappyEyeballs *bool `yaml:"noHappyEyeballs,omitempty"`
	// HTTP proxy maximum keepalive connection pool size
	KeepAliveConnections *int `yaml:"keepAliveConnections,omitempty"`
	// HTTP proxy timeout for closing an idle connection
	KeepAliveTimeout *time.Duration `yaml:"keepAliveTimeout,omitempty"`
	// Sets the HTTP Host header for the local webserver.
	HTTPHostHeader *string `yaml:"httpHostHeader,omitempty"`
	// Hostname on the origin server certificate.
	OriginServerName *string `yaml:"originServerName,omitempty"`
	// Path to the CA for the certificate of your origin.
	// This option should be used only if your certificate is not signed by Cloudflare.
	CAPool *string `yaml:"caPool,omitempty"`
	// Disables TLS verification of the certificate presented by your origin.
	// Will allow any certificate from the origin to be accepted.
	// Note: The connection from your machine to Cloudflare's Edge is still encrypted.
	NoTLSVerify *bool `yaml:"noTLSVerify,omitempty"`
	// Disables chunked transfer encoding.
	// Useful if you are running a WSGI server.
	DisableChunkedEncoding *bool `yaml:"disableChunkedEncoding,omitempty"`
	// Runs as jump host
	BastionMode *bool `yaml:"bastionMode,omitempty"`
	// Listen address for the proxy.
	ProxyAddress *string `yaml:"proxyAddress,omitempty"`
	// Listen port for the proxy.
	ProxyPort *uint `yaml:"proxyPort,omitempty"`
	// Valid options are 'socks' or empty.
	ProxyType *string `yaml:"proxyType,omitempty"`
	// IP rules for the proxy service
	IPRules []IngressIPRule `yaml:"ipRules,omitempty"`
}

OriginRequestConfig is a cloudflared origin request configuration model

type ServiceReconciler

type ServiceReconciler struct {
	client.Client
	Scheme             *runtime.Scheme
	Recorder           record.EventRecorder
	Namespace          string
	OverwriteUnmanaged bool
	// contains filtered or unexported fields
}

ServiceReconciler reconciles a Service object

func (*ServiceReconciler) Reconcile

func (r *ServiceReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error)

Reconcile is part of the main kubernetes reconciliation loop which aims to move the current state of the cluster closer to the desired state.

For more details, check Reconcile and its Result here: - https://pkg.go.dev/sigs.k8s.io/controller-runtime@v0.10.0/pkg/reconcile

func (*ServiceReconciler) SetupWithManager

func (r *ServiceReconciler) SetupWithManager(mgr ctrl.Manager) error

SetupWithManager sets up the controller with the Manager.

type TunnelReconciler

type TunnelReconciler struct {
	client.Client
	Scheme   *runtime.Scheme
	Recorder record.EventRecorder
	// contains filtered or unexported fields
}

TunnelReconciler reconciles a Tunnel object

func (*TunnelReconciler) Reconcile

func (r *TunnelReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error)

Reconcile is part of the main kubernetes reconciliation loop which aims to move the current state of the cluster closer to the desired state.

For more details, check Reconcile and its Result here: - https://pkg.go.dev/sigs.k8s.io/controller-runtime@v0.10.0/pkg/reconcile

func (*TunnelReconciler) SetupWithManager

func (r *TunnelReconciler) SetupWithManager(mgr ctrl.Manager) error

SetupWithManager sets up the controller with the Manager.

type UnvalidatedIngressRule

type UnvalidatedIngressRule struct {
	Hostname      string `yaml:"hostname,omitempty"`
	Path          string `yaml:"path,omitempty"`
	Service       string
	OriginRequest OriginRequestConfig `yaml:"originRequest,omitempty"`
}

UnvalidatedIngressRule is a cloudflared ingress entry model

type WarpRoutingConfig

type WarpRoutingConfig struct {
	Enabled bool `yaml:"enabled,omitempty"`
}

WarpRoutingConfig is a cloudflared warp routing model

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL