hgop / syllabus-2022

0 stars 1 forks source link

503 - Service Temporarily Unavailable #47

Closed Hjortur17 closed 2 years ago

Hjortur17 commented 2 years ago

Expected Behaviour

Er að reyna að keyra upp acceptance test á servernum.

Current Behaviour

Fæ alltaf villuna: 503 - Service Temporarily Unavailable. Einhver hugmynd hvernig er hægt að redda þessu?

(P.S. Pipeline-ið virkar)

Failure Logs

Screenshot 2022-12-01 at 17 48 12

Hjortur17 commented 2 years ago

Er að fá þetta þegar ég keyri kubectl get pods

Screenshot 2022-12-01 at 18 36 15

finnure commented 2 years ago

Einhversstaðar í circleci config.yaml eða server deployment.template.yaml ertu að vísa í rangt image name sýnist mér. Hvernig lítur docker build skipunin út fyrir serverinn í deploy skrefinu? Hvernig lítur docker push skipunin út fyrir serverinn í publish skrefinu? Hvernig lítur create.sh skrefið út fyrir connect4-server í deploy skrefinu? og hvernig lítur containers hlutinn af deployment.template.yaml út fyrir serverinn?

Hjortur17 commented 2 years ago

Deploy:

Screenshot 2022-12-02 at 09 48 16

Publish:

Screenshot 2022-12-02 at 09 48 53

Server - deployment.template.yaml

Screenshot 2022-12-02 at 09 49 40
Hjortur17 commented 2 years ago

Var að bæta þessu við í deploy

- run:
          name: "Generating connect4 server yaml"
          command: ./scripts/ci/yaml/merge.sh "./src/connect4-server/k8s" | sed "s/{{IMAGE_TAG}}/${CIRCLE_SHA1}/g" > connect4-server.yaml
Hjortur17 commented 2 years ago

Heyrðu losnaði við 503 - Service Temporarily Unavailable en núna fæ ég fullt af villum...

Screenshot 2022-12-02 at 10 05 03
finnure commented 2 years ago

Var að bæta þessu við í deploy

- run:
          name: "Generating connect4 server yaml"
          command: ./scripts/ci/yaml/merge.sh "./src/connect4-server/k8s" | sed "s/{{IMAGE_TAG}}/${CIRCLE_SHA1}/g" > connect4-server.yaml

Afhverju ertu að nota merge.sh? Þú átt að nota create.sh, sú scripta kallar í merge.sh ásamt því að replacea t.d. database user og pass placeholders með environment variable values deploy ætti að vera svona:

      - run:
          name: "Generating connect4 client yaml"
          command: ./scripts/ci/deploy/create.sh "connect4-client" "${CIRCLE_SHA1}" > connect4-client.yaml
      - run:
          name: "Generating connect4 server yaml"
          command: ./scripts/ci/deploy/create.sh "connect4-server" "${CIRCLE_SHA1}" > connect4-server.yaml
      - run:
          name: "Generating httpbin yaml"
          command: ./scripts/ci/deploy/create.sh "httpbin" "${CIRCLE_SHA1}" > httpbin.yaml
Hjortur17 commented 2 years ago

Okei takk fyrir þetta! Þetta kom mér einhvað áfram.

En núna fæ ég permission denied þegar ég reyni að keyra config? Var hægt að setja upp einhvað sudo dæmi fyrir þetta?

Screenshot 2022-12-02 at 13 37 35 Screenshot 2022-12-02 at 13 38 33 Screenshot 2022-12-02 at 13 38 57
Hjortur17 commented 2 years ago

Fæ samt enþá þessu villu þegar ég reyni að keyra testið locally:

E           requests.exceptions.ConnectionError: HTTPSConnectionPool(host='connect4-server.%7b%7bteam-name%7d%7d.hgopteam.com', port=443): Max retries exceeded with url: //status (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x1076bd370>: Failed to establish a new connection: [Errno 8] nodename nor servname provided, or not known'))

Og fæ enþá No resources found in acceptance namespace. þegar ég keyri: kubectl get pods --namespace acceptance

finnure commented 2 years ago

Fæ samt enþá þessu villu þegar ég reyni að keyra testið locally:

E           requests.exceptions.ConnectionError: HTTPSConnectionPool(host='connect4-server.%7b%7bteam-name%7d%7d.hgopteam.com', port=443): Max retries exceeded with url: //status (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x1076bd370>: Failed to establish a new connection: [Errno 8] nodename nor servname provided, or not known'))

%7b%7bteam-name%7d%7d = {{team-name}}. Þú hefur gleymt að skipta því einhversstaðar út.

Og fæ enþá No resources found in acceptance namespace. þegar ég keyri: kubectl get pods --namespace acceptance

Var pipeline búið að keyra create-acceptance-environment: job?

En núna fæ ég permission denied þegar ég reyni að keyra config? Var hægt að setja upp einhvað sudo dæmi fyrir þetta?

Einhver reddaði sér með því að gefa chmod 777 réttindi á scriptin. Getur keyrt eftirfarandi skipun ef ekkert annað virkar:

chmod 777 ./scripts/ci/**/*.sh

Mæli með því að reyna að gera þetta rétt samt, það eina sem ég þurfti að gera var að bæta við execute réttindum á skránna í tölvunni minni og pusha henni svoleiðis á git.

Hvaða stýrikerfi ertu með? Varstu búinn að bæta við execute réttindum á skránna á tölvunni þinni og pusha því á git (chmod +x <skrá>.sh)

Hjortur17 commented 2 years ago

%7b%7bteam-name%7d%7d = {{team-name}}. Þú hefur gleymt að skipta því einhversstaðar út.

Þegar ég reyni að nota VSCode finn ég það hvergi...

Var pipeline búið að keyra create-acceptance-environment: job?

Screenshot 2022-12-02 at 14 05 25

Það hefur reynt það en failið útaf permission

Mæli með því að reyna að gera þetta rétt samt, það eina sem ég þurfti að gera var að bæta við execute réttindum á skránna í tölvunni minni og pusha henni svoleiðis á git. Hvaða stýrikerfi ertu með? Varstu búinn að bæta við execute réttindum á skránna á tölvunni þinni og pusha því á git (chmod +x <skrá>.sh)

Er með MacOS, er að prufa að breyta réttindum á öllum .sh skránum og prufa að pusha því...

Hjortur17 commented 2 years ago

Jæja...

Virkaði greinilega að keyra chmod +x locally og pusha því, en þá fæ ég eina aðra villu. Error from server (NotFound): error when creating "STDIN": namespaces "acceptance" not found

Hjortur17 commented 2 years ago

Fann hvar {{team-name}} var, það var í skipuninni sem ég keyri í Terminal (hef greinilega gleymt að breyta). Annars er ég að fá þessa villu aftur 503 - Service Temporarily Unavailable , og getur það ekki verið útaf acceptance er ekki að ná að keyra á CirlceCI?

finnure commented 2 years ago

Error from server (NotFound): error when creating "STDIN": namespaces "acceptance" not found

Þú þarft að manually búa namespace til í kubectl áður en þú assignar einhverju á það

kubectl create namespace acceptance
Hjortur17 commented 2 years ago

Geggjað! Þetta er byrjað að leysast

Er einhvað skref sem ég er að gleyma? Því núna fæ ég sömu villu útaf það nær ekki sambandi við connect4-server.acceptance.b3g.hgopteam.com. Er ég að gera þetta í eitthverjari vitlausari röð eða þarf ég að keyra acceptance testið eftir publish og deploy?

FAILED src/connect4-server/src/tests/acceptance/test_status.py::test_status - requests.exceptions.SSLError: HTTPSConnectionPool(host='connect4-server.acceptance.b3g.hgopteam.com', port=443): Max retries exceeded with url: //status (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate (_ssl.c:1131)')))
finnure commented 2 years ago

Já, þú ert líklega að gleyma skrefi sem var ekki minnst á :) Í ingress.template.yaml fyrir serverinn er skilgreining á url sem er notað fyrir þjónustuna sem er sett upp. Það er harðkóðað fyrir production umhverfið. Ef þú keyrir eftirfarandi skipun getur þú séð hvaða url var notað fyrir acceptance umhverfið

kubectl get ingress -n acceptance

Ég geri ráð fyrir að þetta skili connect4-server.b3g.hgopteam.com Ef þú skoðar neðri hlutann af #40 þá ættir þú að finna leiðbeiningar um hvernig þú lagar þetta.

Hjortur17 commented 2 years ago

Ég geri ráð fyrir að þetta skili connect4-server.b3g.hgopteam.com

Jebb passar, bætti við CONNECT4_SERVER_HOST í env í CircleCI og setti það sem connect4-server.b3g.hgopteam.com en enþá að fá sömu villu

finnure commented 2 years ago

Þú þarft líka að uppfæra ingress.template.yaml í k8s möppunni. RTFM, lesa allar leiðbeiningarnar, ekki bara fyrstu línuna :)

Hjortur17 commented 2 years ago

Las þær, breytti því:

tls:
  - hosts:
    - "{{HOST}}"
    secretName: connect4-server-tls
  rules:
  - host: "{{HOST}}"
finnure commented 2 years ago

Í circleci config þar sem þú ert með create-acceptance-environment er environment kafli sem á að vera með CONNECT4_SERVER_HOST líka. Ef þú ert að gera þetta rétt og ert að nota create.sh scriptuna til að búa til yaml sem er notað til að deploya í kubectl þá er það notað fyrir acceptance umhverfið. Er sú lína rétt hjá þér? Hún ætti þá að vera

CONNECT4_SERVER_HOST: connect4-server.acceptance.b3g.hgopteam.com
Hjortur17 commented 2 years ago

Jebb, þetta er í create-acceptance-environment

CONNECT4_SERVER_HOST: connect4-server.acceptance.b3g.hgopteam.com

Er ég nokkuð að misskilja, átti ekki env variable-ið í Circle að vera sama og í ingress? Semsagt connect4-server.b3g.hgopteam.com ?

finnure commented 2 years ago

Jú, það passar. Env variable í circleci á að vera notað fyrir production. Með því að skilgreina það í environment hlutanum í öðrum jobs ertu að yfirskrifa það value og nota bara fyrir það job.

Hjortur17 commented 2 years ago

Fékk þetta til að virka!

Takk kærlega fyrir alla hjálpina @finnure ! Bæði hér og á Discord