4장. OpenShift Container Platform에서 Ansible 자동화 컨트롤러 구성
Kubernetes 업그레이드 중에 자동화 컨트롤러가 실행 중이어야 합니다.
4.1. OpenShift Container Platform 업그레이드 중 다운타임 최소화
자동화 컨트롤러에서 다음과 같은 구성을 변경하여 업그레이드 중 다운타임을 최소화합니다.
사전 요구 사항
- Ansible Automation Platform 2.4
- Ansible 자동화 컨트롤러 4.4
OpenShift Container Platform
- > 4.10.42
- > 4.11.16
- > 4.12.0
- Postgres의 HA(고가용성) 배포
- 자동화 컨트롤러 Pod를 예약할 수 있는 여러 작업자 노드
절차
AutomationController 사양에서
RECEPTOR_KUBE_SUPPORT_RECONNECT
를 활성화합니다.apiVersion: automationcontroller.ansible.com/v1beta1 kind: AutomationController metadata: ... spec: ... ee_extra_env: | - name: RECEPTOR_KUBE_SUPPORT_RECONNECT value: enabled ```
AutomationController 사양에서 정상 종료 기능을 활성화합니다.
termination_grace_period_seconds: <time to wait for job to finish>
AutomationController 사양의 배포를 분배하도록 Pod가 웹에 대해
podAntiAffinity
를 구성합니다.task_affinity: podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - podAffinityTerm: labelSelector: matchExpressions: - key: app.kubernetes.io/name operator: In values: - awx-task topologyKey: topology.kubernetes.io/zone weight: 100 web_affinity: podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - podAffinityTerm: labelSelector: matchExpressions: - key: app.kubernetes.io/name operator: In values: - awx-web topologyKey: topology.kubernetes.io/zone weight: 100
OpenShift Container Platform에서
PodDisruptionBudget
을 구성합니다.--- apiVersion: policy/v1 kind: PodDisruptionBudget metadata: name: automationcontroller-job-pods spec: maxUnavailable: 0 selector: matchExpressions: - key: ansible-awx-job-id operator: Exists --- apiVersion: policy/v1 kind: PodDisruptionBudget metadata: name: automationcontroller-web-pods spec: minAvailable: 1 selector: matchExpressions: - key: app.kubernetes.io/name operator: In values: - <automationcontroller_instance_name>-web --- apiVersion: policy/v1 kind: PodDisruptionBudget metadata: name: automationcontroller-task-pods spec: minAvailable: 1 selector: matchExpressions: - key: app.kubernetes.io/name operator: In values: - <automationcontroller_instance_name>-task