Awx-operator: AWX ์šด์˜์ž๋Š” k8s 1.21.3์—์„œ 1.22.0์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•œ ํ›„ ํฌ๋“œ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2021๋…„ 08์›” 11์ผ  ยท  6์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: ansible/awx-operator

๋ฌธ์ œ ์œ ํ˜•
  • ๋ฒ„๊ทธ ์‹ ๊ณ 
์š”์•ฝ

AWX ์šด์˜์ž๋Š” k8s 1.21.3์—์„œ 1.22.0์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•œ ํ›„ awx-pods๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
์ „์— ์ž˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ™˜๊ฒฝ
  • AWX ๋ฒ„์ „: 19.2.2
  • ์šด์˜์ž ๋ฒ„์ „: 0.12.0
  • ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋ฒ„์ „: v1.22.0
  • AWX ์„ค์น˜ ๋ฐฉ๋ฒ•: ์šฐ๋ถ„ํˆฌ 20.04 ๋ฐ ๋„์ปค๊ฐ€ ์žˆ๋Š” ์˜จํ”„๋ ˆ๋ฏธ์Šค
๋ฒˆ์‹ ๋‹จ๊ณ„

1.21.3์—์„œ awx-operator๋ฅผ ์„ค์น˜ํ•˜๊ณ  awx๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
1.22.0์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ
awx ๋ฐฐํฌ ์ข…๋ฃŒ ๋ฐ ์žฌ์ƒ์„ฑ
ํฌ๋“œ awx postgres๊ฐ€ ์‹คํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค.
ํฌ๋“œ awx ์„œ๋ฒ„๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค

์˜ˆ์ƒ ๊ฒฐ๊ณผ

AWX๋Š” ์‹คํ–‰ ์ค‘์ธ ์ƒํƒœ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์‹ค์ œ ๊ฒฐ๊ณผ

awx postgres๋งŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

NAME                                     READY   STATUS    RESTARTS      AGE
awx-itd-postgres-0                       1/1     Running   0             8m29s
awx-operator-545497f7d5-k88wr            1/1     Running   1 (34m ago)   55m
nfs-client-provisioner-5c95d8f86-9tm6k   1/1     Running   5 (34m ago)   5d4h
์ถ”๊ฐ€ ์ •๋ณด

ํฌ๋“œ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” Yaml ํŒŒ์ผ:

---
apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
  name: awx-itd
spec:
  service_type: LoadBalancer
  loadbalancer_protocol: http
  loadbalancer_port: 80
  loadbalancer_annotations: |
    metallb.universe.tf/address-pool: bde-172-17
  hostname: awx.bde.lab
  replicas: 2
  projects_persistence: true
  projects_storage_class: managed-nfs-storage
  postgres_storage_class: managed-nfs-storage
  #adminUser: admin
AWX ์šด์˜์ž ๋กœ๊ทธ
PLAY RECAP *********************************************************************
localhost                  : ok=29   changed=2    unreachable=0    failed=1    skipped=27   rescued=0    ignored=0


-------------------------------------------------------------------------------
{"level":"error","ts":1628693554.202394,"logger":"controller-runtime.controller","msg":"Reconciler error","controller":"awx-controller","request":"default/awx-itd","error":"event runner on failed","stacktrace":"github.com/go-logr/zapr.(*zapLogger).Error\n\tpkg/mod/github.com/go-logr/[email protected]/zapr.go:128\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).reconcileHandler\n\tpkg/mod/sigs.k8s.io/[email protected]/pkg/internal/controller/controller.go:258\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem\n\tpkg/mod/sigs.k8s.io/[email protected]/pkg/internal/controller/controller.go:232\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).worker\n\tpkg/mod/sigs.k8s.io/[email protected]/pkg/internal/controller/controller.go:211\nk8s.io/apimachinery/pkg/util/wait.BackoffUntil.func1\n\tpkg/mod/k8s.io/[email protected]/pkg/util/wait/wait.go:155\nk8s.io/apimachinery/pkg/util/wait.BackoffUntil\n\tpkg/mod/k8s.io/[email protected]/pkg/util/wait/wait.go:156\nk8s.io/apimachinery/pkg/util/wait.JitterUntil\n\tpkg/mod/k8s.io/[email protected]/pkg/util/wait/wait.go:133\nk8s.io/apimachinery/pkg/util/wait.Until\n\tpkg/mod/k8s.io/[email protected]/pkg/util/wait/wait.go:90"}

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๊ฐ™์€ ๊ฒƒ์„ ๊ด€์ฐฐํ•ฉ๋‹ˆ๋‹ค.

microk8s๋ฅผ 1.22๋กœ ์—…๋ฐ์ดํŠธํ•œ ๋‹ค์Œ operator 0.13์„ ๋ฐฐํฌํ•˜๋ ค๊ณ  ์‹œ๋„ํ•œ ํ›„ operator ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์—…๊ทธ๋ ˆ์ด๋“œ๋˜์—ˆ์ง€๋งŒ awx ํฌ๋“œ๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

"job":"6175742077372812453","name":"awx","namespace":"default","error":"exit status 2","stacktrace":"github.com/go-logr/zapr.(*zapLogger).Error\n\tpkg/mod/github.com/go-logr/[email protected]/zapr.go:128\ngithub.com/operator-framework/operator-sdk/pkg/ansible/runner.(*runner).Run.func1\n\tsrc/github.com/operator-framework/operator-sdk/pkg/ansible/runner/runner.go:239"}
{"level":"error","ts":1629084951.678016,"logger":"controller-runtime.controller","msg":"Reconciler error","controller":"awx-controller","request":"default/awx","error":"event runner on failed","stacktrace":"github.com/go-logr/zapr.(*zapLogger).Error\n\tpkg/mod/github.com/go-logr/[email protected]/zapr.go:128\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).reconcileHandler\n\tpkg/mod/sigs.k8s.io/[email protected]/pkg/internal/controller/controller.go:258\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem\n\tpkg/mod/sigs.k8s.io/[email protected]/pkg/internal/controller/controller.go:232\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).worker\n\tpkg/mod/sigs.k8s.io/[email protected]/pkg/internal/controller/controller.go:211\nk8s.io/apimachinery/pkg/util/wait.BackoffUntil.func1\n\tpkg/mod/k8s.io/[email protected]/pkg/util/wait/wait.go:155\nk8s.io/apimachinery/pkg/util/wait.BackoffUntil\n\tpkg/mod/k8s.io/[email protected]/pkg/util/wait/wait.go:156\nk8s.io/apimachinery/pkg/util/wait.JitterUntil\n\tpkg/mod/k8s.io/[email protected]/pkg/util/wait/wait.go:133\nk8s.io/apimachinery/pkg/util/wait.Until\n\tpkg/mod/k8s.io/[email protected]/pkg/util/wait/wait.go:90"}

awx yaml์€ ๋งค์šฐ ๊ธฐ๋ณธ์ ์ž…๋‹ˆ๋‹ค.

---
apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
  name: awx
spec:
  task_privileged: true

๋ชจ๋“  6 ๋Œ“๊ธ€

๊ฐ™์€ ๊ฒƒ์„ ๊ด€์ฐฐํ•ฉ๋‹ˆ๋‹ค.

microk8s๋ฅผ 1.22๋กœ ์—…๋ฐ์ดํŠธํ•œ ๋‹ค์Œ operator 0.13์„ ๋ฐฐํฌํ•˜๋ ค๊ณ  ์‹œ๋„ํ•œ ํ›„ operator ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์—…๊ทธ๋ ˆ์ด๋“œ๋˜์—ˆ์ง€๋งŒ awx ํฌ๋“œ๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

"job":"6175742077372812453","name":"awx","namespace":"default","error":"exit status 2","stacktrace":"github.com/go-logr/zapr.(*zapLogger).Error\n\tpkg/mod/github.com/go-logr/[email protected]/zapr.go:128\ngithub.com/operator-framework/operator-sdk/pkg/ansible/runner.(*runner).Run.func1\n\tsrc/github.com/operator-framework/operator-sdk/pkg/ansible/runner/runner.go:239"}
{"level":"error","ts":1629084951.678016,"logger":"controller-runtime.controller","msg":"Reconciler error","controller":"awx-controller","request":"default/awx","error":"event runner on failed","stacktrace":"github.com/go-logr/zapr.(*zapLogger).Error\n\tpkg/mod/github.com/go-logr/[email protected]/zapr.go:128\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).reconcileHandler\n\tpkg/mod/sigs.k8s.io/[email protected]/pkg/internal/controller/controller.go:258\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem\n\tpkg/mod/sigs.k8s.io/[email protected]/pkg/internal/controller/controller.go:232\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).worker\n\tpkg/mod/sigs.k8s.io/[email protected]/pkg/internal/controller/controller.go:211\nk8s.io/apimachinery/pkg/util/wait.BackoffUntil.func1\n\tpkg/mod/k8s.io/[email protected]/pkg/util/wait/wait.go:155\nk8s.io/apimachinery/pkg/util/wait.BackoffUntil\n\tpkg/mod/k8s.io/[email protected]/pkg/util/wait/wait.go:156\nk8s.io/apimachinery/pkg/util/wait.JitterUntil\n\tpkg/mod/k8s.io/[email protected]/pkg/util/wait/wait.go:133\nk8s.io/apimachinery/pkg/util/wait.Until\n\tpkg/mod/k8s.io/[email protected]/pkg/util/wait/wait.go:90"}

awx yaml์€ ๋งค์šฐ ๊ธฐ๋ณธ์ ์ž…๋‹ˆ๋‹ค.

---
apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
  name: awx
spec:
  task_privileged: true

operator-sdk ํŒ€์˜ ์ผ๋ถ€ ์‚ฌ๋žŒ๋“ค๊ณผ ์ฑ„ํŒ….

์ด๊ฒƒ์€ ์šฐ๋ฆฌ ์—ฐ์‚ฐ์ž๊ฐ€ sdk์˜ ๋ฒ„์ „ 0.19๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์ถ•๋˜์—ˆ๋‹ค๋Š” ์‚ฌ์‹ค์— ๊ธฐ์ธํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

cc @Spredzy @rooftopcellist

0.x๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์ถ•๋œ ์šด์˜์ž๋Š” ์ตœ์‹  ๋ฒ„์ „์˜ kubernetes์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž„์„ operator-sdk ํŒ€๊ณผ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ฐ€๊นŒ์šด ์‹œ์ผ ๋‚ด์— ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์„ ์šฐ์„ ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์—…๋ฐ์ดํŠธ๊ฐ€ ์—ฌ๊ธฐ์— ๊ฒŒ์‹œ๋ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๊ฐ€ ๋ฒ„์ „ 1.22.1์— ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ฒ„์ „ 1.21.3์œผ๋กœ ๋Œ์•„๊ฐ€๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค ๐Ÿฅณ

์ด PR( https://github.com/ansible/awx-operator/pull/508)์„ ์ถ”๊ฐ€ํ•˜์—ฌ awx-operator ๋ฐ awx ์•ฑ์„ Openshift 4.9 ํด๋Ÿฌ์Šคํ„ฐ(k8s v1.22.0)์— ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

$ oc version
Client Version: 4.6.8
Server Version: 4.9.0-0.nightly-2021-08-23-224104
Kubernetes Version: v1.22.0-rc.0+5c2f7cd

๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹คํ–‰ ์ค‘์ด๋ฉฐ UI์—์„œ ๋กœ๊ทธ์ธํ•˜์—ฌ ์ž‘์—…์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

image

์ด ์ˆ˜์ • ์‚ฌํ•ญ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์ด ์ˆ˜์ • ์‚ฌํ•ญ์ด ํฌํ•จ๋œ ๋ฆด๋ฆฌ์Šค๊ฐ€ ์•„์ง ์‚ญ์ œ๋˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ํ˜„์žฌ devel์—์„œ awx-operator ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ https://raw.githubusercontent.com/ansible/awx-operator/devel/deploy/awx-operator.yaml ๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํŽธ์ง‘ํ•˜์—ฌ 0.19.3์„ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

...
      containers:
        - name: awx-operator
          image: 'quay.io/ansible/awx-operator:devel'
          env:
            - name: WATCH_NAMESPACE
            - name: POD_NAME
              valueFrom:
                fieldRef:
                  apiVersion: v1
                  fieldPath: metadata.name
            - name: OPERATOR_NAME
              value: awx-operator
            - name: ANSIBLE_GATHERING
              value: explicit
            - name: OPERATOR_VERSION
              value: devel
            - name: ANSIBLE_DEBUG_LOGS
              value: 'false'
...

image ํƒœ๊ทธ ๋ฐ OPERATOR_VERSION ์—์„œ devel ๋กœ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ™•์ธํ•˜๊ณ  ์ ์šฉ

๊ฐ์‚ฌ ํ•ด์š”!

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰