본문 바로가기
인프라/앤서블(Ansible)

ansible awx 구축(cenot7 k8s)

by IT맥구리나스 2022. 5. 2.

Centos7에서 쿠버네티스를 이용하여 awx를 구축하고자 한다.

서버에 어플리케이션 설치에 있어 컨테이너 기술이 더이상 선택이 아닌 필수가 되어지는 느낌이다..어쨌든

 

나는 아래 내용으로 3번 구축을 해봤고 다 잘 수행되었다.

 

yum 업데이트

yum -y update

 

selinux 설정해제하기

centos에서 필수 설정이다. selinux를 해제한다. 

setenforce 0
/etc/selinux/config에 SELINUX=disabled로 변경
getenforce로 수행하여 disabled 확인

방화벽 해제하기

systemctl disable firewalld --now

 

쿠버네티스 설치&확인하기

#설치
curl -sfL https://get.k3s.io | sudo bash -
sudo chmod 644 /etc/rancher/k3s/k3s.yaml

# 서비스가 올라왔나 확인하기
systemctl status k3s.service
# 현재 노드 상태 확인
kubectl get nodes
# 버전확인
kubectl version --short

쿠버네티스에 AWX 배포하기

AWX에 설치에 필요한 jq git make 패키지를 설치한다.

sudo yum -y install jq git make

아래명령어를 수행하여 배포코드를 다운받는다.

git clone https://github.com/ansible/awx-operator.git

쿠버네티스에 awx 네임스페이스를 생성한다.

export NAMESPACE=awx
kubectl create ns ${NAMESPACE}

쿠버네티스에 기본 네임스페이스 awx로 지정한다.

kubectl config set-context --current --namespace=$NAMESPACE

awx-perator폴더로 이동한다.(아까 깃으로 받은 파일임)

cd awx-operator/

 

git에서 최신버전 조회 및 checkout

RELEASE_TAG=`curl -s https://api.github.com/repos/ansible/awx-operator/releases/latest | grep tag_name | cut -d '"' -f 4`
echo $RELEASE_TAG
git checkout $RELEASE_TAG

 

namespace 세팅 및 make

export NAMESPACE=awx
make deploy

Warning: resource namespaces/awx is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by kubectl apply. kubectl apply should only be used on resources created declaratively by either kubectl create --save-config or kubectl apply. The missing annotation will be patched automatically.
namespace/awx configured
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

 

awx 올라왔는지 확인

kubectl get pods -n awx

pvc 설정파일 만들기

vi편집기로 yaml파일을 생성하여 아래 내역을 넣는다.

vi public-static-pvc.yaml
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: public-static-data-pvc
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: local-path
  resources:
    requests:
      storage: 8Gi

pvc를 생성한다.

kubectl apply -f public-static-pvc.yaml -n awx

pvc생성이 잘되었는지 확인하기

kubectl get pvc -n awx

 

awx instance deployment yaml파일 생성하기

vi awx-instance-deployment.yml
---
apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
  name: awx
spec:
  service_type: nodeport
  projects_persistence: true
  projects_storage_access_mode: ReadWriteOnce
  web_extra_volume_mounts: |
    - name: static-data
      mountPath: /var/lib/projects
  extra_volumes: |
    - name: static-data
      persistentVolumeClaim:
        claimName: public-static-data-pvc

쿠버네티스에 인스턴스올리기

kubectl apply -f awx-instance-deployment.yml -n awx

watch명령어로 잘올라오는지 확인 status가 Running이면 성공(끝나면 ctrl+c로 모니터링 종료)

 watch kubectl get pods -l "app.kubernetes.io/managed-by=awx-operator" -n awx

deployment진행상황에 대한 로그명령어는 아래와 같다.(그냥 이런게 있다는 정도 확인하면 될듯.)

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

PVC 생성내역 보기(아래와같이 3개가 떠있고 status가 bound로 되어 있으면 됨)

kubectl  get pvc

 

awx namespace에 올라온 pod 확인하기

kubectl get pods -n awx

웹 네트워크 인터페이스 확인하기

cluster-ip가 아니라 해당 서버의 ip:30080포트로 접근해야 한다. cluster-ip는 쿠버네티스 내부 네트워크ip라고 보면된다.

kubectl get service -n awx

 

webUI admin 계정 패스워드생성하기

kubectl -n awx get secret awx-admin-password -o go-template='{{range $k,$v := .data}}{{printf "%s: " $k}}{{if not $v}}{{$v}}{{else}}{{$v | base64decode}}{{end}}{{"\n"}}{{end}}'

 

WEBUI 로그인하기

admin / 발급받은 패스워드로 로그인 한다.

 

쿠버네티스의 다양한 용어와 동작방식에 대한 공부도 필요하다는 것을 느꼈다.

 

참조 : https://computingforgeeks.com/how-to-install-ansible-awx-on-centos-7/

반응형

댓글