Middle
Kā tiek izveidoti namespaci un uzsākti deploymenti caur API-serveri vai ar citiem rīkiem?
sobes.tech AI
Atbilde no AI
apiVersion: v1
kind: Namespace
metadata:
name: my-namespace # Izveidotā namespace nosaukums
Namespace izveide caur API serveri notiek, nosūtot HTTP POST pieprasījumu ar YAML vai JSON manifestu uz endpointu /api/v1/namespaces.
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
namespace: my-namespace # Namespace, kurā tiks izvietots deployment
spec:
replicas: 3 # Vēlamais podu skaits
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: app-container
image: my-image:latest # Konteineru attēls
Deployment izvietošana caur API serveri notiek līdzīgi — nosūtot YAML vai JSON manifestu uz endpointu /apis/apps/v1/namespaces/{namespace-name}/deployments.
Dažādi rīki tiek izmantoti ar API serveri saziņai:
- kubectl: Kubernetes komandrindas klients.
# Namespace izveide kubectl create namespace my-namespace # Deployment izveide no faila my-deployment.yaml namespace'ā my-namespace kubectl create -f my-deployment.yaml -n my-namespace - Kubernetes klientu bibliotēkas: Dažādu programmēšanas valodu bibliotēkas (Python, Java, Go un citi), kas ļauj programmatiski sazināties ar API serveri.
# Python klienta piemērs from kubernetes import client, config config.load_kube_config() v1 = client.CoreV1Api() namespace_manifest = { "apiVersion": "v1", "kind": "Namespace", "metadata": { "name": "my-namespace-python" } } v1.create_namespace(body=namespace_manifest) apps_v1 = client.AppsV1Api() deployment_manifest = { "apiVersion": "apps/v1", "kind": "Deployment", "metadata": { "name": "my-app-python", "namespace": "my-namespace-python" }, "spec": { "replicas": 2, "selector": { "matchLabels": { "app": "my-app-python" } }, "template": { "metadata": { "labels": { "app": "my-app-python" } }, "spec": { "containers": [ { "name": "app-container", "image": "nginx" } ] } } } } apps_v1.create_namespaced_deployment(namespace="my-namespace-python", body=deployment_manifest) - Helm: Kubernetes pakotņu pārvaldnieks, kas ļauj pārvaldīt izvietojumus, izmantojot Chartus.
# Charta instalēšana, kas var ietvert namespace un deployment izveidi helm install my-release my-chart --create-namespace --namespace my-namespace - Kubernetes operatori: Specializēti kontrolieri, kas paplašina Kubernetes API funkcionalitāti un pārvalda sarežģītas lietojumprogrammas un pakalpojumus. Tie var automātiski izveidot namespace'us un izvietot komponentes.
- CI/CD piltņi: Nepārtrauktās integrācijas un piegādes sistēmas (Jenkins, GitLab CI, GitHub Actions un citi), kas bieži izmanto kubectl vai klientu bibliotēkas, lai automātiski izveidotu namespace'us un izvietotu lietojumprogrammas piltina laikā.
Izvēlētais rīks ir atkarīgs no konkrētās uzdevuma, automatizācijas līmeņa un komandas vēlmēm.