Files
vjailbreak/deploy/installer.yaml
T
2026-09-15 22:50:24 +05:30

5772 lines
196 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
apiVersion: v1
kind: Namespace
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
control-plane: controller-manager
name: migration-system
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.1
name: arraycreds.vjailbreak.k8s.pf9.io
spec:
group: vjailbreak.k8s.pf9.io
names:
kind: ArrayCreds
listKind: ArrayCredsList
plural: arraycreds
singular: arraycreds
scope: Namespaced
versions:
- additionalPrinterColumns:
- jsonPath: .spec.vendorType
name: Vendor
type: string
- jsonPath: .spec.openstackMapping.volumeType
name: VolumeType
type: string
- jsonPath: .spec.openstackMapping.cinderBackendName
name: Backend
type: string
- jsonPath: .status.phase
name: Phase
type: string
- jsonPath: .status.arrayValidationStatus
name: Status
type: string
name: v1alpha1
schema:
openAPIV3Schema:
description: |-
ArrayCreds is the Schema for the storage array credentials API that defines authentication
and connection details for storage arrays. It provides a secure way to store and validate
storage array credentials for use in migration operations, supporting multiple vendors, but as of now
We have qualified pure storage flash array.
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: ArrayCredsSpec defines the desired state of ArrayCreds
properties:
autoDiscovered:
description: AutoDiscovered indicates if this ArrayCreds was auto-discovered
from OpenStack
type: boolean
netAppConfig:
description: |-
NetAppConfig holds NetApp-specific configuration. Required when
VendorType is "netapp" before a migration can run. May be left empty
at creation time so the controller can surface available SVMs/FlexVols
on status.backendTargets for interactive selection.
properties:
flexVol:
description: FlexVol is the FlexVol name (within the SVM) where
LUNs will be created.
type: string
svm:
description: SVM is the Storage Virtual Machine name that owns
the target FlexVol.
type: string
type: object
openstackMapping:
description: OpenStackMapping is the openstack mapping for this array
properties:
cinderBackendName:
description: |-
CinderBackendName is the Cinder backend name for this mapping
This is the backend configured in cinder.conf (e.g., "pure-01")
type: string
cinderBackendPool:
description: CinderBackendPool is the pool name within the backend
(optional)
type: string
cinderHost:
description: |-
CinderHost is the full Cinder host string for manage API
Format: hostname@backend or hostname@backend#pool (e.g., "pcd-ce@pure-iscsi-1#vt-pure-iscsi")
type: string
volumeType:
description: VolumeType is the Cinder volume type associated with
this mapping
type: string
required:
- cinderBackendName
- volumeType
type: object
secretRef:
description: SecretRef is the reference to the Kubernetes secret holding
storage array credentials
properties:
apiVersion:
description: API version of the referent.
type: string
fieldPath:
description: |-
If referring to a piece of an object instead of an entire object, this string
should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
For example, if the object reference is to a container within a pod, this would take on a value like:
"spec.containers{name}" (where "name" refers to the name of the container that triggered
the event) or if no container name is specified "spec.containers[2]" (container with
index 2 in this pod). This syntax is chosen only to have some well-defined way of
referencing a part of an object.
type: string
kind:
description: |-
Kind of the referent.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
name:
description: |-
Name of the referent.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
namespace:
description: |-
Namespace of the referent.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
type: string
resourceVersion:
description: |-
Specific resourceVersion to which this reference is made, if any.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
type: string
uid:
description: |-
UID of the referent.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
type: string
type: object
x-kubernetes-map-type: atomic
vendorType:
description: VendorType is the storage array vendor type (e.g., pure,
ontap, hpalletra)
type: string
required:
- vendorType
type: object
status:
description: ArrayCredsStatus defines the observed state of ArrayCreds
properties:
arrayValidationMessage:
description: ArrayValidationMessage is the message associated with
the storage array validation
type: string
arrayValidationStatus:
description: |-
ArrayValidationStatus is the status of the storage array validation
Possible values: Pending, Succeeded, Failed, AwaitingCredentials
type: string
backendTargets:
description: |-
BackendTargets is a vendor-neutral two-level tree of selectable array
targets (e.g., NetApp SVMs -> FlexVols). Populated by the controller
after successful credential validation for vendors that expose a
selectable target hierarchy. UIs consume this to render a picker.
items:
description: BackendTargetGroup groups related targets (e.g., a
NetApp SVM and its FlexVols).
properties:
children:
items:
description: |-
BackendTarget is a single selectable target within a BackendTargetGroup
(e.g., a NetApp FlexVol, a Dell pool).
properties:
name:
type: string
uuid:
type: string
required:
- name
type: object
type: array
name:
type: string
uuid:
type: string
required:
- name
type: object
type: array
dataStore:
description: DataStore is the list of datastores associated with this
array
items:
description: DatastoreInfo holds datastore information including
backing device NAA
properties:
backingNAA:
type: string
backingUUID:
type: string
capacity:
format: int64
type: integer
freeSpace:
format: int64
type: integer
moID:
type: string
name:
type: string
type:
type: string
required:
- backingNAA
- backingUUID
- capacity
- freeSpace
- moID
- name
- type
type: object
type: array
phase:
description: |-
Phase indicates the current phase of the ArrayCreds
Possible values: Discovered, Configured, Validated, Failed, NeedsBackendSelection
type: string
type: object
type: object
served: true
storage: true
subresources:
status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.1
name: arraycredsmappings.vjailbreak.k8s.pf9.io
spec:
group: vjailbreak.k8s.pf9.io
names:
kind: ArrayCredsMapping
listKind: ArrayCredsMappingList
plural: arraycredsmappings
singular: arraycredsmapping
scope: Namespaced
versions:
- additionalPrinterColumns:
- jsonPath: .status.validationStatus
name: Status
type: string
- jsonPath: .metadata.creationTimestamp
name: Age
type: date
name: v1alpha1
schema:
openAPIV3Schema:
description: |-
ArrayCredsMapping is the Schema for the arraycredsmappings API that defines
mappings between VMware datastores and ArrayCreds for StorageAcceleratedCopy storage migration
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: |-
ArrayCredsMappingSpec defines the desired state of ArrayCredsMapping including
mappings between VMware datastores and ArrayCreds for StorageAcceleratedCopy data copy
properties:
mappings:
description: Mappings is a list of datastore to ArrayCreds mappings
items:
description: DatastoreArrayCredsMapping represents a mapping between
a VMware datastore and ArrayCreds
properties:
source:
description: Source is the name of the source datastore in VMware
type: string
target:
description: Target is the name of the ArrayCreds resource to
use for this datastore
type: string
required:
- source
- target
type: object
type: array
required:
- mappings
type: object
status:
description: ArrayCredsMappingStatus defines the observed state of ArrayCredsMapping
properties:
validationMessage:
description: |-
ValidationMessage provides detailed validation information including
information about available ArrayCreds and any validation errors
type: string
validationStatus:
description: |-
ValidationStatus indicates the validation status of the ArrayCreds mapping
Valid states include: "Valid", "Invalid", "Pending", "ValidationFailed"
type: string
type: object
type: object
served: true
storage: true
subresources:
status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.1
name: bmconfigs.vjailbreak.k8s.pf9.io
spec:
group: vjailbreak.k8s.pf9.io
names:
kind: BMConfig
listKind: BMConfigList
plural: bmconfigs
singular: bmconfig
scope: Namespaced
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
description: |-
BMConfig is the Schema for the bmconfigs API that defines authentication and configuration
details for Bare Metal Controller (BMC) providers such as MAAS. It contains credentials,
connection information, and boot source configurations needed to provision physical hosts
for use during the ESXi to PCD migration process. BMConfig enables the automatic
provisioning of PCD hosts as replacement infrastructure for migrated ESXi hosts.
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: BMConfigSpec defines the desired state of BMConfig
properties:
apiKey:
description: APIKey is the API key for the BM server
type: string
apiUrl:
description: APIUrl is the API URL for the BM server
type: string
bootSource:
description: BootSource is the boot source for the BMC
properties:
release:
default: jammy
description: Release is the OS release version to be used (e.g.,
"jammy" for Ubuntu 22.04)
type: string
required:
- release
type: object
insecure:
default: false
description: Insecure is a boolean indicating whether to use insecure
connection
type: boolean
password:
description: Password is the password for the BM server
type: string
providerType:
default: MAAS
description: ProviderType is the BMC provider type
type: string
userDataSecretRef:
description: UserDataSecretRef is the reference to the secret containing
user data for the BMC
properties:
name:
description: name is unique within a namespace to reference a
secret resource.
type: string
namespace:
description: namespace defines the space within which the secret
name must be unique.
type: string
type: object
x-kubernetes-map-type: atomic
userName:
description: UserName is the username for the BM server
type: string
required:
- apiKey
- apiUrl
- providerType
type: object
status:
description: BMConfigStatus defines the observed state of BMConfig
properties:
validationMessage:
description: ValidationMessage is the message associated with the
validation
type: string
validationStatus:
description: ValidationStatus is the status of the validation
type: string
type: object
type: object
served: true
storage: true
subresources:
status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.1
name: clustermigrations.vjailbreak.k8s.pf9.io
spec:
group: vjailbreak.k8s.pf9.io
names:
kind: ClusterMigration
listKind: ClusterMigrationList
plural: clustermigrations
singular: clustermigration
scope: Namespaced
versions:
- additionalPrinterColumns:
- jsonPath: .status.phase
name: Phase
type: string
- jsonPath: .status.currentESXI
name: Current ESXI
type: string
- jsonPath: .metadata.creationTimestamp
name: Age
type: date
name: v1alpha1
schema:
openAPIV3Schema:
description: |-
ClusterMigration is the Schema for the clustermigrations API that orchestrates the migration
of an entire VMware vCenter cluster to Platform9 Distributed Cloud (PCD).
It manages the ordered migration of ESXi hosts within a cluster, tracking progress
and maintaining references to required credentials and migration plans.
ClusterMigration resources coordinate with ESXIMigration resources to ensure
hosts are migrated in the correct sequence with proper dependency management.
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: ClusterMigrationSpec defines the desired state of ClusterMigration
properties:
clusterName:
description: ClusterName is the name of the vCenter cluster to be
migrated
type: string
esxiMigrationSequence:
description: ESXIMigrationSequence is the sequence of ESXi hosts to
be migrated
items:
type: string
type: array
openstackCredsRef:
description: OpenstackCredsRef is the reference to the OpenStack credentials
properties:
name:
default: ""
description: |-
Name of the referent.
This field is effectively required, but due to backwards compatibility is
allowed to be empty. Instances of this type with an empty value here are
almost certainly wrong.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
type: object
x-kubernetes-map-type: atomic
rollingMigrationPlanRef:
description: RollingMigrationPlanRef is the reference to the RollingMigrationPlan
properties:
name:
default: ""
description: |-
Name of the referent.
This field is effectively required, but due to backwards compatibility is
allowed to be empty. Instances of this type with an empty value here are
almost certainly wrong.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
type: object
x-kubernetes-map-type: atomic
vmwareCredsRef:
description: VMwareCredsRef is the reference to the VMware credentials
properties:
name:
default: ""
description: |-
Name of the referent.
This field is effectively required, but due to backwards compatibility is
allowed to be empty. Instances of this type with an empty value here are
almost certainly wrong.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
type: object
x-kubernetes-map-type: atomic
required:
- clusterName
- esxiMigrationSequence
- openstackCredsRef
- rollingMigrationPlanRef
- vmwareCredsRef
type: object
status:
description: ClusterMigrationStatus defines the observed state of ClusterMigration
properties:
currentESXi:
description: CurrentESXi is the name of the current ESXi host being
migrated
type: string
message:
description: Message is the message associated with the current state
of the migration
type: string
phase:
description: Phase is the current phase of the migration
enum:
- Pending
- Running
- Succeeded
- Failed
- Paused
type: string
required:
- currentESXi
- message
- phase
type: object
type: object
served: true
storage: true
subresources:
status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.1
name: esximigrations.vjailbreak.k8s.pf9.io
spec:
group: vjailbreak.k8s.pf9.io
names:
kind: ESXIMigration
listKind: ESXIMigrationList
plural: esximigrations
singular: esximigration
scope: Namespaced
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
description: |-
ESXIMigration is the Schema for the esximigrations API that defines
the process of migrating an ESXi host to PCD, including putting it in maintenance mode,
migrating all VMs, and finally removing it from vCenter inventory after completion
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: |-
ESXIMigrationSpec defines the desired state of ESXIMigration including
the ESXi host to migrate and the references to credentials and migration plan
properties:
esxiName:
description: ESXiName is the name of the ESXi host to be migrated
type: string
openstackCredsRef:
description: OpenstackCredsRef is the reference to the OpenStack credentials
properties:
name:
default: ""
description: |-
Name of the referent.
This field is effectively required, but due to backwards compatibility is
allowed to be empty. Instances of this type with an empty value here are
almost certainly wrong.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
type: object
x-kubernetes-map-type: atomic
rollingMigrationPlanRef:
description: RollingMigrationPlanRef is the reference to the RollingMigrationPlan
properties:
name:
default: ""
description: |-
Name of the referent.
This field is effectively required, but due to backwards compatibility is
allowed to be empty. Instances of this type with an empty value here are
almost certainly wrong.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
type: object
x-kubernetes-map-type: atomic
vmwareCredsRef:
description: VMwareCredsRef is the reference to the VMware credentials
properties:
name:
default: ""
description: |-
Name of the referent.
This field is effectively required, but due to backwards compatibility is
allowed to be empty. Instances of this type with an empty value here are
almost certainly wrong.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
type: object
x-kubernetes-map-type: atomic
required:
- esxiName
- openstackCredsRef
- rollingMigrationPlanRef
- vmwareCredsRef
type: object
status:
description: |-
ESXIMigrationStatus defines the observed state of ESXIMigration including
the list of VMs on the host, current phase, and status messages
properties:
message:
description: Message is the message associated with the current state
of the migration
type: string
phase:
description: |-
Phase is the current phase of the migration lifecycle
The final phases include 'Succeeded' when the ESXi host has been successfully
removed from vCenter inventory after migration is complete
type: string
vms:
description: VMs is the list of VMs present on the ESXi host
items:
type: string
type: array
type: object
type: object
served: true
storage: true
subresources:
status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.1
name: esxisshcreds.vjailbreak.k8s.pf9.io
spec:
group: vjailbreak.k8s.pf9.io
names:
kind: ESXiSSHCreds
listKind: ESXiSSHCredsList
plural: esxisshcreds
singular: esxisshcreds
scope: Namespaced
versions:
- additionalPrinterColumns:
- jsonPath: .status.validationStatus
name: Status
type: string
- jsonPath: .status.successfulHosts
name: Successful
type: integer
- jsonPath: .status.failedHosts
name: Failed
type: integer
- jsonPath: .status.totalHosts
name: Total
type: integer
name: v1alpha1
schema:
openAPIV3Schema:
description: |-
ESXiSSHCreds is the Schema for the esxisshcreds API that defines SSH credentials
for connecting to ESXi hosts. It validates SSH connectivity to ESXi hosts either
discovered from vCenter via VMwareCreds or explicitly specified in the hosts list.
The controller validates connections in parallel with throttling to avoid overwhelming
the network, and reports per-host validation results in the status.
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: ESXiSSHCredsSpec defines the desired state of ESXiSSHCreds
properties:
forceReconcileToken:
description: |-
ForceReconcileToken is an opaque token that can be updated to force a reconciliation.
Updating this field will increment metadata.generation and trigger the controller.
type: string
secretRef:
description: |-
SecretRef is the reference to the Kubernetes secret holding the SSH private key
The secret should contain a key named "privateKey" with the SSH private key in PEM format
properties:
apiVersion:
description: API version of the referent.
type: string
fieldPath:
description: |-
If referring to a piece of an object instead of an entire object, this string
should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
For example, if the object reference is to a container within a pod, this would take on a value like:
"spec.containers{name}" (where "name" refers to the name of the container that triggered
the event) or if no container name is specified "spec.containers[2]" (container with
index 2 in this pod). This syntax is chosen only to have some well-defined way of
referencing a part of an object.
type: string
kind:
description: |-
Kind of the referent.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
name:
description: |-
Name of the referent.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
namespace:
description: |-
Namespace of the referent.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
type: string
resourceVersion:
description: |-
Specific resourceVersion to which this reference is made, if any.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
type: string
uid:
description: |-
UID of the referent.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
type: string
type: object
x-kubernetes-map-type: atomic
username:
default: root
description: 'Username is the SSH username to use for connecting to
ESXi hosts (default: "root")'
type: string
required:
- secretRef
type: object
status:
description: ESXiSSHCredsStatus defines the observed state of ESXiSSHCreds
properties:
failedHosts:
description: FailedHosts is the number of ESXi hosts that failed validation
type: integer
lastValidationTime:
description: LastValidationTime is the timestamp of the last validation
run
format: date-time
type: string
successfulHosts:
description: SuccessfulHosts is the number of ESXi hosts that passed
validation
type: integer
totalHosts:
description: TotalHosts is the total number of ESXi hosts to validate
type: integer
validationMessage:
description: ValidationMessage is the message associated with the
overall validation
type: string
validationStatus:
description: |-
ValidationStatus is the overall status of the ESXi SSH validation
Possible values: Pending, Validating, Succeeded, PartiallySucceeded, Failed
type: string
type: object
type: object
served: true
storage: true
subresources:
status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.1
name: migrationblueprints.vjailbreak.k8s.pf9.io
spec:
group: vjailbreak.k8s.pf9.io
names:
kind: MigrationBlueprint
listKind: MigrationBlueprintList
plural: migrationblueprints
singular: migrationblueprint
scope: Namespaced
versions:
- additionalPrinterColumns:
- jsonPath: .spec.displayName
name: Display Name
type: string
- jsonPath: .spec.vmwareRef
name: Source
type: string
- jsonPath: .spec.pcdRef
name: Destination
type: string
- jsonPath: .metadata.creationTimestamp
name: Age
type: date
name: v1alpha1
schema:
openAPIV3Schema:
description: |-
MigrationBlueprint is the Schema for the migrationblueprints API. It stores a
reusable, named migration configuration that the UI presents as a "Migration
Template": users save a configuration once and apply it later to pre-populate
the migration form. Blueprints are not read by the migration controller.
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: |-
MigrationBlueprintSpec defines a reusable, named snapshot of a migration
configuration. It captures everything from the migration form except the VM
selection, so the UI can present it as a "Migration Template" and pre-fill
the migration wizard. Blueprints are consumed only by the UI: applying one
still creates the regular MigrationTemplate/MigrationPlan/mapping resources,
so the migration controller never reads a blueprint.
properties:
advancedOptions:
description: AdvancedOptions captures the advanced migration options
to pre-fill
properties:
acknowledgeNetworkConflictRisk:
description: AcknowledgeNetworkConflictRisk indicates that the
user acknowledges the risk of network conflicts when doing live
migration
type: boolean
granularNetworks:
description: GranularNetworks is a list of networks to be migrated
items:
type: string
type: array
granularPorts:
description: GranularPorts is a list of ports to be migrated
items:
type: string
type: array
granularVolumeTypes:
description: GranularVolumeTypes is a list of volume types to
be migrated
items:
type: string
type: array
imageProfiles:
description: ImageProfiles is the ordered list of VolumeImageProfile
names to apply to the migrated VM's boot volume.
items:
type: string
type: array
networkPersistence:
description: NetworkPersistence instructs the migration helper
to persist the source networking configuration
type: boolean
periodicSyncEnabled:
description: PeriodicSyncEnabled is a boolean to enable periodic
sync
type: boolean
periodicSyncInterval:
description: PeriodicSyncInterval is the interval at which the
migration plan should be synced
type: string
removeVMwareTools:
default: true
description: |-
RemoveVMwareTools instructs the migration helper to remove VMware Tools post migration.
Defaults to true since most migrations require VMware Tools removal.
type: boolean
type: object
arrayCredsMappings:
description: |-
ArrayCredsMappings is an inline snapshot of datastore-to-ArrayCreds pairs.
Used when StorageCopyMethod is "StorageAcceleratedCopy".
items:
description: DatastoreArrayCredsMapping represents a mapping between
a VMware datastore and ArrayCreds
properties:
source:
description: Source is the name of the source datastore in VMware
type: string
target:
description: Target is the name of the ArrayCreds resource to
use for this datastore
type: string
required:
- source
- target
type: object
type: array
customMetadata:
additionalProperties:
type: string
description: |-
CustomMetadata is a map of additional key-value pairs applied as instance
metadata to every migrated VM
type: object
dataOnly:
description: |-
DataOnly copies and converts disks to Cinder volumes without creating an
OpenStack VM
type: boolean
description:
description: Description is a free-text description of the blueprint
type: string
displayName:
description: DisplayName is the human-readable name of the blueprint
shown in the UI
minLength: 1
type: string
fallbackToDHCP:
description: FallbackToDHCP falls back to DHCP when static IP assignment
is not possible
type: boolean
firstBootScript:
description: FirstBootScript is the script to run on first boot of
migrated VMs
type: string
migrationStrategy:
description: |-
MigrationStrategy captures the migration type, cutover windows, and
health-check settings to pre-fill into the migration form.
Optional so partially filled forms can be saved as templates.
properties:
adminInitiatedCutOver:
default: false
type: boolean
arrayOffload:
default: false
type: boolean
dataCopyStart:
format: date-time
type: string
dataOnly:
default: false
description: |-
DataOnly skips OpenStack VM creation; converted Cinder volumes are left staged.
Compatible with all strategy types (hot, cold, mock).
type: boolean
disconnectSourceNetwork:
default: false
type: boolean
healthCheckPort:
default: "443"
type: string
performHealthChecks:
default: false
type: boolean
type:
enum:
- hot
- cold
- mock
type: string
vmCutoverEnd:
format: date-time
type: string
vmCutoverStart:
format: date-time
type: string
required:
- type
type: object
networkMappings:
description: |-
NetworkMappings is an inline snapshot of source-to-target network pairs.
Copied by value rather than referencing a NetworkMapping resource, since
those are per-migration objects that may be mutated or deleted.
items:
description: Network represents a mapping between source and target
networks
properties:
source:
description: Source is the name of the source network in VMware
type: string
target:
description: Target is the name of the target network in OpenStack
type: string
required:
- source
- target
type: object
type: array
noVMwareClusterFilter:
description: |-
NoVMwareClusterFilter records that the user explicitly chose the
"No Cluster" source filter: VMs on standalone ESXi hosts that are not
part of any vCenter cluster in the datacenter referenced by VMwareRef.
This is distinct from VMwareClusterName simply not being set yet, so it
is tracked as its own field rather than inferred from an empty string.
type: boolean
osFamily:
description: OSFamily is the OS type of the virtual machines this
blueprint targets
enum:
- windowsGuest
- linuxGuest
type: string
pcdRef:
description: |-
PCDRef is the name of the OpenstackCreds to use as the destination PCD environment.
Optional so partially filled forms can be saved as templates.
type: string
postMigrationAction:
description: PostMigrationAction captures the post-migration actions
to pre-fill
properties:
folderName:
type: string
moveToFolder:
type: boolean
renameVm:
type: boolean
suffix:
type: string
type: object
preserveSourceTags:
description: |-
PreserveSourceTags copies each source VM's vSphere tags and custom
attributes to the migrated VM as instance metadata
type: boolean
proxyVMRef:
description: |-
ProxyVMRef references the ProxyVM to use for data copy.
Used when StorageCopyMethod is "HotAdd".
properties:
name:
default: ""
description: |-
Name of the referent.
This field is effectively required, but due to backwards compatibility is
allowed to be empty. Instances of this type with an empty value here are
almost certainly wrong.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
type: object
x-kubernetes-map-type: atomic
securityGroups:
description: SecurityGroups is the list of OpenStack security group
names to apply
items:
type: string
type: array
serverGroup:
description: ServerGroup is the OpenStack server group to place migrated
VMs into
type: string
storageCopyMethod:
default: normal
description: StorageCopyMethod indicates the method to use for storage
migration
enum:
- normal
- StorageAcceleratedCopy
- HotAdd
type: string
storageMappings:
description: |-
StorageMappings is an inline snapshot of source-to-target storage pairs.
Copied by value for the same reason as NetworkMappings.
items:
description: Storage represents a mapping between source and target
storage types
properties:
source:
description: Source is the name of the source storage type in
VMware
type: string
target:
description: Target is the name of the target storage type in
OpenStack
type: string
required:
- source
- target
type: object
type: array
targetPCDClusterName:
description: TargetPCDClusterName is the name of the PCD cluster to
migrate VMs into
type: string
useGPUFlavor:
description: UseGPUFlavor indicates if the migration should filter
and use GPU-enabled flavors
type: boolean
virtioWinDriver:
description: VirtioWinDriver is the virtio-win driver version to use
for Windows guests
type: string
vmwareClusterName:
description: |-
VMwareClusterName is the name of the source vCenter cluster VMs are
migrated from.
type: string
vmwareRef:
description: |-
VMwareRef is the name of the VMwareCreds to use as the source environment.
Optional so partially filled forms can be saved as templates.
type: string
required:
- displayName
type: object
type: object
served: true
storage: true
subresources: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.1
name: migrationplans.vjailbreak.k8s.pf9.io
spec:
group: vjailbreak.k8s.pf9.io
names:
kind: MigrationPlan
listKind: MigrationPlanList
plural: migrationplans
singular: migrationplan
scope: Namespaced
versions:
- additionalPrinterColumns:
- jsonPath: .status.migrationStatus
name: Status
type: string
- jsonPath: .spec.migrationTemplate
name: Migration Template
type: string
- jsonPath: .metadata.creationTimestamp
name: Age
type: date
name: v1alpha1
schema:
openAPIV3Schema:
description: |-
MigrationPlan is the Schema for the migrationplans API that defines
how to migrate virtual machines from VMware to OpenStack including migration strategy and scheduling.
It allows administrators to configure migration parameters such as timing, health checks,
and VM-specific settings for bulk VM migration operations between environments.
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: |-
MigrationPlanSpec defines the desired state of MigrationPlan including
the migration template, strategy, and the list of virtual machines to migrate
properties:
advancedOptions:
description: AdvancedOptions is a list of advanced options for the
migration
properties:
acknowledgeNetworkConflictRisk:
description: AcknowledgeNetworkConflictRisk indicates that the
user acknowledges the risk of network conflicts when doing live
migration
type: boolean
granularNetworks:
description: GranularNetworks is a list of networks to be migrated
items:
type: string
type: array
granularPorts:
description: GranularPorts is a list of ports to be migrated
items:
type: string
type: array
granularVolumeTypes:
description: GranularVolumeTypes is a list of volume types to
be migrated
items:
type: string
type: array
imageProfiles:
description: ImageProfiles is the ordered list of VolumeImageProfile
names to apply to the migrated VM's boot volume.
items:
type: string
type: array
networkPersistence:
description: NetworkPersistence instructs the migration helper
to persist the source networking configuration
type: boolean
periodicSyncEnabled:
description: PeriodicSyncEnabled is a boolean to enable periodic
sync
type: boolean
periodicSyncInterval:
description: PeriodicSyncInterval is the interval at which the
migration plan should be synced
type: string
removeVMwareTools:
default: true
description: |-
RemoveVMwareTools instructs the migration helper to remove VMware Tools post migration.
Defaults to true since most migrations require VMware Tools removal.
type: boolean
type: object
customMetadata:
additionalProperties:
type: string
description: |-
CustomMetadata is a map of additional key-value pairs applied as instance
metadata to every migrated VM in the plan. Keys here override colliding
keys derived from preserved source tags.
type: object
fallbackToDHCP:
type: boolean
firstBootScript:
default: echo "Add your startup script here!"
type: string
migrationStrategy:
description: MigrationStrategy is the strategy to be used for the
migration
properties:
adminInitiatedCutOver:
default: false
type: boolean
arrayOffload:
default: false
type: boolean
dataCopyStart:
format: date-time
type: string
dataOnly:
default: false
description: |-
DataOnly skips OpenStack VM creation; converted Cinder volumes are left staged.
Compatible with all strategy types (hot, cold, mock).
type: boolean
disconnectSourceNetwork:
default: false
type: boolean
healthCheckPort:
default: "443"
type: string
performHealthChecks:
default: false
type: boolean
type:
enum:
- hot
- cold
- mock
type: string
vmCutoverEnd:
format: date-time
type: string
vmCutoverStart:
format: date-time
type: string
required:
- type
type: object
migrationTemplate:
description: MigrationTemplate is the template to be used for the
migration
type: string
networkOverridesPerVM:
additionalProperties:
items:
description: NICOverride defines per-NIC overrides for IP and
MAC preservation during migration
properties:
UserAssignedIP:
type: string
interfaceIndex:
description: InterfaceIndex is the zero-based index of the
NIC
type: integer
preserveIP:
description: |-
PreserveIP indicates whether to preserve the source VM's IP address for this NIC.
When nil the migration default (preserve) is used.
type: boolean
preserveMAC:
description: |-
PreserveMAC indicates whether to preserve the source VM's MAC address for this NIC.
When nil the migration default (preserve) is used.
type: boolean
required:
- interfaceIndex
type: object
type: array
description: |-
NetworkOverridesPerVM is a map of VM names to per-NIC network overrides
Only NICs with non-default settings (i.e., preserve=false) need to be listed
type: object
postMigrationAction:
description: PostMigrationAction defines the post migration action
for the virtual machine
properties:
folderName:
type: string
moveToFolder:
type: boolean
renameVm:
type: boolean
suffix:
type: string
type: object
preserveSourceTags:
default: false
description: |-
PreserveSourceTags copies each source VM's vSphere tags and custom attributes
to the migrated VM as instance metadata. Applies to all VMs in the plan.
type: boolean
securityGroups:
items:
type: string
type: array
serverGroup:
type: string
virtualMachines:
description: VirtualMachines is a list of virtual machines to be migrated
items:
items:
type: string
type: array
type: array
required:
- migrationStrategy
- migrationTemplate
- virtualMachines
type: object
status:
description: |-
MigrationPlanStatus defines the observed state of MigrationPlan including
the current status and progress of the migration
properties:
migrationMessage:
description: MigrationMessage is the message associated with the migration
type: string
migrationStatus:
description: |-
MigrationStatus is the status of the migration using Kubernetes PodPhase states
(Pending, Running, Succeeded, Failed, Unknown)
type: string
required:
- migrationMessage
- migrationStatus
type: object
type: object
served: true
storage: true
subresources:
status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.1
name: migrations.vjailbreak.k8s.pf9.io
spec:
group: vjailbreak.k8s.pf9.io
names:
kind: Migration
listKind: MigrationList
plural: migrations
singular: migration
scope: Namespaced
versions:
- additionalPrinterColumns:
- jsonPath: .status.phase
name: Phase
type: string
- jsonPath: .status.agentName
name: Agent Name
type: string
- jsonPath: .spec.migrationPlan
name: MigrationPlan
type: string
- jsonPath: .metadata.creationTimestamp
name: Age
type: date
name: v1alpha1
schema:
openAPIV3Schema:
description: |-
Migration is the Schema for the migrations API that represents a single virtual machine
migration job from VMware to OpenStack. It tracks the complete migration lifecycle
including validation, data transfer, disk conversion, and cutover phases. Migration resources
provide detailed status monitoring, error handling, and manual intervention points like
cutover initiation. Each Migration is associated with a MigrationPlan and executes on a specific
VjailbreakNode agent, tracking progress via status updates and condition changes.
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: Spec defines the desired state of Migration
properties:
dataOnly:
description: DataOnly indicates no OpenStack VM should be created
after disk conversion.
type: boolean
disconnectSourceNetwork:
description: |-
DisconnectSourceNetwork specifies whether to disconnect the source VM's network interfaces
after a successful migration to prevent network conflicts. Defaults to false.
type: boolean
imageMetadata:
additionalProperties:
type: string
description: |-
ImageMetadata is the merged map of Cinder volume_image_metadata properties resolved
from the MigrationPlan's selected VolumeImageProfiles after OS-family filtering.
type: object
initiateCutover:
description: InitiateCutover is the flag to initiate cutover
type: boolean
migrationPlan:
description: MigrationPlan is the name of the migration plan
type: string
migrationType:
description: MigrationType indicates whether this is a hot (live)
or cold migration
enum:
- hot
- cold
- mock
type: string
networkOverrides:
description: NetworkOverrides is the JSON-serialized per-NIC overrides
for IP and MAC preservation
type: string
podRef:
description: PodRef is the name of the pod
type: string
preserveSourceTags:
default: false
description: |-
PreserveSourceTags indicates whether the source VM's vSphere tags and custom
attributes are copied to the migrated VM as instance metadata.
type: boolean
vmName:
description: VMName is the name of the VM getting migrated from VMWare
to Openstack
type: string
required:
- initiateCutover
- migrationPlan
- podRef
- vmName
type: object
status:
description: Status defines the observed state of Migration
properties:
agentName:
description: AgentName is the name of the agent where migration is
running
type: string
conditions:
description: Conditions is the list of conditions of the migration
object pod
items:
description: PodCondition contains details for the current condition
of this pod.
properties:
lastProbeTime:
description: Last time we probed the condition.
format: date-time
type: string
lastTransitionTime:
description: Last time the condition transitioned from one status
to another.
format: date-time
type: string
message:
description: Human-readable message indicating details about
last transition.
type: string
observedGeneration:
description: |-
If set, this represents the .metadata.generation that the pod condition was set based upon.
This is an alpha field. Enable PodObservedGenerationTracking to be able to use this field.
format: int64
type: integer
reason:
description: Unique, one-word, CamelCase reason for the condition's
last transition.
type: string
status:
description: |-
Status is the status of the condition.
Can be True, False, Unknown.
More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
type: string
type:
description: |-
Type is the type of the condition.
More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
type: string
required:
- status
- type
type: object
type: array
currentDisk:
description: |-
CurrentDisk tracks which disk is currently being copied (e.g., "0", "1")
Extracted from migration pod events
type: string
phase:
description: Phase is the current phase of the migration
enum:
- Pending
- Validating
- ValidationFailed
- AwaitingDataCopyStart
- CopyingBlocks
- CopyingChangedBlocks
- ConvertingDisk
- AwaitingCutOverStartTime
- AwaitingAdminCutOver
- Succeeded
- Failed
- Unknown
- ConnectingToESXi
- CreatingInitiatorGroup
- CreatingVolume
- ImportingToCinder
- MappingVolume
- RescanningStorage
- XCOPYInProgress
- SnapshottingSourceVM
- AttachingDisksToProxy
- IdentifyingBlockDevices
- HotAddTransferInProgress
- HotAddCleanup
- DataCopied
type: string
retryable:
description: |-
Retryable indicates whether this migration can be retried when it fails.
Set to false for VMs with RDM (Raw Device Mapping) disks that share storage,
as RDM disk migration state prevents automatic retry.
type: boolean
stagedVolumeIDs:
description: StagedVolumeIDs lists the Cinder volume IDs created during
a data-only migration.
items:
type: string
type: array
syncWarningMessage:
description: |-
SyncWarningMessage contains the warning message when periodic sync is in a warning state.
If non-empty, indicates the sync failed but will auto-retry on next interval.
type: string
totalDisks:
description: TotalDisks is the total number of disks to be migrated
type: integer
required:
- phase
type: object
type: object
served: true
storage: true
subresources:
status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.1
name: migrationtemplates.vjailbreak.k8s.pf9.io
spec:
group: vjailbreak.k8s.pf9.io
names:
kind: MigrationTemplate
listKind: MigrationTemplateList
plural: migrationtemplates
singular: migrationtemplate
scope: Namespaced
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
description: |-
MigrationTemplate is the Schema for the migrationtemplates API that defines how VMs should be migrated
from VMware to OpenStack including network and storage mappings. It serves as a reusable template
that can be referenced by multiple migration plans, providing configuration for source and destination
environments, OS-specific settings, and network/storage mappings. Migration templates enable consistent
configuration across multiple VM migrations and simplify the definition of migration plans.
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: MigrationTemplateSpec defines the desired state of MigrationTemplate
including source/destination environments and mappings
properties:
arrayCredsMapping:
description: |-
ArrayCredsMapping is the reference to the ArrayCredsMapping resource that defines datastore to ArrayCreds mappings
This is used for StorageAcceleratedCopy data copy method
type: string
destination:
description: Destination is the destination details for the virtual
machine
properties:
openstackRef:
description: OpenstackRef is the reference to the OpenStack credentials
to be used as the destination environment
type: string
required:
- openstackRef
type: object
networkMapping:
description: |-
NetworkMapping is the reference to the NetworkMapping resource that defines source to destination network mappings.
Optional: when the selected VMs have no attached VMware networks, no NetworkMapping is required and this field
may be empty. The controller will skip network reconciliation in that case.
type: string
osFamily:
description: OSFamily is the OS type of the virtual machine
enum:
- windowsGuest
- linuxGuest
type: string
proxyVMRef:
description: |-
ProxyVMRef references the ProxyVM to use for HotAdd data copy.
Required when StorageCopyMethod is "HotAdd".
properties:
name:
default: ""
description: |-
Name of the referent.
This field is effectively required, but due to backwards compatibility is
allowed to be empty. Instances of this type with an empty value here are
almost certainly wrong.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
type: object
x-kubernetes-map-type: atomic
source:
description: Source is the source details for the virtual machine
properties:
vmwareRef:
description: VMwareRef is the reference to the VMware credentials
to be used as the source environment
type: string
required:
- vmwareRef
type: object
storageCopyMethod:
default: normal
description: |-
StorageCopyMethod indicates the method to use for storage migration
Valid values: "normal" (default), "StorageAcceleratedCopy", "HotAdd"
enum:
- normal
- StorageAcceleratedCopy
- HotAdd
type: string
storageMapping:
description: |-
StorageMapping is the reference to the StorageMapping resource that defines source to destination storage mappings
This is used for normal data copy method
type: string
targetPCDClusterName:
description: TargetPCDClusterName is the name of the PCD cluster where
the virtual machine will be migrated
type: string
useGPUFlavor:
description: UseGPUFlavor indicates if the migration should filter
and use GPU-enabled flavors.
type: boolean
virtioWinDriver:
description: VirtioWinDriver is the driver to be used for the virtual
machine
type: string
required:
- destination
- source
type: object
type: object
served: true
storage: true
subresources:
status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.1
name: networkmappings.vjailbreak.k8s.pf9.io
spec:
group: vjailbreak.k8s.pf9.io
names:
kind: NetworkMapping
listKind: NetworkMappingList
plural: networkmappings
singular: networkmapping
scope: Namespaced
versions:
- additionalPrinterColumns:
- jsonPath: .status.networkMappingValidationStatus
name: Status
type: string
- jsonPath: .metadata.creationTimestamp
name: Age
type: date
name: v1alpha1
schema:
openAPIV3Schema:
description: |-
NetworkMapping is the Schema for the networkmappings API that defines
mappings between VMware and OpenStack networks to be used during migration
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: |-
NetworkMappingSpec defines the desired state of NetworkMapping including
mappings between VMware and OpenStack networks
properties:
networks:
description: Networks is the list of network mappings between source
(VMware) and target (OpenStack) environments
items:
description: Network represents a mapping between source and target
networks
properties:
source:
description: Source is the name of the source network in VMware
type: string
target:
description: Target is the name of the target network in OpenStack
type: string
required:
- source
- target
type: object
type: array
required:
- networks
type: object
status:
description: NetworkMappingStatus defines the observed state of NetworkMapping
properties:
networkMappingValidationMessage:
description: |-
NetworkmappingValidationMessage provides detailed validation information including
information about available networks and any validation errors
type: string
networkMappingValidationStatus:
description: |-
NetworkmappingValidationStatus indicates the validation status of the network mapping
Valid states include: "Valid", "Invalid", "Pending", "ValidationFailed"
type: string
type: object
type: object
served: true
storage: true
subresources:
status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.1
name: openstackcreds.vjailbreak.k8s.pf9.io
spec:
group: vjailbreak.k8s.pf9.io
names:
kind: OpenstackCreds
listKind: OpenstackCredsList
plural: openstackcreds
singular: openstackcreds
scope: Namespaced
versions:
- additionalPrinterColumns:
- jsonPath: .status.openstackValidationStatus
name: Status
type: string
- jsonPath: .spec.secretRef.name
name: Secret Name
type: string
- jsonPath: .metadata.creationTimestamp
name: Age
type: date
name: v1alpha1
schema:
openAPIV3Schema:
description: |-
OpenstackCreds is the Schema for the OpenStack credentials API that defines authentication
and connection details for OpenStack environments. It provides a secure way to store and validate
OpenStack credentials for use in migration operations, including authentication information,
available compute flavors, volume types, networks, and Platform9 Distributed Cloud host configurations.
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: OpenstackCredsSpec defines the desired state of OpenstackCreds
properties:
flavors:
description: Flavors is the list of available flavors in openstack
items:
description: |-
Flavor represent (virtual) hardware configurations for server resources
in a region.
properties:
OS-FLV-EXT-DATA:ephemeral:
description: Ephemeral is the amount of ephemeral disk space,
measured in GB.
type: integer
description:
description: |-
Description is a free form description of the flavor. Limited to
65535 characters in length. Only printable characters are allowed.
New in version 2.55
type: string
disk:
description: Disk is the amount of root disk, measured in GB.
type: integer
extra_specs:
additionalProperties:
type: string
description: |-
Properties is a dictionary of the flavor’s extra-specs key-and-value
pairs. This will only be included if the user is allowed by policy to
index flavor extra_specs
New in version 2.61
type: object
id:
description: ID is the flavor's unique ID.
type: string
name:
description: Name is the name of the flavor.
type: string
os-flavor-access:is_public:
description: IsPublic indicates whether the flavor is public.
type: boolean
ram:
description: RAM is the amount of memory, measured in MB.
type: integer
rxtx_factor:
description: RxTxFactor describes bandwidth alterations of the
flavor.
type: number
vcpus:
description: VCPUs indicates how many (virtual) CPUs are available
for this flavor.
type: integer
required:
- OS-FLV-EXT-DATA:ephemeral
- description
- disk
- extra_specs
- id
- name
- os-flavor-access:is_public
- ram
- rxtx_factor
- vcpus
type: object
type: array
osAuthToken:
type: string
osAuthUrl:
type: string
osDomainName:
type: string
osIdentityApiVersion:
type: string
osInsecure:
type: boolean
osInterface:
type: string
osPassword:
type: string
osRegionName:
type: string
osTenantName:
type: string
osUsername:
type: string
pcdHostConfig:
description: PCDHostConfig is the list of available clusters in openstack
items:
description: HostConfig defines the configuration for a Platform9
Distributed Cloud host
properties:
clusterName:
type: string
hostLivenessInterface:
type: string
id:
type: string
imagelibInterface:
type: string
mgmtInterface:
type: string
name:
type: string
networkLabels:
additionalProperties:
type: string
type: object
tunnelingInterface:
type: string
vmConsoleInterface:
type: string
type: object
type: array
projectName:
description: ProjectName is the name of the project in openstack
type: string
secretRef:
description: SecretRef is the reference to the Kubernetes secret holding
OpenStack credentials
properties:
apiVersion:
description: API version of the referent.
type: string
fieldPath:
description: |-
If referring to a piece of an object instead of an entire object, this string
should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
For example, if the object reference is to a container within a pod, this would take on a value like:
"spec.containers{name}" (where "name" refers to the name of the container that triggered
the event) or if no container name is specified "spec.containers[2]" (container with
index 2 in this pod). This syntax is chosen only to have some well-defined way of
referencing a part of an object.
type: string
kind:
description: |-
Kind of the referent.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
name:
description: |-
Name of the referent.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
namespace:
description: |-
Namespace of the referent.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
type: string
resourceVersion:
description: |-
Specific resourceVersion to which this reference is made, if any.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
type: string
uid:
description: |-
UID of the referent.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
type: string
type: object
x-kubernetes-map-type: atomic
type: object
status:
description: OpenstackCredsStatus defines the observed state of OpenstackCreds
properties:
openstack:
description: Openstack is the OpenStack configuration for the openstackcreds
properties:
backendVolumeTypeMap:
additionalProperties:
type: string
type: object
networks:
items:
description: PCDNetworkInfo is struct to hold network information
for PCD
properties:
name:
type: string
tags:
items:
type: string
type: array
required:
- name
- tags
type: object
type: array
securityGroups:
items:
description: SecurityGroupInfo holds the security group name
and ID
properties:
id:
type: string
name:
type: string
requiresIdDisplay:
type: boolean
required:
- id
- name
- requiresIdDisplay
type: object
type: array
serverGroups:
items:
description: ServerGroupInfo holds the server group name, ID,
and policy information
properties:
id:
type: string
members:
type: integer
name:
type: string
policy:
type: string
required:
- id
- name
- policy
type: object
type: array
volumeBackends:
items:
type: string
type: array
volumeTypes:
items:
type: string
type: array
type: object
openstackValidationMessage:
description: OpenStackValidationMessage is the message associated
with the OpenStack validation
type: string
openstackValidationStatus:
description: OpenStackValidationStatus is the status of the OpenStack
validation
type: string
type: object
type: object
served: true
storage: true
subresources:
status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.1
name: pcdclusters.vjailbreak.k8s.pf9.io
spec:
group: vjailbreak.k8s.pf9.io
names:
kind: PCDCluster
listKind: PCDClusterList
plural: pcdclusters
singular: pcdcluster
scope: Namespaced
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
description: |-
PCDCluster is the Schema for the pcdclusters API that represents a Platform9 Distributed Cloud
cluster in the migration system. It defines cluster configuration including host membership,
high availability settings, and resource rebalancing policies. PCDCluster resources track both
the desired state of clusters as part of migration planning and the observed state of actual
PCD clusters in the target environment. They serve as destination targets for VM migrations
from VMware ESXi environments.
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: PCDClusterSpec defines the desired state of PCDCluster
properties:
clusterName:
description: ClusterName is the name of the PCD cluster
type: string
description:
description: Description is the description of the PCD cluster
type: string
enableAutoResourceRebalancing:
description: EnableAutoResourceRebalancing indicates if auto resource
rebalancing is enabled
type: boolean
hosts:
description: Hosts is the list of hosts in the PCD cluster
items:
type: string
type: array
rebalancingFrequencyMins:
description: RebalancingFrequencyMins defines how often rebalancing
occurs in minutes
type: integer
vmHighAvailability:
description: VMHighAvailability indicates if VM high availability
is enabled
type: boolean
type: object
status:
description: PCDClusterStatus defines the observed state of PCDCluster
properties:
aggregateID:
description: AggregateID is the aggregate ID in the PCD cluster
type: integer
clusterID:
description: ClusterID is the ID of the PCD cluster
type: string
createdAt:
description: CreatedAt indicates when the cluster was created
type: string
updatedAt:
description: UpdatedAt indicates when the cluster was last updated
type: string
type: object
type: object
served: true
storage: true
subresources:
status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.1
name: pcdhosts.vjailbreak.k8s.pf9.io
spec:
group: vjailbreak.k8s.pf9.io
names:
kind: PCDHost
listKind: PCDHostList
plural: pcdhosts
singular: pcdhost
scope: Namespaced
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
description: |-
PCDHost is the Schema for the pcdhosts API that represents a physical or virtual host
in a Platform9 Distributed Cloud environment. It tracks the host's configuration,
network interfaces, assigned roles, and operational status. PCDHost resources are created
as part of the migration process when converting ESXi hosts to PCD hosts or when provisioning
new infrastructure to replace migrated VMware hosts.
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: PCDHostSpec defines the desired state of PCDHost
properties:
arch:
type: string
hostID:
description: HostID is the ID of the host
type: string
hostName:
description: HostName is the name of the host
type: string
hostState:
description: HostState is the state of the host
type: string
interfaces:
items:
description: |-
PCDHostInterface defines the network interface configuration for a Platform9 Distributed Cloud host,
including IP addresses, MAC address, and interface name. It's used to configure proper network
connectivity for PCD hosts created during the migration process.
properties:
ipAddresses:
items:
type: string
type: array
macAddress:
type: string
name:
type: string
type: object
type: array
osFamily:
type: string
osInfo:
type: string
rolesAssigned:
description: RolesAssigned is the list of roles assigned to the host
items:
type: string
type: array
type: object
status:
description: PCDHostStatus defines the observed state of PCDHost
properties:
responding:
type: boolean
roleStatus:
type: string
type: object
type: object
served: true
storage: true
subresources:
status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.1
name: proxyvms.vjailbreak.k8s.pf9.io
spec:
group: vjailbreak.k8s.pf9.io
names:
kind: ProxyVM
listKind: ProxyVMList
plural: proxyvms
singular: proxyvm
scope: Namespaced
versions:
- additionalPrinterColumns:
- jsonPath: .spec.vmName
name: VM-Name
type: string
- jsonPath: .status.validationStatus
name: Status
type: string
- jsonPath: .status.ipAddress
name: IP
type: string
- jsonPath: .status.attachedDiskCount
name: Attached-Disks
type: integer
name: v1alpha1
schema:
openAPIV3Schema:
description: ProxyVM is the Schema for the proxyvms API.
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: ProxyVMSpec defines the desired state of ProxyVM
properties:
sshKeyPairRef:
description: |-
LocalObjectReference contains enough information to let you locate the
referenced object inside the same namespace.
properties:
name:
default: ""
description: |-
Name of the referent.
This field is effectively required, but due to backwards compatibility is
allowed to be empty. Instances of this type with an empty value here are
almost certainly wrong.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
type: object
x-kubernetes-map-type: atomic
vmName:
type: string
vmwareCredsRef:
description: |-
LocalObjectReference contains enough information to let you locate the
referenced object inside the same namespace.
properties:
name:
default: ""
description: |-
Name of the referent.
This field is effectively required, but due to backwards compatibility is
allowed to be empty. Instances of this type with an empty value here are
almost certainly wrong.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
type: object
x-kubernetes-map-type: atomic
required:
- vmName
- vmwareCredsRef
type: object
status:
description: ProxyVMStatus defines the observed state of ProxyVM
properties:
attachedDiskCount:
type: integer
componentsVerified:
items:
description: ProxyVMComponentCheck records whether a required component
was found on the Proxy VM.
properties:
message:
type: string
name:
type: string
present:
type: boolean
required:
- name
- present
type: object
type: array
ipAddress:
type: string
lastValidationTime:
format: date-time
type: string
validationMessage:
type: string
validationStatus:
type: string
type: object
type: object
served: true
storage: true
subresources:
status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.1
name: rdmdisks.vjailbreak.k8s.pf9.io
spec:
group: vjailbreak.k8s.pf9.io
names:
kind: RDMDisk
listKind: RDMDiskList
plural: rdmdisks
singular: rdmdisk
scope: Namespaced
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
description: RDMDisk is the Schema for the RDMDisks API.
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: Spec defines the desired state of RDMDisk
properties:
diskName:
description: 'Important: Run "make" to regenerate code after modifying
this file'
type: string
diskSize:
type: integer
displayName:
type: string
importToCinder:
type: boolean
openstackVolumeRef:
description: OpenstackVolumeRef ... contains information about the
OpenStack volume reference.
properties:
cinderBackendPool:
type: string
openstackCreds:
type: string
source:
additionalProperties:
type: string
type: object
volumeType:
type: string
type: object
ownerVMs:
items:
type: string
type: array
uuid:
type: string
required:
- diskName
- diskSize
- displayName
- ownerVMs
- uuid
type: object
status:
description: RDMDiskStatus defines the observed state of RDMDisk.
properties:
cinderVolumeID:
type: string
conditions:
items:
description: Condition contains details for one aspect of the current
state of this API Resource.
properties:
lastTransitionTime:
description: |-
lastTransitionTime is the last time the condition transitioned from one status to another.
This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
format: date-time
type: string
message:
description: |-
message is a human readable message indicating details about the transition.
This may be an empty string.
maxLength: 32768
type: string
observedGeneration:
description: |-
observedGeneration represents the .metadata.generation that the condition was set based upon.
For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
with respect to the current state of the instance.
format: int64
minimum: 0
type: integer
reason:
description: |-
reason contains a programmatic identifier indicating the reason for the condition's last transition.
Producers of specific condition types may define expected values and meanings for this field,
and whether the values are considered a guaranteed API.
The value should be a CamelCase string.
This field may not be empty.
maxLength: 1024
minLength: 1
pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
type: string
status:
description: status of the condition, one of True, False, Unknown.
enum:
- "True"
- "False"
- Unknown
type: string
type:
description: type of condition in CamelCase or in foo.example.com/CamelCase.
maxLength: 316
pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
type: string
required:
- lastTransitionTime
- message
- reason
- status
- type
type: object
type: array
phase:
enum:
- Available
- Managing
- Managed
- Error
type: string
type: object
type: object
served: true
storage: true
subresources:
status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.1
name: rollingmigrationplans.vjailbreak.k8s.pf9.io
spec:
group: vjailbreak.k8s.pf9.io
names:
kind: RollingMigrationPlan
listKind: RollingMigrationPlanList
plural: rollingmigrationplans
singular: rollingmigrationplan
scope: Namespaced
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
description: |-
RollingMigrationPlan is the Schema for the rollingmigrationplans API that defines a coordinated
migration of multiple VMware clusters and ESXi hosts to Platform9 Distributed Cloud (PCD).
It supports sequenced migration of VMs across clusters with configurable batch sizes,
cluster-to-cluster mapping, and tracking of migration progress across the entire datacenter migration.
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: RollingMigrationPlanSpec defines the desired state of RollingMigrationPlan
properties:
advancedOptions:
description: AdvancedOptions is a list of advanced options for the
migration
properties:
acknowledgeNetworkConflictRisk:
description: AcknowledgeNetworkConflictRisk indicates that the
user acknowledges the risk of network conflicts when doing live
migration
type: boolean
granularNetworks:
description: GranularNetworks is a list of networks to be migrated
items:
type: string
type: array
granularPorts:
description: GranularPorts is a list of ports to be migrated
items:
type: string
type: array
granularVolumeTypes:
description: GranularVolumeTypes is a list of volume types to
be migrated
items:
type: string
type: array
imageProfiles:
description: ImageProfiles is the ordered list of VolumeImageProfile
names to apply to the migrated VM's boot volume.
items:
type: string
type: array
networkPersistence:
description: NetworkPersistence instructs the migration helper
to persist the source networking configuration
type: boolean
periodicSyncEnabled:
description: PeriodicSyncEnabled is a boolean to enable periodic
sync
type: boolean
periodicSyncInterval:
description: PeriodicSyncInterval is the interval at which the
migration plan should be synced
type: string
removeVMwareTools:
default: true
description: |-
RemoveVMwareTools instructs the migration helper to remove VMware Tools post migration.
Defaults to true since most migrations require VMware Tools removal.
type: boolean
type: object
bmConfigRef:
description: BMConfigRef is the reference to the BMC credentials
properties:
name:
default: ""
description: |-
Name of the referent.
This field is effectively required, but due to backwards compatibility is
allowed to be empty. Instances of this type with an empty value here are
almost certainly wrong.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
type: object
x-kubernetes-map-type: atomic
cloudInitConfigRef:
description: CloudInitConfigRef is the reference to the cloud-init
configuration
properties:
name:
description: name is unique within a namespace to reference a
secret resource.
type: string
namespace:
description: namespace defines the space within which the secret
name must be unique.
type: string
type: object
x-kubernetes-map-type: atomic
clusterMapping:
description: ClusterMapping is the mapping of vCenter clusters to
PCD clusters
items:
description: |-
ClusterMapping defines the relationship between a VMware vCenter cluster and its corresponding
Platform9 Distributed Cloud (PCD) cluster for migration operations. This mapping ensures that
virtual machines are properly migrated to the appropriate target infrastructure.
properties:
pcdClusterName:
description: PCDClusterName is the name of the PCD cluster
type: string
vmwareClusterName:
description: VMwareClusterName is the name of the vCenter cluster
type: string
required:
- pcdClusterName
- vmwareClusterName
type: object
type: array
clusterSequence:
description: ClusterSequence is the sequence of vCenter clusters to
be migrated
items:
description: |-
ClusterMigrationInfo defines information about a VMware vCenter cluster migration,
including the cluster name and the sequence of virtual machines to be migrated.
This structure allows for coordinated migration of multiple related VMs within a cluster.
properties:
clusterName:
description: ClusterName is the name of the vCenter cluster
to be migrated
type: string
vmMigrationBatchSize:
default: 10
description: |-
VMMigrationBatchSize is the number of VMs in one batch for migration
batches will be processed sequentially, but all VMs in a batch
will be migrated in parallel. Default is 10
minimum: 1
type: integer
vmSequence:
description: VMSequence is the sequence of virtual machines
to be migrated
items:
description: |-
VMSequenceInfo defines information about a virtual machine in the migration sequence,
including its name and the ESXi host where it is located. This information is used to
establish the proper order and grouping of VMs during the migration process.
properties:
esxiName:
description: ESXiName is the name of the ESXi host where
the virtual machine is located
type: string
vmName:
description: VMName is the name of the virtual machine
to be migrated
type: string
required:
- vmName
type: object
type: array
required:
- clusterName
- vmSequence
type: object
type: array
customMetadata:
additionalProperties:
type: string
description: |-
CustomMetadata is a map of additional key-value pairs applied as instance
metadata to every migrated VM in the plan. Keys here override colliding
keys derived from preserved source tags.
type: object
firstBootScript:
default: echo "Add your startup script here!"
type: string
migrationStrategy:
description: MigrationStrategy is the strategy to be used for the
migration
properties:
adminInitiatedCutOver:
default: false
type: boolean
arrayOffload:
default: false
type: boolean
dataCopyStart:
format: date-time
type: string
dataOnly:
default: false
description: |-
DataOnly skips OpenStack VM creation; converted Cinder volumes are left staged.
Compatible with all strategy types (hot, cold, mock).
type: boolean
disconnectSourceNetwork:
default: false
type: boolean
healthCheckPort:
default: "443"
type: string
performHealthChecks:
default: false
type: boolean
type:
enum:
- hot
- cold
- mock
type: string
vmCutoverEnd:
format: date-time
type: string
vmCutoverStart:
format: date-time
type: string
required:
- type
type: object
migrationTemplate:
description: MigrationTemplate is the template to be used for the
migration
type: string
postMigrationAction:
description: PostMigrationAction defines the post migration action
for the virtual machine
properties:
folderName:
type: string
moveToFolder:
type: boolean
renameVm:
type: boolean
suffix:
type: string
type: object
preserveSourceTags:
default: false
description: |-
PreserveSourceTags copies each source VM's vSphere tags and custom attributes
to the migrated VM as instance metadata. Applies to all VMs in the plan.
type: boolean
vmMigrationPlans:
description: VMMigrationPlans is the reference to the VM migration
plan
items:
type: string
type: array
required:
- bmConfigRef
- clusterSequence
- migrationStrategy
- migrationTemplate
type: object
status:
description: RollingMigrationPlanStatus defines the observed state of
RollingMigrationPlan
properties:
currentCluster:
description: CurrentCluster is the name of the current vCenter cluster
being migrated
type: string
currentESXi:
description: CurrentESXi is the name of the current ESXi host being
migrated
type: string
currentVM:
description: CurrentVM is the name of the current virtual machine
being migrated
type: string
failedClusters:
description: FailedClusters is the list of vCenter clusters that have
failed to migrate
items:
type: string
type: array
failedESXi:
description: FailedESXi is the list of ESXi hosts that have failed
to migrate
items:
type: string
type: array
failedVMs:
description: FailedVMs is the list of virtual machines that have failed
to migrate
items:
type: string
type: array
message:
description: Message is the message associated with the current state
of the migration
type: string
migratedClusters:
description: MigratedClusters is the list of vCenter clusters that
have been migrated
items:
type: string
type: array
migratedESXi:
description: MigratedESXi is the list of ESXi hosts that have been
migrated
items:
type: string
type: array
migratedVMs:
description: MigratedVMs is the list of virtual machines that have
been migrated
items:
type: string
type: array
phase:
description: Phase is the current phase of the migration
type: string
vmMigrationPhase:
description: VMMigrationsPhase is the list of VM migration plans
type: string
type: object
type: object
served: true
storage: true
subresources:
status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.1
name: storagemappings.vjailbreak.k8s.pf9.io
spec:
group: vjailbreak.k8s.pf9.io
names:
kind: StorageMapping
listKind: StorageMappingList
plural: storagemappings
singular: storagemapping
scope: Namespaced
versions:
- additionalPrinterColumns:
- jsonPath: .status.storageMappingValidationStatus
name: Status
type: string
- jsonPath: .metadata.creationTimestamp
name: Age
type: date
name: v1alpha1
schema:
openAPIV3Schema:
description: |-
StorageMapping is the Schema for the storagemappings API that defines
mappings between VMware and OpenStack storage types to be used during migration
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: |-
StorageMappingSpec defines the desired state of StorageMapping including
mappings between VMware and OpenStack storage types
properties:
storages:
description: Storages is a list of storage mappings between source
(VMware) and target (OpenStack) environments
items:
description: Storage represents a mapping between source and target
storage types
properties:
source:
description: Source is the name of the source storage type in
VMware
type: string
target:
description: Target is the name of the target storage type in
OpenStack
type: string
required:
- source
- target
type: object
type: array
required:
- storages
type: object
status:
description: StorageMappingStatus defines the observed state of StorageMapping
properties:
storageMappingValidationMessage:
description: |-
StoragemappingValidationMessage provides detailed validation information including
information about available storage types and any validation errors
type: string
storageMappingValidationStatus:
description: |-
StoragemappingValidationStatus indicates the validation status of the storage mapping
Valid states include: "Valid", "Invalid", "Pending", "ValidationFailed"
type: string
type: object
type: object
served: true
storage: true
subresources:
status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.1
name: vjailbreaknodes.vjailbreak.k8s.pf9.io
spec:
group: vjailbreak.k8s.pf9.io
names:
kind: VjailbreakNode
listKind: VjailbreakNodeList
plural: vjailbreaknodes
singular: vjailbreaknode
scope: Namespaced
versions:
- additionalPrinterColumns:
- jsonPath: .status.phase
name: Phase
type: string
- jsonPath: .status.vmIP
name: VMIP
type: string
name: v1alpha1
schema:
openAPIV3Schema:
description: |-
VjailbreakNode is the Schema for the vjailbreaknodes API that represents
a node in the migration infrastructure with configuration, resource limits,
and statistics for monitoring migration progress
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: Spec defines the desired state of VjailbreakNode
properties:
nodeRole:
description: NodeRole is the role assigned to the node (e.g., "worker",
"controller")
type: string
openstackCreds:
description: |-
OpenstackCreds is the reference to the credentials for the OpenStack environment
where the node will be provisioned
properties:
apiVersion:
description: API version of the referent.
type: string
fieldPath:
description: |-
If referring to a piece of an object instead of an entire object, this string
should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
For example, if the object reference is to a container within a pod, this would take on a value like:
"spec.containers{name}" (where "name" refers to the name of the container that triggered
the event) or if no container name is specified "spec.containers[2]" (container with
index 2 in this pod). This syntax is chosen only to have some well-defined way of
referencing a part of an object.
type: string
kind:
description: |-
Kind of the referent.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
name:
description: |-
Name of the referent.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
namespace:
description: |-
Namespace of the referent.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
type: string
resourceVersion:
description: |-
Specific resourceVersion to which this reference is made, if any.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
type: string
uid:
description: |-
UID of the referent.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
type: string
type: object
x-kubernetes-map-type: atomic
openstackFlavorID:
description: OpenstackFlavorID is the flavor of the VM
type: string
openstackImageID:
description: OpenstackImageID is the image of the VM
type: string
openstackSecurityGroups:
description: |-
OpenstackSecurityGroups is the list of security groups for the VM
If empty, the security groups will be determined from the master node
items:
type: string
type: array
openstackServerGroup:
description: |-
OpenstackServerGroup is the ID of the OpenStack server group used for VM placement scheduling.
When set, the agent VM is placed according to the server group's policy.
If empty, default OpenStack scheduling applies.
type: string
openstackVolumeType:
description: |-
OpenstackVolumeType is the volume type for the root disk of the VM
If empty, the volume type will be determined from the master node
type: string
required:
- nodeRole
- openstackCreds
- openstackFlavorID
- openstackImageID
type: object
status:
description: Status defines the observed state of VjailbreakNode
properties:
activeMigrations:
description: |-
ActiveMigrations is the list of active migrations currently being processed on this node,
containing references to MigrationPlan resources
items:
type: string
type: array
openstackUUID:
description: OpenstackUUID is the UUID of the VM in OpenStack
type: string
phase:
description: |-
Phase is the current lifecycle phase of the node
(e.g., Provisioning, Ready, Error, Decommissioning)
type: string
vmIP:
description: VMIP is the IP address of the VM
type: string
required:
- vmIP
type: object
type: object
served: true
storage: true
subresources:
status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.1
name: vmwareclusters.vjailbreak.k8s.pf9.io
spec:
group: vjailbreak.k8s.pf9.io
names:
kind: VMwareCluster
listKind: VMwareClusterList
plural: vmwareclusters
singular: vmwarecluster
scope: Namespaced
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
description: |-
VMwareCluster is the Schema for the vmwareclusters API that represents a VMware vSphere cluster
in the source environment. It tracks cluster configuration, member hosts, and migration status
as part of the VMware to Platform9 Distributed Cloud migration process. VMwareCluster resources
serve as source components that are migrated to corresponding PCDCluster resources in the target environment.
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: VMwareClusterSpec defines the desired state of VMwareCluster
properties:
hosts:
description: Hosts is the list of hosts in the VMware cluster
items:
type: string
type: array
name:
description: Name is the name of the VMware cluster
type: string
type: object
status:
description: VMwareClusterStatus defines the observed state of VMwareCluster
properties:
phase:
description: Phase is the current phase of the VMwareCluster
type: string
type: object
type: object
served: true
storage: true
subresources:
status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.1
name: vmwarecreds.vjailbreak.k8s.pf9.io
spec:
group: vjailbreak.k8s.pf9.io
names:
kind: VMwareCreds
listKind: VMwareCredsList
plural: vmwarecreds
singular: vmwarecreds
scope: Namespaced
versions:
- additionalPrinterColumns:
- jsonPath: .status.vmwareValidationStatus
name: Status
type: string
- jsonPath: .spec.secretRef.name
name: Secret Name
type: string
- jsonPath: .metadata.creationTimestamp
name: Age
type: date
name: v1alpha1
schema:
openAPIV3Schema:
description: |-
VMwareCreds is the Schema for the vmwarecreds API that defines authentication
and connection details for VMware vSphere environments. It provides a secure way to
store and validate vCenter credentials for use in migration operations, including
connection parameters, authentication information, and datacenter configuration.
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: VMwareCredsSpec defines the desired state of VMwareCreds
properties:
datacenter:
description: DataCenter is the datacenter for the virtual machine
type: string
secretRef:
description: SecretRef is the reference to the Kubernetes secret holding
VMware credentials
properties:
apiVersion:
description: API version of the referent.
type: string
fieldPath:
description: |-
If referring to a piece of an object instead of an entire object, this string
should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
For example, if the object reference is to a container within a pod, this would take on a value like:
"spec.containers{name}" (where "name" refers to the name of the container that triggered
the event) or if no container name is specified "spec.containers[2]" (container with
index 2 in this pod). This syntax is chosen only to have some well-defined way of
referencing a part of an object.
type: string
kind:
description: |-
Kind of the referent.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
name:
description: |-
Name of the referent.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
namespace:
description: |-
Namespace of the referent.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
type: string
resourceVersion:
description: |-
Specific resourceVersion to which this reference is made, if any.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
type: string
uid:
description: |-
UID of the referent.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
type: string
type: object
x-kubernetes-map-type: atomic
vcenterHost:
description: VcenterHost is the vCenter host
type: string
type: object
status:
description: VMwareCredsStatus defines the observed state of VMwareCreds
properties:
vmwareValidationMessage:
description: VMwareValidationMessage is the message associated with
the VMware validation
type: string
vmwareValidationStatus:
description: VMwareValidationStatus is the status of the VMware validation
type: string
type: object
type: object
served: true
storage: true
subresources:
status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.1
name: vmwarehosts.vjailbreak.k8s.pf9.io
spec:
group: vjailbreak.k8s.pf9.io
names:
kind: VMwareHost
listKind: VMwareHostList
plural: vmwarehosts
singular: vmwarehost
scope: Namespaced
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
description: |-
VMwareHost is the Schema for the vmwarehosts API that represents a VMware ESXi host
in the source environment. It tracks host configuration, hardware identification, and cluster membership
as part of the VMware to Platform9 Distributed Cloud migration process. VMwareHost resources are
source components that are migrated to PCDHost resources in the target environment and are automatically
removed from vCenter inventory after all VMs have been migrated off and the host is in maintenance mode.
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: VMwareHostSpec defines the desired state of VMwareHost
properties:
clusterName:
description: Cluster name of the host
type: string
hardwareUuid:
description: Hardware UUID of the host
type: string
hostConfigId:
description: Host config ID of the host
type: string
name:
description: Name of the host
type: string
state:
description: State is the connection state of the host
type: string
vmCount:
description: VMCount is the number of VMs on the host
type: integer
type: object
status:
description: VMwareHostStatus defines the observed state of VMwareHost
properties:
esxiVersion:
description: ESXiVersion is the ESXi version retrieved via SSH if
connection succeeded
type: string
sshLastChecked:
description: SSHLastChecked is the timestamp of the last SSH validation
attempt
format: date-time
type: string
sshMessage:
description: SSHMessage contains details about the SSH validation
result or error
type: string
sshStatus:
description: SSHStatus is the SSH validation status for this host
(Succeeded, Failed, Pending)
type: string
type: object
type: object
served: true
storage: true
subresources:
status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.1
name: vmwaremachines.vjailbreak.k8s.pf9.io
spec:
group: vjailbreak.k8s.pf9.io
names:
kind: VMwareMachine
listKind: VMwareMachineList
plural: vmwaremachines
singular: vmwaremachine
scope: Namespaced
versions:
- additionalPrinterColumns:
- jsonPath: .status.powerState
name: PowerState
type: string
- jsonPath: .spec.migrated
name: Migrated
type: boolean
- jsonPath: .metadata.creationTimestamp
name: Age
type: date
name: v1alpha1
schema:
openAPIV3Schema:
description: |-
VMwareMachine is the Schema for the vmwaremachines API that represents a virtual machine
in the VMware source environment targeted for migration. It tracks VM configuration,
resource allocation, migration status, and target environment specifications.
VMwareMachine resources are the primary workloads migrated from VMware to OpenStack
as part of the migration process and contain all necessary information to recreate
equivalent virtual machines in the target environment.
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: VMwareMachineSpec defines the desired state of VMwareMachine
properties:
targetFlavorId:
description: TargetFlavorId is the flavor to be used to create the
target VM on openstack
type: string
vms:
description: VMInfo is the info of the VMs in the VMwareMachine
properties:
assignedIp:
description: AssignedIp is the IP address assigned to the VM
type: string
clusterName:
description: ClusterName is the name of the cluster
type: string
cpu:
description: CPU is the number of CPUs in the virtual machine
type: integer
customAttributes:
additionalProperties:
type: string
description: CustomAttributes maps vSphere custom attribute names
to their values for the VM
type: object
datastores:
description: Datastores is the list of datastores for the virtual
machine
items:
type: string
type: array
disks:
description: Disks is the list of disks for the virtual machine
items:
description: Disk represents a virtual disk attached to a virtual
machine
properties:
capacityGB:
type: integer
datastore:
type: string
datastoreId:
type: string
name:
type: string
type: object
type: array
esxiName:
description: ESXiName is the name of the ESXi host
type: string
gpu:
description: GPU contains information about GPU devices attached
to the VM
properties:
passthroughCount:
description: PassthroughCount is the number of PCI passthrough
GPU devices
type: integer
vgpuCount:
description: VGPUCount is the number of vGPU (shared GPU)
devices
type: integer
type: object
guestNetworks:
description: GuestNetworks is the list of network interfaces for
the virtual machine as reported by the guest
items:
description: GuestNetwork represents a network interface as
reported by the guest.
properties:
device:
type: string
dns:
items:
type: string
type: array
ip:
type: string
mac:
type: string
origin:
type: string
prefixLength:
format: int32
type: integer
type: object
type: array
ipAddress:
description: IPAddress is the IP address of the virtual machine
type: string
memory:
description: Memory is the amount of memory in the virtual machine
type: integer
name:
description: Name is the name of the virtual machine
type: string
networkInterfaces:
description: NetworkInterfaces is the list of network interfaces
for the virtual machine expect the lo device
items:
description: NIC represents a Virtual ethernet card in the virtual
machine.
properties:
ipAddress:
items:
type: string
type: array
mac:
type: string
network:
type: string
networkType:
type: string
order:
type: integer
type: object
type: array
networks:
description: Networks is the list of networks for the virtual
machine
items:
type: string
type: array
osFamily:
description: OSFamily is the OS family of the virtual machine
type: string
rdmDisks:
description: RDMDisks is the list of RDM disks for the virtual
machine
items:
type: string
type: array
tags:
additionalProperties:
type: string
description: |-
Tags maps vSphere tag category names to a comma-separated list of the
tag names attached to the VM in that category (e.g. "env" -> "production")
type: object
vmState:
description: VMState is the state of the virtual machine
type: string
vmid:
description: VMID is the vCenter Managed Object ID (MOID) of the
virtual machine
type: string
required:
- name
type: object
type: object
status:
description: VMwareMachineStatus defines the observed state of VMwareMachine
properties:
migrated:
default: false
description: Migrated flag to indicate if the VMs have been migrated
type: boolean
powerState:
description: PowerState is the state of the VMs in the VMware
type: string
required:
- migrated
type: object
type: object
served: true
storage: true
subresources:
status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.1
name: volumeimageprofiles.vjailbreak.k8s.pf9.io
spec:
group: vjailbreak.k8s.pf9.io
names:
kind: VolumeImageProfile
listKind: VolumeImageProfileList
plural: volumeimageprofiles
singular: volumeimageprofile
scope: Namespaced
versions:
- additionalPrinterColumns:
- jsonPath: .spec.osFamily
name: OSFamily
type: string
- jsonPath: .metadata.creationTimestamp
name: Age
type: date
name: v1alpha1
schema:
openAPIV3Schema:
description: |-
VolumeImageProfile defines a reusable set of Cinder volume_image_metadata properties
that can be applied to VM volumes during migration.
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: VolumeImageProfileSpec defines the desired state of VolumeImageProfile
properties:
description:
description: Description will indicate the usage context of this profile
type: string
osFamily:
description: OSFamily scopes this profile to a specific VMware guest
family.
enum:
- windowsGuest
- linuxGuest
- any
type: string
properties:
additionalProperties:
type: string
description: Properties is the map of Cinder volume image metadata
key-value pairs
type: object
required:
- osFamily
- properties
type: object
type: object
served: true
storage: true
subresources: {}
---
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: migration-controller-manager
namespace: migration-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: migration-leader-election-role
namespace: migration-system
rules:
- apiGroups:
- ""
resources:
- configmaps
verbs:
- get
- list
- watch
- create
- update
- patch
- delete
- apiGroups:
- coordination.k8s.io
resources:
- leases
verbs:
- get
- list
- watch
- create
- update
- patch
- delete
- apiGroups:
- ""
resources:
- events
verbs:
- create
- patch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: migration-bmconfig-editor-role
rules:
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- bmconfigs
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- bmconfigs/status
verbs:
- get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: migration-bmconfig-viewer-role
rules:
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- bmconfigs
verbs:
- get
- list
- watch
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- bmconfigs/status
verbs:
- get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: migration-clustermigration-editor-role
rules:
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- clustermigrations
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- clustermigrations/status
verbs:
- get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: migration-clustermigration-viewer-role
rules:
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- clustermigrations
verbs:
- get
- list
- watch
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- clustermigrations/status
verbs:
- get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: migration-esximigration-editor-role
rules:
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- esximigrations
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- esximigrations/status
verbs:
- get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: migration-esximigration-viewer-role
rules:
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- esximigrations
verbs:
- get
- list
- watch
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- esximigrations/status
verbs:
- get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: migration-manager-role
rules:
- apiGroups:
- ""
resources:
- configmaps
- namespaces
- pods
- secrets
- serviceaccounts
- services
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- ""
resources:
- configmaps/status
- pods/status
verbs:
- get
- patch
- update
- apiGroups:
- ""
resources:
- events
verbs:
- get
- list
- watch
- apiGroups:
- ""
resources:
- nodes
verbs:
- delete
- get
- list
- watch
- apiGroups:
- ""
resources:
- pods/log
verbs:
- get
- list
- apiGroups:
- apiextensions.k8s.io
resources:
- customresourcedefinitions
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- apps
resources:
- deployments
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- batch
resources:
- jobs
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- networking.k8s.io
resources:
- ingresses
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- rbac.authorization.k8s.io
resources:
- clusterrolebindings
- clusterroles
- rolebindings
- roles
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- arraycreds
- bmconfigs
- clustermigrations
- esximigrations
- esxisshcreds
- migrationplans
- migrations
- migrationtemplates
- networkmappings
- openstackcreds
- pcdclusters
- pcdhosts
- proxyvms
- rdmdisks
- rollingmigrationplans
- storagemappings
- vjailbreaknodes
- vmwareclusters
- vmwarecreds
- vmwarehosts
- vmwaremachines
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- arraycreds/finalizers
- bmconfigs/finalizers
- clustermigrations/finalizers
- esximigrations/finalizers
- esxisshcreds/finalizers
- migrationplans/finalizers
- migrationtemplates/finalizers
- networkmappings/finalizers
- openstackcreds/finalizers
- pcdclusters/finalizers
- pcdhosts/finalizers
- proxyvms/finalizers
- rdmdisks/finalizers
- rollingmigrationplans/finalizers
- storagemappings/finalizers
- vjailbreaknodes/finalizers
- vmwarecreds/finalizers
verbs:
- update
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- arraycreds/status
- bmconfigs/status
- clustermigrations/status
- esximigrations/status
- esxisshcreds/status
- migrationplans/status
- migrations/status
- migrationtemplates/status
- networkmappings/status
- openstackcreds/status
- pcdclusters/status
- pcdhosts/status
- proxyvms/status
- rdmdisks/status
- rollingmigrationplans/status
- storagemappings/status
- vjailbreaknodes/status
- vmwarecreds/status
- vmwarehosts/status
- vmwaremachines/status
verbs:
- get
- patch
- update
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: migration-migration-editor-role
rules:
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- migrations
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- migrations/status
verbs:
- get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: migration-migration-viewer-role
rules:
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- migrations
verbs:
- get
- list
- watch
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- migrations/status
verbs:
- get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: migration-migrationblueprint-editor-role
rules:
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- migrationblueprints
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: migration-migrationblueprint-viewer-role
rules:
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- migrationblueprints
verbs:
- get
- list
- watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: migration-migrationplan-editor-role
rules:
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- migrationplans
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- migrationplans/status
verbs:
- get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: migration-migrationplan-viewer-role
rules:
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- migrationplans
verbs:
- get
- list
- watch
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- migrationplans/status
verbs:
- get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: migration-migrationtemplate-editor-role
rules:
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- migrationtemplates
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- migrationtemplates/status
verbs:
- get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: migration-migrationtemplate-viewer-role
rules:
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- migrationtemplates
verbs:
- get
- list
- watch
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- migrationtemplates/status
verbs:
- get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: migration-networkmapping-editor-role
rules:
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- networkmappings
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- networkmappings/status
verbs:
- get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: migration-networkmapping-viewer-role
rules:
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- networkmappings
verbs:
- get
- list
- watch
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- networkmappings/status
verbs:
- get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: migration-openstackcreds-editor-role
rules:
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- openstackcreds
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- openstackcreds/status
verbs:
- get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: migration-openstackcreds-viewer-role
rules:
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- openstackcreds
verbs:
- get
- list
- watch
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- openstackcreds/status
verbs:
- get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: migration-pcdcluster-editor-role
rules:
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- pcdclusters
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- pcdclusters/status
verbs:
- get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: migration-pcdcluster-viewer-role
rules:
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- pcdclusters
verbs:
- get
- list
- watch
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- pcdclusters/status
verbs:
- get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: migration-pcdhost-editor-role
rules:
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- pcdhosts
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- pcdhosts/status
verbs:
- get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: migration-pcdhost-viewer-role
rules:
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- pcdhosts
verbs:
- get
- list
- watch
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- pcdhosts/status
verbs:
- get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: migration-rdmdisk-admin-role
rules:
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- rdmdisks
verbs:
- '*'
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- rdmdisks/status
verbs:
- get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: migration-rdmdisk-editor-role
rules:
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- rdmdisks
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- rdmdisks/status
verbs:
- get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: migration-rdmdisk-viewer-role
rules:
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- rdmdisks
verbs:
- get
- list
- watch
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- rdmdisks/status
verbs:
- get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: migration-rollingmigrationplan-editor-role
rules:
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- rollingmigrationplans
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- rollingmigrationplans/status
verbs:
- get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: migration-rollingmigrationplan-viewer-role
rules:
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- rollingmigrationplans
verbs:
- get
- list
- watch
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- rollingmigrationplans/status
verbs:
- get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: migration-storagemapping-editor-role
rules:
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- storagemappings
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- storagemappings/status
verbs:
- get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: migration-storagemapping-viewer-role
rules:
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- storagemappings
verbs:
- get
- list
- watch
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- storagemappings/status
verbs:
- get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: migration-vjailbreaknode-editor-role
rules:
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- vjailbreaknodes
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- vjailbreaknodes/status
verbs:
- get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: migration-vjailbreaknode-viewer-role
rules:
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- vjailbreaknodes
verbs:
- get
- list
- watch
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- vjailbreaknodes/status
verbs:
- get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: migration-vmwarecluster-editor-role
rules:
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- vmwareclusters
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- vmwareclusters/status
verbs:
- get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: migration-vmwarecluster-viewer-role
rules:
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- vmwareclusters
verbs:
- get
- list
- watch
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- vmwareclusters/status
verbs:
- get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: migration-vmwarecreds-editor-role
rules:
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- vmwarecreds
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- vmwarecreds/status
verbs:
- get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: migration-vmwarecreds-viewer-role
rules:
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- vmwarecreds
verbs:
- get
- list
- watch
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- vmwarecreds/status
verbs:
- get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: migration-vmwarehost-editor-role
rules:
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- vmwarehosts
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- vmwarehosts/status
verbs:
- get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: migration-vmwarehost-viewer-role
rules:
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- vmwarehosts
verbs:
- get
- list
- watch
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- vmwarehosts/status
verbs:
- get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: migration-vmwaremachine-editor-role
rules:
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- vmwaremachines
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- vmwaremachines/status
verbs:
- get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: migration-vmwaremachine-viewer-role
rules:
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- vmwaremachines
verbs:
- get
- list
- watch
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- vmwaremachines/status
verbs:
- get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: migration-leader-election-rolebinding
namespace: migration-system
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: migration-leader-election-role
subjects:
- kind: ServiceAccount
name: migration-controller-manager
namespace: migration-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: migration-manager-rolebinding
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: migration-manager-role
subjects:
- kind: ServiceAccount
name: migration-controller-manager
namespace: migration-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
labels:
app.kubernetes.io/component: rbac
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: migration-migration-controller-manager-admin
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: migration-controller-manager
namespace: migration-system
---
apiVersion: v1
kind: Service
metadata:
name: migration-vpwned-service
namespace: migration-system
spec:
ports:
- port: 80
protocol: TCP
targetPort: 3001
selector:
app: vpwned-sdk
type: ClusterIP
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
control-plane: controller-manager
name: migration-controller-manager
namespace: migration-system
spec:
replicas: 1
selector:
matchLabels:
control-plane: controller-manager
strategy:
type: Recreate
template:
metadata:
annotations:
kubectl.kubernetes.io/default-container: manager
labels:
control-plane: controller-manager
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: node-role.kubernetes.io/control-plane
operator: Exists
containers:
- args:
- --leader-elect=false
- --health-probe-bind-address=:8081
command:
- /manager
env:
- name: MAX_CONCURRENT_RECONCILES
value: "5"
envFrom:
- configMapRef:
name: pf9-env
optional: true
image: quay.io/platform9/vjailbreak-controller:v0.4.8
imagePullPolicy: IfNotPresent
lifecycle:
preStop:
exec:
command:
- /bin/sh
- -c
- sleep 5
livenessProbe:
httpGet:
path: /healthz
port: 8081
initialDelaySeconds: 15
periodSeconds: 20
name: manager
readinessProbe:
httpGet:
path: /readyz
port: 8081
initialDelaySeconds: 5
periodSeconds: 10
resources:
requests:
cpu: 200m
memory: 256Mi
volumeMounts:
- mountPath: /etc/pf9/k3s
name: master-token
- mountPath: /home/ubuntu
name: vddk
- mountPath: /etc/hosts
name: hosts-file
readOnly: true
- mountPath: /host/dmi/product_uuid
name: dmi-product-uuid
readOnly: true
dnsConfig:
options:
- name: ndots
value: "1"
dnsPolicy: ClusterFirstWithHostNet
hostNetwork: true
securityContext:
runAsGroup: 0
runAsUser: 0
serviceAccountName: migration-controller-manager
terminationGracePeriodSeconds: 30
volumes:
- hostPath:
path: /var/lib/rancher/k3s/server
type: Directory
name: master-token
- hostPath:
path: /home/ubuntu
type: Directory
name: vddk
- hostPath:
path: /etc/hosts
type: File
name: hosts-file
- hostPath:
path: /sys/class/dmi/id/product_uuid
type: File
name: dmi-product-uuid
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: vpwned-sdk
name: migration-vpwned-sdk
namespace: migration-system
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: vpwned-sdk
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
annotations:
container.apparmor.security.beta.kubernetes.io/vpwned: unconfined
labels:
app: vpwned-sdk
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: node-role.kubernetes.io/control-plane
operator: Exists
containers:
- env:
- name: DBUS_SYSTEM_BUS_ADDRESS
value: unix:path=/run/dbus/system_bus_socket
envFrom:
- configMapRef:
name: pf9-env
optional: true
image: quay.io/platform9/vjailbreak-vpwned:v0.4.8
imagePullPolicy: IfNotPresent
name: vpwned
ports:
- containerPort: 3001
protocol: TCP
resources: {}
securityContext:
allowPrivilegeEscalation: false
capabilities:
add:
- DAC_OVERRIDE
drop:
- ALL
runAsUser: 0
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /etc/hosts
name: hosts-file
readOnly: true
- mountPath: /home/ubuntu
name: vddk-storage
- mountPath: /run/dbus/system_bus_socket
name: dbus-socket
- mountPath: /etc/systemd/timesyncd.conf.d
name: timesyncd-conf-dir
- mountPath: /usr/share/zoneinfo
name: host-zoneinfo
readOnly: true
- mountPath: /etc/pf9
name: pf9-config
- mountPath: /var/log/pf9
name: pf9-logs
readOnly: true
dnsConfig:
options:
- name: ndots
value: "1"
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
serviceAccountName: migration-controller-manager
terminationGracePeriodSeconds: 30
volumes:
- hostPath:
path: /etc/hosts
type: File
name: hosts-file
- hostPath:
path: /home/ubuntu
type: DirectoryOrCreate
name: vddk-storage
- hostPath:
path: /run/dbus/system_bus_socket
type: Socket
name: dbus-socket
- hostPath:
path: /etc/systemd/timesyncd.conf.d
type: DirectoryOrCreate
name: timesyncd-conf-dir
- hostPath:
path: /usr/share/zoneinfo
type: Directory
name: host-zoneinfo
- hostPath:
path: /etc/pf9
type: Directory
name: pf9-config
- hostPath:
path: /var/log/pf9
type: DirectoryOrCreate
name: pf9-logs
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/backend-protocol: HTTP
nginx.ingress.kubernetes.io/proxy-body-size: 500m
nginx.ingress.kubernetes.io/proxy-buffering: "off"
nginx.ingress.kubernetes.io/proxy-connect-timeout: "600"
nginx.ingress.kubernetes.io/proxy-read-timeout: "600"
nginx.ingress.kubernetes.io/proxy-request-buffering: "off"
nginx.ingress.kubernetes.io/proxy-send-timeout: "600"
nginx.ingress.kubernetes.io/rewrite-target: /$1
nginx.ingress.kubernetes.io/use-regex: "true"
name: migration-vpwned-ingress
namespace: migration-system
spec:
ingressClassName: nginx
rules:
- http:
paths:
- backend:
service:
name: migration-vpwned-service
port:
number: 80
path: /dev-api/sdk/(.*)
pathType: ImplementationSpecific
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: vjailbreak-ui
namespace: migration-system
spec:
replicas: 1
selector:
matchLabels:
app: vjailbreak-ui
template:
metadata:
labels:
app: vjailbreak-ui
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: node-role.kubernetes.io/control-plane
operator: Exists
serviceAccountName: ui-manager-sa
containers:
- name: vjailbreak-ui-container
image: quay.io/platform9/vjailbreak-ui:v0.4.8
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
envFrom:
- configMapRef:
name: pf9-env
optional: true
volumeMounts:
- name: nginx-shadow-htpasswd
mountPath: /etc/nginx/shadow
volumes:
- name: nginx-shadow-htpasswd
hostPath:
path: /etc/htpasswd
type: FileOrCreate
---
apiVersion: v1
kind: Service
metadata:
name: vjailbreak-ui-service
namespace: migration-system
spec:
selector:
app: vjailbreak-ui
type: ClusterIP
ports:
- protocol: TCP
port: 80
targetPort: 80
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: vjailbreak-ui-ingress
namespace: migration-system
annotations:
nginx.ingress.kubernetes.io/backend-protocol: "HTTP"
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
nginx.ingress.kubernetes.io/ssl-redirect: "true"
spec:
ingressClassName: nginx
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: vjailbreak-ui-service
port:
number: 80
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: vjailbreak-api-ingress
namespace: default
annotations:
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
nginx.ingress.kubernetes.io/rewrite-target: /$1
nginx.ingress.kubernetes.io/use-regex: "true"
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
nginx.ingress.kubernetes.io/ssl-redirect: "true"
spec:
ingressClassName: nginx
rules:
- http:
paths:
- path: /(apis.*)
pathType: ImplementationSpecific
backend:
service:
name: kubernetes
port:
number: 443
- path: /(api.*)
pathType: ImplementationSpecific
backend:
service:
name: kubernetes
port:
number: 443
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: grafana-api-ingress
namespace: monitoring
annotations:
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
spec:
ingressClassName: nginx
rules:
- http:
paths:
- path: /grafana
pathType: Prefix
backend:
service:
name: grafana
port:
number: 3000
---
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: ui-manager-sa
namespace: migration-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: ui-manager-role
rules:
- apiGroups:
- ""
resources:
- configmaps
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- ""
resources:
- configmaps/status
verbs:
- get
- apiGroups:
- ""
resources:
- events
verbs:
- get
- list
- watch
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- arraycreds
- arraycredsmappings
- bmconfigs
- esxisshcreds
- clustermigrations
- esximigrations
- migrationblueprints
- migrationplans
- migrations
- migrationtemplates
- networkmappings
- openstackcreds
- pcdclusters
- pcdhosts
- proxyvms
- rdmdisks
- rollingmigrationplans
- storagemappings
- vjailbreaknodes
- vmwareclusters
- vmwarecreds
- vmwarehosts
- vmwaremachines
- volumeimageprofiles
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- arraycreds/finalizers
- arraycredsmappings/finalizers
- bmconfigs/finalizers
- esxisshcreds/finalizers
- clustermigrations/finalizers
- esximigrations/finalizers
- migrationplans/finalizers
- migrationtemplates/finalizers
- networkmappings/finalizers
- openstackcreds/finalizers
- pcdclusters/finalizers
- pcdhosts/finalizers
- proxyvms/finalizers
- rdmdisks/finalizers
- rollingmigrationplans/finalizers
- storagemappings/finalizers
- vjailbreaknodes/finalizers
- vmwarecreds/finalizers
verbs:
- update
- apiGroups:
- vjailbreak.k8s.pf9.io
resources:
- arraycreds/status
- arraycredsmappings/status
- bmconfigs/status
- esxisshcreds/status
- clustermigrations/status
- esximigrations/status
- migrationplans/status
- migrations/status
- migrationtemplates/status
- networkmappings/status
- openstackcreds/status
- pcdclusters/status
- pcdhosts/status
- rdmdisks/status
- rollingmigrationplans/status
- storagemappings/status
- vjailbreaknodes/status
- vmwarecreds/status
- vmwaremachines/status
verbs:
- get
- patch
- update
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
labels:
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: migration
name: ui-manager-rolebinding
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: ui-manager-role
subjects:
- kind: ServiceAccount
name: ui-manager-sa
namespace: migration-system
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: vjailbreak-ai-sa
namespace: migration-system
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: vjailbreak-ai-data
namespace: migration-system
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: vjailbreak-ai
namespace: migration-system
spec:
replicas: 1
selector:
matchLabels:
app: vjailbreak-ai
template:
metadata:
labels:
app: vjailbreak-ai
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: node-role.kubernetes.io/control-plane
operator: Exists
serviceAccountName: vjailbreak-ai-sa
containers:
- name: vjailbreak-ai
image: quay.io/platform9/vjailbreak-ai:v0.4.8
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
env:
- name: ANTHROPIC_API_KEY
valueFrom:
secretKeyRef:
name: vjailbreak-ai-secret
key: api-key
optional: true
- name: CHROMA_PATH
value: /data/chroma
- name: CONTEXT_PATH
value: /data/context.md
- name: ALLOWED_ORIGINS
value: "http://vjailbreak-ui-service.migration-system.svc.cluster.local"
volumeMounts:
- name: ai-data
mountPath: /data
resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "1Gi"
cpu: "500m"
volumes:
- name: ai-data
persistentVolumeClaim:
claimName: vjailbreak-ai-data
---
apiVersion: v1
kind: Service
metadata:
name: vjailbreak-ai
namespace: migration-system
spec:
selector:
app: vjailbreak-ai
type: ClusterIP
ports:
- protocol: TCP
port: 8080
targetPort: 8080