Ansible AWXをAWXオペレーターを使用して、minikube上に構成 (Windows10+minikube+Docker)


https://qiita.com/hiroyuki_onodera/items/ae09eda4a5486ccdf6a2

上の内容はfedora上に構成していたので、Windows 10 Pro上のminikube+Docker CE環境にて動作を確認
(Docker CEに統合されているk8sも使えるのかもしれないが、minikube start時の--addons=ingress相当の対応方法が判らなかった。)

## 実施した手順
同様に以下を実施
Installing AWX
https://github.com/ansible/awx/blob/devel/INSTALL.md#installing-awx
https://translate.google.com/translate?sl=en&tl=ja&u=https://github.com/ansible/awx/blob/devel/INSTALL.md%23installing-awx
およびバグ対応(2021/03/19現在)

Ansible AWX - Fresh Install - No administrator password created.
https://www.reddit.com/r/ansible/comments/m5nd1r/ansible_awx_fresh_install_no_administrator/
環

## 環境
OS: Windows 10 Pro 19041.867
WSL: v2
Docker CE: 20.10.5
Windows Terminal

## Docker Desktopを導入

以下よりDocker Desktop Installer.exeを入手して実行
https://hub.docker.com/editions/community/docker-ce-desktop-windows/

```
PS C:\Users\user> docker --version
Docker version 20.10.5, build 55c4c88
```




## winget の導入

Windowsへのminikube導入方法としてwinget, choco, 導入バイナリー(exeファイル)が示されていたので、ここではwingetというのを使ってみた。

https://minikube.sigs.k8s.io/docs/start/

https://github.com/microsoft/winget-cli/releases
から
https://github.com/microsoft/winget-cli/releases/download/v-0.2.10191-preview/Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.appxbundle
をダウンロードして実行

## minikubeの導入

ログインユーザー権限のWindows Terminalから

```
PS C:\Users\user> winget install minikube
見つかりました minikube [Kubernetes.minikube]
Microsoft はサードパーティのパッケージに対して責任を負わず、ライセンスも付与しません。
Downloading https://github.com/kubernetes/minikube/releases/download/v1.18.1/minikube-installer.exe
  ██████████████████████████████  24.7 MB / 24.7 MB
インストーラーハッシュが正常に検証されました
パッケージのインストールを開始しています...
インストールが完了しました
```

## minikube start

以降、管理者権限で起動したWindows Terminalから

```
PS C:\Users\user> minikube start --driver=docker --cpus=4 --memory=8g --addons=ingress
😄  Microsoft Windows 10 Pro 10.0.19041 Build 19041 上の minikube v1.18.1
✨  設定を元に、 docker ドライバを使用します
👍  コントロールプレーンのノード minikube を minikube 上で起動しています
🔥  docker container (CPUs=4, Memory=8192MB) を作成しています.../ E0321 23:14:22.989090  219812 kic.go:250] icacls faile
🐳  Docker 20.10.3 で Kubernetes v1.20.2 を準備しています...
    ▪ Generating certificates and keys ...
    ▪ Booting up control plane ...
    ▪ Configuring RBAC rules ...
🔎  Kubernetes コンポーネントを検証しています...
💡  After the addon is enabled, please run "minikube tunnel" and your ingress resources would be available at "127.0.0.1"
    ▪ Using image gcr.io/k8s-minikube/storage-provisioner:v4
    ▪ Using image jettech/kube-webhook-certgen:v1.2.2
    ▪ Using image jettech/kube-webhook-certgen:v1.3.0
    ▪ Using image us.gcr.io/k8s-artifacts-prod/ingress-nginx/controller:v0.40.2
🔎  Verifying ingress addon...
🌟  有効なアドオン: storage-provisioner, default-storageclass, ingress
🏄  Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default
```

```
PS C:\Users\user> mkdir awx
...

PS C:\Users\user> cd awx

PS C:\Users\user\awx> minikube kubectl -- apply -f https://raw.githubusercontent.com/ansible/awx-operator/devel/deploy/awx-operator.yaml
clusterrole.rbac.authorization.k8s.io/awx-operator created
clusterrolebinding.rbac.authorization.k8s.io/awx-operator created
serviceaccount/awx-operator created
deployment.apps/awx-operator created
customresourcedefinition.apiextensions.k8s.io/awxs.awx.ansible.com created

PS C:\Users\user\awx> minikube kubectl get pods
NAME                           READY   STATUS    RESTARTS   AGE
awx-operator-7c78bfbfd-z4z9c   1/1     Running   0          44s
```

```
PS C:\Users\user\awx> code myawx.yml

PS C:\Users\user\awx> cat myawx.yml
---
kind: AWX
metadata:
  name: awx
  tower_ingress_type: Ingress

PS C:\Users\user\awx> minikube kubectl apply -- -f myawx.yml
awx.awx.ansible.com/awx created

PS C:\Users\user\awx> minikube kubectl get pods
NAME                           READY   STATUS    RESTARTS   AGE
awx-5ffbfd489c-6dlgv           3/3     Running   0          2m12s
awx-operator-7c78bfbfd-z4z9c   1/1     Running   0          3m27s
awx-postgres-0                 1/1     Running   0          2m17s
```

```
PS C:\Users\user\awx> minikube kubectl get pods | awk '$2 ~ "3"  {print $1}'
awx-5ffbfd489c-6dlgv

PS C:\Users\user\awx> minikube kubectl exec -- -it $( minikube kubectl get pods | awk '$2 ~ "3"  {print $1}' )  -c awx-web bin/bash
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
bash-4.4$ awx-manage createsuperuser
Username (leave blank to use 'awx'):
Email address:
Password:
Password (again):
Superuser created successfully.
bash-4.4$ exit
PS C:\Users\user\awx> minikube service awx-service --url
🏃  Starting tunnel for service awx-service.
|-----------|-------------|-------------|------------------------|
| NAMESPACE |    NAME     | TARGET PORT |          URL           |
|-----------|-------------|-------------|------------------------|
| default   | awx-service |             | http://127.0.0.1:58844 |
|-----------|-------------|-------------|------------------------|
http://127.0.0.1:58844
❗  Dockerドライバーをwindows上で動かしているため、実行するにはターミナルを開く必要があります。
```

プロンプトは戻らない。

ここでブラウザーで http://127.0.0.1:58844 に接続し、上で指定したユーザー、パスワードでAWXコンソールにログインできる事を確認。

＾Cにてプロンプトは戻ってくるが、その場合、以下が出力されブラウザー側も接続が切れた。
fedora上での確認時にはプロンプトが戻らないということは無く、挙動が異なっている。

```
✋  サービス awx-service のトンネルを停止しています。

❌  Exiting due to SVC_TUNNEL_STOP: stopping ssh tunnel: TerminateProcess: Access is denied.

😿  If the above advice does not help, please let us know:
👉  https://github.com/kubernetes/minikube/issues/new/choose
```