Awx-operator: ingress-nginx μœ νš¨μ„± 검사 μ›Ήν›…κ³Ό κ΄€λ ¨λœ minikube v1.19.0 문제.

에 λ§Œλ“  2021λ…„ 04μ›” 12일  Β·  15μ½”λ©˜νŠΈ  Β·  좜처: ansible/awx-operator

Minikube v1.19.0은 ingress-nginxλ₯Ό v0.44.0으둜 μ—…λ°μ΄νŠΈν–ˆμŠ΅λ‹ˆλ‹€. μ–΄λ–€ μ΄μœ λ‘œλ“ (μ—¬μ „νžˆ μ•Œμ•„λ‚΄λ €κ³  μ‹œλ„ 쀑) awx-operator μ»¨ν…Œμ΄λ„ˆμ—μ„œ 둜그λ₯Ό μΆ”μ ν•˜λŠ” λ™μ•ˆ λ‹€μŒ 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.

(item=tower_ingress) => {\"ansible_loop_var\": \"item\", \"changed\": false, \"error\": 500, \"item\": \"tower_ingress\", \"msg\": \"Failed to apply object: b'{\\\"kind\\\":\\\"Status\\\",\\\"apiVersion\\\":\\\"v1\\\",\\\"metadata\\\":{},\\\"status\\\":\\\"Failure\\\",\\\"message\\\":\\\"Internal error occurred: failed calling webhook \\\\\\\\\\\"validate.nginx.ingress.kubernetes.io\\\\\\\\\\\": an error on the server (\\\\\\\\\\\"\\\\\\\\\\\") has prevented the request from succeeding\\\",\\\"reason\\\":\\\"InternalError\\\",\\\"details\\\":{\\\"causes\\\":[{\\\"message\\\":\\\"failed calling webhook \\\\\\\\\\\"validate.nginx.ingress.kubernetes.io\\\\\\\\\\\": an error on the server (\\\\\\\\\\\"\\\\\\\\\\\") has prevented the request from succeeding\\\"}]},\\\"code\\\":500}\\\\n'\", \"reason\": \"Internal Server Error\", \"status\": 500}

이것은 λ‹€μŒκ³Ό 관련될 수 μžˆμŠ΅λ‹ˆλ‹€: https://github.com/kubernetes/ingress-nginx/issues/5401

λ‹€μŒμ„ μ‹€ν–‰ν•˜μ—¬ 문제λ₯Ό ν•΄κ²°ν•  수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

$ kubectl get validatingwebhookconfigurations
$ kubectl delete -A ValidatingWebhookConfiguration [configuration-name]

μ—¬κΈ°μ„œ minikube의 경우 [configuration-name] λŠ” ingress-nginx-admission μž…λ‹ˆλ‹€.

minikube v1.18.1둜 λŒμ•„κ°€λ©΄ 0.8.0κ³Ό awx-operator 개발 λͺ¨λ‘μ—μ„œ λͺ¨λ“  것이 잘 μž‘λ™ν•©λ‹ˆλ‹€.

μž¬μƒμ‚°ν•˜λ €λ©΄(macos):

$ minikube config set vm-driver hyperkit
$ minikube start --cpus=4 --memory=8192
$ minikube addons configure ingress
$ minikube addons enable ingress
$ minikube addons enable metrics-server
$ minikube addons enable dashboard
$ kubectl apply -f https://raw.githubusercontent.com/ansible/awx-operator/devel/deploy/awx-operator.yaml
$ kubectl apply -f awx-deploy.yml

awx-deploy.yml:

---
apiVersion: v1
kind: Namespace
metadata:
  name: awx
  labels:
    name: awx
---
apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
  name: awx
  namespace: awx
  labels:
    name: awx
spec:
  tower_ingress_type: Ingress
  tower_hostname: awx-service.awx.svc.cluster.local
---
apiVersion: v1
kind: Secret
metadata:
  name: awx-admin-password
  namespace: awx
  labels:
    name: awx
stringData:
  password: changeme

μž‘λ™: Minikube v1.18.1
μ‹€νŒ¨: Minikube v1.19.0

help wanted

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

minikube v1.20.0이 μΆœμ‹œλ˜μ—ˆμŠ΅λ‹ˆλ‹€.
https://github.com/kubernetes/minikube/releases/tag/v1.20.0

이 λ²„μ „μ—λŠ” 이 ingress(networking.k8s.io/v1) 문제의 μˆ˜μ • 사항이 ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.
κ°μ‚¬ν•©λ‹ˆλ‹€.

λͺ¨λ“  15 λŒ“κΈ€

여기에도 같은 λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€. ν•΄κ²° 방법에 λŒ€ν•΄ @bhundven μ—κ²Œ κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€.

여기에도 같은 λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€. @bhundven 이 문제λ₯Ό μ°ΎλŠ” 데 ν•œ μ‹œκ°„μ„ λ³΄λƒˆκ³  μ•„λ§ˆλ„ 또 λ‹€λ₯Έ 2λ₯Ό ꡬ해 μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€.

μ—¬κΈ°μ—μ„œ λ™μΌν•œ λ¬Έμ œκ°€ minikube v1.18.1 및 awx-operator κ°œλ°œμ—μ„œ 잘 μž‘λ™ν•©λ‹ˆλ‹€.

그리고 λ‚˜λŠ” λ‚΄κ°€ λ­”κ°€ 잘λͺ»ν•˜κ³  μžˆλ‹€κ³  μƒκ°ν–ˆκ³  λͺ¨λ“  것이 μ§€λ‚œ 주에 잘 μž‘λ™ν–ˆμŠ΅λ‹ˆλ‹€.
ν•΄κ²° 방법에 κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€. Ansible νŒ€μ—μ„œ 이 문제λ₯Ό μ΅œλŒ€ν•œ 빨리 ν•΄κ²°ν•˜κΈ°λ₯Ό λ°”λžλ‹ˆλ‹€. πŸ‘πŸ½

brew λ₯Ό μ‚¬μš©ν•˜μ—¬ Mac OSμ—μ„œ 1.18.1둜 λŒμ•„κ°€λ €κ³  μ‹œλ„ν•˜μ§€λ§Œ brewκ°€ μŠ€μœ„μΉ˜λ₯Ό μ œκ±°ν•˜κ³  minikubeλŠ” 버전 관리에 λŒ€ν•œ brew의 이해에 따라 버전이 μ§€μ •λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. κ·Έλž˜μ„œ μ—¬λŸ¬λΆ„μ€ 이것을 μ• λ„ν•˜κΈ° μœ„ν•΄ μ–΄λ–»κ²Œ qinikube 1.18.1둜 λŒμ•„κ°€λ‚˜μš”? brewλŠ” 이제 μ§€μ›λ˜λŠ” μ΅œμ‹  λ²„μ „μ˜ μ†Œν”„νŠΈμ›¨μ–΄ νŒ¨ν‚€μ§€ λ²„μ „λ§Œ μ§€μ›ν•©λ‹ˆλ‹€...

이 λ¬Έμ œμ— λŒ€ν•΄ 유감슀럽게 μƒκ°ν•©λ‹ˆλ‹€. 이 버그λ₯Ό μ•Œκ³  μžˆμŠ΅λ‹ˆλ‹€. https://github.com/kubernetes/minikube/pull/10879 λ₯Ό λ„μž…ν–ˆλŠ”λ° λΆˆν–‰νžˆλ„ 톡합 ν…ŒμŠ€νŠΈμ—μ„œ κ°μ§€λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. λͺ¨λ“  λΆˆνŽΈμ„ λ“œλ € μ£„μ†‘ν•©λ‹ˆλ‹€. 이것이 μ΅œμš°μ„  κ³Όμ œκ°€ 될 κ²ƒμž…λ‹ˆλ‹€. λ‹€μŒ λ²„μ „μ—μ„œ μˆ˜μ •λ  μ˜ˆμ •μ΄λ―€λ‘œ μ—…λ°μ΄νŠΈλ₯Ό μœ„ν•΄ https://github.com/kubernetes/minikube/issues/11121 을 좔적

μ•ˆλ…•ν•˜μ„Έμš” awx-operator 개발자 및 μ‚¬μš©μž,
이 λ¬Έμ œμ— λŒ€ν•΄ μ£„μ†‘ν•©λ‹ˆλ‹€. 인그레슀 λ¦¬μ†ŒμŠ€λ₯Ό 생성할 수 μžˆλ„λ‘ PR https://github.com/kubernetes/minikube/pull/11189λ₯Ό 톡해 ν•΄κ²° 방법을 μΆ”κ°€ν•©λ‹ˆλ‹€.
그리고 인그레슀 λ¦¬μ†ŒμŠ€λ₯Ό 생성할 수 μžˆλŠ”μ§€ ν™•μΈν•˜κΈ° μœ„ν•΄ 톡합 ν…ŒμŠ€νŠΈ νŒ¨ν„΄μ„ μΆ”κ°€ν•©λ‹ˆλ‹€.

awx-operatorκ°€ 이전 μˆ˜μ‹  버전(extensions/v1beta1)을 μ‚¬μš©ν•˜λŠ” 것 κ°™μ§€λ§Œ https://github.com/kubernetes/minikube/pull/11189 κ°€ 이 λ²„μ „μ—μ„œ 이 문제λ₯Ό ν•΄κ²°ν•  것이라고 μƒκ°ν•©λ‹ˆλ‹€(이미 λ‘œμ»¬μ—μ„œ ν…ŒμŠ€νŠΈν–ˆμŠ΅λ‹ˆλ‹€) .
https://github.com/ansible/awx-operator/blob/ee9800c258feaae24fd9bd606caa7076c9781c51/roles/installer/templates/tower_ingress.yaml.j2#L3 -L5

μ—…λ°μ΄νŠΈλ₯Ό μœ„ν•΄ kubernetes/minikube#11121 및 https://github.com/kubernetes/minikube/pull/11189 λ₯Ό μΆ”μ ν•˜μ‹­μ‹œμ˜€.
κ°μ‚¬ν•©λ‹ˆλ‹€,

μ•ˆλ…•ν•˜μ„Έμš” @govargo - μ‹œκ°„μ„ λ‚΄μ–΄ λ„μ™€μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€.

FWIW, networking.k8s.io/v1 λ₯Ό μ‚¬μš©ν•˜λ„λ‘ Ingress 개체λ₯Ό μ—…λ°μ΄νŠΈν•˜λ €κ³  ν–ˆμ§€λ§Œ μ—¬μ „νžˆ λ™μΌν•œ 였λ₯˜κ°€ ν‘œμ‹œλ©λ‹ˆλ‹€. minikubeλ₯Ό 직접 λΉŒλ“œν•˜λŠ” 방법을 μ•Œμ•„λ‚Ό 수 μžˆλ‹€λ©΄ λ§ν¬ν•œ 패치λ₯Ό ν…ŒμŠ€νŠΈν•˜λ €κ³  ν•©λ‹ˆλ‹€. 그렇지 μ•ŠμœΌλ©΄ λ‹€μŒ 버전이 μΆœμ‹œλ  λ•ŒκΉŒμ§€ κΈ°λ‹€λ¦¬κ² μŠ΅λ‹ˆλ‹€.

@govargo 이제 μ„€μΉ˜ ν”„λ‘œκ·Έλž¨μ΄ μ‹€νŒ¨ν•œ 뢀뢄을 μ§€λ‚˜μ³€μ§€λ§Œ minikubeμ—μ„œ μ„œλΉ„μŠ€ URL을 κ°€μ Έμ˜€λ €κ³  ν•˜λ©΄ λ‹€μŒκ³Ό 같이 ν‘œμ‹œλ©λ‹ˆλ‹€.

$ minikube service awx-service --url
😿  service default/awx-service has no node port

λ‚΄ λ§ˆμ§€λ§‰ λŒ“κΈ€μ€ λ¬΄μ‹œν•˜μ„Έμš”. 우리 μͺ½μ—μ„œ 또 λ‹€λ₯Έ λ¬Έμ œκ°€ λ°œμƒν•œ 것 κ°™μŠ΅λ‹ˆλ‹€. 도움을 μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€ @govargo

λͺ¨λ“  것을 μ••μΆ•ν•˜κΈ° μœ„ν•΄: 이것은 minikube의 λ‹€μŒ λ²„μ „μ—μ„œ μˆ˜μ •λ  κ²ƒμž…λ‹ˆλ‹€.

μ•ˆλ…•ν•˜μ„Έμš” shanemcd

minikubeλ₯Ό 직접 λΉŒλ“œν•˜λŠ” 방법을 μ•Œμ•„λ‚Ό 수 μžˆλ‹€λ©΄ λ§ν¬ν•œ 패치λ₯Ό ν…ŒμŠ€νŠΈν•˜λ €κ³  ν•©λ‹ˆλ‹€.

패치된 minikubeλ₯Ό μ‹œλ„ν•˜κ³  μ‹Άλ‹€λ©΄ λ‹€μŒκ³Ό 같은 λ°©λ²•μœΌλ‘œ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

Method1: Build latest application
$ mkdir -p $GOPATH/src/k8s.io/
$ cd $GOPATH/src/k8s.io/
$ git clone https://github.com/kubernetes/minikube.git
$ cd minikube
# output file will be generated to ./out directory(e.g. out/minikube)
$ make
Method2: Use built binary
# built binaries are put in object storage
# http://storage.googleapis.com/minikube-builds/11189/minikube-linux-amd64
# http://storage.googleapis.com/minikube-builds/11189/minikube-darwin-amd64
# http://storage.googleapis.com/minikube-builds/11189/minikube-windows-amd64.exe

# in case of macOS, use minikube-darwin-amd64
$ curl -LO http://storage.googleapis.com/minikube-builds/11189/minikube-darwin-amd64
$ chmod +x minikube-darwin-amd64
$ sudo mv minikube-darwin-amd64 /usr/local/bin/minikube

λͺ¨λ“  것을 μ••μΆ•ν•˜κΈ° μœ„ν•΄: 이것은 minikube의 λ‹€μŒ λ²„μ „μ—μ„œ μˆ˜μ •λ  κ²ƒμž…λ‹ˆλ‹€.

예, λ‹€μŒ 버전 λ¦΄λ¦¬μŠ€μ—μ„œλŠ” 이 문제λ₯Ό ν•΄κ²°ν•  κ²ƒμž…λ‹ˆλ‹€.

κ°μ‚¬ν•©λ‹ˆλ‹€.

μ‹ μ„ ν•œμ— t4g.medium 와 Ubuntu 20.04.2 LTS λͺ¨λ‘ minikube_1.18.1-0_arm64.deb 및 minikube_1.20.0.beta.0-0_arm64.deb λ‚΄κ°€μ§€κ³ μžˆμ–΄ 즉각적인 좩돌 standard_init_linux.go:219: exec user process caused: exec format error ν›„ minikube kubectl apply , λ‚˜λŠ” μ•„λ§ˆλ„ 잘λͺ»λœ / ν˜Όλž€μŠ€λŸ¬μš΄ μ•„μΉ˜ λ˜λŠ” 무언가λ₯Ό μ‹€ν–‰ν•˜λ €κ³  ν•  κ²ƒμž…λ‹ˆλ‹€.

맀우 바닐라 μž¬μƒμ‚°

$ sudo apt update
$ sudo apt upgrade -y
$ curl -fsSL get.docker.com -o get-docker.sh && sh get-docker.sh
$ sudo usermod -aG docker ubuntu ; newgrp docker
$ curl -LO https://github.com/kubernetes/minikube/releases/download/v1.20.0-beta.0/minikube_1.20.0.beta.0-0_arm64.deb
$ sudo dpkg -i minikube_1.20.0.beta.0-0_arm64.deb 
$ minikube start
πŸ˜„  minikube v1.20.0-beta.0 on Ubuntu 20.04 (arm64)
✨  Automatically selected the docker driver. Other choices: none, ssh
πŸ‘  Starting control plane node minikube in cluster minikube
🚜  Pulling base image ...
πŸ’Ύ  Downloading Kubernetes v1.20.2 preload ...
    > preloaded-images-k8s-v10-v1...: 514.95 MiB / 514.95 MiB  100.00% 126.56 M
    > gcr.io/k8s-minikube/kicbase...: 327.13 MiB / 327.13 MiB  100.00% 48.85 Mi
    > gcr.io/k8s-minikube/kicbase...: 327.13 MiB / 327.13 MiB  100.00% 16.23 Mi
πŸ”₯  Creating docker container (CPUs=2, Memory=2200MB) ...
🐳  Preparing Kubernetes v1.20.2 on Docker 20.10.6 ...
    β–ͺ Generating certificates and keys ...
    β–ͺ Booting up control plane ...
    β–ͺ Configuring RBAC rules ...
πŸ”Ž  Verifying Kubernetes components...
    β–ͺ Using image gcr.io/k8s-minikube/storage-provisioner:v5
🌟  Enabled addons: storage-provisioner, default-storageclass
πŸ’‘  kubectl not found. If you need it, try: 'minikube kubectl -- get pods -A'
πŸ„  Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default

$ minikube kubectl -- apply -f https://raw.githubusercontent.com/ansible/awx-operator/0.9.0/deploy/awx-operator.yaml
$ minikube kubectl get pods
awx-operator-5595d6fc57-tlw8p   0/1     CrashLoopBackOff   1          15s

minikube v1.20.0이 μΆœμ‹œλ˜μ—ˆμŠ΅λ‹ˆλ‹€.
https://github.com/kubernetes/minikube/releases/tag/v1.20.0

이 λ²„μ „μ—λŠ” 이 ingress(networking.k8s.io/v1) 문제의 μˆ˜μ • 사항이 ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.
κ°μ‚¬ν•©λ‹ˆλ‹€.

λ‚˜λŠ” μ—¬μ „νžˆ 인그레슀의 apiVersion을 μ„€μ •ν•  수 μžˆλŠ” #245λ₯Ό μ–»μœΌλ €κ³  λ…Έλ ₯ν•˜κ³  μžˆμ§€λ§Œ μ§€κΈˆμ€ μ—¬μ „νžˆ extensions/v1beta1 ν•˜κ³  있으며 λ‹€λ₯Έ λ¬Έμ œκ°€ λ°œμƒν•©λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰