mirror of
https://github.com/ansible/awx-operator.git
synced 2026-03-27 05:43:11 +00:00
* docs: simplify README.md and make index.md to refer to it * docs: change order for pages in navigation and add missing pages * docs: fix headings to improve navigation, transform notes to admonition, fix indentation, linting issues and minor issues * docs: merge docs for using images from private registries * docs: add example to integrate LDAP configuration via extra_settings_files * Apply suggestions from code review docs: apply suggested changes Co-authored-by: Don Naro <dnaro@redhat.com> * docs: update the doc site url as same as the url in https://www.ansible.com/ecosystem/ * docs: minor fixes for hpa page * docs: expand note block * docs: apply #1904 to README.md --------- Co-authored-by: Don Naro <dnaro@redhat.com>
178 lines
6.6 KiB
Markdown
178 lines
6.6 KiB
Markdown
# Basic Install
|
|
|
|
After cloning this repository, you must choose the tag to run:
|
|
|
|
```sh
|
|
git clone git@github.com:ansible/awx-operator.git
|
|
cd awx-operator
|
|
git tag
|
|
git checkout tags/<tag>
|
|
|
|
# For instance:
|
|
git checkout tags/2.7.2
|
|
```
|
|
|
|
If you work from a fork and made modifications since the tag was issued, you must provide the VERSION number to deploy. Otherwise the operator will get stuck in "ImagePullBackOff" state:
|
|
|
|
```sh
|
|
export VERSION=<tag>
|
|
|
|
# For instance:
|
|
export VERSION=2.7.2
|
|
```
|
|
|
|
Once you have a running Kubernetes cluster, you can deploy AWX Operator into your cluster using [Kustomize](https://kubectl.docs.kubernetes.io/guides/introduction/kustomize/). Since kubectl version 1.14 kustomize functionality is built-in (otherwise, follow the instructions here to install the latest version of Kustomize: <https://kubectl.docs.kubernetes.io/installation/kustomize/>)
|
|
|
|
!!! tip
|
|
If you don't have a Kubernetes cluster, you can use [Minikube](https://minikube.sigs.k8s.io/docs/) for testing purposes. See the [Minikube install docs](./creating-a-minikube-cluster-for-testing.md) for more details.
|
|
|
|
!!! note
|
|
Some things may need to be configured slightly differently for different Kubernetes flavors for the networking aspects. When installing on Kind, see the [kind install docs](./kind-install.md) for more details.
|
|
|
|
There is a make target you can run:
|
|
|
|
```sh
|
|
make deploy
|
|
```
|
|
|
|
If you have a custom operator image you have built, you can specify it with:
|
|
|
|
```sh
|
|
IMG=quay.io/$YOURNAMESPACE/awx-operator:$YOURTAG make deploy
|
|
```
|
|
|
|
Otherwise, you can manually create a file called `kustomization.yaml` with the following content:
|
|
|
|
```yaml
|
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
|
kind: Kustomization
|
|
resources:
|
|
# Find the latest tag here: https://github.com/ansible/awx-operator/releases
|
|
- github.com/ansible/awx-operator/config/default?ref=<tag>
|
|
|
|
# Set the image tags to match the git version from above
|
|
images:
|
|
- name: quay.io/ansible/awx-operator
|
|
newTag: <tag>
|
|
|
|
# Specify a custom namespace in which to install AWX
|
|
namespace: awx
|
|
```
|
|
|
|
!!! tip
|
|
If you need to change any of the default settings for the operator (such as resources.limits), you can add [patches](https://kubectl.docs.kubernetes.io/references/kustomize/kustomization/patches/) at the bottom of your kustomization.yaml file.
|
|
|
|
Install the manifests by running this:
|
|
|
|
```sh
|
|
$ kubectl apply -k .
|
|
namespace/awx 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-awx-manager-role created
|
|
role.rbac.authorization.k8s.io/awx-operator-leader-election-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-awx-manager-rolebinding created
|
|
rolebinding.rbac.authorization.k8s.io/awx-operator-leader-election-rolebinding created
|
|
clusterrolebinding.rbac.authorization.k8s.io/awx-operator-proxy-rolebinding created
|
|
configmap/awx-operator-awx-manager-config created
|
|
service/awx-operator-controller-manager-metrics-service created
|
|
deployment.apps/awx-operator-controller-manager created
|
|
```
|
|
|
|
Wait a bit and you should have the `awx-operator` running:
|
|
|
|
```sh
|
|
$ kubectl get pods -n awx
|
|
NAME READY STATUS RESTARTS AGE
|
|
awx-operator-controller-manager-66ccd8f997-rhd4z 2/2 Running 0 11s
|
|
```
|
|
|
|
So we don't have to keep repeating `-n awx`, let's set the current namespace for `kubectl`:
|
|
|
|
```sh
|
|
kubectl config set-context --current --namespace=awx
|
|
```
|
|
|
|
Next, create a file named `awx-demo.yml` in the same folder with the suggested content below. The `metadata.name` you provide will be the name of the resulting AWX deployment.
|
|
|
|
!!! note
|
|
If you deploy more than one AWX instance to the same namespace, be sure to use unique names.
|
|
|
|
```yaml
|
|
---
|
|
apiVersion: awx.ansible.com/v1beta1
|
|
kind: AWX
|
|
metadata:
|
|
name: awx-demo
|
|
spec:
|
|
service_type: nodeport
|
|
```
|
|
|
|
!!! tip
|
|
It may make sense to create and specify your own secret key for your deployment so that if the k8s secret gets deleted, it can be re-created if needed. If it is not provided, one will be auto-generated, but cannot be recovered if lost. Read more [here](../user-guide/admin-user-account-configuration.md#secret-key-configuration).
|
|
|
|
If you are on Openshift, you can take advantage of Routes by specifying the following your spec. This will automatically create a Route for you with a custom hostname. This can be found on the Route section of the Openshift Console.
|
|
|
|
```yaml
|
|
---
|
|
apiVersion: awx.ansible.com/v1beta1
|
|
kind: AWX
|
|
metadata:
|
|
name: awx-demo
|
|
spec:
|
|
service_type: clusterip
|
|
ingress_type: Route
|
|
```
|
|
|
|
Make sure to add this new file to the list of `resources` in your `kustomization.yaml` file:
|
|
|
|
```yaml
|
|
...
|
|
resources:
|
|
- github.com/ansible/awx-operator/config/default?ref=<tag>
|
|
# Add this extra line:
|
|
- awx-demo.yml
|
|
...
|
|
```
|
|
|
|
Finally, apply the changes to create the AWX instance in your cluster:
|
|
|
|
```sh
|
|
kubectl apply -k .
|
|
```
|
|
|
|
After a few seconds, you should see the operator begin to create new resources:
|
|
|
|
```sh
|
|
$ kubectl get pods -l "app.kubernetes.io/managed-by=awx-operator"
|
|
NAME READY STATUS RESTARTS AGE
|
|
awx-demo-77d96f88d5-pnhr8 4/4 Running 0 3m24s
|
|
awx-demo-postgres-0 1/1 Running 0 3m34s
|
|
|
|
$ kubectl get svc -l "app.kubernetes.io/managed-by=awx-operator"
|
|
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
|
|
awx-demo-postgres ClusterIP None <none> 5432/TCP 4m4s
|
|
awx-demo-service NodePort 10.109.40.38 <none> 80:31006/TCP 3m56s
|
|
```
|
|
|
|
After a few minutes, the new AWX instance will be deployed. You can look at the operator pod logs in order to know where the installation process is at:
|
|
|
|
```sh
|
|
kubectl logs -f deployments/awx-operator-controller-manager -c awx-manager
|
|
```
|
|
|
|
Once deployed, your AWX instance should now be reachable at `http://localhost:<assigned-nodeport>/` (in this case, `http://localhost:31006/`).
|
|
|
|
By default, the admin user is `admin` and the password is available in the `<resourcename>-admin-password` secret. To retrieve the admin password, run:
|
|
|
|
```sh
|
|
$ kubectl get secret awx-demo-admin-password -o jsonpath="{.data.password}" | base64 --decode ; echo
|
|
yDL2Cx5Za94g9MvBP6B73nzVLlmfgPjR
|
|
```
|
|
|
|
You just completed the most basic install of an AWX instance via this operator. Congratulations!!!
|