Issue:
Just the other day, I’ve attempted to run a ‘helm upgrade…’ command on my NextCloud application. I’ve taken care to ensure that the container’s version matches that of the persistent storage’s marking (e.g. image.tag=22.1-fpm) as a variance in that would cause NextCloud not to start. However, there’s another issue that has puzzled me: a 502 Error upon navigating to the URL of the application.
Resolution:
– Check the logs
– Review Kubernetes Ingress documentation
– Realize that this specific issue requires no fixing
Checking the logs:
01 02 03 04 05 06 07 08 09 10 11 12 13 | admin@controller:~$ k logs nextcloud-67855fc94c-lc2xr nextcloud-nginx /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/ /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh 10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf 10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh /docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh /docker-entrypoint.sh: Configuration complete; ready for start up 2021/11/01 04:18:37 [error] 34#34: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 10.16.90.192, server: , request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "dragoncoin.com" ... Truncated for brevity ... 2021/11/01 04:34:20 [error] 34#34: *155 connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.100.95, server: , request: "GET /apps/photos/service-worker.js HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "dragoncoin.com", referrer: "https://dragoncoin.com/apps/photos/service-worker.js" 172.16.100.95 - - [01/Nov/2021:04:34:20 +0000] "GET /apps/photos/service-worker.js HTTP/1.1" 502 559 "https://dragoncoin.com/apps/photos/service-worker.js" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36" "172.16.100.164" |
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047 048 049 050 051 052 053 054 055 056 057 058 059 060 061 062 063 064 065 066 067 068 069 070 071 072 073 074 075 076 077 078 079 080 081 082 083 084 085 086 087 088 089 090 091 092 093 094 095 096 097 098 099 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 | admin@controller:~$ k logs nextcloud-67855fc94c-lc2xr nextcloud Initializing nextcloud 22.1.1.2 ... Upgrading nextcloud from 22.1.0.1 ... Initializing finished Nextcloud or one of the apps require upgrade - only a limited number of commands are available You may use your browser or the occ upgrade command to do the upgrade Setting log level to debug Turned on maintenance mode Updating database schema Updated database Updating <workflowengine> ... Updated <workflowengine> to 2.3.1 Checking for update of app accessibility in appstore Checked for update of app "accessibility" in App Store Checking for update of app activity in appstore Checked for update of app "activity" in App Store Checking for update of app audioplayer in appstore Update app audioplayer from App Store Checked for update of app "audioplayer" in App Store Checking for update of app breezedark in appstore Update app breezedark from App Store Checked for update of app "breezedark" in App Store Checking for update of app bruteforcesettings in appstore Checked for update of app "bruteforcesettings" in App Store Checking for update of app camerarawpreviews in appstore Checked for update of app "camerarawpreviews" in App Store Checking for update of app cloud_federation_api in appstore Checked for update of app "cloud_federation_api" in App Store Checking for update of app cms_pico in appstore Update app cms_pico from App Store Repair warning: Replacing Pico CMS config file "config.yml.template" Repair warning: Replacing Pico CMS system template "empty" Repair warning: Replacing Pico CMS system template "sample_pico" Repair warning: Replacing Pico CMS system theme "default" Repair warning: Replacing Pico CMS system plugin "PicoDeprecated" Checked for update of app "cms_pico" in App Store Checking for update of app contactsinteraction in appstore Checked for update of app "contactsinteraction" in App Store Checking for update of app dav in appstore Checked for update of app "dav" in App Store Checking for update of app documentserver_community in appstore Checked for update of app "documentserver_community" in App Store Checking for update of app drawio in appstore Checked for update of app "drawio" in App Store Checking for update of app external in appstore Checked for update of app "external" in App Store Checking for update of app federatedfilesharing in appstore Checked for update of app "federatedfilesharing" in App Store Checking for update of app files in appstore Checked for update of app "files" in App Store Checking for update of app files_antivirus in appstore Update app files_antivirus from App Store Checked for update of app "files_antivirus" in App Store Checking for update of app files_markdown in appstore Checked for update of app "files_markdown" in App Store Checking for update of app files_mindmap in appstore Checked for update of app "files_mindmap" in App Store Checking for update of app files_pdfviewer in appstore Checked for update of app "files_pdfviewer" in App Store Checking for update of app files_rightclick in appstore Checked for update of app "files_rightclick" in App Store Checking for update of app files_sharing in appstore Checked for update of app "files_sharing" in App Store Checking for update of app files_trashbin in appstore Checked for update of app "files_trashbin" in App Store Checking for update of app files_versions in appstore Checked for update of app "files_versions" in App Store Checking for update of app files_videoplayer in appstore Checked for update of app "files_videoplayer" in App Store Checking for update of app forms in appstore Checked for update of app "forms" in App Store Checking for update of app logreader in appstore Checked for update of app "logreader" in App Store Checking for update of app lookup_server_connector in appstore Checked for update of app "lookup_server_connector" in App Store Checking for update of app maps in appstore Checked for update of app "maps" in App Store Checking for update of app music in appstore Update app music from App Store Checked for update of app "music" in App Store Checking for update of app news in appstore Update app news from App Store Checked for update of app "news" in App Store Checking for update of app notifications in appstore Checked for update of app "notifications" in App Store Checking for update of app oauth2 in appstore Checked for update of app "oauth2" in App Store Checking for update of app password_policy in appstore Checked for update of app "password_policy" in App Store Checking for update of app photos in appstore Checked for update of app "photos" in App Store Checking for update of app privacy in appstore Checked for update of app "privacy" in App Store Checking for update of app provisioning_api in appstore Checked for update of app "provisioning_api" in App Store Checking for update of app quicknotes in appstore Checked for update of app "quicknotes" in App Store Checking for update of app recommendations in appstore Checked for update of app "recommendations" in App Store Checking for update of app registration in appstore Checked for update of app "registration" in App Store Checking for update of app richdocuments in appstore Update app richdocuments from App Store Checked for update of app "richdocuments" in App Store Checking for update of app serverinfo in appstore Checked for update of app "serverinfo" in App Store Checking for update of app settings in appstore Checked for update of app "settings" in App Store Checking for update of app sharebymail in appstore Checked for update of app "sharebymail" in App Store Checking for update of app spreed in appstore Update app spreed from App Store Checked for update of app "spreed" in App Store Checking for update of app support in appstore Checked for update of app "support" in App Store Checking for update of app survey_client in appstore Checked for update of app "survey_client" in App Store Checking for update of app systemtags in appstore Checked for update of app "systemtags" in App Store Checking for update of app tasks in appstore Checked for update of app "tasks" in App Store Checking for update of app text in appstore Checked for update of app "text" in App Store Checking for update of app theming in appstore Checked for update of app "theming" in App Store Checking for update of app twofactor_backupcodes in appstore Checked for update of app "twofactor_backupcodes" in App Store Checking for update of app updatenotification in appstore Checked for update of app "updatenotification" in App Store Checking for update of app user_status in appstore Checked for update of app "user_status" in App Store Checking for update of app video_converter in appstore Update app video_converter from App Store Checked for update of app "video_converter" in App Store Checking for update of app viewer in appstore Checked for update of app "viewer" in App Store Checking for update of app weather_status in appstore Checked for update of app "weather_status" in App Store Checking for update of app workflowengine in appstore Checked for update of app "workflowengine" in App Store Starting code integrity check... |
Reviewing Documentation:
According to the kubernetes ingress requirements (https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/cluster-loadbalancing/glbc#prerequisites) the application must return a 200 status code at ‘/’. It’s a known behavior that when an application is not in a ‘ready’ state, it would return a 302 (redirect to login). If health checks are configured to run, failing results would cause the ingress resource returns 502. Even if health checks are skipped, the container would that are still in a ‘starting code integrity check…’ state would still relay non-200 statuses, which leads to Ingress to return 502 to the users.