Configure and Install AWX operator in Kubernetes

Filed Under: Random
AWX Operator In Kubernetes

Hello, readers! This article talks about the way to Configure and Install the AWX operator in the Kubernetes environment with a detailed demonstration.

So, let us begin!! 馃檪


Purpose of AWX operator

Before diving deep into the concept of AWX operator, let us understand its relevance to an important product in Cloud Automation – Ansible.

Ansible is an IT transformation system in itself. With Ansible, most of the tasks can be automated be it application deployment, configuration deployment, Cloud resources provisioning, etc.

AWX ensures that we have a web-based user interface on top of the ansible setup. With this, the UI can be used to introspect the deployed setup through ansible. It also provides us REST-APIs that we can use for a customized set-up and build functionality.

Thus, we can manage the inventories along with the scheduled setups through a web-based interface using the AWX operator on top of Ansible.

Having understood about the AWX operator, let us now try to install it in a Kubernetes environment.


Pre-requisties cleared!

To have the AWX operator installed in Kubernetes, we will be making use of Minikube as the setup for the Kubernetes Cluster.

For practical usage, we recommend having the Kubernetes set up in a Managed Kubernetes solution. For example, Google Kubernetes Engine, Azure Kubernetes Services, etc.


Install AWX operator on a Kubernetes setup

To install the AWX operator, clone this repository and check the latest git version using the git checkout command. You can also check the latest release from https://github.com/ansible/awx-operator/releases.

Once we choose the latest release version, we just need to export the namespace (create a namespace for the awx operator) into a variable as shown below-

kubectl create ns my_namespace
export NAMESPACE=my_namespace

Once done, deploy the AWX operator using the below command-

make deploy

Output-

As a result, it shows the below resources being created within the limit of the namespace in the Kubernetes cluster.

cd config/manager && /home/user/awx-operator/bin/kustomize edit set image controller=quay.io/ansible/awx-operator:0.14.0
/home/user/awx-operator/bin/kustomize build config/default | kubectl apply -f -
namespace/my-namespace created
customresourcedefinition.apiextensions.k8s.io/awxbackups.awx.ansible.com created
customresourcedefinition.apiextensions.k8s.io/awxrestores.awx.ansible.com created
customresourcedefinition.apiextensions.k8s.io/awxs.awx.ansible.com created
serviceaccount/awx-operator-controller-manager created
role.rbac.authorization.k8s.io/awx-operator-leader-election-role created
role.rbac.authorization.k8s.io/awx-operator-manager-role created
clusterrole.rbac.authorization.k8s.io/awx-operator-metrics-reader created
clusterrole.rbac.authorization.k8s.io/awx-operator-proxy-role created
rolebinding.rbac.authorization.k8s.io/awx-operator-leader-election-rolebinding created
rolebinding.rbac.authorization.k8s.io/awx-operator-manager-rolebinding created
clusterrolebinding.rbac.authorization.k8s.io/awx-operator-proxy-rolebinding created
configmap/awx-operator-manager-config created
service/awx-operator-controller-manager-metrics-service created
deployment.apps/awx-operator-controller-manager created


Inspect the AWX setup in Kubernetes

Once the set-up gets deployed within the namespace, the AWX operator appears to be running as a pod within the Kubernetes cluster.

We can make use of the below command to have a look at the AWX operator pod-

kubectl get pods -n $NAMESPACE

Output-

NAME                                               READY   STATUS    RESTARTS   AGE
awx-operator-controller-manager-32qqw8f097-cdr4z   2/2     Running   0          111s

Post deploying the AWX operator, we can have a look at the logs of the controller operator using the below command-

kubectl logs -f awx-operator-controller-manager-32qqw8f097-cdr4z -n $NAMESPACE

User Account access information

In order to control the portal of the AWX operator platform, we would be needing some sort of authentication to interact.

By default, the ADM/admin user is admin and the password for the same is available in the form of a secret in the <resourcename>-admin-password secret.

For example,

kubectl get secret awx-demo01-admin-password -o jsonpath="{.data.password}" | base64 --decode

The above command enables us to have the decoded password available from the secret of the AWX operator resource awx-demo01.

Also, when it comes to Kubernetes services from AWX’s perspective, the default one is ClusterIP. But, we do have a choice amongst ClusterIP, LoadBalancer, and NodePort type services.


Conclusion

By this, we have approached the end of this topic. Feel free to comment below, in case you come across any questions.

For more such posts related to Kubernetes, Stay tuned with us.

Till then, Happy Learning!! 馃檪

close
Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors