He tino ngawari te whakaaro mo te kaitoha-anga: ohauru ki nga huihuinga mai i nga taonga Kubernetes, a ka tae mai enei huihuinga, whakarewahia he kaupapa o waho, me nga korero mo te huihuinga:
Ko te hiahia mo tera i te wa e whakahaere ana nga tautau, ka tiimata nga mahi iti e tino hiahia ana matou ki te mahi aunoa i te huarahi tika. Ko enei mahi iti katoa i whakatauhia ma te whakamahi i nga tuhinga bash ngawari, ahakoa, e mohio ana koe, he pai ake te tuhi i nga kaiwhakahaere ki Golang. Ko te tikanga, ka kore e whai hua te haumi i roto i te whakawhanaketanga o te tangata whakahaere mo ia mahi iti.
Kaiwhakahaere i roto i te 15 meneti
Me titiro ki tetahi tauira o nga mea ka taea te mahi aunoa i roto i te roopu Kubernetes me te pehea e awhina ai te kaiwhakahaere anga. Ko tetahi tauira e whai ake nei: te whakahoki i tetahi mea ngaro kia uru atu ki te rehita docker.
Ko nga Pods e whakamahi ana i nga whakaahua mai i te rehita motuhake me whakauru ki roto i o raatau whakaaturanga he hononga ki tetahi mea ngaro me nga raraunga mo te uru atu ki te rehita. Me hanga tenei mea ngaro ki ia mokowāingoa i mua i te hanga pākākano. Ka taea te mahi a-ringa, engari ki te whakarite maatau i nga taiao hihiri, ka nui te waahi ingoa mo te tono kotahi. A, ki te kore e 2-3 nga tono ... ka tino nui te maha o nga mea ngaro. A ko tetahi atu mea mo nga mea ngaro: E hiahia ana ahau ki te whakarereke i te ki kia uru atu ki te rehitatanga mai i ia wa. Nāwai rā, mahi ā-ringa hei otinga tino koretake — me whakaaunoa i te hanga me te whakahou i nga mea ngaro.
aunoatanga ngawari
Me tuhi he tuhinga anga ka rere kotahi ia N hekona me te tirotiro i nga mokowā ingoa mo te noho ngaro, a ki te kore he mea ngaro, katahi ka hangaia. Ko te painga o tenei otinga ko te ahua o te tuhinga anga kei te cron - he huarahi matarohia me te maarama ki te katoa. Ko te mea kino kei roto i te waahi i waenga i ana whakarewatanga ka taea te hanga i tetahi mokowā ingoa hou mo etahi wa ka noho tonu kaore he mea ngaro, ka puta he hapa i te whakarewatanga o nga pene.
Aunoatanga me te anga-kaiwhakahaere
Kia tika te mahi o ta maatau tuhinga, me whakakapi te whakarewanga cron matarohia ki te whakarewatanga ina taapirihia he mokowāingoa: i tenei keehi, ka taea e koe te hanga mea ngaro i mua i te whakamahi. Kia kite tatou me pehea te whakatinana i tenei ma te whakamahi i te anga-kaiwhakahaere.
Tuatahi, me titiro ki te tuhinga. Ko nga tuhinga i roto i nga kupu anga-kaiwhakahaere ka kiia he matau. Ia matau ina rere me te haki --config he whakamohio atu ki te kaiwhakahaere anga mo ona herenga, ara. i runga i nga kaupapa e tika ana kia whakarewahia. I roto i to maatau ka whakamahia e matou onKubernetesEvent:
#!/bin/bash
if [[ $1 == "--config" ]] ; then
cat <<EOF
{
"onKubernetesEvent": [
{ "kind": "namespace",
"event":["add"]
}
]}
EOF
fi
Ka whakaahuahia i konei e hiahia ana matou ki te taapiri i nga huihuinga (add) momo momo namespace.
Inaianei me taapiri koe i te waehere ka mahia ina puta te huihuinga:
#!/bin/bash
if [[ $1 == "--config" ]] ; then
# конфигурация
cat <<EOF
{
"onKubernetesEvent": [
{ "kind": "namespace",
"event":["add"]
}
]}
EOF
else
# реакция:
# узнать, какой namespace появился
createdNamespace=$(jq -r '.[0].resourceName' $BINDING_CONTEXT_PATH)
# создать в нём нужный секрет
kubectl create -n ${createdNamespace} -f - <<EOF
apiVersion: v1
kind: Secret
metadata:
...
data:
...
EOF
fi
Rawe! Ko te hua he tuhinga iti, ataahua. Hei "whakaora", e rua nga taahiraa e toe ana: te whakarite i te ahua me te whakarewa i te kohinga.
Te whakarite whakaahua me te matau
Mena ka titiro koe ki te tuhinga, ka kite koe kei te whakamahia nga whakahau kubectl и jq. Ko te tikanga me whai i te ahua nga mea e whai ake nei: to matau matau, he anga-kaiwhakahaere hei tirotiro i nga kaupapa me te whakahaere i te matau, me nga whakahau e whakamahia ana e te matau (kubectl me jq). Kei a Hub.docker.com he ahua kua oti te hanga i roto i te kootaki anga-kaiwhakahaere, kubectl me jq. Ko nga mea e toe ana ko te taapiri i tetahi matau ngawari Dockerfile:
Ka titiro ano tatou ki te matau, ka tuhihia he aha nga mahi me nga mea e mahia ana e ia i roto i te tautau:
ka ohauru ki nga huihuinga hanga mokowā ingoa;
ka hanga he mea ngaro i roto i nga waahi ingoa i tua atu i te waahi ka whakarewahia.
Te ahua nei me whai mana te porowhita ka whakarewahia to maatau whakaahua ki te mahi i enei mahi. Ka taea tenei ma te hanga i to ake Pūkete Ratonga. Me mahi te whakaaetanga i roto i te ahua o ClusterRole me ClusterRoleBinding, na te mea kei te pirangi matou ki nga taonga mai i te kohinga katoa.
Ko te whakaahuatanga whakamutunga i roto i te YAML ka penei te ahua:
Heoi ano: ka timata te anga-kaiwhakahaere, ka ohauru ki nga kaupapa hanga mokowā ingoa ka whakahaere i te matau ina hiahiatia.
Ko te kupu, he tuhinga anga ngawari kua huri hei kaiwhakahaere pono mo Kubernetes ka mahi hei wahanga o te tautau. Na enei mea katoa kaore he mahinga uaua o te whakawhanake i nga kaiwhakahaere i Golang:
He whakaahua ano mo tenei take...
Ka whakamaramahia e matou tona tikanga i roto i tetahi o nga panui e whai ake nei.
tātari
He pai te whai i nga taonga, engari he maha nga wa e hiahia ana koe ki te urupare te huri i etahi āhuatanga ahanoa, hei tauira, hei huri i te maha o nga tauira i roto i te Whakamahinga, hei huri ranei i nga tapanga ahanoa.
Ka tae mai tetahi huihuinga, ka whiwhi te kaiwhakahaere anga i te whakaaturanga JSON o te ahanoa. Ka taea e taatau te kowhiri i nga taonga e pai ana ki a maatau ki tenei JSON ka whakahaere i te matau anake ina huri ratou. He mara mo tenei jqFilter, me tohu koe i te kupu jq ka tukuna ki te whakaaturanga JSON.
Hei tauira, ki te whakautu ki nga huringa i roto i nga tapanga mo nga taonga Whakamahinga, me tātari te mara labels i waho o te mara metadata. Ka penei te whirihora:
Ko tenei kupu jqFilter ka huri i te whakaaturanga JSON roa a Deployment ki te JSON poto me nga tapanga:
Ko te kaiwhakahaere anga ka whakahaere noa i te matau ka huri tenei JSON poto, ka warewarehia nga huringa ki etahi atu taonga.
Te horopaki whakarewa matau
Ma te whirihora matau ka taea e koe te whakarite i nga whiringa maha mo nga huihuinga - hei tauira, e 2 nga whiringa mo nga huihuinga mai i Kubernetes me nga raarangi e 2:
He rerekee iti: ae, ka tautoko te anga-kaiwhakahaere e whakahaere ana i nga tuhinga ahua crontab. Ka kitea etahi atu korero i roto tuhinga.
Hei wehewehe i te take i whakarewahia ai te matau, ka hangaia e te anga-kaiwhakahaere he konae rangitahi ka tukuna te ara ki reira ma te taurangi ki te matau. BINDING_CONTEXT_TYPE. Kei roto i te konae he whakamaarama JSON mo te take i rere ai te matau. Hei tauira, ia 10 meneti ka rere te matau me nga mea e whai ake nei:
Ko nga korero o nga mara ka taea te maarama mai i o raatau ingoa, ka panuihia etahi atu korero ki roto tuhinga. He tauira mo te tiki ingoa rauemi mai i te mara resourceName Ko te whakamahi i te jq kua whakaatuhia i roto i te matau e whakahoki ana i nga mea ngaro:
jq -r '.[0].resourceName' $BINDING_CONTEXT_PATH
Ka taea e koe te tiki atu mara i roto i te ara rite.
He aha te i muri?
I roto i te putunga kaupapa, in / tauira whaiaronga, he tauira matau kua reri ki te rere i runga i te tautau. Ka tuhi koe i au ake matau, ka taea e koe te whakamahi hei turanga.
He tautoko mo te kohi inenga ma te whakamahi i te Prometheus - ko nga inenga e waatea ana ka whakaahuahia i te waahanga METRICS.
Ka whakaaro pea koe, kua tuhia te anga-kaiwhakahaere ki te Haere ka tohatohahia i raro i te raihana Open Source (Apache 2.0). Ka mihi matou mo nga awhina whanaketanga kaupapa i GitHub: me nga whetu, me nga take, me nga tono toia.
Te hiki i te arai o te muna, ka whakamohio ano matou ki a koe ko te anga-kaiwhakahaere iti he waahanga o ta maatau punaha ka taea te whakauru i nga taapiri-ake ki roto i te roopu Kubernetes ki te waa me te mahi i nga momo mahi aunoa. Pānuihia atu mo tenei punaha korerotia mooni i te Mane i HighLoad ++ 2019 i St.
He mahere ta matou ki te whakatuwhera i te toenga o tenei punaha: te addon-operator me ta matou kohinga matau me nga waahanga. Ma te ara, kua oti kee te addon-operator e wātea ana i runga i te github, engari kei te haere tonu nga tuhinga mo taua mea. Ko te tukunga o te kohinga o nga waahanga kua whakaritea mo te raumati.