diff --git a/deploy/00crds.yaml b/deploy/00crds.yaml index 508b078..999d8e7 100644 --- a/deploy/00crds.yaml +++ b/deploy/00crds.yaml @@ -11,7 +11,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.15.0 + controller-gen.kubebuilder.io/version: v0.17.1 name: migrationplans.vjailbreak.k8s.pf9.io spec: group: vjailbreak.k8s.pf9.io @@ -129,7 +129,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.15.0 + controller-gen.kubebuilder.io/version: v0.17.1 name: migrations.vjailbreak.k8s.pf9.io spec: group: vjailbreak.k8s.pf9.io @@ -163,15 +163,20 @@ spec: metadata: type: object spec: - description: MigrationSpec defines the desired state of Migration + description: Spec defines the desired state of Migration properties: initiateCutover: + description: InitiateCutover is the flag to initiate cutover type: boolean migrationPlan: + description: MigrationPlan is the name of the migration plan type: string podRef: + description: PodRef is the name of the pod type: string vmName: + description: VMName is the name of the VM getting migrated from VMWare + to Openstack type: string required: - initiateCutover @@ -180,9 +185,15 @@ spec: - vmName type: object status: - description: MigrationStatus defines the observed state of Migration + 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. @@ -221,9 +232,9 @@ spec: type: object type: array phase: + description: Phase is the current phase of the migration type: string required: - - conditions - phase type: object type: object @@ -236,7 +247,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.15.0 + controller-gen.kubebuilder.io/version: v0.17.1 name: migrationtemplates.vjailbreak.k8s.pf9.io spec: group: vjailbreak.k8s.pf9.io @@ -334,6 +345,10 @@ spec: items: type: string type: array + disks: + items: + type: string + type: array ipAddress: type: string name: @@ -361,7 +376,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.15.0 + controller-gen.kubebuilder.io/version: v0.17.1 name: networkmappings.vjailbreak.k8s.pf9.io spec: group: vjailbreak.k8s.pf9.io @@ -431,7 +446,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.15.0 + controller-gen.kubebuilder.io/version: v0.17.1 name: openstackcreds.vjailbreak.k8s.pf9.io spec: group: vjailbreak.k8s.pf9.io @@ -512,7 +527,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.15.0 + controller-gen.kubebuilder.io/version: v0.17.1 name: storagemappings.vjailbreak.k8s.pf9.io spec: group: vjailbreak.k8s.pf9.io @@ -581,7 +596,184 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.15.0 + 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: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: VjailbreakNode is the Schema for the vjailbreaknodes 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 VjailbreakNode + properties: + availableflavors: + description: AvailableFlavors 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 + 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 + - id + - name + - os-flavor-access:is_public + - ram + - rxtx_factor + - vcpus + type: object + type: array + imageid: + description: OpenstackImageID is the image of the VM + type: string + noderole: + description: NodeRole is the role assigned to the node + type: string + openstackcreds: + description: OpenstackCreds is the credentials for Openstack Environment + 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 + required: + - noderole + - openstackcreds + - openstackflavorid + type: object + status: + description: Status defines the observed state of VjailbreakNode + properties: + activemigrations: + description: ActiveMigrations is the list of active migrations happening + on the node + items: + type: string + type: array + openstackuuid: + description: OpenstackUUID is the UUID of the VM in OpenStack + type: string + phase: + description: Phase is the current phase of the node + 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: vmwarecreds.vjailbreak.k8s.pf9.io spec: group: vjailbreak.k8s.pf9.io @@ -707,6 +899,7 @@ rules: - "" resources: - configmaps + - pods verbs: - create - delete @@ -726,14 +919,11 @@ rules: - apiGroups: - "" resources: - - pods + - nodes verbs: - - create - delete - get - list - - patch - - update - watch - apiGroups: - "" @@ -747,155 +937,12 @@ rules: - vjailbreak.k8s.pf9.io resources: - migrationplans - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - vjailbreak.k8s.pf9.io - resources: - - migrationplans/finalizers - verbs: - - update -- apiGroups: - - vjailbreak.k8s.pf9.io - resources: - - migrationplans/status - verbs: - - get - - patch - - update -- 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 - - patch - - update -- apiGroups: - - vjailbreak.k8s.pf9.io - resources: - migrationtemplates - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - vjailbreak.k8s.pf9.io - resources: - - migrationtemplates/finalizers - verbs: - - update -- apiGroups: - - vjailbreak.k8s.pf9.io - resources: - - migrationtemplates/status - verbs: - - get - - patch - - update -- apiGroups: - - vjailbreak.k8s.pf9.io - resources: - networkmappings - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - vjailbreak.k8s.pf9.io - resources: - - networkmappings/finalizers - verbs: - - update -- apiGroups: - - vjailbreak.k8s.pf9.io - resources: - - networkmappings/status - verbs: - - get - - patch - - update -- apiGroups: - - vjailbreak.k8s.pf9.io - resources: - openstackcreds - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - vjailbreak.k8s.pf9.io - resources: - - openstackcreds/finalizers - verbs: - - update -- apiGroups: - - vjailbreak.k8s.pf9.io - resources: - - openstackcreds/status - verbs: - - get - - patch - - update -- apiGroups: - - vjailbreak.k8s.pf9.io - resources: - storagemappings - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - vjailbreak.k8s.pf9.io - resources: - - storagemappings/finalizers - verbs: - - update -- apiGroups: - - vjailbreak.k8s.pf9.io - resources: - - storagemappings/status - verbs: - - get - - patch - - update -- apiGroups: - - vjailbreak.k8s.pf9.io - resources: + - vjailbreaknodes - vmwarecreds verbs: - create @@ -908,12 +955,25 @@ rules: - apiGroups: - vjailbreak.k8s.pf9.io resources: + - migrationplans/finalizers + - migrationtemplates/finalizers + - networkmappings/finalizers + - openstackcreds/finalizers + - storagemappings/finalizers + - vjailbreaknodes/finalizers - vmwarecreds/finalizers verbs: - update - apiGroups: - vjailbreak.k8s.pf9.io resources: + - migrationplans/status + - migrations/status + - migrationtemplates/status + - networkmappings/status + - openstackcreds/status + - storagemappings/status + - vjailbreaknodes/status - vmwarecreds/status verbs: - get @@ -1222,6 +1282,56 @@ rules: --- 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 @@ -1324,13 +1434,20 @@ spec: labels: control-plane: controller-manager spec: + affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: node-role.kubernetes.io/master + operator: Exists containers: - args: - --leader-elect=false - --health-probe-bind-address=:8081 command: - /manager - image: platform9/vjailbreak-controller:v0.1 + image: quay.io/platform9/vjailbreak-controller:v0.1.4 imagePullPolicy: IfNotPresent livenessProbe: httpGet: @@ -1354,9 +1471,17 @@ spec: capabilities: drop: - ALL - dnsPolicy: ClusterFirstWithHostNet + volumeMounts: + - mountPath: /etc/pf9/k3s + name: master-token hostNetwork: true securityContext: - runAsNonRoot: true + runAsGroup: 0 + runAsUser: 0 serviceAccountName: migration-controller-manager terminationGracePeriodSeconds: 10 + volumes: + - hostPath: + path: /var/lib/rancher/k3s/server + type: Directory + name: master-token diff --git a/image_builder/configs/k3s.env b/image_builder/configs/k3s.env new file mode 100644 index 0000000..76b2e4d --- /dev/null +++ b/image_builder/configs/k3s.env @@ -0,0 +1,3 @@ +export IS_MASTER=true +export MASTER_IP= +export K3S_TOKEN= \ No newline at end of file diff --git a/releases/v0.1.4.md b/releases/v0.1.4.md new file mode 100644 index 0000000..f23a2c8 --- /dev/null +++ b/releases/v0.1.4.md @@ -0,0 +1,28 @@ +# v0.1.4 + +- **Tag:** `v0.1.4` +- **Published:** 2025-02-21T13:51:39Z +- **Source release:** https://github.com/platform9/vjailbreak/releases/tag/v0.1.4 + +## Release Notes + +## What's Changed +* Fix GH workflow runs on release event by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/147 +* workflow dispatch manual by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/148 +* Update README.md by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/149 +* Update model.ts by @markp93 in https://github.com/platform9/vjailbreak/pull/152 +* Added delete migration functionality to the migration table by @patil-pratik-87 in https://github.com/platform9/vjailbreak/pull/155 +* Adding workers nodes to the vjailbreak by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/161 +* update package.json by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/172 +* Update issue templates by @sharma-tapas in https://github.com/platform9/vjailbreak/pull/158 +* Update bug_report.yaml by @sharma-tapas in https://github.com/platform9/vjailbreak/pull/175 +* Migration data copy progress % and migration phases by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/167 +* Nit: consistent referring to company VMware by @ericwb in https://github.com/platform9/vjailbreak/pull/164 +* Update README.md by @markp93 in https://github.com/platform9/vjailbreak/pull/170 +* release version v0.1.4 (release) by @OmkarDeshpande7 in https://github.com/platform9/vjailbreak/pull/196 + +## New Contributors +* @markp93 made their first contribution in https://github.com/platform9/vjailbreak/pull/152 +* @ericwb made their first contribution in https://github.com/platform9/vjailbreak/pull/164 + +**Full Changelog**: https://github.com/platform9/vjailbreak/compare/v0.1.3...v0.1.4