執筆日: 2021-04-24
環境
OS: Ubuntu 20.10
K8s: MicroK8s
MicroK8sインストール
Kubernetes環境を他の方法で用意した場合はこの章をスキップ
1コマンドで完了
# snap install microk8s --classic
しばらく時間が掛かるので放置する。microk8sが使えるようになると以下のコマンドが実施できる
# microk8s status
microk8s is running
high-availability: no
datastore master nodes: 127.0.0.1:19001
datastore standby nodes: none
addons:
enabled:
dns # CoreDNS
ha-cluster # Configure high availability on the current node
storage # Storage class; allocates storage from host directory
disabled:
ambassador # Ambassador API Gateway and Ingress
cilium # SDN, fast with full network policy
dashboard # The Kubernetes dashboard
fluentd # Elasticsearch-Fluentd-Kibana logging and monitoring
gpu # Automatic enablement of Nvidia CUDA
helm # Helm 2 - the package manager for Kubernetes
helm3 # Helm 3 - Kubernetes package manager
host-access # Allow Pods connecting to Host services smoothly
ingress # Ingress controller for external access
istio # Core Istio service mesh services
jaeger # Kubernetes Jaeger operator with its simple config
keda # Kubernetes-based Event Driven Autoscaling
knative # The Knative framework on Kubernetes.
kubeflow # Kubeflow for easy ML deployments
linkerd # Linkerd is a service mesh for Kubernetes and other frameworks
metallb # Loadbalancer for your Kubernetes cluster
metrics-server # K8s Metrics Server for API access to service metrics
multus # Multus CNI enables attaching multiple network interfaces to pods
portainer # Portainer UI for your Kubernetes cluster
prometheus # Prometheus operator for monitoring and logging
rbac # Role-Based Access Control for authorisation
registry # Private image registry exposed on localhost:32000
traefik # traefik Ingress controller for external access
- AWX用のPostgresがPVCを必要とする
- WebGUIとPostgresがPod間の名前解決を必要とする
上記の理由から以下のコマンドでCoreDNS/Storageを有効化しておく
# microk8s enable dns storage
AWXのインストール
参考: https://github.com/ansible/awx/blob/devel/INSTALL.md
awx-operatorの適用
現時点でのawx-opperatorの最新タグが0.8.0のため、以下コマンドでoperatorをインストール
# kubectl apply -f https://raw.githubusercontent.com/ansible/awx-operator/0.8.0/deploy/awx-operator.yaml
OperatorのPodが起動するまで放置
AWXデプロイ
AWX用のnamespaceを作成してデプロイする
# cat awx.yaml
apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
name: awx
namespace: awx
spec:
tower_ingress_type: Ingress
# kubectl create ns awx
# kubectl apply -f awx.yaml
デプロイ完了まで放置
AWXのWebGUIのアクセスURLは以下で確認する
NodePortが30195なので、Webブラウザからhttp://localhost:30195
にアクセスすることでAWXのトップページにアクセスできる。
# kubectl get svc -n awx
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
awx-postgres ClusterIP None <none> 5432/TCP 39m
awx-service NodePort 10.152.183.252 <none> 80:30195/TCP 38m
Pod起動後はAWX自体のアップグレード処理が内部で走るため、こちらもしばらく放置することになる。
処理が完了すると、ログイン画面が表示される
adminユーザーのパスワードは以下で確認可能。
# kubectl get secret awx-admin-password -o jsonpath='{.data.password}' | base64 --decode
adminユーザーでログインできないときは
インストールのとき試行錯誤したためか、ログインに失敗した。このときはadminではないsuperuserを新たに作成することで対応した。
# kubectl exec -n awx pod/awx-b5f6cf4d4-sqmsd --container awx-web -it awx-manage createsuperuser