Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Helm-Release의 무한 Upgrade 이슈 #106

Closed
prudentcircle opened this issue Jul 26, 2021 · 10 comments
Closed

Helm-Release의 무한 Upgrade 이슈 #106

prudentcircle opened this issue Jul 26, 2021 · 10 comments
Assignees

Comments

@prudentcircle
Copy link
Collaborator

1. 현상

1.1 Helm

아래는 설치된지 약 6시간도 안된 OpenStack-Helm 입니다.
보시면, Cinder와 Glance의 Revision이 29와 25이며, 현재 계속 올라가고 있습니다.
Nova와 Neutron도 마찬가지로 꽤나 높은 숫자였지만, 디버깅 하는 과정에서 삭제되어 아래 목록에는 안보이는 상태입니다.

[blackcoffee@ce01-deploy01 ~]$ helm list --all -n openstack
WARNING: Kubernetes configuration file is group-readable. This is insecure. Location: /home/blackcoffee/.kube/config
WARNING: Kubernetes configuration file is world-readable. This is insecure. Location: /home/blackcoffee/.kube/config
NAME             	NAMESPACE	REVISION	UPDATED                                	STATUS  	CHART                  	APP VERSION
ceph-provisioners	openstack	3       	2021-07-25 18:34:50.163011821 +0000 UTC	deployed	ceph-provisioners-0.1.0
cinder           	openstack	29      	2021-07-26 04:52:42.706896178 +0000 UTC	deployed	cinder-0.1.1
glance           	openstack	25      	2021-07-26 04:52:35.263019669 +0000 UTC	deployed	glance-0.1.0
horizon          	openstack	1       	2021-07-25 18:57:50.11778784 +0000 UTC 	deployed	horizon-0.1.0
ingress          	openstack	3       	2021-07-25 18:34:55.874215201 +0000 UTC	deployed	ingress-0.1.0
keystone         	openstack	1       	2021-07-25 18:37:03.833332752 +0000 UTC	deployed	keystone-0.1.0
libvirt          	openstack	3       	2021-07-25 18:34:49.15273463 +0000 UTC 	deployed	libvirt-0.1.0
mariadb          	openstack	3       	2021-07-25 18:34:53.315645939 +0000 UTC	deployed	mariadb-0.1.1
memcached        	openstack	3       	2021-07-25 18:34:57.181383155 +0000 UTC	deployed	memcached-0.1.0
openvswitch      	openstack	3       	2021-07-25 18:34:49.117405184 +0000 UTC	deployed	openvswitch-0.1.0
rabbitmq         	openstack	3       	2021-07-25 18:34:52.232571123 +0000 UTC	deployed	rabbitmq-0.1.0

1.2 Pods

Pod 들이 수 분 단위로 재생성 되면서 사실상 OpenStack 운영은 사실상 불가합니다.

[blackcoffee@ce01-deploy01 ~]$ kubectl get pods -n openstack
NAME                                                       READY   STATUS             RESTARTS   AGE
cinder-api-5ccdd5c9ff-hlrrz                                1/1     Running            0          16s
cinder-api-5ccdd5c9ff-pkq6q                                1/1     Running            0          16s
cinder-api-5ccdd5c9ff-ztvj6                                1/1     Running            0          16s
cinder-api-6fd8d6cff6-49q6c                                0/1     Terminating        0          3m17s
cinder-api-6fd8d6cff6-dfrqn                                0/1     Terminating        0          3m17s
glance-api-654cbff9bd-t9rvj                                0/1     Terminating        0          3m15s
glance-api-654cbff9bd-wnclk                                1/1     Terminating        0          3m15s
glance-api-794749f97b-2xzg6                                0/1     Running            0          14s
glance-api-794749f97b-f24cc                                1/1     Running            0          14s
glance-api-794749f97b-rg5mq                                1/1     Running            0          14s

2. 이슈

2.1 Helm-Operator

Helm Operator가 원인으로 보입니다.
Helm Operator의 로그를 보면 아래와 같이 Change detected 라고 뜨는데, 사실 제가 변경한건 없습니다.

ts=2021-07-26T05:10:39.381765887Z caller=release.go:303 component=release release=glance targetNamespace=openstack resource=default:helmrelease/glance helmVersion=v3 info="difference detected during release comparison" phase=dry-run-compare
ts=2021-07-26T05:10:39.38180762Z caller=release.go:353 component=release release=glance targetNamespace=openstack resource=default:helmrelease/glance helmVersion=v3 info="running upgrade" action=upgrade
ts=2021-07-26T05:10:39.417051561Z caller=helm.go:69 component=helm version=v3 info="preparing upgrade for glance" targetNamespace=openstack release=glance
ts=2021-07-26T05:10:39.446483547Z caller=helm.go:69 component=helm version=v3 info="resetting values to the chart's original version" targetNamespace=openstack release=glance
ts=2021-07-26T05:10:39.896004769Z caller=helm.go:69 component=helm version=v3 info="performing update for glance" targetNamespace=openstack release=glance
ts=2021-07-26T05:10:39.975862834Z caller=helm.go:69 component=helm version=v3 info="creating upgraded release for glance" targetNamespace=openstack release=glance
ts=2021-07-26T05:10:40.176926538Z caller=helm.go:69 component=helm version=v3 info="checking 58 resources for changes" targetNamespace=openstack release=glance

Helm-Operator에 동일한 이슈가 발생하여 Issue가 등록된게 있습니다.

fluxcd/helm-operator#457

3. 증상 재현

증상을 재현하는 방법은 알려져 있지 않고, 저의 경우에도 OpenStack-Manifest를 여러번 고쳐가며 적용하는 과정에서 발생하였습니다.
처음에는 해당 증상이 보이지 않았으며, OpenStack-Manifest의 설정값으로 인해 발생하는 CrashLookBackoff Pod들을 찾아가고 올바른 설정을 적용하는 과정에서 해당 문제가 발생하였습니다.

4. 해결방안,

위 Helm-Operator 에 올라와있는 내용대로 Helm-Operator 버전을 1.1.1에서 1.2.0으로 업그레이드 하고, CRD를 적용 하였음에도 해당문제는 게속 발생하고 있습니다.

K8S 클러스터를 Reset 후 OpenStack 다시 재설치할 예정입니다 ^^.

@estherk0
Copy link
Contributor

@prudentcircle 이 문제는 openstack helm chart 설치 시, hash값이 yaml에 적용되면서 원본 차트와 설치된 yaml이 달라지면서 생기는 문제입니다. 근본적인 문제 수정은 아니지만 다음과 같이 workaround 방법이 있습니다.
helm-operator deployment의 --charts-sync-interval 인자 값을 충분한 큰값으로 수정합니다.
예시:

      containers:
      - args:
        - --enabled-helm-versions=v2,v3
        - --log-format=fmt
        - --git-timeout=20s
        - --git-poll-interval=5m
        - --charts-sync-interval=9999999m

이렇게 되면 change detected 가 발생하지 않습니다.

@bluejayA
Copy link
Contributor

@estherk0 워크 어라운드로 우선 적용하고, 최종적으로는 lua script 넣어서 해결해야 되는 것이 맞죠? lua script로 유사한 작업을 하게 되거나, 참조할 샘플이 있으면 공유해드리는 것도 좋을 듯 합니다.

@seungkyua
Copy link
Contributor

@estherk0 워크 어라운드로 우선 적용하고, 최종적으로는 lua script 넣어서 해결해야 되는 것이 맞죠? lua script로 유사한 작업을 하게 되거나, 참조할 샘플이 있으면 공유해드리는 것도 좋을 듯 합니다.

@bluejayA helm-operator 를 decapod2 에서는 제거했으므로 관련 이슈가 나타나지 않을 겁니다.

@estherk0
Copy link
Contributor

@seungkyua decapod2에서 openstack이 아직 테스트되지 않아서 decapod1로 설치하고 있습니다.

@prudentcircle
Copy link
Collaborator Author

  • --git-poll-interval=5m
    - --charts-sync-interval=9999999m

@estherk0 감사합니다. 그런 방법이 있었군요. 적용해 보겠습니다!

@bluejayA
Copy link
Contributor

@estherk0 워크 어라운드로 우선 적용하고, 최종적으로는 lua script 넣어서 해결해야 되는 것이 맞죠? lua script로 유사한 작업을 하게 되거나, 참조할 샘플이 있으면 공유해드리는 것도 좋을 듯 합니다.

@bluejayA helm-operator 를 decapod2 에서는 제거했으므로 관련 이슈가 나타나지 않을 겁니다.

그렇네요. 우선 워크어라운드로 해 놓고, openstack을 decapod 2 기반으로 테스트/수정보완해서 만드는 순이겠군요.
참고로, 이런 부분들은 @prudentcircle 님 팀에서 오픈소스 프로젝트 범위에서 openstack부분을 맡아서 하실 수 있도록 적극 협업해나가려고 합니다.

@prudentcircle
Copy link
Collaborator Author

prudentcircle commented Jul 26, 2021

@bluejayA 넵. GitHub 공간에서 더 자주 뵙게 되기를 희망하고 있습니다.

@bluejayA
Copy link
Contributor

  • --git-poll-interval=5m
    • --charts-sync-interval=9999999m

@estherk0 감사합니다. 그런 방법이 있었군요. 적용해 보겠습니다!

혹시 해당 워크어라운드로 해결이 되셨으면 피드백 남겨주시면 감사하겠습니다

@prudentcircle
Copy link
Collaborator Author

prudentcircle commented Jul 28, 2021

  • --git-poll-interval=5m

    • --charts-sync-interval=9999999m

@estherk0 감사합니다. 그런 방법이 있었군요. 적용해 보겠습니다!

혹시 해당 워크어라운드로 해결이 되셨으면 피드백 남겨주시면 감사하겠습니다

네. 다른 일정으로 인해 아직 적용을 못해보았습니다. 적용 이후에 피드백 남겨드리겠습니다!

@prudentcircle
Copy link
Collaborator Author

prudentcircle commented Jul 28, 2021

@prudentcircle 이 문제는 openstack helm chart 설치 시, hash값이 yaml에 적용되면서 원본 차트와 설치된 yaml이 달라지면서 생기는 문제입니다. 근본적인 문제 수정은 아니지만 다음과 같이 workaround 방법이 있습니다.
helm-operator deployment의 --charts-sync-interval 인자 값을 충분한 큰값으로 수정합니다.
예시:

      containers:
      - args:
        - --enabled-helm-versions=v2,v3
        - --log-format=fmt
        - --git-timeout=20s
        - --git-poll-interval=5m
        - --charts-sync-interval=9999999m

이렇게 되면 change detected 가 발생하지 않습니다.

--charts-sync-interval=9999999m 적용하였습니다.
helm-operator 버전도 1.2.0 으로 올려서 적용해 보았습니다.

Workaround 성공적으로 적용 되었고, 설치도 잘 진행되었습니다.

이틀사이에 Revision이 1000이 넘게까지 올라갔으나
지금은 1 입니다 ^^.

NAME             	NAMESPACE	REVISION	UPDATED                                	STATUS  	CHART                  	APP VERSION
ceph-provisioners	openstack	3       	2021-07-25 18:34:50.163011821 +0000 UTC	deployed	ceph-provisioners-0.1.0
cinder           	openstack	1089    	2021-07-28 09:50:17.777258705 +0000 UTC	deployed	cinder-0.1.1
glance           	openstack	1085    	2021-07-28 09:50:18.699450567 +0000 UTC	deployed	glance-0.1.0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants