Closed Hjortur17 closed 2 years ago
Er að fá þetta þegar ég keyri kubectl get pods
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?
Deploy:
Publish:
Server - deployment.template.yaml
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
Heyrðu losnaði við 503 - Service Temporarily Unavailable
en núna fæ ég fullt af villum...
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
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?
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
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
)
%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?
Þ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í...
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
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?
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
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)')))
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.
É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
Þú þarft líka að uppfæra ingress.template.yaml í k8s möppunni. RTFM, lesa allar leiðbeiningarnar, ekki bara fyrstu línuna :)
Las þær, breytti því:
tls:
- hosts:
- "{{HOST}}"
secretName: connect4-server-tls
rules:
- host: "{{HOST}}"
Í 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
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 ?
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.
Fékk þetta til að virka!
Takk kærlega fyrir alla hjálpina @finnure ! Bæði hér og á Discord
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