vZilla https://vzilla.co.uk One Step into Kubernetes and Cloud Native at a time, not forgetting the world before Mon, 10 Aug 2026 07:52:25 +0000 en-GB hourly 1 https://wordpress.org/?v=7.0.4 https://vzilla.co.uk/wp-content/uploads/2018/01/cropped-profile_picture_symbol-32x32.png vZilla https://vzilla.co.uk 32 32 DBSched – Centralised Database Backup https://vzilla.co.uk/vzilla-blog/dbsched-centralised-database-backup https://vzilla.co.uk/vzilla-blog/dbsched-centralised-database-backup#respond Wed, 05 Aug 2026 09:54:17 +0000 https://vzilla.co.uk/?p=3666 Internally at Veeam we have been working on the Application Backup Repository for a few months, and since hearing about this I wanted a way to be able to demonstrate the ability to send my database backups to these NFS exports. I could not find an existing tool out there that would enable me to hit all the different database types. So in the world of AI accelerating our ideas to reality I got to work on a demo tool, simply called “DBSched”

You can find out what the Veeam Application Backup Repository is here below.

As I said I wanted a demo app that would enable a few things.

  • Multi-Database Support
  • Scheduling
  • Web Based UI
  • Some sort of connection testing
  • Visual Monitoring and Observability
  • Container based, run anywhere

I have seen a rise in the amount of people running databases and other data services in Docker Containers, not going all in on Kubernetes and simply using a Docker container to run their data services, I have also seen a strong growth area around DBaaS, including the public cloud but also the offerings from Supabase, PlanetScale, MongoDB Atlas to name a few.

I have said about these platforms and the potential for backups to be stored within the Veeam Application Backup Repository, so combining the two I went to work and created this demo tool.

image 23

Deployment

It is deployed as 2 Docker containers using Docker Compose, it has the following architecture.

  • Backend: Golang with Chi router, GORM, and SQLite
  • Frontend: Next.js 16 with React 19, Material UI, and TypeScript
  • Database: SQLite for metadata storage
  • Scheduler: Cron-based job scheduling
image 35

Configuration

When up and running you navigate a browser to http://localhost:3000

The first thing to do is to create your sources.

image 25

You then select your source type, provide a name for the connection and fill int he details for host, port, database name, username and password. You will also choose the NFS Backup Target (this would be one of those NFS Exports, backed by the Veeam Application Backup Repository)

image 26

Once added you can use the backup now button to take a backup out of schedule as a point in time. If you wanted to you could then select the Schedules tab and start creating the cronjob schedules for each source.

image 27

When you click the create schedule you will see the following window

image 28

From the source drop down you can select the source you just added, you can see I have been running a lot of tests here against many different databases.

image 29

On my machine you can see all the Application Backup Repositories I have added.

image 30

This is where for example your PGdump files etc will land and then be protected by the Veeam schedule that we setup during the ABR being added.

Restore

Generally speaking the PGDump files that live on that export location can be recovered natively within Postgres providing they are within the retention that is being stored there, if something happens to these or the retention has aged out then you might want to recover them back. This tool is focused on restoring the dump files back to the database.

image 31

You can select that restore button and perform the restore, you select the specific restore point (dump file) that you want to restore back to the database. Choose the source and target database, in the below image we took it from the same source and target. \

image 32

As supabase is our example here, we know that this is mostly postgres under the hood so I wanted a way to also be able to restore this to other locations where possible. So I made it possible to restore this backup file to say a postgres instance running in a local docker container.

image 33

You will hopefully see that many of the other options are greyed out as they are not compatible.

image 34

To note again this is a demo application I created to show how we could use the Veeam Application Backup Repository as a place to manage additional retention of those dump files rather than relying on them just landing on an NFS export or even worse a local disk of the database server.

I was not able to find a commercial equivalent or an open source project that provided the same breadth of database and data service support but open to any feedback on that. I have not released the code but you will have to let me know if this is something that people would want to see and use in their home labs.

For the record, it is not a Veeam tool I am just leveraging the Veeam ABR to store those exports from the database and then using that to capture snapshots and then backup copies of those exports. In theory though this will work with any NFS export location.

]]>
https://vzilla.co.uk/vzilla-blog/dbsched-centralised-database-backup/feed 0
Veeam Application Backup Repository – Proxmox LXC https://vzilla.co.uk/vzilla-blog/veeam-application-backup-repository-proxmox-lxc https://vzilla.co.uk/vzilla-blog/veeam-application-backup-repository-proxmox-lxc#respond Tue, 04 Aug 2026 09:30:06 +0000 https://vzilla.co.uk/?p=3656 A common request I have seen within the community is ”Can Veeam protect LXC Containers in Proxmox?” and whilst this is being researched, I wanted to share a workaround that I have been using in my homelab.

I posted about the Application Backup Repository

We start by creating a fresh new Application Backup Repository for our LXC backups within Veeam Backup & Replication.

image 15

Now we head over to our Proxmox environment to add the new NFS Export. Select the datacenter and then Storage

image 16

Click add and select NFS

image 17

Give it a name,

The server will be your ABR Server

The Export will be the path

Select VZdump backup file and unselect anything else,

Also make sure you select NFS Version

image 18

We will now configure Proxmox backup to send to our Application Backup Repository. Firstly select your LXC container and choose Backup.

image 19

Select the storage to be our newly added NFS Export

image 20

This can then be scheduled via Proxmox backup and you will see the backups that you have created in the following screen.

image 21

Amazingly, this dump will be found in our export location. This will then be captured by the snapshot schedule we created when adding the Application Backup Repository in Veeam Backup & Replication. You can then use the Backup Copy feature to send this to another location.

image 22

I have tested recovery as well; to recover you will need to shut down your container and then restore the contents.

]]>
https://vzilla.co.uk/vzilla-blog/veeam-application-backup-repository-proxmox-lxc/feed 0
The Veeam Application Backup Repository – 13.1 https://vzilla.co.uk/vzilla-blog/the-veeam-application-backup-repository-13-1 https://vzilla.co.uk/vzilla-blog/the-veeam-application-backup-repository-13-1#respond Mon, 03 Aug 2026 09:25:12 +0000 https://vzilla.co.uk/?p=3639 Last week the general availability of the Veeam Data Platform 13.1 went live and there have been some great blog posts highlighting the big ticket items that came in this minor release.

Brad put together this post on the themes around 13.1 and targeted areas to continue to enable our customers to protect their ever changing estates.

https://www.veeam.com/blog/veeam-data-platform-v13-1-identity-cyber-ai.html

Anthony got into some of this but has a focus around the hypervisor support and continued coverage we continue to strive to help our customers protect their virtual machines.

image

I wanted to take one of those features that I actually believe could be a pretty big deal for those looking after the data across a business.. Anthony mentioned the Application Backup Repository in his post,

Application Backup Repository, which takes the Veeam Infrastructure Appliance running in Hardened Repository mode and turns local storage into a pool of virtual volumes, each one exposed as its own NFS target. Applications write to it directly with no awareness of Veeam underneath, while Veeam handles snapshots, immutability and access control behind the scenes. Oracle RMAN Incremental Merge is the flagship use case, but the door is open to anything from IoT devices to standalone databases that can export or dump data to NFS.

When we were first briefed on this feature, I was thinking of all the use cases that this could really help our customers. In this post I want to cover from the Veeam side, how do we get an Application Backup Repository setup and then touch on what I think could be a massive use case for this feature.

Getting Started with the Application Backup Repository (ABR)

To note, most of the screenshots I share are from a beta / technical preview and not the GA code so might differ slightly but the standard wizard driven approach won’t be far from the reality in the GA code. As Anthony states this is an extenstion and use case that leverages the Veeam Infrastructure Appliance, this is a packaged up ISO or OVA that enables you to simply deploy to your environment and then add to your overall Veeam Backup & Replication environment.

What is the Application Backup Repository?

  • A new repository type in VBR – ’Smart’ NFS Share:
  • If you export data to it, it is protected.
  • Veeam Schedules Snapshots and Backup Copy
  • Instant Recovery & Rollback: Full snapshot revert or Granular recovery

Why?

Veeam have been great with bringing out Enterprise Application plugins and providing application consistency and bridging the gap between application and database owners with making sure that backup admins have a grasp on what is being protected vs App owners going rogue and just storing large backup files where they wish, sometimes not storing in great places… we all saw the agentic situation that deleted the database and its backups… dont store backups on the same machine… bad idea!

This feature provides a catch all for those applications where there is not yet the enterprise application integration with Veeam. It was also the basis of large database incrementals for Oracle. But the oppurtunity here is the platforms that are not natively supported by Veeam yet today as well. Think about the databases running on a docker host in a container, Database as a Service offerings like Supabase, PlanetScale, MongoDB and this list is getting longer and longer as well as anything that exports a configuration such as a switch or other network devices.

How?

The quick how is, deployed as a Veeam Infrastructure Appliance that enables an NFS export. •Applications write native exports/dumps directly to the NFS share on their own schedule (cron, DBaaS export, Proxmox LXC backup, network device config export, etc.)​

Veeam then takes scheduled snapshots, which can then be backed up to other storage types for longer term retentions and offsite copies.

​Restore wise, this offers the ability to restore from snapshot, ‘Revert Snapshot’ (full rollback of the NFS export) or ‘Export Snapshot’ (mount as temp read-only path for granular restore)

​This VIA leverages the immutability flag meaning that we have an immutable copy stored as well as being able to backup copy to a secondary location.

We should consider one application per repository as the snapshot revert will apply to the entire dataset.

To get started we are going to deploy our new Veeam Infrastructure Appliance with our required disk layout to store our backups, in my case I am doing this on a VM but this could be a physical storage server as well. When we have that new Veeam server added to our managed servers we can go and create our new Application Backup Repository. Give it an appropriate name and click next.

image 1

Because we have added the VIA as a managed server we will see this in the drop down, select this but if you have not yet added the server you could select “Add New” and run through that process.

image 2

We then need to define our repository, we will grant permissions for the NFS share.

image 3

We can then define our snapshot schedule.

image 4

And now on your client, whatever it is you want to send to the repository you would mount this NFS export and start sending those exports or dumps to it. Within Veeam Backup & Replication you will see the snapshots looking something like this based on the schedule you set.

image 5

We should also talk about recovery options, this is where my images might differ from the GA but the same concept will be available. When you right click on your snapshots in the above screen you will have a recovery option.

image 6

When the “Instant Recovery” is clicked a  new window appears and you can choose your available restore point.

image 7

There are two restore modes available,

Revert the snapshot is going to rip and replace the contents of the NFS Export

Export snapshot via a temporary path is going to enable you to mount the snapshot as a new export so you can go and pick what you want and possibly copy and paste.

image 8

 If you chose the revert snapshot option then you will need to unmount and remount the nfs export.

image 9

We can then configure backup copy options to send our backups to additional storage types, offsite locations and different retentions. In a simple way you could give this export to any of your app owners and this is where they can start dumping their data.

“Anything” Backup Repository…

Now you have seen how simple it is to create, there are so many exciting and useful scenarios we could use this for, the first idea I had was a database that lives on a platform without Veeam native support, maybe this is a containerised version of MySQL.

image 10

The concept of this repository is that you can send anything that Veeam doesn’t support natively into this and be sure that backup admins have visibility of these backups.

This is focused on MySQL but in theory any database living anywhere could be an option here.

image 11

I have been working on a small demo tool that allows me to schedule these database dumps from many different database sources including many of the logos you see above, you could think about this as a centralised database export scheduler.

image 14

Maybe worth another post down the line on this as well as some of the other use cases I have been thinking about like Proxmox LXC containers exports to this NFS export.

Many ideas, the really exciting part of this feature for me is finding what the community will use this for.

]]>
https://vzilla.co.uk/vzilla-blog/the-veeam-application-backup-repository-13-1/feed 0
Learning The Data Engineering Foundations https://vzilla.co.uk/vzilla-blog/learning-the-data-engineering-foundations https://vzilla.co.uk/vzilla-blog/learning-the-data-engineering-foundations#respond Thu, 28 May 2026 13:46:13 +0000 https://vzilla.co.uk/?p=3625 Yesterday we wrote down a plan.

Today we started the plan.

We started this course linked above, it had a bit of everything I was looking for the foundations. We are around 2 hours in and I decided that might be a good time to look back over the notes and look at the additional areas that have been mentioned already that we need to get into. I am not going to reinvent the wheel here, If you are interested then get into this first. I would say you can take the first hour and learn something.

The next hour was more talking about technologies that would be needed with some overview, In the above hour you will hear many tooling options as well so I will start there. My plan here is to try and find some useful, focused content that I can watch through to learn more of the fundamentals of these tools.

PSA: The Apache Software Foundation (ASF)

Many of the tools listed below are fronted with “Apache”, I had obviously heard of many of these Apache titled bits of software but I was maybe a little naive to the background. The Apache Software Foundation (ASF) actually manages over 350 open-source projects spanning almost every corner of enterprise technology, including web servers, operating systems, development tools, and database management systems.

It All Started with a Web Server, I am pretty confident that anyone that has read this far has used the Apache Web Server before?

The Broader Apache Universe

To give you an idea of how diverse the community is, here are some major non-data engineering projects you might run into:

  • Web & Application Servers: Along with the original HTTP Server, they manage Apache Tomcat, which is used globally to run Java-based web applications.
  • Databases & Storage: They host highly popular NoSQL databases like Apache Cassandra (originally built by Facebook to power their inbox search) and Apache CouchDB.
  • Build & Dev Tools: Tools that developers use every day to build their code, like Apache Maven and Apache Ant, are standard parts of the software development lifecycle.
  • Operating Systems: They even house Apache CloudStack, which is open-source software designed to deploy and manage large networks of virtual machines as a cloud computing platform.

All of the above is out of scope for this learning journey, but in the reverse it reminded me of the Cloud Native Computing Foundation (CNCF) in a way.

Lets get into the Apache Data Engineering Stack and surrounding technologies.

Ingestion/Streaming (Apache Kafka)

The highway that captures live data and moves it into the architecture.

image 4

Storage (Apache Iceberg, Delta Lake inside Cloud Storage (S3))

The smart organising layer that formats the data safely on disk.

image 6

Compute/Processing (Apache Spark, Apache Flink)

The heavy-duty engines that reach into storage to transform and clean the data.

image 7

Architectural Platforms (Snowflake, DataBricks, Microsoft Fabric)

The overarching cloud environments where all of this compute and storage lives.

image 8

Orchestration (Apache Airflow)

The conductor that schedules when the ingestion, storage, and compute actions trigger.

image 9

Languages/Interfaces (Python, SQL, Jupyter).

The tools you use to write the logic and talk to every single layer above.

image 10

Other Tools (Containers, Virtualisation, Cloud)

Docker was mentioned but I have covered this in the #90DaysOfDevOps series, so going to drop that link below.

https://github.com/MichaelCade/90DaysOfDevOps/blob/main/2022/Days/day42.md

image 3

My goal now instead of using Gemini to craft these somewhat interesting images above, is to find where people much smarter than me have already digested a lot of these tools and areas so I can then be smarter myself when I go back to the crash course.
Also side note… that initial crash course is not the full course free on youtube, its an almost 4 hour teaser to a 17 hour paid for bootcamp.. Jury is out if thats the way to go.

]]>
https://vzilla.co.uk/vzilla-blog/learning-the-data-engineering-foundations/feed 0
2026 – Thoughts, Goals & Focus https://vzilla.co.uk/vzilla-blog/2026-thoughts-goals-focus https://vzilla.co.uk/vzilla-blog/2026-thoughts-goals-focus#respond Wed, 27 May 2026 14:52:58 +0000 https://vzilla.co.uk/?p=3608 Hey, it’s been a while…. This is me writing though not another AI dumped bit of content, equally this is for me more than anyone else, its a line in the sand, a commitment of starting a new learning journey and putting it out there for everyone to see. (I did however use AI on the images)

For those that know me, I have been a constant and consistent learner. I started my IT career with hardware—building servers for Cambridge University, getting server operating systems up and running, and handling systems administration and operations. That was before the virtualization era. From there, I moved to the cloud, transitioned my learning into DevOps and Kubernetes, and that brings me to the here and now.

We are surrounded by AI, but “AI” means so many different things to different people, teams, and companies.

Lately, I have been intrigued by a specific challenge: How can we ensure the validity of our AI experience when it interacts with our own data? How can we ensure the data we hover above an LLM is actually going to provide us with the correct information?

From that perspective, I have found myself drawn into the world of Data Engineering and DataOps.

image 1

So, what’s the plan?

The first area of focus is watching foundational content designed to establish core concepts before diving directly into specific platforms. I’m currently working my way through this crash course: Data Engineering Foundations Crash Course!

I am specifically looking at recent content that discusses data engineering core principles and how they land with AI and machine learning in mind. This video is proving to be a great starting point because it details how data flows through real-world systems—exploring how data is stored, processed, orchestrated, and served. It bridges the gap between raw data and consumption, illustrating how foundational steps like proper data collection and pipeline stability directly impact the success of downstream machine learning models and AI dashboards.

Before I step into heavy-hitting enterprise tooling like Databricks, Snowflake, and Microsoft Fabric, this stage is entirely about cementing those basic Data Engineering Foundations through a structured, multi-phase approach:

Phase 1: The Storage Revolution (From Blocks to Formats)

Typically, my learning has gone straight into the platform layer, but we need to focus on the data layer for this new world. In Data Engineering, the bucket alone is just the graveyard; the magic is in the open table formats sitting inside them. To master this, you must understand Delta Lake, Apache Iceberg, and Apache Hudi. These formats add an ACID compliance and metadata layer to Parquet files, effectively making object storage act like a high-performance database.

Phase 2: The Data Pipeline Lifecycle (CI/CD for the DevOps Crew)

Data Engineering has its own version of a DevOps pipeline, and you need to map ETL/ELT (Extract, Load, Transform) to concepts you already know. Instead of application deployment, the focus here shifts to data ingestion, code-driven data transformation (using tools like dbt), and modern workflow orchestration (like Airflow or Dagster).

Phase 3: Data Preparation for LLMs (The RAG & Semantic Layer)

Before an LLM can interact with your data safely and accurately, that data has to be translated into a mathematical language the model understands. This is where traditional data engineering pipelines pivot into AI-native architectures. The focus here shifts from flat relational tables to managing unstructured data (PDFs, documentation, customer tickets).

I need to understand the lifecycle of chunking strategies (how you slice up long text), generating Vector Embeddings via embedding models, and optimizing Approximate Nearest Neighbor (ANN) indexing algorithms like HNSW (Hierarchical Navigable Small World) for sub-millisecond similarity search.

I’ll be exploring dedicated vector systems like Milvus and Qdrant (written in Rust for low latency), seeing how standard databases adapt via extensions like pgvector for PostgreSQL, and learning how orchestration frameworks like LangChain and LlamaIndex stitch pipelines and LLMs together.

Phase 4: Data Privacy, Masking & Governance for AI

When you “hover data above an LLM,” your security perimeter changes completely. Traditional Role-Based Access Control (RBAC) doesn’t gracefully translate when an LLM can access an entire data lakehouse and accidentally leak sensitive executive info or PII (Personally Identifiable Information) through a single user prompt.

This phase is about moving toward modern Data Security Posture Management (DSPM) and context-aware, adaptive policies. I need to understand and learn programmatic Dynamic Data Masking (redacting data at query time based on user role) and Row-Level Access Policies within the pipeline before the data ever reaches the LLM’s context window.

Phase 5: DataOps & Data Observability

Think of this as Prometheus and Grafana, but for data quality. If an infrastructure pipeline fails, a pod crashes. If a data pipeline fails silently, a null value enters a database, poisoning downstream AI models and corporate decision-making without anyone noticing until it’s too late.

Phase 6: Platform Distinctions & Architectures

Once the fundamentals are locked in, it’s time to get into the weeds of the platform layer. At the moment, I’m framing this exploration around three core pillars:

  1. How data enters
  2. How it is secured
  3. How it is consumed (including by AI)

At this stage, I don’t know what I don’t know, so this list may evolve, but the dominant enterprise platforms and ecosystems I keep hearing about are Databricks, Snowflake, and Microsoft Fabric.

image

TLDR;

  • Phase 1: Storage Formats (Iceberg, Delta Lake) — Where it lives.
  • Phase 2: Pipelines & Orchestration (dbt, Airflow) — How it moves and transforms.
  • Phase 3: Data Preparation for LLMs (Vectors & Embeddings) — How the AI reads it.
  • Phase 4: Governance & Privacy (DSPM & Masking) — How we keep it secure.
  • Phase 5: DataOps & Observability (Data Quality) — How we ensure it isn’t poison.
  • Phase 6: Enterprise Platforms (Databricks, Snowflake, Fabric) — The big suites that tie it all together.

My other “Big Rocks”

As well as navigating the brave new world of data engineering, I also need to continue diving deeper into a few of my existing technology areas:

  • DevOps Tooling & Source Code Repositories: Deepening expertise across GitHub, GitLab, and Azure DevOps.
  • DevOps, Product Management & Development Services: Focusing on the Atlassian stack (Jira & Confluence).
  • Platform Focus: Gaining an even stronger foothold in Red Hat OpenShift and KubeVirt.
  • Databases: Expanding operational knowledge of modern database architectures.
image 2
]]>
https://vzilla.co.uk/vzilla-blog/2026-thoughts-goals-focus/feed 0
Deploying the Veeam Software Appliance on Kubevirt https://vzilla.co.uk/vzilla-blog/deploying-the-veeam-software-appliance-on-kubevirt https://vzilla.co.uk/vzilla-blog/deploying-the-veeam-software-appliance-on-kubevirt#respond Tue, 23 Sep 2025 07:28:14 +0000 https://vzilla.co.uk/?p=3593 Virtual Machines on Kubernetes is a thing so I thought it would be a good idea to run through how to get the Veeam Software Appliance up and running on KubeVirt which will also translate to enterprise variants that use KubeVirt to enable virtualization on top of Kubernetes such as Red Hat OpenShift Virtualization and SUSE Harvester.

I wrote about the Veeam Software Appliance and ran through the steps to get the system up and running as the brains of your backup environment along with some of the benefits it brings.

For those familiar with the process I took in the above link in vSphere, be warned defining virtual machines in Kubernetes is all about the YAML.

What you will need

A Kubernetes cluster, I will be using Talos Linux as my Kubernetes distribution in the home lab but any bare metal Kubernetes cluster should work providing you have the system requirements.

The system requirements for the nodes in your cluster should have enough to meet the requirements of the Veeam Software Appliance. 8 vCPU, 16+ GB RAM, and two disks (≈240 GB+ each)

You should have a StorageClass with enough capacity to store the above disk requirements.

KubeVirt + Containerized Data Importer (CDI) installed and working. CDI is used to create DataVolumes and import/upload images. (I am running version 1.6.0 of kubevirt)

Client side you will need kubectl and virtctl, kubectl is how we will interact with the cluster, virtctl helps us to upload images, start virtual machines and open a VNC/Console to the machine.

High Level Steps

  • Upload the Veeam Software Appliance ISO into the cluster (DataVolume)
  • Create Blank DataVolumes (PVCs) that will become the appliance target disks (this needs to be 2 x 250gb due to us needing 248gb)
  • Create a Virtual Machine that attaches the ISO and the blank PVCs as disks (ensuring the correct boot order)
  • A service so that the system can be accessed outside of the cluster.
  • Start the VM and work through the initial configuration wizard of the appliance

Upload the ISO into the cluster

We now need to get the ISO into our cluster as a DataVolume to be used with the virtual machine creation in the next step. First we need to create a namespace where will create the virtual machine and everything associated with it.


kubectl create ns veeam
image 20

You could use port-forward but for a large ISO like this it might take a considerable amount of time. I opted to use a local web server on my system to share the ISO. I used a simple python web server with the following command.


python -m http.server 8080

We will then create a DataVolume for our ISO and we will specify the URL to get our ISO. Be sure to change your path and storageclass.


# veeam-iso-dv.yaml
apiVersion: cdi.kubevirt.io/v1beta1
kind: DataVolume
metadata:
name: veeam-iso-dv
namespace: veeam
spec:
pvc:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 13Gi
storageClassName: ceph-block
source:
http:
url: http://192.168.169.5:8080/VeeamSoftwareAppliance_13.0.0.4967_20250822.iso

We will then apply this with


kubectl apply -f veeam-iso-dv.yaml

The import process will then start and you can use the following command to see the import progress.


kubectl -n veeam get dv veeam-iso-dv -w
image 21

You can keep on eye on this, don’t panic if it gets to 99.99% and sits there for the same time again with no updates. You can come out of this watch command and check the pod logs, you will have an importer pod in your veeam namespace that you can run this command against.


kubectl logs importer-prime-a1ec931f-5335-4f59-aa97-6f165f1c38eb -n veeam

When complete you can run the following command and hopefully you will see something like the screenshot below


kubectl -n veeam get dv veeam-iso-dv
image 22

Note when I first tried to use port-forward with this iso it was suggesting 7+ hours so this way is much more efficient.

Create blank target disks (DataVolumes)

You might at this stage be realising the difference between Kubevirt and a hypervisor like vSphere…

We have the ISO uploaded to the cluster and we are now ready to create our Virtual Machine.

There is an option in the following YAML to use CloudInitNoCloud to inject an SSH user for access after installation, I have not added this as although you can SSH into the Veeam Software Appliance from a security standpoint it is not enabled and requires elevated security officer approval, maybe more on this in another post.

We are now going to define our Virtual Machine in code. Again if you are copying and pasting then please amend resources, storageclass and namespace if different to what I have used above.

The appliance requires UEFI vs BIOS so we have made that change to the VM configuration below.

You can find the VM code listed here in this GitHub repository
veeam-vm.yaml

https://github.com/MichaelCade/vsa_kubevirt

Now we can create our VM using the command below


kubectl apply -f veeam-vm.yaml
image 23

At this stage our virtual machine is powered off but to confirm the status we can check using


kubectl get virtualmachine -n veeam
image 24

Start the VM

Four YAML files later, we are now ready to start the machine.

When ready we can start things using the following virtctl command


virtctl start veeam-appliance -n veeam
image 25

lets then use that command again to check the status of our virtual machine


kubectl get virtualmachine -n veeam
image 26

Now we need a console to complete our initial configuration wizard within the TUI, I have installed tigervnc as my client

you can then run a virtctl command to connect


virtctl vnc veeam-appliance -n veeam
image 27

and with this command you will also see the following pop up,

image 28

Ok, I think that is enough for this post. I have been storing the code snippets in a repository on GitHub that can be found here. – https://github.com/MichaelCade/vsa_kubevirt

Once you get to this page of the Initial configuration, you can then follow this post to complete the steps. – https://vzilla.co.uk/vzilla-blog/the-veeam-software-appliance-the-linux-experience

]]>
https://vzilla.co.uk/vzilla-blog/deploying-the-veeam-software-appliance-on-kubevirt/feed 0
The Veeam Software Appliance – The Linux Experience https://vzilla.co.uk/vzilla-blog/the-veeam-software-appliance-the-linux-experience https://vzilla.co.uk/vzilla-blog/the-veeam-software-appliance-the-linux-experience#respond Mon, 08 Sep 2025 15:18:24 +0000 https://vzilla.co.uk/?p=3570 The first week in September 2025 saw a massive initial release of the Veeam Software Appliance. Since the inception of Veeam and the ability to protect Virtual Machines on VMware vSphere Veeam has been a Windows Server based product, until now.

I have also skipped over how “Virtualisation was just the start” and it was, now the Veeam Data Platform protects workloads and data across many different platforms, VMware vSphere, Microsoft Hyper-V, Proxmox, Oracle Linux Virtualisation and lots more hypervisors, as well as protecting public cloud workloads on AWS, Microsoft Azure and Google Cloud. The protection of Kubernetes came almost five years ago with the acquisition of Kasten now known as Veeam Kasten or Veeam Kasten for Kubernetes. We have M365, Salesforce backup, EntraID, Agents for Windows, Linux, Solaris, AIX and then we also protect unstructured data by way of NAS devices and Object Storage locations.

As of this week the management layer of Veeam is no longer just an option on Windows, Linux entered the room.

Home Lab Setup Plan

My morning of the 3rd September was sat waiting for the downloadable, public release of the Veeam Software Appliance (VSA) We as Veeam have made big splashes about this at our event earlier in the year and showed off a lot of the features and functionality, I am not going to get into too much of that here.

When the downloads became available it was time to start the engines, but not without a solid plan. I have documented my home lab setup in previous posts. As much as this is a home lab I still want to treat things with some real life accountability. However, what I am about to show you is that my repository will be living on the same virtual environment I am likely going to be protecting… for now and this will be resolved down the line with the Veeam Data Cloud Vault option where I can store those backups offsite in the Veeam first party solution.

OK, back to the plan.

image

As you can see from the above image we had some virtual machines to create, 10 if we include that DNS server down there. We also have some futures that are documented from Veeam as coming in the not too distant future.

The VSA is available in an OVA and ISO format. There is then a smaller ISO for the Veeam Components such as the Hardened Repository and Proxies. You can see we have 5 proxies planned and a Hardened Repository (again bad practice to store a backup repository on the infrastructure you are going to protect, don’t be like me)

For the VBR (Veeam Backup & Replication) server we will use the OVA and import this into our vSphere environment and create a new VM.

For the EM (Enterprise Manager) server we will use the ISO and create a VM and run through the configuration steps to get this setup.

The proxies and hardened repository will use the smaller ISO

Veeam ONE is a powerhouse with this release, still Windows but massively important. We will provision a Windows 2025 Server for this.

I will mention for this plan, I also provisioned a Windows 2025 Server Core for the DNS server and created a new forest called “vzilla.local”

Hopefully that makes everything in the picture a little clearer, the web client can be any OS and any mainstream browser (I have tried with Chrome, Edge and Firefox) The thick client aspect is used to access some of the Veeam ONE and the VBR server. I have installed the VBR thick client on the Veeam ONE Windows Server.

VBR Deployment Process

As mentioned I am going to be using vSphere here to deploy my virtual machines for this plan, clearly anything can be used including physical systems. Anything that supports the OVA but equally this is why there is an ISO for those physical systems or where OVA is not supported.

image 1

Select the OVA

image 2

I am not going to go through step by step here, basically select the OVA, give the machine a relevant name for your environment choose the DC, Cluster or Host you wish to deploy to, select some shared storage and finish.

When that import is complete, you will have a powered off virtual machine ready to be powered on. (I created another import to capture the process here and it is named 2025-veeam-vbr1)

Powering on the VM

image 3

Next we will see a booting ‘Veeam Backup & Replication” followed by the initial configuration wizard, starting with the license agreements.

image 4

Accept this then we can give the box a name.

image 5

Next we can configure our network, I have used the static option to set a standard static ip4 but ipv6 is also available to set here.

image 6

Then we need to change the time, I am based in the UK so I selected change and searched for London to update the timezone but left the available NTP servers as is.

image 7

Then we are onto setting a host administrator, this process is the same for any managed Veeam machine, proxies, repositories and enterprise manager.

image 8

The next screen is configuring the multi factor authentication (MFA), I am using the Microsoft Authenticator for all of my MFA needs so I hit show QR code, scan that within the app and then type the number provided from the app to proceed to the next step.

image 9

Following that step you are then asked if you would like to create a Security Officer,

At the Security Officer step of the Initial Configuration wizard, configure the default security officer account to perform specific operations in the Host Management console — veeamso. This account type provides an additional security layer to protect your infrastructure against malicious system administration.

The above was taken from the documentation pages – https://helpcenter.veeam.com/docs/vbr/em/deployment_linux_iso_install_security_officer.html?ver=13

image 10

if you choose to skip this step, you are prompted with a very red warning. It will not be possible to enable this role later on after this step. For the purposes of this demo walk through I have said OK but in my lab environment I have created that veeamso account on all hosts, when you set a password in this wizard, you will be required to change that when your security officer first logs into the management console to approve tasks.

image 11

The final page is a summary of what you have configured

image 12

Select finish and then wait for the state configuration to be saved and then for the services to come up. When they are up you will be able to access.

image 13

Host Management Console

The Host Management Console allows administrators to perform configuration and maintenance tasks, including managing network settings, server time, host users and roles, backup infrastructure, OS and Enterprise Manager updates, maintenance operations, and security settings.

This can be accessed via https://192.168.169.122:10443/

obviously changing to your set IP address, you will then be able to login here with the veeamadmin account.

image 14

Web UI Preview

The Veeam Backup & Replication web UI is a browser-based interface that enables you to manage backup and recovery operations, monitor your backup infrastructure, and configure system settings from any supported device. The web UI provides a modern, streamlined experience designed to simplify daily administration and deliver at-a-glance visibility into your data protection environment.

Please note that this is a preview and not all capabilities within Veeam Data Platform are available here today in this release, you will be able to manage some of your environment from here but you will need the thick client access for all tasks.

This can be accessed via https://192.168.169.122/

again changing your IP address above.

image 15

Thick Client Access

For those of you familiar with the thick client approach, it has been enhanced and looks much better, its faster and is used and designed to let you quickly find commands that you need and perform data protection and disaster recovery tasks.

As stated in my diagram above, you will need a Windows based machine to install and use the thick client. Point the client to your address above.

Next Steps

To complete the home lab setup, I went and created 6 further virtual machines using the smaller JeOS ISO and this is what was used to create the hardened Linux repository (bad practice to run this on a VM, the security score in threat center will also warn you against this, don’t be like me) and then the five proxies, the process is very much the same as the initial configuration wizard we went through above and then you add them into your VBR thick client.

With the proxies, I created one proxy per vSphere host, when I added them in you have the choice of what proxies they are going to be.

image 16

I then repeated the steps for VMware and VMware CDP as I want these to be the data movers for all tasks.

image 17


I had also deployed a Windows Server, downloaded the new Veeam ONE ISO and got things up and running there, maybe another post on those steps to come. Adding Veeam ONE is important as this gives you some great insight into the security posture of your backup environment. The threat center element is pulling data from Veeam ONE to display within the thick client and the web UI.

image 18

Next, I wanted to get my Enterprise Manager VM up and running and to do this I used the Veeam Software Appliance ISO and this runs again through a similar configuration wizard as shown but on first boot you will get a choice of Enterprise Manager or Veeam Backup and Replication to install on this, process was to create a VM with the required CPU, Memory and disks and then run through that process.

image 19

The final steps was to add some infrastructure to protect and then create some backup jobs. If you are familiar with Veeam this should be the same process as before.

To caveat once again here, this is a lab environment where I can show demos of Veeam Software, I am using virtualization for components that in production should be on physical hardware and not virtual machines, but for home lab environments what I have built will cover elements of what I need to cover in demonstrations. I will also be adding cloud based protection workloads and Veeam Kasten instances later on down the line that I have running to extend the lab into different platforms.

]]>
https://vzilla.co.uk/vzilla-blog/the-veeam-software-appliance-the-linux-experience/feed 0
Fixing a bounced vCenter server https://vzilla.co.uk/vzilla-blog/fixing-a-bounced-vcenter-server https://vzilla.co.uk/vzilla-blog/fixing-a-bounced-vcenter-server#respond Wed, 23 Jul 2025 09:02:16 +0000 https://vzilla.co.uk/?p=3557 A few times a year, my home lab gets bounced for whatever reason and generally because I have the vSphere vCenter living on top of the 5 ESXi nodes this causes an issue where when the hosts come back up we are lacking a fully functional vCenter, probably need to consider a better approach but here we are.

I am able to get into the vCenter Server Management console at https://192.168.169.181:5480 a port etched into my brain for some reason!

image

But when we head to services we have many that are not running and they should be.

image 1

I check the access settings and ensure that SSH is enabled so we can dive deeper and try and get these services up and running.

image 2

I first try ssh root@192.168.169.181 but I am met with

image 3

So my alternate way is using

ssh -o IdentitiesOnly=yes -o PreferredAuthentications=password -o PubkeyAuthentication=no root@192.168.169.181

Which gets me in to

image 4

I then use the service-control –status command to see the same what we have in the management UI

image 5

Followed by service-control –start –all which seems to sit here for a very long time but noting this down at this stage to make sure future me doesn’t do anything silly.

image 6

While the above was going on I checked the time tab in the management UI and we were back in time, around 2023 and wondered if this could be why things were not quite right and we were also using host based NTP, I changed this setting and got things up to date

image 7

In changing the time we were now able to get into

image 8

We do have to wait a while for things to finish initializing here. But maybe it was all down to time! I actually got impatient and hit the reboot button from the management UI.

Things do not look all that pretty and I may update if relevant here with what is going on!

image 9
]]>
https://vzilla.co.uk/vzilla-blog/fixing-a-bounced-vcenter-server/feed 0
The Hypervisor Hunger Games – Service Provider Edition https://vzilla.co.uk/vzilla-blog/the-hypervisor-hunger-games-service-provider-edition Sun, 29 Jun 2025 09:52:01 +0000 https://vzilla.co.uk/?p=3551 Many MSPs (Managed service providers) have hedged their platform offering in and around the vSphere ecosystem and now what?

I have said before about the cost conundrum here and these are some decisions that people in all worlds will have to consider. But in a service provider world it’s maybe not a simple rip and replace with Nutanix AHV or another.

Service providers bring values by having this stack that they not only bring a relationship with their customers they also can automate and provide additional wrap around services and join up this vast ecosystem we have when it comes to VMware.

It’s also very much a price per fight here for MSPs. Value add + capabilities so spending the winnings on software licensing probably doesn’t add up. Maybe platform replacements like Nutanix AHV or even Red Hat OpenShift are not that much different licensing cost wise compared to the Broadcom tax. (Maybe it’s a valid tax being the best hypervisor but also the strongest ecosystem)

What I do think we could see is a lot of service providers looking into KVM based options. Albeit the ecosystem is maybe not as polished and supported it might just be enough to ramp up.

I am talking about options like Proxmox, XCP-NG and maybe even the new hypervisor option from HPE but this will come as a premium as well. These options will also not be free, they will be free like a puppy but the cost will come from elsewhere.

The other option could be KubeVirt. KubeVirt is what underpins Red Hat OpenShift Virtualisation but it is an open source project that can be used across many Kubernetes distributions and managed with a bit more effort to OpenShift. Could this be a real option for service providers to accelerate their own offerings into the cloud native ecosystem? An ecosystem that has been built over the last 10+ years.

I am going to share a fantastic resource for the vSphere admin here from my good friend Dean Lewis

I want to be clear that KubeVirt is even though established and been around a while it’s still missing that polish that we have within mainstream vSphere, Hyper-V, Nutanix AHV hypervisors and platforms but I remember when vSphere was like this and we all flocked in that direction.

All I do know is that wherever service providers land the requirement for data protection and management will be there so regardless.

I wrote about protecting these VMs on Kubernetes here

Finally, one thing is for sure. Virtual Machines are not going anywhere! We might be in a world surrounded by AI but the trusty virtualisation era isn’t over and will continue to be a staple be it in the data centre. Or…. In the public cloud…. Could the public cloud IaaS be an option instead of on premises for providers?

]]>
Taking a look at KubeBuddy for Kubernetes https://vzilla.co.uk/vzilla-blog/taking-a-look-at-kubebuddy-for-kubernetes https://vzilla.co.uk/vzilla-blog/taking-a-look-at-kubebuddy-for-kubernetes#respond Thu, 15 May 2025 10:17:42 +0000 https://vzilla.co.uk/?p=3536 I have been meaning to get to this little project for a while, and here we are. You can find a link to the site below, I like this initial in your face message though, this tells me that this tool is going to tell me something about my Kubernetes cluster that I didn’t know, for the record I am going to download and run this on my home lab cluster and see what we get. This is not a production cluster!

So what is it…

KubeBuddy powered by KubeDeck helps you monitor, analyze, and report on your Kubernetes environments with ease. Whether you’re tracking cluster health, reviewing security configurations, or troubleshooting workloads, KubeBuddy provides structured insights.

image 21

Lets get started

Suspiciously this Kubernetes tool is built using PowerShell, I don’t think I can name another tool with this characteristic?

Luckily, PowerShell is now available cross platform, I am using a Mac so as part of this getting started we will also be getting PowerShell installed via brew.


brew install powershell

Other installation steps can be found in the usage section of the page link above. Ok, Good stuff we have our PowerShell installed and we can use

pwsh
from our Ghostty terminal to get into the shell. We can then run a command to get the KubeBuddy module installed.


Install-Module -Name KubeBuddy -Scope CurrentUser
image 22

Also from the above we can see the way in which we can start playing with KubeBuddy is by starting with the

Invoke-KubeBuddy
command.

We can then also use

Get-Help Invoke-KubeBuddy -Detailed
as a way to understand some additional flags we have access to here.

image 23

Are we ready to find out something we didn’t know about our cluster?

As you can see it was pretty easy to run against my Kubernetes cluster, I am running a Talos cluster, which is designed to be very minimum and extremely secure so there might be some things reported that are related this.

The Output

As you can see from the end of the video above, we have an output. For this output we chose html but you can get JSON and have seen in the report a save to pdf feature as well.

Here is the html output, I am not going to get into the issues its found, maybe that is a follow up but I think its great that we get a lot of detail without a lot of effort, the tool has taken away the having to search and find this.

Navigation along the top allows you to dive into each of those areas and display warnings and errors found in those specifics.

image 24

When we scroll down we see some more detail about the cluster, even for home lab 20 Critical seems like something we should investigate further.

image 25

Finally, on this initial page we see some information about resources and cluster events, not much going on in the lab right now or something not being picked up is my suspicion here.

image 26

As you then go across the tabs at the top you can get more granular detail on each area, all tabs have this similar layout, the initial Total of resources and those with issues then some recommendations and some findings. Again useful as to find this using

kubectl
would be a needle in a haystack.

image 27

My Thoughts?

This was a very quick overview of this little tool, I am intrigued by the PowerShell, I am intrigued by how this can be progressed and the future of the project and where it can go and highlight.

]]>
https://vzilla.co.uk/vzilla-blog/taking-a-look-at-kubebuddy-for-kubernetes/feed 0