Add release v0.4.1

This commit is contained in:
OmkarDeshpande7
2026-09-15 22:49:17 +05:30
parent 47983006c0
commit 4e92311606
8 changed files with 914 additions and 5 deletions
+276 -1
View File
@@ -680,6 +680,156 @@ spec:
--- ---
apiVersion: apiextensions.k8s.io/v1 apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition 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: metadata:
annotations: annotations:
controller-gen.kubebuilder.io/version: v0.17.1 controller-gen.kubebuilder.io/version: v0.17.1
@@ -697,6 +847,12 @@ spec:
- jsonPath: .status.migrationStatus - jsonPath: .status.migrationStatus
name: Status name: Status
type: string type: string
- jsonPath: .spec.migrationTemplate
name: Migration Template
type: string
- jsonPath: .metadata.creationTimestamp
name: Age
type: date
name: v1alpha1 name: v1alpha1
schema: schema:
openAPIV3Schema: openAPIV3Schema:
@@ -732,6 +888,11 @@ spec:
description: AdvancedOptions is a list of advanced options for the description: AdvancedOptions is a list of advanced options for the
migration migration
properties: properties:
acknowledgeNetworkConflictRisk:
description: AcknowledgeNetworkConflictRisk indicates that the
user acknowledges the risk of network conflicts when doing live
migration
type: boolean
granularNetworks: granularNetworks:
description: GranularNetworks is a list of networks to be migrated description: GranularNetworks is a list of networks to be migrated
items: items:
@@ -760,6 +921,10 @@ spec:
description: PeriodicSyncInterval is the interval at which the description: PeriodicSyncInterval is the interval at which the
migration plan should be synced migration plan should be synced
type: string type: string
removeVMwareTools:
description: RemoveVMwareTools instructs the migration helper
to remove VMware Tools post migration
type: boolean
type: object type: object
assignedIPsPerVM: assignedIPsPerVM:
additionalProperties: additionalProperties:
@@ -799,6 +964,7 @@ spec:
enum: enum:
- hot - hot
- cold - cold
- mock
type: string type: string
vmCutoverEnd: vmCutoverEnd:
format: date-time format: date-time
@@ -813,6 +979,34 @@ spec:
description: MigrationTemplate is the template to be used for the description: MigrationTemplate is the template to be used for the
migration migration
type: string type: string
networkOverridesPerVM:
additionalProperties:
items:
description: NICOverride defines per-NIC overrides for IP and
MAC preservation during migration
properties:
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: postMigrationAction:
description: PostMigrationAction defines the post migration action description: PostMigrationAction defines the post migration action
for the virtual machine for the virtual machine
@@ -889,6 +1083,9 @@ spec:
- jsonPath: .status.agentName - jsonPath: .status.agentName
name: Agent Name name: Agent Name
type: string type: string
- jsonPath: .spec.migrationPlan
name: MigrationPlan
type: string
- jsonPath: .metadata.creationTimestamp - jsonPath: .metadata.creationTimestamp
name: Age name: Age
type: date type: date
@@ -945,6 +1142,11 @@ spec:
enum: enum:
- hot - hot
- cold - cold
- mock
type: string
networkOverrides:
description: NetworkOverrides is the JSON-serialized per-NIC overrides
for IP and MAC preservation
type: string type: string
podRef: podRef:
description: PodRef is the name of the pod description: PodRef is the name of the pod
@@ -1046,6 +1248,11 @@ spec:
Set to false for VMs with RDM (Raw Device Mapping) disks that share storage, Set to false for VMs with RDM (Raw Device Mapping) disks that share storage,
as RDM disk migration state prevents automatic retry. as RDM disk migration state prevents automatic retry.
type: boolean type: boolean
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: totalDisks:
description: TotalDisks is the total number of disks to be migrated description: TotalDisks is the total number of disks to be migrated
type: integer type: integer
@@ -1292,6 +1499,12 @@ spec:
- jsonPath: .status.openstackValidationStatus - jsonPath: .status.openstackValidationStatus
name: Status name: Status
type: string type: string
- jsonPath: .spec.secretRef.name
name: Secret Name
type: string
- jsonPath: .metadata.creationTimestamp
name: Age
type: date
name: v1alpha1 name: v1alpha1
schema: schema:
openAPIV3Schema: openAPIV3Schema:
@@ -1389,8 +1602,12 @@ spec:
type: string type: string
osDomainName: osDomainName:
type: string type: string
osIdentityApiVersion:
type: string
osInsecure: osInsecure:
type: boolean type: boolean
osInterface:
type: string
osPassword: osPassword:
type: string type: string
osRegionName: osRegionName:
@@ -1481,6 +1698,10 @@ spec:
openstack: openstack:
description: Openstack is the OpenStack configuration for the openstackcreds description: Openstack is the OpenStack configuration for the openstackcreds
properties: properties:
backendVolumeTypeMap:
additionalProperties:
type: string
type: object
networks: networks:
items: items:
type: string type: string
@@ -1935,6 +2156,11 @@ spec:
description: AdvancedOptions is a list of advanced options for the description: AdvancedOptions is a list of advanced options for the
migration migration
properties: properties:
acknowledgeNetworkConflictRisk:
description: AcknowledgeNetworkConflictRisk indicates that the
user acknowledges the risk of network conflicts when doing live
migration
type: boolean
granularNetworks: granularNetworks:
description: GranularNetworks is a list of networks to be migrated description: GranularNetworks is a list of networks to be migrated
items: items:
@@ -1963,6 +2189,10 @@ spec:
description: PeriodicSyncInterval is the interval at which the description: PeriodicSyncInterval is the interval at which the
migration plan should be synced migration plan should be synced
type: string type: string
removeVMwareTools:
description: RemoveVMwareTools instructs the migration helper
to remove VMware Tools post migration
type: boolean
type: object type: object
bmConfigRef: bmConfigRef:
description: BMConfigRef is the reference to the BMC credentials description: BMConfigRef is the reference to the BMC credentials
@@ -2088,6 +2318,7 @@ spec:
enum: enum:
- hot - hot
- cold - cold
- mock
type: string type: string
vmCutoverEnd: vmCutoverEnd:
format: date-time format: date-time
@@ -2528,6 +2759,12 @@ spec:
- jsonPath: .status.vmwareValidationStatus - jsonPath: .status.vmwareValidationStatus
name: Status name: Status
type: string type: string
- jsonPath: .spec.secretRef.name
name: Secret Name
type: string
- jsonPath: .metadata.creationTimestamp
name: Age
type: date
name: v1alpha1 name: v1alpha1
schema: schema:
openAPIV3Schema: openAPIV3Schema:
@@ -2682,9 +2919,33 @@ spec:
name: name:
description: Name of the host description: Name of the host
type: string 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 type: object
status: status:
description: VMwareHostStatus defines the observed state of VMwareHost 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
type: object type: object
served: true served: true
@@ -2707,7 +2968,17 @@ spec:
singular: vmwaremachine singular: vmwaremachine
scope: Namespaced scope: Namespaced
versions: versions:
- name: v1alpha1 - 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: schema:
openAPIV3Schema: openAPIV3Schema:
description: |- description: |-
@@ -3208,6 +3479,7 @@ rules:
- bmconfigs - bmconfigs
- clustermigrations - clustermigrations
- esximigrations - esximigrations
- esxisshcreds
- migrationplans - migrationplans
- migrations - migrations
- migrationtemplates - migrationtemplates
@@ -3238,6 +3510,7 @@ rules:
- bmconfigs/finalizers - bmconfigs/finalizers
- clustermigrations/finalizers - clustermigrations/finalizers
- esximigrations/finalizers - esximigrations/finalizers
- esxisshcreds/finalizers
- migrationplans/finalizers - migrationplans/finalizers
- migrationtemplates/finalizers - migrationtemplates/finalizers
- networkmappings/finalizers - networkmappings/finalizers
@@ -3258,6 +3531,7 @@ rules:
- bmconfigs/status - bmconfigs/status
- clustermigrations/status - clustermigrations/status
- esximigrations/status - esximigrations/status
- esxisshcreds/status
- migrationplans/status - migrationplans/status
- migrations/status - migrations/status
- migrationtemplates/status - migrationtemplates/status
@@ -3270,6 +3544,7 @@ rules:
- storagemappings/status - storagemappings/status
- vjailbreaknodes/status - vjailbreaknodes/status
- vmwarecreds/status - vmwarecreds/status
- vmwarehosts/status
- vmwaremachines/status - vmwaremachines/status
verbs: verbs:
- get - get
+9
View File
@@ -20,6 +20,15 @@ spec:
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
ports: ports:
- containerPort: 80 - containerPort: 80
volumeMounts:
- name: pf9-logs
mountPath: /var/log/pf9
readOnly: true
volumes:
- name: pf9-logs
hostPath:
path: /var/log/pf9
type: DirectoryOrCreate
--- ---
apiVersion: v1 apiVersion: v1
+98
View File
@@ -0,0 +1,98 @@
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
image: quay.io/platform9/vjailbreak-controller:v0.4.1
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
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
---
+60
View File
@@ -0,0 +1,60 @@
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:
labels:
app: vpwned-sdk
spec:
containers:
- envFrom:
- configMapRef:
name: pf9-env
image: quay.io/platform9/vjailbreak-vpwned:v0.4.1
imagePullPolicy: IfNotPresent
name: vpwned
ports:
- containerPort: 3001
protocol: TCP
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /etc/hosts
name: hosts-file
readOnly: true
- mountPath: /home/ubuntu
name: vddk-storage
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
---
+38
View File
@@ -0,0 +1,38 @@
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:
serviceAccountName: migration-controller-manager
containers:
- name: vjailbreak-ui-container
image: quay.io/platform9/vjailbreak-ui:v0.4.1
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
volumeMounts:
- name: nginx-shadow-htpasswd
mountPath: /etc/nginx/shadow
- name: pf9-logs
mountPath: /var/log/pf9
readOnly: true
volumes:
- name: nginx-shadow-htpasswd
hostPath:
path: /etc/htpasswd
type: FileOrCreate
- name: pf9-logs
hostPath:
path: /var/log/pf9
type: DirectoryOrCreate
---
+318 -3
View File
@@ -680,6 +680,156 @@ spec:
--- ---
apiVersion: apiextensions.k8s.io/v1 apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition 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: metadata:
annotations: annotations:
controller-gen.kubebuilder.io/version: v0.17.1 controller-gen.kubebuilder.io/version: v0.17.1
@@ -697,6 +847,12 @@ spec:
- jsonPath: .status.migrationStatus - jsonPath: .status.migrationStatus
name: Status name: Status
type: string type: string
- jsonPath: .spec.migrationTemplate
name: Migration Template
type: string
- jsonPath: .metadata.creationTimestamp
name: Age
type: date
name: v1alpha1 name: v1alpha1
schema: schema:
openAPIV3Schema: openAPIV3Schema:
@@ -732,6 +888,11 @@ spec:
description: AdvancedOptions is a list of advanced options for the description: AdvancedOptions is a list of advanced options for the
migration migration
properties: properties:
acknowledgeNetworkConflictRisk:
description: AcknowledgeNetworkConflictRisk indicates that the
user acknowledges the risk of network conflicts when doing live
migration
type: boolean
granularNetworks: granularNetworks:
description: GranularNetworks is a list of networks to be migrated description: GranularNetworks is a list of networks to be migrated
items: items:
@@ -760,6 +921,10 @@ spec:
description: PeriodicSyncInterval is the interval at which the description: PeriodicSyncInterval is the interval at which the
migration plan should be synced migration plan should be synced
type: string type: string
removeVMwareTools:
description: RemoveVMwareTools instructs the migration helper
to remove VMware Tools post migration
type: boolean
type: object type: object
assignedIPsPerVM: assignedIPsPerVM:
additionalProperties: additionalProperties:
@@ -799,6 +964,7 @@ spec:
enum: enum:
- hot - hot
- cold - cold
- mock
type: string type: string
vmCutoverEnd: vmCutoverEnd:
format: date-time format: date-time
@@ -813,6 +979,34 @@ spec:
description: MigrationTemplate is the template to be used for the description: MigrationTemplate is the template to be used for the
migration migration
type: string type: string
networkOverridesPerVM:
additionalProperties:
items:
description: NICOverride defines per-NIC overrides for IP and
MAC preservation during migration
properties:
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: postMigrationAction:
description: PostMigrationAction defines the post migration action description: PostMigrationAction defines the post migration action
for the virtual machine for the virtual machine
@@ -889,6 +1083,9 @@ spec:
- jsonPath: .status.agentName - jsonPath: .status.agentName
name: Agent Name name: Agent Name
type: string type: string
- jsonPath: .spec.migrationPlan
name: MigrationPlan
type: string
- jsonPath: .metadata.creationTimestamp - jsonPath: .metadata.creationTimestamp
name: Age name: Age
type: date type: date
@@ -945,6 +1142,11 @@ spec:
enum: enum:
- hot - hot
- cold - cold
- mock
type: string
networkOverrides:
description: NetworkOverrides is the JSON-serialized per-NIC overrides
for IP and MAC preservation
type: string type: string
podRef: podRef:
description: PodRef is the name of the pod description: PodRef is the name of the pod
@@ -1046,6 +1248,11 @@ spec:
Set to false for VMs with RDM (Raw Device Mapping) disks that share storage, Set to false for VMs with RDM (Raw Device Mapping) disks that share storage,
as RDM disk migration state prevents automatic retry. as RDM disk migration state prevents automatic retry.
type: boolean type: boolean
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: totalDisks:
description: TotalDisks is the total number of disks to be migrated description: TotalDisks is the total number of disks to be migrated
type: integer type: integer
@@ -1292,6 +1499,12 @@ spec:
- jsonPath: .status.openstackValidationStatus - jsonPath: .status.openstackValidationStatus
name: Status name: Status
type: string type: string
- jsonPath: .spec.secretRef.name
name: Secret Name
type: string
- jsonPath: .metadata.creationTimestamp
name: Age
type: date
name: v1alpha1 name: v1alpha1
schema: schema:
openAPIV3Schema: openAPIV3Schema:
@@ -1389,8 +1602,12 @@ spec:
type: string type: string
osDomainName: osDomainName:
type: string type: string
osIdentityApiVersion:
type: string
osInsecure: osInsecure:
type: boolean type: boolean
osInterface:
type: string
osPassword: osPassword:
type: string type: string
osRegionName: osRegionName:
@@ -1481,6 +1698,10 @@ spec:
openstack: openstack:
description: Openstack is the OpenStack configuration for the openstackcreds description: Openstack is the OpenStack configuration for the openstackcreds
properties: properties:
backendVolumeTypeMap:
additionalProperties:
type: string
type: object
networks: networks:
items: items:
type: string type: string
@@ -1935,6 +2156,11 @@ spec:
description: AdvancedOptions is a list of advanced options for the description: AdvancedOptions is a list of advanced options for the
migration migration
properties: properties:
acknowledgeNetworkConflictRisk:
description: AcknowledgeNetworkConflictRisk indicates that the
user acknowledges the risk of network conflicts when doing live
migration
type: boolean
granularNetworks: granularNetworks:
description: GranularNetworks is a list of networks to be migrated description: GranularNetworks is a list of networks to be migrated
items: items:
@@ -1963,6 +2189,10 @@ spec:
description: PeriodicSyncInterval is the interval at which the description: PeriodicSyncInterval is the interval at which the
migration plan should be synced migration plan should be synced
type: string type: string
removeVMwareTools:
description: RemoveVMwareTools instructs the migration helper
to remove VMware Tools post migration
type: boolean
type: object type: object
bmConfigRef: bmConfigRef:
description: BMConfigRef is the reference to the BMC credentials description: BMConfigRef is the reference to the BMC credentials
@@ -2088,6 +2318,7 @@ spec:
enum: enum:
- hot - hot
- cold - cold
- mock
type: string type: string
vmCutoverEnd: vmCutoverEnd:
format: date-time format: date-time
@@ -2528,6 +2759,12 @@ spec:
- jsonPath: .status.vmwareValidationStatus - jsonPath: .status.vmwareValidationStatus
name: Status name: Status
type: string type: string
- jsonPath: .spec.secretRef.name
name: Secret Name
type: string
- jsonPath: .metadata.creationTimestamp
name: Age
type: date
name: v1alpha1 name: v1alpha1
schema: schema:
openAPIV3Schema: openAPIV3Schema:
@@ -2682,9 +2919,33 @@ spec:
name: name:
description: Name of the host description: Name of the host
type: string 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 type: object
status: status:
description: VMwareHostStatus defines the observed state of VMwareHost 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
type: object type: object
served: true served: true
@@ -2707,7 +2968,17 @@ spec:
singular: vmwaremachine singular: vmwaremachine
scope: Namespaced scope: Namespaced
versions: versions:
- name: v1alpha1 - 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: schema:
openAPIV3Schema: openAPIV3Schema:
description: |- description: |-
@@ -3208,6 +3479,7 @@ rules:
- bmconfigs - bmconfigs
- clustermigrations - clustermigrations
- esximigrations - esximigrations
- esxisshcreds
- migrationplans - migrationplans
- migrations - migrations
- migrationtemplates - migrationtemplates
@@ -3238,6 +3510,7 @@ rules:
- bmconfigs/finalizers - bmconfigs/finalizers
- clustermigrations/finalizers - clustermigrations/finalizers
- esximigrations/finalizers - esximigrations/finalizers
- esxisshcreds/finalizers
- migrationplans/finalizers - migrationplans/finalizers
- migrationtemplates/finalizers - migrationtemplates/finalizers
- networkmappings/finalizers - networkmappings/finalizers
@@ -3258,6 +3531,7 @@ rules:
- bmconfigs/status - bmconfigs/status
- clustermigrations/status - clustermigrations/status
- esximigrations/status - esximigrations/status
- esxisshcreds/status
- migrationplans/status - migrationplans/status
- migrations/status - migrations/status
- migrationtemplates/status - migrationtemplates/status
@@ -3270,6 +3544,7 @@ rules:
- storagemappings/status - storagemappings/status
- vjailbreaknodes/status - vjailbreaknodes/status
- vmwarecreds/status - vmwarecreds/status
- vmwarehosts/status
- vmwaremachines/status - vmwaremachines/status
verbs: verbs:
- get - get
@@ -4153,7 +4428,7 @@ spec:
envFrom: envFrom:
- configMapRef: - configMapRef:
name: pf9-env name: pf9-env
image: quay.io/platform9/vjailbreak-controller:v0.3.8 image: quay.io/platform9/vjailbreak-controller:v0.4.1
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
lifecycle: lifecycle:
preStop: preStop:
@@ -4236,7 +4511,7 @@ spec:
- envFrom: - envFrom:
- configMapRef: - configMapRef:
name: pf9-env name: pf9-env
image: quay.io/platform9/vjailbreak-vpwned:v0.3.8 image: quay.io/platform9/vjailbreak-vpwned:v0.4.1
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
name: vpwned name: vpwned
ports: ports:
@@ -4294,3 +4569,43 @@ spec:
number: 80 number: 80
path: /dev-api/sdk/(.*) path: /dev-api/sdk/(.*)
pathType: ImplementationSpecific 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:
serviceAccountName: migration-controller-manager
containers:
- name: vjailbreak-ui-container
image: quay.io/platform9/vjailbreak-ui:v0.4.1
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
volumeMounts:
- name: nginx-shadow-htpasswd
mountPath: /etc/nginx/shadow
- name: pf9-logs
mountPath: /var/log/pf9
readOnly: true
volumes:
- name: nginx-shadow-htpasswd
hostPath:
path: /etc/htpasswd
type: FileOrCreate
- name: pf9-logs
hostPath:
path: /var/log/pf9
type: DirectoryOrCreate
---
@@ -22,7 +22,7 @@ data:
DEPLOYMENT_NAME: vJailbreak DEPLOYMENT_NAME: vJailbreak
PERIODIC_SYNC_MAX_RETRIES: "3" # max number of retries for CBT sync PERIODIC_SYNC_MAX_RETRIES: "3" # max number of retries for CBT sync
PERIODIC_SYNC_RETRY_CAP: "3h" # max retry interval for CBT sync PERIODIC_SYNC_RETRY_CAP: "3h" # max retry interval for CBT sync
AUTO_FSTAB_UPDATE: "false" # automatically update fstab AUTO_FSTAB_UPDATE: "true" # automatically update fstab
AUTO_PXE_BOOT_ON_CONVERSION: "false" # automatically set machine to PXE boot during cluster conversion AUTO_PXE_BOOT_ON_CONVERSION: "false" # automatically set machine to PXE boot during cluster conversion
V2V_HELPER_POD_CPU_REQUEST: "1000m" V2V_HELPER_POD_CPU_REQUEST: "1000m"
V2V_HELPER_POD_MEMORY_REQUEST: "2Gi" V2V_HELPER_POD_MEMORY_REQUEST: "2Gi"
+114
View File
@@ -0,0 +1,114 @@
# v0.4.1
- **Tag:** `v0.4.1`
- **Published:** 2026-03-03T08:32:13Z
- **Source release:** https://github.com/platform9/vjailbreak/releases/tag/v0.4.1
## Release Notes
## What's Changed
* upgarde core components by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1458
* Network Persistence For Windows by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1408
* increase QPS for kubernetes client in proxy pod by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1460
* Fixed - v2v build failure by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1471
* Added s3 URL artifact to build outputs (release) by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1464
* Push image on S3 only for release, nightly and manual triggers by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1474
* Added option to migrate a vm without powering off the source vm by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1472
* Fixed the variable issue in v2v helper by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1476
* Added downloadable s3 url for qcow2 images by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1475
* #1451 :: Remove data copy method and cutover options from adavance options when user selects storage accelerated copy by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1473
* Install latest golang and libnbd-devel in Dockerfile by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1485
* chore: upgrade grafana by @sanya-pf9 in https://github.com/platform9/vjailbreak/pull/1483
* user experience enhancements (download logs) by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1486
* add pre-commit hooks for lint and YAML generator by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1494
* Use GitHub repository variables for S3 bucket names and region in CI workflow by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1488
* Added manual pre-release workflow for CRD and installer generation by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1489
* add backoff for migration pod checking logs by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1396
* #1454 :: Deselecting the advanced option does not reset the UI to its original state by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1477
* Replace pre-baked Ubuntu base image with Ubuntu Minimal and automate K3s/Helm installation by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1496
* firstboot scheduling windows by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1500
* Run upgrade process as a job by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1467
* Removed extra logging by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1490
* pin golang lint version by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1517
* fix: continue network discovery even for orphaned networks by @sanya-pf9 in https://github.com/platform9/vjailbreak/pull/1457
* #1515 :: UI Bug: “Start Conversion” Button Not Enabled in Rolling Cluster Conversion Form by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1516
* #1398 :: Reorganize Main Menu into Two-Level Structure by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1512
* replace grafana yamls by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1521
* add more printcolumns by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1522
* Apply PostMigrationAction for all migrations in a batch by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1492
* Support duplicate VM names by using vCenter MOID as a unique identifier by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1523
* fix nginx grafana by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1526
* Keep icons consistent in all the pages by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1530
* #1450 :: UI is not allowing to delete auto discovered storage mapping by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1470
* Revert #1523: Remove duplicate vm name changes by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1535
* Add ssh validate CR for key validation by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1505
* Removed extra logs showing repeated 0% by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1536
* Add necessary tools for easier debug ability by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1538
* Cluster Conversion: fix the capacity check for esxi hosts by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1504
* #1506 :: Create New Page for ESXi SSH Key Management by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1539
* fix - Firstboot script for nic recovery is not running and errors on specific windows versions by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1534
* add esxi details by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1525
* Resolve UI synchronization lag during Admin Cutover by refining MigrationPlan predicates by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1542
* Introduce warning error states during periodic sync so that customer can take necessary steps by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1497
* Feature/option not to preserve ip and mac by @sanya-pf9 in https://github.com/platform9/vjailbreak/pull/1511
* Fixed retry mechanism by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1544
* backend volume type validations by @sanya-pf9 in https://github.com/platform9/vjailbreak/pull/1498
* fix: scope VM validation to non-terminal states and harden post-migration actions by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1549
* Create esxi ssh cr while configuring esxi ssh key. by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1558
* bake virtio 0.1.185 for windows server 2012 by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1425
* script to remove log files regarding vmwaretools,vmware etc by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1547
* Added advanced option to run vmware removal script with just a check in the migration form by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1550
* user firstboot fix by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1569
* #1545 : UI - Redirect to the first sub item upon clicking the Item in the sidebar by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1570
* fix: adding a timestamp measure to ensure the latest version is fetched for vddk version by @sanya-pf9 in https://github.com/platform9/vjailbreak/pull/1562
* skip deletion of vmwaremachine that was migrated and renamed by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1566
* fix generate-mount-persistence invocation for multi-disk by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1564
* Remove irrelevent filters on ESXi SSH Credentials page by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1567
* #1510 :: UI Request option to NOT preserve the IP address and MAC address to allow migration to a different subnet by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1557
* #1443 : Add Storage accelerated copy related information in migration details for storage mapping (currently showing NA) by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1571
* UI: Fix rdm configure tab in migration form by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1576
* #1574: Update Tour Popup Messaging for Separate VMware and PCD Pages by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1579
* fix: on empty IP create only port group else route the standard way by @sanya-pf9 in https://github.com/platform9/vjailbreak/pull/1573
* fix: Migration phase skips CopyingChangedBlocks/ConvertingDisk after admin cutover by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1585
* guestfish run fix, fix grub bootloader by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1586
* Net persist patch by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1589
* Remove 2 errors on UI for rdm form and add a warning dialog box if wrong selected by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1590
* Injected Disk-Online script into the codebase and enhanced tool removal script for win2012 by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1578
* fix: custom IP is not applied for no preserve IP and no preserve MAC by @sanya-pf9 in https://github.com/platform9/vjailbreak/pull/1597
* #1583 : Cannot remove assign IP post a new IP is applied by @AbhijeetThakur in https://github.com/platform9/vjailbreak/pull/1592
* Include resourceVersion when updating ESXi SSH credentials by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1605
* fix: adding dhcp search for no ip by @sanya-pf9 in https://github.com/platform9/vjailbreak/pull/1481
* Revert fix generate-mount-persistence invocation for multi-disk by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/1606
* Continue after failure Firstboot Schduling for windows firstboot by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1604
* Interface Name preservation by @meghansh-pf9 in https://github.com/platform9/vjailbreak/pull/1609
* Disable github hook on pre-release commit by @sarika-pf9 in https://github.com/platform9/vjailbreak/pull/1613
* chore: Pre-release CRD generation for v0.4.1 by @github-actions[bot] in https://github.com/platform9/vjailbreak/pull/1614
* Use Cloud image instead of minimal ubuntu by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1618
* Update nginx ingress and prometheus alert manager images ( release ) by @spai-p9 in https://github.com/platform9/vjailbreak/pull/1619
**Full Changelog**: https://github.com/platform9/vjailbreak/compare/v0.4.0...v0.4.1
### Upgrade Guide: v0.4.0 → v0.4.1
Users upgrading from v0.4.0 to v0.4.1 needs to follow the steps below:
- #### Step 1: Update v0.4.0 Container Images
In your existing v0.4.0 setup, update the deployment images to pull the latest v0.4.0 containers and set imagePullPolicy to Always with the below command given.
```
kubectl patch deployment migration-controller-manager -n migration-system --type='json' \
-p='[{"op":"replace","path":"/spec/template/spec/containers/0/imagePullPolicy","value":"Always"}]' && \
kubectl patch deployment migration-vpwned-sdk -n migration-system --type='json' \
-p='[{"op":"replace","path":"/spec/template/spec/containers/0/imagePullPolicy","value":"Always"}]' && \
kubectl patch deployment vjailbreak-ui -n migration-system --type='json' \
-p='[{"op":"replace","path":"/spec/template/spec/containers/0/imagePullPolicy","value":"Always"}]'
```
- #### Step 2: Restart Deployments
Restart the deployments to ensure the updated images are pulled and running:
```
kubectl rollout restart deployment -n migration-system
- #### Step 3: Follow Upgrade Steps from the [public documentation](https://platform9.github.io/vjailbreak/guides/how-to/upgrade_vjailbreak/)