跳至内容

基本安装

克隆此存储库后,必须选择要运行的标签。

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”状态。

export VERSION=<tag>

# For instance:
export VERSION=2.7.2

在您拥有运行的 Kubernetes 集群后,您可以使用 Kustomize 将 AWX Operator 部署到您的集群中。从 kubectl 版本 1.14 开始,kustomize 功能已内置(否则,请按照此处的说明安装最新版本的 Kustomize:https://kubectl.docs.kubernetes.io/installation/kustomize/)。

提示

如果您没有 Kubernetes 集群,则可以使用 Minikube 进行测试。有关更多详细信息,请参阅 Minikube 安装文档

注意

对于不同的 Kubernetes 版本,某些内容可能需要针对网络方面进行略微不同的配置。在 Kind 上安装时,有关更多详细信息,请参阅 Kind 安装文档

您可以运行一个 make 目标。

make deploy

如果您构建了自定义操作符镜像,则可以使用以下命令指定它:

IMG=quay.io/$YOURNAMESPACE/awx-operator:$YOURTAG make deploy

否则,您可以手动创建一个名为 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 设置当前命名空间。

kubectl config set-context --current --namespace=awx

接下来,在同一文件夹中创建一个名为 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 apply -k .

几秒钟后,您应该会看到操作符开始创建新的资源。

$ 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 日志以了解安装过程的进度。

kubectl logs -f deployments/awx-operator-controller-manager -c awx-manager

部署后,您的 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 实例的最基本安装。恭喜!!!