istio

package
v1.0.4 Latest Latest
Warning

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

Go to latest
Published: Jul 30, 2021 License: Apache-2.0 Imports: 30 Imported by: 1

Documentation

Index

Constants

View Source
const Type = "Istio"

Variables

This section is empty.

Functions

func GetHttpRoutesI added in v0.9.0

func GetHttpRoutesI(obj *unstructured.Unstructured) ([]interface{}, error)

func UnmarshalJson added in v1.0.2

func UnmarshalJson(input []byte, result interface{}) (map[string]interface{}, error)

func ValidateHTTPRoutes added in v0.9.0

func ValidateHTTPRoutes(r *v1alpha1.Rollout, httpRoutes []VirtualServiceHTTPRoute) error

validateHTTPRoutes ensures that all the routes in the rollout exist and they only have two destinations

Types

type DestinationRule added in v1.0.0

type DestinationRule struct {
	metav1.ObjectMeta `json:"metadata,omitempty"`
	Spec              DestinationRuleSpec `json:"spec,omitempty"`
}

DestinationRule is an Istio DestinationRule containing only the fields which we care about

type DestinationRuleSpec added in v1.0.0

type DestinationRuleSpec struct {
	Subsets []Subset `json:"subsets,omitempty"`
}

type IstioController added in v1.0.0

type IstioController struct {
	IstioControllerConfig
	VirtualServiceLister  dynamiclister.Lister
	DestinationRuleLister dynamiclister.Lister
	// contains filtered or unexported fields
}

func NewIstioController added in v1.0.0

func NewIstioController(cfg IstioControllerConfig) *IstioController

func (*IstioController) EnqueueDestinationRule added in v1.0.0

func (c *IstioController) EnqueueDestinationRule(obj interface{})

EnqueueDestinationRule examines a VirtualService, finds the Rollout referencing that VirtualService, and enqueues the corresponding Rollout for reconciliation

func (*IstioController) EnqueueRolloutFromIstioVirtualService added in v1.0.0

func (c *IstioController) EnqueueRolloutFromIstioVirtualService(vsvc interface{})

EnqueueRolloutFromIstioVirtualService examines a VirtualService, finds the Rollout referencing that VirtualService, and enqueues the corresponding Rollout for reconciliation

func (*IstioController) GetReferencedVirtualServices added in v1.0.0

func (c *IstioController) GetReferencedVirtualServices(ro *v1alpha1.Rollout) (*[]unstructured.Unstructured, error)

func (*IstioController) Run added in v1.0.0

func (c *IstioController) Run(stopCh <-chan struct{})

Run starts the Istio informers. If Istio is not installed, will periodically check for presence of Istio, then start informers once detected. This allows Argo Rollouts to be installed in any order during cluster bootstrapping.

type IstioControllerConfig added in v1.0.0

type IstioControllerConfig struct {
	ArgoprojClientSet       roclientset.Interface
	DynamicClientSet        dynamic.Interface
	EnqueueRollout          func(ro interface{})
	RolloutsInformer        informers.RolloutInformer
	VirtualServiceInformer  cache.SharedIndexInformer
	DestinationRuleInformer cache.SharedIndexInformer
}

type Reconciler

type Reconciler struct {
	// contains filtered or unexported fields
}

Reconciler holds required fields to reconcile Istio resources

func NewReconciler

func NewReconciler(r *v1alpha1.Rollout, client dynamic.Interface, recorder record.EventRecorder, virtualServiceLister, destinationRuleLister dynamiclister.Lister) *Reconciler

NewReconciler returns a reconciler struct that brings the Virtual Service into the desired state

func (*Reconciler) SetWeight added in v1.0.0

func (r *Reconciler) SetWeight(desiredWeight int32) error

SetWeight modifies Istio resources to reach desired state

func (*Reconciler) Type

func (r *Reconciler) Type() string

Type indicates this reconciler is an Istio reconciler

func (*Reconciler) UpdateHash added in v1.0.0

func (r *Reconciler) UpdateHash(canaryHash, stableHash string) error

func (*Reconciler) VerifyWeight added in v1.0.0

func (r *Reconciler) VerifyWeight(desiredWeight int32) (bool, error)

type Subset added in v1.0.0

type Subset struct {
	Name   string            `json:"name,omitempty"`
	Labels map[string]string `json:"labels,omitempty"`
	// TrafficPolicy *json.RawMessage  `json:"trafficPolicy,omitempty"`
	Extra map[string]interface{} `json:",omitempty"`
}

type VirtualService added in v1.0.0

type VirtualService struct {
	metav1.ObjectMeta `json:"metadata,omitempty"`
	Spec              VirtualServiceSpec `json:"spec,omitempty"`
}

VirtualService is an Istio VirtualService containing only the fields which we care about

type VirtualServiceDestination added in v1.0.0

type VirtualServiceDestination struct {
	Host   string `json:"host,omitempty"`
	Subset string `json:"subset,omitempty"`
}

Destination fields within the VirtualServiceDestination struct of the Virtual Service that the controller modifies

type VirtualServiceHTTPRoute added in v1.0.0

type VirtualServiceHTTPRoute struct {
	Name  string                               `json:"name,omitempty"`
	Route []VirtualServiceHTTPRouteDestination `json:"route,omitempty"`
}

VirtualServiceHTTPRoute is a route in a VirtualService

func GetHttpRoutes added in v0.9.0

func GetHttpRoutes(obj *unstructured.Unstructured, httpRoutesI []interface{}) ([]VirtualServiceHTTPRoute, error)

type VirtualServiceHTTPRouteDestination added in v1.0.0

type VirtualServiceHTTPRouteDestination struct {
	// Destination holds the destination struct of the virtual service
	Destination VirtualServiceDestination `json:"destination,omitempty"`
	// Weight holds the destination struct of the virtual service
	Weight int64 `json:"weight,omitempty"`
}

VirtualServiceHTTPRouteDestination is a destination within an VirtualServiceHTTPRoute

type VirtualServiceSpec added in v1.0.0

type VirtualServiceSpec struct {
	HTTP []VirtualServiceHTTPRoute `json:"http,omitempty"`
}

Jump to

Keyboard shortcuts

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