Kubernetes Operator amin'ny Python tsy misy rafitra sy SDK
Go amin'izao fotoana izao dia manana ampihimamba amin'ny fiteny fandaharana izay nofidin'ny olona hanoratra fanambarana ho an'ny Kubernetes. Misy antony tsy mitongilana amin'izany, toy ny:
Misy rafitra matanjaka ho an'ny fampandrosoana ny mpandraharaha ao amin'ny Go - Operator SDK.
Ny fampiharana manova lalao toa an'i Docker sy Kubernetes dia voasoratra ao amin'ny Go. Ny fanoratana ny mpampiasa anao amin'ny Go dia midika hoe miteny mitovy fiteny amin'ny tontolo iainana.
Fampisehoana avo lenta amin'ny fampiharana Go sy fitaovana tsotra ahafahana miasa miaraka amin'ny concurrency ivelan'ny boaty.
NB: Raha ny marina, ny fomba hanoratana ny fanambaranao manokana ao amin'ny Go, izahay efa voalaza ao amin'ny iray amin'ireo fandikan-teny nataon'ny mpanoratra vahiny.
Ahoana anefa raha voasakana tsy hianatra Mandehana ianao noho ny tsy fahampian'ny fotoana na, raha tsorina, ny antony manosika? Ny lahatsoratra dia manome ohatra amin'ny fomba ahafahanao manoratra fanambarana tsara amin'ny fampiasana ny iray amin'ireo fiteny malaza indrindra izay fantatry ny injeniera DevOps rehetra - Python.
Hihaona: Copier - operator kopia!
Ohatra, eritrereto ny mamolavola fanambarana tsotra natao handikana ny ConfigMap na rehefa miseho ny toerana misy anarana vaovao na rehefa miova ny iray amin'ireo singa roa: ConfigMap sy Secret. Amin'ny fomba fijery azo ampiharina, ny mpandraharaha dia mety ilaina amin'ny fanavaozana be dia be amin'ny fanamafisana ny fampiharana (amin'ny fanavaozana ny ConfigMap) na amin'ny fanavaozana ny angon-drakitra miafina - ohatra, ny fanalahidy amin'ny fiaraha-miasa amin'ny Docker Registry (rehefa manampy Secret amin'ny namespace).
Ary noho izany, inona no tokony hananan'ny mpandraharaha tsara:
Ny fifandraisana amin'ny mpandraharaha dia atao amin'ny fampiasana Famaritana loharano manokana (antsoina hoe CRD avy eo).
Ny operator dia azo amboarina. Mba hanaovana izany dia hampiasa sainam-baiko sy fari-piainan'ny tontolo iainana isika.
Ny fananganana ny Docker container sy ny tabilao Helm dia natao mba ahafahan'ny mpampiasa mametraka mora foana (ara-bakiteny miaraka amin'ny baiko iray) ny mpandraharaha ao amin'ny cluster Kubernetes.
CRD
Mba hahafantaran'ny mpandraharaha ny loharanon-karena sy ny toerana hijerena azy dia mila mametraka fitsipika ho azy isika. Ny fitsipika tsirairay dia aseho ho zavatra CRD tokana. Sahan inona no tokony ananan'ity CRD ity?
Karazana loharano, izay hotadiavintsika (ConfigMap na Secret).
Lisitry ny toerana misy anarana, izay tokony hisy ny loharanon-karena.
selector, izay hikaroka loharano ao amin'ny namespace.
Vonona! Ankehitriny dia mila mahazo vaovao momba ny fitsipikay izahay. Avelao aho hanao famandrihana avy hatrany fa tsy hanoratra fangatahana amin'ny Server API cluster ny tenanay. Mba hanaovana izany dia hampiasa tranomboky Python efa vita izahay kubernetes-client:
import kubernetes
from contextlib import suppress
CRD_GROUP = 'flant.com'
CRD_VERSION = 'v1'
CRD_PLURAL = 'copyrators'
def load_crd(namespace, name):
client = kubernetes.client.ApiClient()
custom_api = kubernetes.client.CustomObjectsApi(client)
with suppress(kubernetes.client.api_client.ApiException):
crd = custom_api.get_namespaced_custom_object(
CRD_GROUP,
CRD_VERSION,
namespace,
CRD_PLURAL,
name,
)
return {x: crd[x] for x in ('ruleType', 'selector', 'namespace')}
Vokatry ny fampandehanana ity code ity dia mahazo ireto manaraka ireto isika:
Ny safidy andalana baiko dia ahafahanao mamaky fika mora kokoa, miaraka amin'ny fanohanana sy fanamarinana karazana data. Ny tranomboky mahazatra Python dia manana module argparser, izay hampiasainay. Ny antsipiriany sy ny ohatra momba ny fahaizany dia hita ao antontan-taratasy ofisialy.
Ho an'ny tranga misy antsika dia toy izao ny ohatra iray amin'ny fametrahana ny sainam-pibaiko amin'ny famakiana baiko:
Amin'ny lafiny iray, amin'ny fampiasana ny fari-piainan'ny tontolo iainana ao amin'ny Kubernetes, azonao atao ny mamindra mora foana ny fampahalalana momba ny serivisy momba ny pod ao anaty fitoeran-javatra. Ohatra, afaka mahazo fampahafantarana momba ny namespace iasan'ny pod isika miaraka amin'ireto fanamboarana manaraka ireto:
Mba hahatakarana ny fomba hanasarahana ny fomba fiasa amin'ny ConfigMap sy Secret, dia hampiasa sarintany manokana izahay. Avy eo dia azontsika takarina ny fomba ilaintsika hanarahana sy hamoronana ilay zavatra:
Efa vonona ny lojika lehibe! Ankehitriny dia mila manangona izany rehetra izany ao anaty fonosana Python iray isika. Manomana ny rakitra izahay setup.py, manorata fampahalalana meta momba ny tetikasa ao:
from sys import version_info
from setuptools import find_packages, setup
if version_info[:2] < (3, 5):
raise RuntimeError(
'Unsupported python version %s.' % '.'.join(version_info)
)
_NAME = 'copyrator'
setup(
name=_NAME,
version='0.0.1',
packages=find_packages(),
classifiers=[
'Development Status :: 3 - Alpha',
'Programming Language :: Python',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
'Programming Language :: Python :: 3.7',
],
author='Flant',
author_email='[email protected]',
include_package_data=True,
install_requires=[
'kubernetes==9.0.0',
],
entry_points={
'console_scripts': [
'{0} = {0}.cli:main'.format(_NAME),
]
}
)
NB: Ny mpanjifa kubernetes ho an'ny Python dia manana ny endriny manokana. Misy fampahalalana bebe kokoa momba ny fifanarahana eo amin'ny dikan-tenin'ny mpanjifa sy ny dikan-teny Kubernetes matrices mifanentana.
Ny Dockerfile dia ho tena tsotra: raiso ny sary python-alpine fototra ary apetraho ny fonosanay. Andao hanemotra ny fanatsarana azy ho amin'ny fotoana tsara kokoa:
FROM python:3.7.3-alpine3.9
ADD . /app
RUN pip3 install /app
ENTRYPOINT ["copyrator"]
Ny fametrahana ho an'ny mpandraharaha dia tena tsotra ihany koa:
Toy izany no nahafahanay nanangana ny mpandraharaha anay manokana ho an'ny Kubernetes amin'ny Python, tsy misy tahotra, fanalam-baraka na fianarana. Mazava ho azy fa mbola manana toerana hitomboany izy: amin'ny hoavy dia ho afaka hikarakara fitsipika maro izy, hiasa amin'ny kofehy maromaro, hanara-maso tsy miankina ny fanovana ao amin'ny CRDs ...
Mba hijerena akaiky kokoa ny kaody dia napetrakay ao fitehirizam-bahoaka. Raha mila ohatra momba ny mpandraharaha matotra kokoa ampiharina amin'ny Python ianao dia azonao atao ny mampitodika ny sainao amin'ny mpandraharaha roa amin'ny fametrahana mongodb (ΠΏΠ΅ΡΠ²ΡΠΉ ΠΈ ny faharoa).
PS Ary raha kamo loatra amin'ny hetsika Kubernetes ianao na zatra mampiasa Bash fotsiny, dia nanomana vahaolana vonona amin'ny endrika ny mpiara-miasa aminay. shell-operator (Isika nanambara tamin'ny Aprily).