Documentation ¶
Index ¶
- Constants
- func APIPort(hcp *hyperv1.HostedControlPlane) *int32
- func AddHCPRouteLabel(target crclient.Object)
- func AddInternalRouteLabel(target crclient.Object)
- func AdvertiseAddress(hcp *hyperv1.HostedControlPlane) *string
- func AdvertiseAddressWithDefault(hcp *hyperv1.HostedControlPlane, defaultValue string) string
- func AllowedCIDRBlocks(hcp *hyperv1.HostedControlPlane) []hyperv1.CIDRBlock
- func ApplyCloudProviderCreds(podSpec *corev1.PodSpec, cloudProvider string, ...)
- func ApplyClusterIDLabel(ep *prometheusoperatorv1.Endpoint, clusterID string)
- func ApplyClusterIDLabelToPodMonitor(ep *prometheusoperatorv1.PodMetricsEndpoint, clusterID string)
- func ApplyClusterIDLabelToRecordingRule(rule *prometheusoperatorv1.Rule, clusterID string)
- func AvailabilityProber(target string, image string, spec *corev1.PodSpec, o ...AvailabilityProberOpt)
- func BindAPIPortWithDefault(hcp *hyperv1.HostedControlPlane, defaultValue int32) int32
- func BindAPIPortWithDefaultFromHostedCluster(hc *hyperv1.HostedCluster, defaultValue int32) int32
- func BuildContainer(container *corev1.Container, buildFn func(*corev1.Container)) corev1.Container
- func BuildVolume(volume *corev1.Volume, buildFn func(*corev1.Volume)) corev1.Volume
- func ClusterCIDRs(clusterNetwork []hyperv1.ClusterNetworkEntry) []string
- func CollectLBMessageIfNotProvisioned(svc *corev1.Service, messageCollector events.MessageCollector) (string, error)
- func Compress(payload []byte) (*bytes.Buffer, error)
- func CompressAndEncode(payload []byte) (*bytes.Buffer, error)
- func ComputeHash(s string) string
- func ConnectsThroughInternetToControlplane(platform hyperv1.PlatformSpec) bool
- func CopyConfigMap(cm, source *corev1.ConfigMap)
- func CreateTokenForServiceAccount(ctx context.Context, serviceAccount *corev1.ServiceAccount, ...) (string, error)
- func DecodeAndDecompress(payload []byte) (*bytes.Buffer, error)
- func DeleteIfNeeded(ctx context.Context, c client.Client, o client.Object) (exists bool, err error)
- func DeploymentAddTrustBundleVolume(trustBundleConfigMap *corev1.LocalObjectReference, ...)
- func DeserializeResource(data string, resource runtime.Object, objectTyper runtime.ObjectTyper) error
- func EnsureOwnerRef(resource client.Object, ownerRef *metav1.OwnerReference)
- func EnsurePullSecret(serviceAccount *corev1.ServiceAccount, secretName string)
- func FindContainer(name string, containers []corev1.Container) *corev1.Container
- func FirstClusterCIDR(clusterNetwork []hyperv1.ClusterNetworkEntry) string
- func FirstMachineCIDR(machineNetwork []hyperv1.MachineNetworkEntry) string
- func FirstServiceCIDR(serviceNetwork []hyperv1.ServiceNetworkEntry) string
- func GenerateReconciliationActiveCondition(pausedUntilField *string, objectGeneration int64) metav1.Condition
- func GetPayloadImage(ctx context.Context, releaseImageProvider releaseinfo.Provider, ...) (string, error)
- func GetPayloadVersion(ctx context.Context, releaseImageProvider releaseinfo.Provider, ...) (*semver.Version, error)
- func HashStruct(o interface{}) string
- func ImageLabels(metadata *dockerv1client.DockerImageConfig) map[string]string
- func InternalAPIPortFromHostedClusterWithDefault(hc *hyperv1.HostedCluster, defaultValue int32) int32
- func InternalAPIPortWithDefault(hcp *hyperv1.HostedControlPlane, defaultValue int32) int32
- func IsDeploymentReady(ctx context.Context, c crclient.Client, deployment *appsv1.Deployment) (bool, error)
- func IsPrivateHC(hc *hyperv1.HostedCluster) bool
- func IsPrivateHCP(hcp *hyperv1.HostedControlPlane) bool
- func IsPublicHCP(hcp *hyperv1.HostedControlPlane) bool
- func IsPublicKASWithDNS(hostedControlPlane *hyperv1.HostedControlPlane) bool
- func IsReconciliationPaused(logr logr.Logger, pausedUntilField *string) (bool, time.Duration)
- func IsRouteKAS(hcp *hyperv1.HostedControlPlane) bool
- func MachineCIDRs(machineNetwork []hyperv1.MachineNetworkEntry) []string
- func ParseNamespacedName(name string) types.NamespacedName
- func ProcessPausedUntilField(pausedUntilField *string, now time.Time) (isPaused bool, duration time.Duration, err error)
- func ReconcileExternalRoute(route *routev1.Route, hostname string, defaultIngressDomain string, ...) error
- func ReconcileInternalRoute(route *routev1.Route, hcName string, serviceName string) error
- func ResolveDNSHostname(ctx context.Context, hostName string) error
- func SerializeResource(resource runtime.Object, objectTyper runtime.ObjectTyper) (string, error)
- func ServiceCIDRs(serviceNetwork []hyperv1.ServiceNetworkEntry) []string
- func ServiceExternalDNSHostname(hcp *hyperv1.HostedControlPlane, serviceType hyperv1.ServiceType) string
- func ServicePublishingStrategyByTypeByHC(hc *hyperv1.HostedCluster, svcType hyperv1.ServiceType) *hyperv1.ServicePublishingStrategy
- func ServicePublishingStrategyByTypeForHCP(hcp *hyperv1.HostedControlPlane, svcType hyperv1.ServiceType) *hyperv1.ServicePublishingStrategy
- func ShortenRouteHostnameIfNeeded(name, namespace string, baseDomain string) string
- func StringListContains(list string, s string) bool
- func UseDedicatedDNSForKASByHC(hc *hyperv1.HostedCluster) bool
- func UseDedicatedDNSforKAS(hcp *hyperv1.HostedControlPlane) bool
- type AvailabilityProberOpt
- type AvailabilityProberOpts
- type ContainerVolumeMounts
- type ImageMetadataProvider
- type PodVolumeMounts
- type RegistryClientImageMetadataProvider
Constants ¶
const ( KubeconfigKey = "kubeconfig" AWSCloudProviderName = "aws" )
const ( // CPOImageName is the name under which components can find the CPO image in the release image.. CPOImageName = "controlplane-operator" // AvailabilityProberImageName is the name under which components can find the availability prober // image in the release image. AvailabilityProberImageName = "availability-prober" )
const ( // DebugDeploymentsAnnotation contains a comma separated list of deployment names which should always be scaled to 0 // for development. DebugDeploymentsAnnotation = "hypershift.openshift.io/debug-deployments" )
const HCPRouteLabel = "hypershift.openshift.io/hosted-control-plane"
const InternalRouteLabel = "hypershift.openshift.io/internal-route"
Variables ¶
This section is empty.
Functions ¶
func APIPort ¶
func APIPort(hcp *hyperv1.HostedControlPlane) *int32
func AddHCPRouteLabel ¶
func AddInternalRouteLabel ¶
func AdvertiseAddress ¶
func AdvertiseAddress(hcp *hyperv1.HostedControlPlane) *string
func AdvertiseAddressWithDefault ¶
func AdvertiseAddressWithDefault(hcp *hyperv1.HostedControlPlane, defaultValue string) string
func AllowedCIDRBlocks ¶
func AllowedCIDRBlocks(hcp *hyperv1.HostedControlPlane) []hyperv1.CIDRBlock
func ApplyCloudProviderCreds ¶
func ApplyClusterIDLabel ¶
func ApplyClusterIDLabel(ep *prometheusoperatorv1.Endpoint, clusterID string)
func ApplyClusterIDLabelToPodMonitor ¶
func ApplyClusterIDLabelToPodMonitor(ep *prometheusoperatorv1.PodMetricsEndpoint, clusterID string)
func ApplyClusterIDLabelToRecordingRule ¶
func ApplyClusterIDLabelToRecordingRule(rule *prometheusoperatorv1.Rule, clusterID string)
func AvailabilityProber ¶
func AvailabilityProber(target string, image string, spec *corev1.PodSpec, o ...AvailabilityProberOpt)
func BindAPIPortWithDefault ¶
func BindAPIPortWithDefault(hcp *hyperv1.HostedControlPlane, defaultValue int32) int32
BindAPIPortWithDefault will retrieve the port the kube-apiserver binds on locally in the pod
func BindAPIPortWithDefaultFromHostedCluster ¶
func BindAPIPortWithDefaultFromHostedCluster(hc *hyperv1.HostedCluster, defaultValue int32) int32
BindAPIPortWithDefaultFromHostedCluster will retrieve the port the kube-apiserver binds on locally in the pod
func BuildContainer ¶
func BuildVolume ¶
func ClusterCIDRs ¶
func ClusterCIDRs(clusterNetwork []hyperv1.ClusterNetworkEntry) []string
func CompressAndEncode ¶
CompressAndEncode compresses and base-64 encodes a given byte array. Ideal for loading an arbitrary byte array into a ConfigMap or Secret.
func ComputeHash ¶
func ConnectsThroughInternetToControlplane ¶
func ConnectsThroughInternetToControlplane(platform hyperv1.PlatformSpec) bool
HasPrivateAPIServerConnectivity determines if workloads running inside the guest cluster can access the apiserver without using the Internet.
func CopyConfigMap ¶
CopyConfigMap copies the .Data field of configMap `source` into configmap `cm`
func CreateTokenForServiceAccount ¶ added in v0.1.2
func CreateTokenForServiceAccount(ctx context.Context, serviceAccount *corev1.ServiceAccount, client *kubernetes.Clientset) (string, error)
func DecodeAndDecompress ¶
DecodeAndDecompress decompresses and base-64 decodes a given byte array. Ideal for consuming a gzipped / base64-encoded byte array from a ConfigMap or Secret.
func DeleteIfNeeded ¶
func DeploymentAddTrustBundleVolume ¶
func DeploymentAddTrustBundleVolume(trustBundleConfigMap *corev1.LocalObjectReference, deployment *appsv1.Deployment)
func DeserializeResource ¶
func EnsureOwnerRef ¶
func EnsureOwnerRef(resource client.Object, ownerRef *metav1.OwnerReference)
func EnsurePullSecret ¶
func EnsurePullSecret(serviceAccount *corev1.ServiceAccount, secretName string)
func FindContainer ¶
func FirstClusterCIDR ¶
func FirstClusterCIDR(clusterNetwork []hyperv1.ClusterNetworkEntry) string
func FirstMachineCIDR ¶
func FirstMachineCIDR(machineNetwork []hyperv1.MachineNetworkEntry) string
func FirstServiceCIDR ¶
func FirstServiceCIDR(serviceNetwork []hyperv1.ServiceNetworkEntry) string
func GenerateReconciliationActiveCondition ¶
func GenerateReconciliationActiveCondition(pausedUntilField *string, objectGeneration int64) metav1.Condition
GenerateReconciliationActiveCondition will generate the resource condition that reflects the state of reconciliation on the resource.
func GetPayloadImage ¶
func GetPayloadImage(ctx context.Context, releaseImageProvider releaseinfo.Provider, hc *hyperv1.HostedCluster, component string, pullSecret []byte) (string, error)
func GetPayloadVersion ¶
func GetPayloadVersion(ctx context.Context, releaseImageProvider releaseinfo.Provider, hc *hyperv1.HostedCluster, pullSecret []byte) (*semver.Version, error)
func HashStruct ¶
func HashStruct(o interface{}) string
HashStruct takes a value, typically a string, and returns a 32-bit FNV-1a hashed version of the value as a string
func ImageLabels ¶
func ImageLabels(metadata *dockerv1client.DockerImageConfig) map[string]string
ImageLabels returns labels on a given image metadata
func InternalAPIPortFromHostedClusterWithDefault ¶
func InternalAPIPortFromHostedClusterWithDefault(hc *hyperv1.HostedCluster, defaultValue int32) int32
InternalAPIPortFromHostedClusterWithDefault will retrieve the port to use to contact the APIServer over the Kubernetes service domain kube-apiserver.NAMESPACE.svc.cluster.local:INTERNAL_API_PORT
func InternalAPIPortWithDefault ¶
func InternalAPIPortWithDefault(hcp *hyperv1.HostedControlPlane, defaultValue int32) int32
InternalAPIPortWithDefault will retrieve the port to use to contact the APIServer over the Kubernetes service domain kube-apiserver.NAMESPACE.svc.cluster.local:INTERNAL_API_PORT
func IsDeploymentReady ¶
func IsPrivateHC ¶
func IsPrivateHC(hc *hyperv1.HostedCluster) bool
func IsPrivateHCP ¶
func IsPrivateHCP(hcp *hyperv1.HostedControlPlane) bool
func IsPublicHCP ¶
func IsPublicHCP(hcp *hyperv1.HostedControlPlane) bool
func IsPublicKASWithDNS ¶
func IsPublicKASWithDNS(hostedControlPlane *hyperv1.HostedControlPlane) bool
func IsReconciliationPaused ¶
IsReconciliationPaused checks the pauseUntil field to see if reconciliation on the resource should be paused and for how long.
func IsRouteKAS ¶
func IsRouteKAS(hcp *hyperv1.HostedControlPlane) bool
func MachineCIDRs ¶
func MachineCIDRs(machineNetwork []hyperv1.MachineNetworkEntry) []string
func ParseNamespacedName ¶
func ParseNamespacedName(name string) types.NamespacedName
ParseNamespacedName expects a string with the format "namespace/name" and returns the proper types.NamespacedName. This is useful when watching a CR annotated with the format above to requeue the CR described in the annotation.
func ProcessPausedUntilField ¶
func ProcessPausedUntilField(pausedUntilField *string, now time.Time) (isPaused bool, duration time.Duration, err error)
ProcessPausedUntilField checks the pauseUntil field to see if reconciliation on the resource should be paused. Input can either be a date in RFC3339 format, or a Boolean. It returns a Boolean isPaused, a duration and an error. If the input is a date, a duration!=0 is returned so consumers can choose to requeueAfter it.
func ReconcileExternalRoute ¶
func ReconcileInternalRoute ¶
func ResolveDNSHostname ¶
ResolveDNSHostname receives a hostname string and tries to resolve it. Returns error if the host can't be resolved.
func SerializeResource ¶
func ServiceCIDRs ¶
func ServiceCIDRs(serviceNetwork []hyperv1.ServiceNetworkEntry) []string
func ServiceExternalDNSHostname ¶
func ServiceExternalDNSHostname(hcp *hyperv1.HostedControlPlane, serviceType hyperv1.ServiceType) string
func ServicePublishingStrategyByTypeByHC ¶
func ServicePublishingStrategyByTypeByHC(hc *hyperv1.HostedCluster, svcType hyperv1.ServiceType) *hyperv1.ServicePublishingStrategy
func ServicePublishingStrategyByTypeForHCP ¶
func ServicePublishingStrategyByTypeForHCP(hcp *hyperv1.HostedControlPlane, svcType hyperv1.ServiceType) *hyperv1.ServicePublishingStrategy
func ShortenRouteHostnameIfNeeded ¶
ShortenRouteHostnameIfNeeded will return a shortened hostname if the route hostname will exceed the allowed DNS name size. If the hostname is not too long, an empty string is returned so that the default can be used.
func StringListContains ¶
Contains checks if a comma-delimited string contains a specific string.
func UseDedicatedDNSForKASByHC ¶
func UseDedicatedDNSForKASByHC(hc *hyperv1.HostedCluster) bool
func UseDedicatedDNSforKAS ¶
func UseDedicatedDNSforKAS(hcp *hyperv1.HostedControlPlane) bool
Types ¶
type AvailabilityProberOpt ¶
type AvailabilityProberOpt func(*AvailabilityProberOpts)
type AvailabilityProberOpts ¶
type AvailabilityProberOpts struct { KubeconfigVolumeName string RequiredAPIs []schema.GroupVersionKind WaitForInfrastructureResource bool WaitForLabeledPodsGone string }
type ContainerVolumeMounts ¶
type ImageMetadataProvider ¶
type ImageMetadataProvider interface {
ImageMetadata(ctx context.Context, imageRef string, pullSecret []byte) (*dockerv1client.DockerImageConfig, error)
}
type PodVolumeMounts ¶
type PodVolumeMounts map[string]ContainerVolumeMounts
func (PodVolumeMounts) ContainerMounts ¶
func (m PodVolumeMounts) ContainerMounts(container string) []corev1.VolumeMount
func (PodVolumeMounts) Path ¶
func (m PodVolumeMounts) Path(container, volume string) string
type RegistryClientImageMetadataProvider ¶
type RegistryClientImageMetadataProvider struct{}
func (*RegistryClientImageMetadataProvider) ImageMetadata ¶
func (*RegistryClientImageMetadataProvider) ImageMetadata(ctx context.Context, imageRef string, pullSecret []byte) (*dockerv1client.DockerImageConfig, error)
ImageMetadata returns metadata for a given image using the given pull secret to authenticate. This lookup uses a cache based on the image digest. If the reference of the image contains a digest (which is the mainline case for images in a release payload), the digest is parsed from the image reference and then used to lookup image metadata in the cache. When the image reference does not contain a digest, a lookup is made to the registry to fetch the digest of the image that the tag refers to. This is because the actual image that the tag is referring to could have changed. Once a digest is obtained, the cache is checked so that no further fetching occurs. Only if both cache lookups fail, the image metadata is fetched and stored in the cache.