Contents
ここでは、kubernetesに AWX をデプロイしてみます。
環境
以下と同じ環境です。
項目 | バージョン |
---|---|
AWX | 4.0.0 |
必要要件
KubernetesにAWXをデプロイ
以下の作業はmasterノードで実施しています。
必要パッケージのインストール
以下のコマンドで必要なパッケージをインストールします。
1 2 3 |
[root@k8s-master ~]# yum -y install epel-release [root@k8s-master ~]# yum -y install git ansible |
helmのインストール
AWXをデプロイするのに helm が必要なので以下のコマンドでインストールします。
1 2 3 4 5 |
[root@k8s-master ~]# curl -L https://storage.googleapis.com/kubernetes-helm/helm-v2.13.1-linux-amd64.tar.gz -O [root@k8s-master ~]# tar zxvf helm-v2.13.1-linux-amd64.tar.gz linux-amd64/helm linux-amd64/helm [root@k8s-master ~]# mv linux-amd64/helm /usr/local/bin/ |
helmを初期化します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
[root@k8s-master ~]# kubectl create serviceaccount --namespace kube-system tiller [root@k8s-master ~]# cat << EOF > tiller-role.yml > apiVersion: rbac.authorization.k8s.io/v1beta1 > kind: ClusterRoleBinding > metadata: > name: tiller > roleRef: > apiGroup: rbac.authorization.k8s.io > kind: ClusterRole > name: cluster-admin > subjects: > - kind: ServiceAccount > name: tiller > namespace: kube-system > EOF [root@k8s-master ~]# kubectl create -f tiller-role.yml [root@k8s-master ~]# helm init --service-account tiller |
初期化後にpodが起動していることを確認します。
1 2 3 |
[root@k8s-master ~]# kubectl -n kube-system get pod | grep tiller tiller-deploy-c48485567-mt2js 1/1 Running 0 2m24s |
StorageClassとPersistentVolumeの作成
podから(ここでは)ローカルストレージをマウントするためにStorageClassとPersistentVolumeを作成します。
StorageClassを作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[root@k8s-master ~]# cat << EOF > sc-local-storage.yml > kind: StorageClass > apiVersion: storage.k8s.io/v1 > metadata: > name: local-storage > provisioner: kubernetes.io/no-provisioner > volumeBindingMode: WaitForFirstConsumer > EOF [root@k8s-master ~]# kubectl create -f sc-local-storage.yml storageclass.storage.k8s.io/local-storage created [root@k8s-master ~]# kubectl get sc NAME PROVISIONER AGE local-storage kubernetes.io/no-provisioner 12s |
PersistentVolumeを作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
[root@k8s-master ~]# cat << EOF > pv-local-storage.yml > apiVersion: v1 > kind: PersistentVolume > metadata: > name: local-pv > spec: > capacity: > storage: 10Gi > accessModes: > - ReadWriteOnce > persistentVolumeReclaimPolicy: Retain > storageClassName: local-storage > local: > path: /opt > nodeAffinity: > required: > nodeSelectorTerms: > - matchExpressions: > - key: kubernetes.io/hostname > operator: In > values: > - k8s-node01 > EOF [root@k8s-master ~]# kubectl create -f pv-local-storage.yml persistentvolume/local-pv created [root@k8s-master ~]# kubectl get pv NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE local-pv 10Gi RWO Retain Available local-storage 5s |
AWXリポジトリクローン
AWXのリポジトリをクローンします。
1 2 |
[root@k8s-master ~]# git clone https://github.com/ansible/awx.git |
AWXデプロイ
AWXをデプロイするための準備をします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
[root@k8s-master ~]# cd awx/ [root@k8s-master awx]# git checkout -b 4.0.0 refs/tags/4.0.0 Switched to a new branch '4.0.0' [root@k8s-master awx]# cd installer/ [root@k8s-master installer]# vi inventory (snip) # Kubernetes Install kubernetes_context=test-cluster kubernetes_namespace=awx tiller_namespace=kube-system # Optional Kubernetes Variables pg_persistence_storageClass=local-storage (snip) postgres_data_dir=/opt/pgdocker (snip) |
AWXをデプロイします。
1 2 |
[root@k8s-master installer]# ansible-playbook -i inventory install.yml |
AWXにアクセスするためにポートを確認します。
ここではクラスターのホストのIPで 31033
へアクセスします。
1 2 3 |
[root@k8s-master installer]# kubectl -n awx get svc | grep web awx-web-svc NodePort 10.111.226.87 <none> 80:31033/TCP 4m5s |
アクセスしてログイン画面が表示されることを確認します。
URL |
---|
http://clusterのホストのIP:31033 |