Documentation ¶
Index ¶
- Constants
- func GetPodCondition(pod *corev1.Pod, conditionType corev1.PodConditionType) *corev1.PodCondition
- func HasFinalizer(obj metav1.Object, finalizer string) bool
- func NamespaceKeyIndexFunc() cache.IndexFunc
- func NamespacedName(obj metav1.Object) types.NamespacedName
- func ServerVersion(client discovery.ServerVersionInterface) string
- func UpdatePodCondition(pod *corev1.Pod, conditionType corev1.PodConditionType, ...) bool
- type Controller
- type Converter
- type CustomController
- type EventType
- type FinalizerManager
- type GenericEvent
- type NotificationChannel
- type PodsRepository
Constants ¶
const ( FinalizerMeshMembers = "finalizers.appmesh.k8s.aws/mesh-members" FinalizerVirtualGatewayMembers = "finalizers.appmesh.k8s.aws/virtualgateway-members" FinalizerAWSAppMeshResources = "finalizers.appmesh.k8s.aws/aws-appmesh-resources" FinalizerAWSCloudMapResources = "finalizers.appmesh.k8s.aws/aws-cloudmap-resources" )
const (
ConditionAWSCloudMapHealthy = "conditions.appmesh.k8s.aws/aws-cloudmap-healthy"
)
const (
//NamespaceIndexKey to index objects in datastore
NamespaceIndexKey = "namespace"
)
Variables ¶
This section is empty.
Functions ¶
func GetPodCondition ¶
func GetPodCondition(pod *corev1.Pod, conditionType corev1.PodConditionType) *corev1.PodCondition
GetPodCondition will get pointer to Pod's existing condition.
func HasFinalizer ¶
HasFinalizer tests whether k8s object has specified finalizer
func NamespaceKeyIndexFunc ¶ added in v1.3.0
NamespaceKeyIndexFunc returns indexers to index objects in datastore using namespace
func NamespacedName ¶
func NamespacedName(obj metav1.Object) types.NamespacedName
NamespacedName returns the namespaced name for k8s objects
func ServerVersion ¶ added in v1.5.0
func ServerVersion(client discovery.ServerVersionInterface) string
ServerVersion returns the version for k8s server the server version will be used to help App Mesh team to identify the platform Envoy is running on to provide better user experience
func UpdatePodCondition ¶
func UpdatePodCondition(pod *corev1.Pod, conditionType corev1.PodConditionType, status corev1.ConditionStatus, reason *string, message *string) bool
UpdatePodCondition will update Pod's condition. returns whether it's updated.
Types ¶
type Controller ¶ added in v1.3.0
type Controller interface { // StartController starts the controller. Will block the calling routine StartController(dataStore cache.Indexer, stopChanel chan struct{}) // GetDataStore returns the data store once it has synced with the API Server GetDataStore() cache.Indexer }
Controller Interface implemented by PodController
type Converter ¶ added in v1.3.0
type Converter interface { // ConvertObject takes an object or delete tombstone and returns // the modified object which will be stored in the data store ConvertObject(originalObj interface{}) (convertedObj interface{}, err error) // ConvertList takes an object and returns the modified list of objects which // will be returned to the Simple Pager function to aggregate the list pagination // response ConvertList(originalList interface{}) (convertedList interface{}, err error) // Resource returns the K8s resource name to list/watch Resource() string // ResourceType returns the k8s object to list/watch ResourceType() runtime.Object }
Converter for converting objects on provided Deltas to stripped down pod objects
type CustomController ¶ added in v1.3.0
type CustomController struct {
// contains filtered or unexported fields
}
CustomController is an Informer which converts Pod Objects and notifies corresponding event handlers via Channels
func NewCustomController ¶ added in v1.3.0
func NewCustomController(clientSet *kubernetes.Clientset, pageLimit int64, namesspace string, converter Converter, resyncPeriod time.Duration, retryOnError bool, eventNotificationChan chan<- GenericEvent, log logr.Logger) *CustomController
NewCustomController returns a new podController object
func (*CustomController) GetDataStore ¶ added in v1.3.0
func (c *CustomController) GetDataStore() cache.Indexer
GetDataStore returns the data store when it has successfully synced with API Server
func (*CustomController) StartController ¶ added in v1.3.0
func (c *CustomController) StartController(stopChanel <-chan struct{})
StartController starts the custom controller by doing a list and watch on the specified k8s resource. The controller would store the converted k8s object in the provided indexer. The stop channel should be notified to stop the controller
type EventType ¶ added in v1.3.0
type EventType int
EventType identifies type of PodEvent (CREATE/UPDATE/DELETE)
type FinalizerManager ¶
type FinalizerManager interface { AddFinalizers(ctx context.Context, obj client.Object, finalizers ...string) error RemoveFinalizers(ctx context.Context, obj client.Object, finalizers ...string) error }
func NewDefaultFinalizerManager ¶
func NewDefaultFinalizerManager(k8sClient client.Client, log logr.Logger) FinalizerManager
type GenericEvent ¶ added in v1.3.0
type GenericEvent struct { EventType // Object is the object from the incoming request Object client.Object // OldObject is the existing object. Only populated for DELETE and UPDATE requests. OldObject client.Object }
GenericEvent is a wrapper for Create/Update/Delete Events
type NotificationChannel ¶ added in v1.3.0
type NotificationChannel struct { Source <-chan GenericEvent // contains filtered or unexported fields }
NotificationChannel monitors channels of type Create/Update/Delete
func (*NotificationChannel) InjectStopChannel ¶ added in v1.3.0
func (cs *NotificationChannel) InjectStopChannel(stop <-chan struct{}) error
InjectStopChannel is internal should be called only by the Controller. It is used to inject the stop channel initialized by the ControllerManager.
func (*NotificationChannel) Start ¶ added in v1.3.0
func (cs *NotificationChannel) Start( ctx context.Context, handler handler.EventHandler, queue workqueue.RateLimitingInterface, prct ...predicate.Predicate) error
Start implements Source and should only be called by the Controller.
func (*NotificationChannel) String ¶ added in v1.3.0
func (cs *NotificationChannel) String() string
type PodsRepository ¶ added in v1.3.0
type PodsRepository interface { GetPod(namespace string, name string) (*v1.Pod, error) ListPodsWithMatchingLabels(opts client.ListOptions) (*v1.PodList, error) }
PodsRepository represents an interface with all the common operations on pod objects
func NewPodsRepository ¶ added in v1.3.0
func NewPodsRepository(customController *CustomController) PodsRepository
NewPodsRepository returns a new PodsRepository