基本安装¶
克隆此存储库后,必须选择要运行的标签。
git clone [email protected]:ansible/awx-operator.git
cd awx-operator
git tag
git checkout tags/<tag>
# For instance:
git checkout tags/2.7.2
如果您从 fork 工作并在发布标签后进行了修改,则必须提供要部署的 VERSION 编号。否则,操作符将卡在“ImagePullBackOff”状态。
在您拥有运行的 Kubernetes 集群后,您可以使用 Kustomize 将 AWX Operator 部署到您的集群中。从 kubectl 版本 1.14 开始,kustomize 功能已内置(否则,请按照此处的说明安装最新版本的 Kustomize:https://kubectl.docs.kubernetes.io/installation/kustomize/)。
提示
如果您没有 Kubernetes 集群,则可以使用 Minikube 进行测试。有关更多详细信息,请参阅 Minikube 安装文档。
注意
对于不同的 Kubernetes 版本,某些内容可能需要针对网络方面进行略微不同的配置。在 Kind 上安装时,有关更多详细信息,请参阅 Kind 安装文档。
您可以运行一个 make 目标。
如果您构建了自定义操作符镜像,则可以使用以下命令指定它:
否则,您可以手动创建一个名为 kustomization.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
提示
如果您需要更改操作符的任何默认设置(例如 resources.limits),则可以在 kustomization.yaml
文件的底部添加 补丁。
通过运行以下命令安装清单:
$ 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
等待一段时间,您应该会看到 awx-operator
正在运行。
$ kubectl get pods -n awx
NAME READY STATUS RESTARTS AGE
awx-operator-controller-manager-66ccd8f997-rhd4z 2/2 Running 0 11s
为了避免不断重复 -n awx
,让我们为 kubectl
设置当前命名空间。
接下来,在同一文件夹中创建一个名为 awx-demo.yml
的文件,其中包含以下建议的内容。您提供的 metadata.name
将是生成的 AWX 部署的名称。
注意
如果您将多个 AWX 实例部署到同一命名空间,请确保使用唯一的名称。
---
apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
name: awx-demo
spec:
service_type: nodeport
提示
为您的部署创建并指定您自己的密钥可能很有意义,这样如果 k8s 密钥被删除,则可以根据需要重新创建它。如果未提供,则会自动生成一个,但如果丢失则无法恢复。请阅读 此处 了解更多信息。
如果您使用的是 Openshift,则可以通过在您的规范中指定以下内容来利用路由。这将自动为您创建一个具有自定义主机名的路由。这可以在 Openshift 控制台的路由部分找到。
---
apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
name: awx-demo
spec:
service_type: clusterip
ingress_type: Route
确保将此新文件添加到 kustomization.yaml
文件中的 resources
列表中。
...
resources:
- github.com/ansible/awx-operator/config/default?ref=<tag>
# Add this extra line:
- awx-demo.yml
...
最后,应用更改以在您的集群中创建 AWX 实例。
几秒钟后,您应该会看到操作符开始创建新的资源。
$ 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
几分钟后,新的 AWX 实例将被部署。您可以查看操作符 Pod 日志以了解安装过程的进度。
部署后,您的 AWX 实例现在应该可以通过 https://127.0.0.1:<assigned-nodeport>/
访问(在本例中为 https://127.0.0.1:31006/
)。
默认情况下,管理员用户为 admin
,密码可在 <resourcename>-admin-password
密钥中找到。要检索管理员密码,请运行以下命令:
$ kubectl get secret awx-demo-admin-password -o jsonpath="{.data.password}" | base64 --decode ; echo
yDL2Cx5Za94g9MvBP6B73nzVLlmfgPjR
您刚刚通过此操作符完成了 AWX 实例的最基本安装。恭喜!!!