Add Containers/Kubernetes/AWX (MiniKube).md
This commit is contained in:
		
							
								
								
									
										140
									
								
								Containers/Kubernetes/AWX (MiniKube).md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										140
									
								
								Containers/Kubernetes/AWX (MiniKube).md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,140 @@ | ||||
| # AWX Operator on Minikube Cluster | ||||
| Minikube Cluster based deployment of Ansible AWX. (Ansible Tower) | ||||
| :::note Prerequisites | ||||
| This document assumes you are running **Ubuntu Server 20.04** or later. | ||||
| ::: | ||||
|  | ||||
| ## Install Minikube Cluster | ||||
| ### Update the Ubuntu Server | ||||
| ``` | ||||
| sudo apt update | ||||
| sudo apt upgrade -y | ||||
| sudo apt autoremove -y | ||||
| ``` | ||||
|  | ||||
| ### Download and Install Minikube (Ubuntu Server) | ||||
| Additional Documentation: https://minikube.sigs.k8s.io/docs/start/ | ||||
| ``` | ||||
| curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube_latest_amd64.deb | ||||
| sudo dpkg -i minikube_latest_amd64.deb | ||||
|  | ||||
| # Download Docker and Common Tools | ||||
| sudo apt install docker.io nfs-common iptables nano htop -y | ||||
|  | ||||
| # Configure Docker User | ||||
| sudo usermod -aG docker nicole | ||||
| ``` | ||||
| :::caution | ||||
| Be sure to change the `nicole` username in the `sudo usermod -aG docker nicole` command to whatever your local username is. | ||||
| ::: | ||||
| ### Fully Logout then sign back in to the server | ||||
| ``` | ||||
| exit | ||||
| ``` | ||||
| ### Validate that permissions allow you to run docker commands while non-root | ||||
| ``` | ||||
| docker ps | ||||
| ``` | ||||
|  | ||||
| ### Initialize Minikube Cluster | ||||
| Additional Documentation: https://github.com/ansible/awx-operator | ||||
| ``` | ||||
| minikube start --driver=docker | ||||
| minikube kubectl -- get nodes | ||||
| minikube kubectl -- get pods -A | ||||
| ``` | ||||
|  | ||||
| ### Make sure Minikube Cluster Automatically Starts on Boot | ||||
| ```jsx title="/etc/systemd/system/minikube.service" | ||||
| [Unit] | ||||
| Description=Minikube service | ||||
| After=network.target | ||||
|  | ||||
| [Service] | ||||
| Type=oneshot | ||||
| RemainAfterExit=yes | ||||
| User=nicole | ||||
| ExecStart=/usr/bin/minikube start --driver=docker | ||||
| ExecStop=/usr/bin/minikube stop | ||||
|  | ||||
| [Install] | ||||
| WantedBy=multi-user.target | ||||
| ``` | ||||
| :::caution | ||||
| Be sure to change the `nicole` username in the `User=nicole` line of the config to whatever your local username is. | ||||
| ::: | ||||
| :::info | ||||
| You can remove the `--addons=ingress` if you plan on running AWX behind an existing reverse proxy using a "**NodePort**" connection. | ||||
| ::: | ||||
| ### Restart Service Daemon and Enable/Start Minikube Automatic Startup | ||||
| ``` | ||||
| sudo systemctl daemon-reload | ||||
| sudo systemctl enable minikube | ||||
| sudo systemctl start minikube | ||||
| ``` | ||||
|  | ||||
| ### Make command alias for `kubectl` | ||||
| Be sure to add the following to the bottom of your existing profile file noted below. | ||||
| ```jsx title="~/.bashrc" | ||||
| ... | ||||
| alias kubectl="minikube kubectl --" | ||||
| ``` | ||||
| :::tip | ||||
| If this is a virtual machine, now would be the best time to take a checkpoint / snapshot of the VM before moving forward, in case you need to perform rollbacks of the server(s) if you accidentally misconfigure something. | ||||
| ::: | ||||
|  | ||||
| ## Make AWX Operator Kustomization File: | ||||
| Find the latest tag version here: https://github.com/ansible/awx-operator/releases | ||||
| ```jsx title="kustomization.yml" | ||||
| apiVersion: kustomize.config.k8s.io/v1beta1 | ||||
| kind: Kustomization | ||||
| resources: | ||||
|   - github.com/ansible/awx-operator/config/default?ref=2.4.0 | ||||
|   - awx.yml | ||||
| images: | ||||
|   - name: quay.io/ansible/awx-operator | ||||
|     newTag: 2.4.0 | ||||
| namespace: awx | ||||
| ``` | ||||
| ```jsx title="awx.yml" | ||||
| apiVersion: awx.ansible.com/v1beta1 | ||||
| kind: AWX | ||||
| metadata: | ||||
|   name: awx | ||||
|  | ||||
| --- | ||||
| apiVersion: v1 | ||||
| kind: Service | ||||
| metadata: | ||||
|   name: awx-service | ||||
|   namespace: awx | ||||
| spec: | ||||
|   type: NodePort | ||||
|   ports: | ||||
|     - port: 80 | ||||
|       targetPort: 80 | ||||
|       nodePort: 30080  # Choose an available port in the range of 30000-32767 | ||||
|   selector: | ||||
|     app.kubernetes.io/name: awx-web | ||||
| ``` | ||||
| ### Apply Configuration File | ||||
| Run from the same directory as the `awx-operator.yaml` file. | ||||
| ``` | ||||
| kubectl apply -k . | ||||
| ``` | ||||
| :::info | ||||
| If you get any errors, especially ones relating to "CRD"s, wait 30 seconds, and try re-running the `kubectl apply -k .` command to fully apply the `awx.yml` configuration file to bootstrap the awx deployment. | ||||
| ::: | ||||
|  | ||||
| ### View Logs / Track Deployment Progress | ||||
| ``` | ||||
| kubectl logs -n awx awx-operator-controller-manager -c awx-manager | ||||
| ``` | ||||
| ### Get AWX WebUI Address | ||||
| ``` | ||||
| minikube service -n awx awx-service --url | ||||
| ``` | ||||
| ### Get WebUI Password:  | ||||
| ``` | ||||
| kubectl get secret awx-demo-admin-password -o jsonpath="{.data.password}" | base64 --decode ; echo | ||||
| ``` | ||||
		Reference in New Issue
	
	Block a user