In my opinion, AWX is out of the picture. It's an ansible-based configuration management tool. It would make sense to use it to configure target nodes for running containers in docker-compose.
Kubernetes is a higher-level container orchestration than docker-compose. You can use ansible (AWX) to configure Kubernetes like you would with docker-compose.
Depending on the complexity of your containerized environment (and your requirements for availability, durability and recovery in case of disruptions) you need to decide if you want to go with docker-compose, Kubernetes or other container orchestrators (HashiCorp Nomad) for example.
Harbor is a topic of its own, it's a container registry. So if you decide to run your SW in containers, which seems like you already did, you know you need to store the images somewhere. For that you can use a public provider service (dockerhub, quay, other public providers) or you can host the image registry yourself. If you decide to host it yourself, Harbor is a good option.