Kubernetes ਲਗਾਤਾਰ ਡਿਲਿਵਰੀ: ArgoCD ਅਤੇ ਫਲੈਕਸ ਦੇ ਨਾਲ GitOps ਪਾਈਪਲਾਈਨਾਂ
ArgoCD ਅਤੇ Flux ਦੇ ਨਾਲ GitOps ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ Kubernetes ਲਈ ਭਰੋਸੇਯੋਗ, ਸਵੈਚਲਿਤ ਤੈਨਾਤੀ ਪਾਈਪਲਾਈਨਾਂ ਬਣਾਓ
Kubernetes 'ਤੇ ਨਿਰੰਤਰ ਸਪੁਰਦਗੀ ਸਧਾਰਨ ਤੋਂ ਕਿਤੇ ਵੱਧ ਵਿਕਸਤ ਹੋਈ ਹੈ kubectl apply ਹੁਕਮ. ਆਧੁਨਿਕ ਟੀਮਾਂ GitOps ਨੂੰ ਅਪਣਾ ਰਹੀਆਂ ਹਨ, ਇੱਕ ਪੈਰਾਡਾਈਮ ਜੋ Git ਨੂੰ ਘੋਸ਼ਣਾਤਮਕ ਬੁਨਿਆਦੀ ਢਾਂਚੇ ਅਤੇ ਐਪਲੀਕੇਸ਼ਨ ਕੌਂਫਿਗਰੇਸ਼ਨ ਲਈ ਸੱਚ ਦੇ ਇੱਕ ਸਰੋਤ ਵਜੋਂ ਵਰਤਦਾ ਹੈ। GitOps ਸਿਧਾਂਤਾਂ ਨੂੰ ArgoCD ਅਤੇ Flux CD ਵਰਗੇ ਸਾਧਨਾਂ ਨਾਲ ਜੋੜ ਕੇ, ਸੰਸਥਾਵਾਂ ਭਰੋਸੇਮੰਦ, ਆਡਿਟ ਕਰਨ ਯੋਗ, ਅਤੇ ਸਵੈਚਾਲਿਤ ਤੈਨਾਤੀ ਪਾਈਪਲਾਈਨਾਂ ਨੂੰ ਪ੍ਰਾਪਤ ਕਰ ਸਕਦੀਆਂ ਹਨ ਜੋ ਕਿ ਕਲੱਸਟਰਾਂ ਅਤੇ ਵਾਤਾਵਰਣਾਂ ਵਿੱਚ ਸਕੇਲ ਕਰਦੀਆਂ ਹਨ।
ਇਹ ਗਾਈਡ GitOps ਪਹੁੰਚ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ Kubernetes 'ਤੇ ਉਤਪਾਦਨ-ਗ੍ਰੇਡ ਨਿਰੰਤਰ ਡਿਲੀਵਰੀ ਪਾਈਪਲਾਈਨਾਂ ਬਣਾਉਣ ਲਈ ਆਰਕੀਟੈਕਚਰ, ਸੈੱਟਅੱਪ, ਅਤੇ ਵਧੀਆ ਅਭਿਆਸਾਂ ਨੂੰ ਕਵਰ ਕਰਦੀ ਹੈ।
GitOps ਸਿਧਾਂਤ
GitOps ਚਾਰ ਮੁੱਖ ਸਿਧਾਂਤਾਂ 'ਤੇ ਬਣਾਇਆ ਗਿਆ ਹੈ ਜੋ ਬੁਨਿਆਦੀ ਤੌਰ 'ਤੇ ਬਦਲਦੇ ਹਨ ਕਿ ਟੀਮਾਂ ਕਿਵੇਂ ਤੈਨਾਤੀਆਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਦੀਆਂ ਹਨ:
- ਘੋਸ਼ਣਾਤਮਕ ਸੰਰਚਨਾ - ਤੁਹਾਡੇ ਸਿਸਟਮ ਦੀ ਪੂਰੀ ਲੋੜੀਦੀ ਸਥਿਤੀ ਨੂੰ ਘੋਸ਼ਣਾਤਮਕ ਤੌਰ 'ਤੇ ਵਰਣਨ ਕੀਤਾ ਗਿਆ ਹੈ। Kubernetes ਲਈ, ਇਸਦਾ ਮਤਲਬ ਹੈ YAML ਮੈਨੀਫੈਸਟ, ਹੈਲਮ ਚਾਰਟ, ਜਾਂ Git ਵਿੱਚ ਸਟੋਰ ਕੀਤੇ ਕਸਟਮਾਈਜ਼ ਓਵਰਲੇ।
- ਸੰਸਕਰਣ ਨਿਯੰਤਰਿਤ - ਗਿੱਟ ਸੱਚ ਦੇ ਇੱਕਲੇ ਸਰੋਤ ਵਜੋਂ ਕੰਮ ਕਰਦਾ ਹੈ। ਹਰ ਪਰਿਵਰਤਨ ਪੁੱਲ ਬੇਨਤੀ ਰਾਹੀਂ ਹੁੰਦਾ ਹੈ, ਇੱਕ ਪੂਰਾ ਆਡਿਟ ਟ੍ਰੇਲ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ ਅਤੇ ਕਮਿਟਾਂ ਨੂੰ ਵਾਪਸ ਕਰ ਕੇ ਆਸਾਨ ਰੋਲਬੈਕ ਨੂੰ ਸਮਰੱਥ ਬਣਾਉਂਦਾ ਹੈ।
- ਸਵੈਚਲਿਤ ਮੇਲ-ਮਿਲਾਪ - ਕਲੱਸਟਰ ਵਿੱਚ ਚੱਲ ਰਿਹਾ ਇੱਕ ਏਜੰਟ ਲਗਾਤਾਰ Git ਵਿੱਚ ਲੋੜੀਂਦੀ ਸਥਿਤੀ ਦੀ ਕਲੱਸਟਰ ਵਿੱਚ ਅਸਲ ਸਥਿਤੀ ਨਾਲ ਤੁਲਨਾ ਕਰਦਾ ਹੈ ਅਤੇ ਕਿਸੇ ਵੀ ਵਹਿਣ ਨੂੰ ਆਪਣੇ ਆਪ ਹੀ ਮਿਲਾ ਲੈਂਦਾ ਹੈ।
- ਨਿਰੰਤਰ ਨਿਰੀਖਣ - ਸਿਸਟਮ ਗੀਟ ਰਿਪੋਜ਼ਟਰੀ ਅਤੇ ਕਲੱਸਟਰ ਸਥਿਤੀ ਦੋਵਾਂ ਦੀ ਲਗਾਤਾਰ ਨਿਗਰਾਨੀ ਕਰਦਾ ਹੈ, ਵਿਭਿੰਨਤਾ 'ਤੇ ਚੇਤਾਵਨੀ ਦਿੰਦਾ ਹੈ ਅਤੇ ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਕਲੱਸਟਰ ਹਮੇਸ਼ਾਂ ਘੋਸ਼ਿਤ ਸੰਰਚਨਾ ਨਾਲ ਮੇਲ ਖਾਂਦਾ ਹੈ।
ਇਹ ਸਿਧਾਂਤ ਦਸਤੀ ਤੈਨਾਤੀ ਦੇ ਕਦਮਾਂ ਨੂੰ ਖਤਮ ਕਰਦੇ ਹਨ, ਮਨੁੱਖੀ ਗਲਤੀ ਨੂੰ ਘਟਾਉਂਦੇ ਹਨ, ਅਤੇ ਕਲੱਸਟਰ ਜਟਿਲਤਾ ਦੀ ਪਰਵਾਹ ਕੀਤੇ ਬਿਨਾਂ ਇਕਸਾਰ ਵਰਕਫਲੋ ਪ੍ਰਦਾਨ ਕਰਦੇ ਹਨ।
ਅਰਗੋਸੀਡੀ ਆਰਕੀਟੈਕਚਰ ਅਤੇ ਸੈੱਟਅੱਪ
ਅਰਗੋਸੀਡੀ Kubernetes ਲਈ ਸਭ ਤੋਂ ਵੱਧ ਅਪਣਾਇਆ ਗਿਆ GitOps ਟੂਲ ਹੈ। ਇਹ ਕਲੱਸਟਰਾਂ ਵਿੱਚ ਐਪਲੀਕੇਸ਼ਨ ਤੈਨਾਤੀਆਂ ਦੇ ਪ੍ਰਬੰਧਨ ਲਈ ਇੱਕ ਸ਼ਕਤੀਸ਼ਾਲੀ ਵੈੱਬ UI, CLI, ਅਤੇ API ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ।
ਕੋਰ ਕੰਪੋਨੈਂਟਸ
ArgoCD ਵਿੱਚ ਕਈ ਮੁੱਖ ਭਾਗ ਹੁੰਦੇ ਹਨ ਜੋ ਇਕੱਠੇ ਕੰਮ ਕਰਦੇ ਹਨ:
- API ਸਰਵਰ - ਇੱਕ gRPC/REST API ਦਾ ਪਰਦਾਫਾਸ਼ ਕਰਦਾ ਹੈ ਅਤੇ ਵੈੱਬ UI ਦੀ ਸੇਵਾ ਕਰਦਾ ਹੈ। ਪ੍ਰਮਾਣੀਕਰਨ, RBAC, ਅਤੇ ਬਾਹਰੀ ਏਕੀਕਰਣਾਂ ਨੂੰ ਸੰਭਾਲਦਾ ਹੈ।
- ਰਿਪੋਜ਼ਟਰੀ ਸਰਵਰ - Git ਰਿਪੋਜ਼ਟਰੀਆਂ ਨੂੰ ਕਲੋਨ ਕਰਦਾ ਹੈ ਅਤੇ ਹੈਲਮ ਚਾਰਟ, ਕਸਟਮਾਈਜ਼, ਜਾਂ ਪਲੇਨ YAML ਤੋਂ Kubernetes ਮੈਨੀਫੈਸਟ ਬਣਾਉਂਦਾ ਹੈ।
- ਐਪਲੀਕੇਸ਼ਨ ਕੰਟਰੋਲਰ - ਚੱਲ ਰਹੀਆਂ ਐਪਲੀਕੇਸ਼ਨਾਂ ਦੀ ਨਿਰੰਤਰ ਨਿਗਰਾਨੀ ਕਰਦਾ ਹੈ ਅਤੇ ਲਾਈਵ ਸਟੇਟ ਦੀ ਗਿੱਟ ਵਿੱਚ ਲੋੜੀਂਦੀ ਸਥਿਤੀ ਨਾਲ ਤੁਲਨਾ ਕਰਦਾ ਹੈ।
- Redis - ਰਿਪੋਜ਼ਟਰੀ ਸਰਵਰ ਅਤੇ ਐਪਲੀਕੇਸ਼ਨ ਕੰਟਰੋਲਰ ਲਈ ਕੈਚਿੰਗ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ।
ਇੰਸਟਾਲੇਸ਼ਨ
ਅਧਿਕਾਰਤ ਮੈਨੀਫੈਸਟ ਜਾਂ ਹੈਲਮ ਚਾਰਟ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ArgoCD ਨੂੰ ਆਪਣੇ ਕਲੱਸਟਰ ਵਿੱਚ ਤੈਨਾਤ ਕਰੋ:
# Create namespace and install ArgoCD
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
# Or via Helm
helm repo add argo https://argoproj.github.io/argo-helm
helm install argocd argo/argo-cd \
--namespace argocd \
--create-namespace \
--set server.service.type=LoadBalancerਐਪਲੀਕੇਸ਼ਨਾਂ ਦੀ ਪਰਿਭਾਸ਼ਾ
ArgoCD ਇੱਕ ਵਰਤਦਾ ਹੈ Application ਕਸਟਮ ਸਰੋਤ ਪਰਿਭਾਸ਼ਿਤ ਕਰਨ ਲਈ ਕਿ ਕੀ ਅਤੇ ਕਿੱਥੇ ਤਾਇਨਾਤ ਕਰਨਾ ਹੈ। ਇੱਥੇ ਇੱਕ ਆਮ ਐਪਲੀਕੇਸ਼ਨ ਪਰਿਭਾਸ਼ਾ ਹੈ:
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: my-web-app
namespace: argocd
spec:
project: default
source:
repoURL: https://github.com/myorg/k8s-manifests.git
targetRevision: main
path: apps/my-web-app/overlays/production
destination:
server: https://kubernetes.default.svc
namespace: production
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
retry:
limit: 5
backoff:
duration: 5s
factor: 2
maxDuration: 3mਦ syncPolicy.automated ਸੈਕਸ਼ਨ ਆਟੋਮੈਟਿਕ ਸਿੰਕ੍ਰੋਨਾਈਜ਼ੇਸ਼ਨ ਨੂੰ ਸਮਰੱਥ ਬਣਾਉਂਦਾ ਹੈ। ਦ prune ਵਿਕਲਪ ਉਹਨਾਂ ਸਰੋਤਾਂ ਨੂੰ ਹਟਾਉਂਦਾ ਹੈ ਜੋ ਹੁਣ ਗਿੱਟ ਵਿੱਚ ਪਰਿਭਾਸ਼ਿਤ ਨਹੀਂ ਹਨ, ਜਦਕਿ selfHeal ਹੱਥੀਂ ਕੀਤੀਆਂ ਤਬਦੀਲੀਆਂ ਨੂੰ ਸਿੱਧੇ ਕਲੱਸਟਰ ਵਿੱਚ ਵਾਪਸ ਲਿਆਉਂਦਾ ਹੈ।
ਫਲੈਕਸ ਸੀਡੀ: ਇੱਕ ਵਿਕਲਪਿਕ ਪਹੁੰਚ
Flux CD GitOps ਲਈ ਇੱਕ ਵੱਖਰੀ ਆਰਕੀਟੈਕਚਰਲ ਪਹੁੰਚ ਅਪਣਾਉਂਦੀ ਹੈ। ਇੱਕ UI ਦੇ ਨਾਲ ਇੱਕ ਕੇਂਦਰੀਕ੍ਰਿਤ ਸਰਵਰ ਦੀ ਬਜਾਏ, Flux Kubernetes ਕੰਟਰੋਲਰਾਂ ਦੇ ਇੱਕ ਸਮੂਹ ਵਜੋਂ ਕੰਮ ਕਰਦਾ ਹੈ ਜੋ ਹਰੇਕ ਇੱਕ ਖਾਸ ਚਿੰਤਾ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਦਾ ਹੈ।
ਫਲੈਕਸ ਕੰਪੋਨੈਂਟਸ
- ਸਰੋਤ ਕੰਟਰੋਲਰ - Git ਰਿਪੋਜ਼ਟਰੀਆਂ, ਹੈਲਮ ਰਿਪੋਜ਼ਟਰੀਆਂ, ਅਤੇ OCI ਕਲਾਤਮਕ ਸਰੋਤਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਦਾ ਹੈ।
- ਕਸਟਮਾਈਜ਼ ਕੰਟਰੋਲਰ - ਕਸਟਮਾਈਜ਼ ਓਵਰਲੇਅ ਅਤੇ ਪਲੇਨ YAML ਮੈਨੀਫੈਸਟ ਲਾਗੂ ਕਰਦਾ ਹੈ।
- ਹੈਲਮ ਕੰਟਰੋਲਰ - ਦੁਆਰਾ ਹੈਲਮ ਚਾਰਟ ਰੀਲੀਜ਼ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਦਾ ਹੈ
HelmReleaseਕਸਟਮ ਸਰੋਤ. - ਸੂਚਨਾ ਕੰਟਰੋਲਰ - ਸਲੈਕ, ਟੀਮਾਂ, ਅਤੇ ਵੈਬਹੁੱਕ ਪ੍ਰਦਾਤਾਵਾਂ ਨਾਲ ਏਕੀਕ੍ਰਿਤ, ਅੰਦਰ ਵੱਲ ਅਤੇ ਬਾਹਰ ਜਾਣ ਵਾਲੀਆਂ ਘਟਨਾਵਾਂ ਨੂੰ ਸੰਭਾਲਦਾ ਹੈ।
- ਚਿੱਤਰ ਆਟੋਮੇਸ਼ਨ ਕੰਟਰੋਲਰ - ਨਵੀਆਂ ਤਸਵੀਰਾਂ ਉਪਲਬਧ ਹੋਣ 'ਤੇ ਕੰਟੇਨਰ ਰਜਿਸਟਰੀਆਂ ਨੂੰ ਸਕੈਨ ਕਰੋ ਅਤੇ ਮੈਨੀਫੈਸਟ ਨੂੰ ਅਪਡੇਟ ਕਰੋ।
ਫਲੈਕਸ ਬੂਟਸਟਰੈਪ
# Bootstrap Flux on a cluster with a GitHub repository
flux bootstrap github \
--owner=myorg \
--repository=fleet-infra \
--branch=main \
--path=clusters/production \
--personal
# Define a HelmRelease
apiVersion: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
metadata:
name: nginx-ingress
namespace: ingress-system
spec:
interval: 5m
chart:
spec:
chart: ingress-nginx
version: "4.x"
sourceRef:
kind: HelmRepository
name: ingress-nginx
namespace: flux-system
values:
controller:
replicaCount: 3
metrics:
enabled: trueਅਰਗੋਸੀਡੀ ਬਨਾਮ ਫਲੈਕਸ: ਕਦੋਂ ਚੁਣਨਾ ਹੈ
ਜਦੋਂ ਤੁਹਾਨੂੰ ਦਿੱਖ ਲਈ ਇੱਕ ਅਮੀਰ ਵੈੱਬ UI, ਵਧੀਆ RBAC ਦੇ ਨਾਲ ਬਹੁ-ਕਿਰਾਏਦਾਰੀ, ਅਤੇ ਇੱਕ ਕੇਂਦਰੀਕ੍ਰਿਤ ਪ੍ਰਬੰਧਨ ਪਲੇਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ ਤਾਂ ArgoCD ਆਦਰਸ਼ ਹੁੰਦਾ ਹੈ। Flux ਵਾਤਾਵਰਨ ਵਿੱਚ ਚਮਕਦਾ ਹੈ ਜੋ ਇੱਕ ਹਲਕੇ, ਕੰਟਰੋਲਰ-ਆਧਾਰਿਤ ਆਰਕੀਟੈਕਚਰ ਨੂੰ ਤਰਜੀਹ ਦਿੰਦੇ ਹਨ, ਚਿੱਤਰ ਆਟੋਮੇਸ਼ਨ ਸਮਰੱਥਾਵਾਂ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ, ਜਾਂ Kubernetes API ਈਕੋਸਿਸਟਮ ਨਾਲ ਡੂੰਘੇ ਏਕੀਕਰਣ ਚਾਹੁੰਦੇ ਹਨ।
GitOps ਵਿੱਚ ਹੈਲਮ ਚਾਰਟ ਪ੍ਰਬੰਧਨ
ਹੈਲਮ ਚਾਰਟ Kubernetes ਐਪਲੀਕੇਸ਼ਨਾਂ ਲਈ ਡੀ ਫੈਕਟੋ ਪੈਕੇਜਿੰਗ ਫਾਰਮੈਟ ਹਨ। ਇੱਕ GitOps ਵਰਕਫਲੋ ਵਿੱਚ, ਵਾਤਾਵਰਣ ਵਿੱਚ ਹੈਲਮ ਮੁੱਲਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨ ਲਈ ਸਾਵਧਾਨ ਸੰਗਠਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ।
# Repository structure for multi-environment Helm management
k8s-manifests/
base/
my-app/
Chart.yaml
values.yaml # Default values
templates/
deployment.yaml
service.yaml
ingress.yaml
environments/
dev/
my-app/
values.yaml # Dev overrides
staging/
my-app/
values.yaml # Staging overrides
production/
my-app/
values.yaml # Production overridesਦੋਵੇਂ ArgoCD ਅਤੇ Flux ਹੈਲਮ ਨੂੰ ਮੂਲ ਰੂਪ ਵਿੱਚ ਸਮਰਥਨ ਕਰਦੇ ਹਨ। ਅਰਗੋਸੀਡੀ ਆਪਣੇ ਰਿਪੋਜ਼ਟਰੀ ਸਰਵਰ ਦੁਆਰਾ ਚਾਰਟ ਸਰਵਰ-ਸਾਈਡ ਰੈਂਡਰ ਕਰਦਾ ਹੈ, ਜਦੋਂ ਕਿ ਫਲੈਕਸ ਹੈਲਮ SDK ਨੂੰ ਸਿੱਧੇ ਆਪਣੇ ਹੈਲਮ ਕੰਟਰੋਲਰ ਦੇ ਅੰਦਰ ਵਰਤਦਾ ਹੈ।
ਤੈਨਾਤੀ ਰਣਨੀਤੀਆਂ
ਸਹੀ ਤੈਨਾਤੀ ਰਣਨੀਤੀ ਦੀ ਚੋਣ ਕਰਨਾ ਜੋਖਮ ਨੂੰ ਘੱਟ ਕਰਦਾ ਹੈ ਅਤੇ ਜ਼ੀਰੋ-ਡਾਊਨਟਾਈਮ ਰੀਲੀਜ਼ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ।
ਰੋਲਿੰਗ ਅੱਪਡੇਟ
ਪੂਰਵ-ਨਿਰਧਾਰਤ Kubernetes ਰਣਨੀਤੀ। ਪੌਡਾਂ ਨੂੰ ਹੌਲੀ-ਹੌਲੀ ਨਵੇਂ ਸੰਸਕਰਣਾਂ ਨਾਲ ਬਦਲ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ। ਕੌਂਫਿਗਰ ਕਰੋ maxSurge ਅਤੇ maxUnavailable ਰੋਲਆਊਟ ਸਪੀਡ ਨੂੰ ਕੰਟਰੋਲ ਕਰਨ ਲਈ।
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 5
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
template:
spec:
containers:
- name: app
image: myapp:v2.1.0
readinessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 5
periodSeconds: 10ਨੀਲੀ-ਹਰੇ ਤੈਨਾਤੀਆਂ
ਦੋ ਇੱਕੋ ਜਿਹੇ ਵਾਤਾਵਰਨ (ਨੀਲੇ ਅਤੇ ਹਰੇ) ਨੂੰ ਚਲਾਓ। ਨਵੇਂ ਸੰਸਕਰਣ ਨੂੰ ਅਕਿਰਿਆਸ਼ੀਲ ਵਾਤਾਵਰਣ ਵਿੱਚ ਤੈਨਾਤ ਕਰੋ, ਇਸਦੀ ਪੁਸ਼ਟੀ ਕਰੋ, ਫਿਰ ਟ੍ਰੈਫਿਕ ਬਦਲੋ। ਇਹ ਪਿਛਲੇ ਵਾਤਾਵਰਣ 'ਤੇ ਵਾਪਸ ਜਾਣ ਦੁਆਰਾ ਤੁਰੰਤ ਰੋਲਬੈਕ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ। ਸੇਵਾ ਲੇਬਲ ਚੋਣਕਾਰਾਂ ਜਾਂ ਇਸਟੀਓ ਟ੍ਰੈਫਿਕ ਪ੍ਰਬੰਧਨ ਨਾਲ ਲਾਗੂ ਕਰੋ।
ਕੈਨਰੀ ਤੈਨਾਤੀਆਂ
ਹੌਲੀ-ਹੌਲੀ ਟ੍ਰੈਫਿਕ ਦੀ ਇੱਕ ਛੋਟੀ ਪ੍ਰਤੀਸ਼ਤਤਾ ਨੂੰ ਨਵੇਂ ਸੰਸਕਰਣ ਲਈ ਰੂਟ ਕਰੋ, ਜਿਵੇਂ-ਜਿਵੇਂ ਵਿਸ਼ਵਾਸ ਵਧਦਾ ਹੈ ਪ੍ਰਤੀਸ਼ਤ ਨੂੰ ਵਧਾਓ। ਫਲੈਗਰ ਅਤੇ ਆਰਗੋ ਰੋਲਆਉਟਸ ਵਰਗੇ ਟੂਲ ਮੈਟ੍ਰਿਕਸ-ਆਧਾਰਿਤ ਪ੍ਰੋਮੋਸ਼ਨ ਦੇ ਨਾਲ ਕੈਨਰੀ ਵਿਸ਼ਲੇਸ਼ਣ ਨੂੰ ਸਵੈਚਲਿਤ ਕਰਦੇ ਹਨ।
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
name: my-app
spec:
replicas: 5
strategy:
canary:
steps:
- setWeight: 10
- pause: { duration: 5m }
- setWeight: 30
- pause: { duration: 5m }
- setWeight: 60
- pause: { duration: 5m }
canaryService: my-app-canary
stableService: my-app-stable
trafficRouting:
istio:
virtualService:
name: my-app-vsvc
routes:
- primaryਸਵੈਚਲਿਤ ਰੋਲਬੈਕਸ
GitOps ਰੋਲਬੈਕ ਨੂੰ ਸਿੱਧਾ ਬਣਾਉਂਦਾ ਹੈ: ਬਸ Git ਕਮਿਟ ਨੂੰ ਵਾਪਸ ਕਰੋ। ਹਾਲਾਂਕਿ, ਸਿਹਤ ਜਾਂਚਾਂ ਦੇ ਆਧਾਰ 'ਤੇ ਸਵੈਚਲਿਤ ਰੋਲਬੈਕ ਇੱਕ ਵਾਧੂ ਸੁਰੱਖਿਆ ਜਾਲ ਪ੍ਰਦਾਨ ਕਰਦੇ ਹਨ।
ਅਰਗੋਸੀਡੀ ਆਪਣੇ ਸਿੰਕ ਅਤੇ ਸਿਹਤ ਮੁਲਾਂਕਣ ਪ੍ਰਣਾਲੀ ਦੁਆਰਾ ਸਵੈਚਲਿਤ ਰੋਲਬੈਕ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ। ਜੇਕਰ ਇੱਕ ਐਪਲੀਕੇਸ਼ਨ ਸਿੰਕ ਤੋਂ ਬਾਅਦ ਇੱਕ ਡੀਗਰੇਡ ਸਟੇਟ ਵਿੱਚ ਦਾਖਲ ਹੁੰਦੀ ਹੈ, ਤਾਂ ArgoCD ਆਟੋਮੈਟਿਕ ਹੀ ਪਿਛਲੀ ਜਾਣੀ ਜਾਣ ਵਾਲੀ ਚੰਗੀ ਸਥਿਤੀ ਵਿੱਚ ਵਾਪਸ ਆ ਸਕਦੀ ਹੈ।
ਵਧੇਰੇ ਗੁੰਝਲਦਾਰ ਰੋਲਬੈਕ ਦ੍ਰਿਸ਼ਾਂ ਲਈ, ਆਰਗੋ ਰੋਲਆਉਟਸ ਅਤੇ ਫਲੈਗਰ ਪ੍ਰੋਮੀਥੀਅਸ ਮੈਟ੍ਰਿਕਸ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰ ਸਕਦੇ ਹਨ, ਸਵੈਚਲਿਤ ਟੈਸਟ ਚਲਾ ਸਕਦੇ ਹਨ, ਅਤੇ ਰੋਲਆਉਟਸ ਨੂੰ ਰੱਦ ਕਰ ਸਕਦੇ ਹਨ ਜੋ ਘਟੀਆ ਕਾਰਗੁਜ਼ਾਰੀ ਦਿਖਾਉਂਦੇ ਹਨ।
ਸੀਲਬੰਦ ਰਾਜ਼ ਦੇ ਨਾਲ ਭੇਦ ਪ੍ਰਬੰਧਨ
Git ਵਿੱਚ ਭੇਦ ਸਟੋਰ ਕਰਨਾ GitOps ਲਈ ਇੱਕ ਗੰਭੀਰ ਚੁਣੌਤੀ ਹੈ। ਸੀਲਬੰਦ ਰਾਜ਼ ਇਸ ਨੂੰ ਭੇਦਾਂ ਨੂੰ ਐਨਕ੍ਰਿਪਟ ਕਰਕੇ ਹੱਲ ਕਰਦੇ ਹਨ ਜੋ ਸਿਰਫ ਟੀਚੇ ਦੇ ਕਲੱਸਟਰ ਵਿੱਚ ਚੱਲ ਰਹੇ ਕੰਟਰੋਲਰ ਦੁਆਰਾ ਡੀਕ੍ਰਿਪਟ ਕੀਤੇ ਜਾ ਸਕਦੇ ਹਨ।
# Install Sealed Secrets controller
helm repo add sealed-secrets https://bitnami-labs.github.io/sealed-secrets
helm install sealed-secrets sealed-secrets/sealed-secrets \
--namespace kube-system
# Encrypt a secret
kubectl create secret generic db-credentials \
--from-literal=username=admin \
--from-literal=password=s3cure-p@ss \
--dry-run=client -o yaml | \
kubeseal --format yaml > db-credentials-sealed.yamlਨਤੀਜੇ ਵਜੋਂ SealedSecret ਸਰੋਤ ਨੂੰ ਸੁਰੱਖਿਅਤ ਢੰਗ ਨਾਲ ਗਿੱਟ ਲਈ ਵਚਨਬੱਧ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। ਟਾਰਗੇਟ ਕਲੱਸਟਰ ਵਿੱਚ ਸਿਰਫ਼ ਸੀਲਬੰਦ ਸੀਕਰੇਟ ਕੰਟਰੋਲਰ ਹੀ ਇਸ ਨੂੰ ਡੀਕ੍ਰਿਪਟ ਕਰਨ ਲਈ ਲੋੜੀਂਦੀ ਪ੍ਰਾਈਵੇਟ ਕੁੰਜੀ ਰੱਖਦਾ ਹੈ। ਵਿਕਲਪਕ ਪਹੁੰਚਾਂ ਵਿੱਚ ਬਾਹਰੀ ਸੀਕਰੇਟਸ ਆਪਰੇਟਰ (AWS ਸੀਕਰੇਟਸ ਮੈਨੇਜਰ, HashiCorp ਵਾਲਟ, ਆਦਿ ਤੋਂ ਖਿੱਚਣ ਲਈ) ਅਤੇ ਫਾਈਲ-ਪੱਧਰ ਦੀ ਐਨਕ੍ਰਿਪਸ਼ਨ ਲਈ SOPS ਸ਼ਾਮਲ ਹਨ।
ਨਿਗਰਾਨੀ ਤੈਨਾਤੀਆਂ
ਉਤਪਾਦਨ GitOps ਪਾਈਪਲਾਈਨਾਂ ਲਈ ਤੈਨਾਤੀ ਸਥਿਤੀ ਵਿੱਚ ਦਿੱਖ ਜ਼ਰੂਰੀ ਹੈ। ਕਈ ਪੱਧਰਾਂ 'ਤੇ ਨਿਗਰਾਨੀ ਨੂੰ ਲਾਗੂ ਕਰੋ:
- ਅਰਗੋਸੀਡੀ ਮੈਟ੍ਰਿਕਸ - ਅਰਗੋਸੀਡੀ ਸਿੰਕ ਸਥਿਤੀ, ਸਿਹਤ ਅਤੇ ਸੰਚਾਲਨ ਦੀ ਮਿਆਦ ਲਈ ਪ੍ਰੋਮੀਥੀਅਸ ਮੈਟ੍ਰਿਕਸ ਦਾ ਪਰਦਾਫਾਸ਼ ਕਰਦਾ ਹੈ। ਤੈਨਾਤੀ ਬਾਰੰਬਾਰਤਾ ਅਤੇ ਅਸਫਲਤਾ ਦਰਾਂ ਨੂੰ ਟਰੈਕ ਕਰਨ ਲਈ ਗ੍ਰਾਫਾਨਾ ਡੈਸ਼ਬੋਰਡ ਬਣਾਓ।
- Kubernetes ਇਵੈਂਟਸ - ਮੁੱਦਿਆਂ ਦਾ ਛੇਤੀ ਪਤਾ ਲਗਾਉਣ ਲਈ ਪੌਡ ਸ਼ਡਿਊਲਿੰਗ, ਚਿੱਤਰ ਖਿੱਚ, ਅਤੇ ਤਿਆਰੀ ਜਾਂਚ ਇਵੈਂਟਾਂ ਦੀ ਨਿਗਰਾਨੀ ਕਰੋ।
- ਐਪਲੀਕੇਸ਼ਨ ਸਿਹਤ ਜਾਂਚ - ਤੁਹਾਡੇ ਖਾਸ ਸਰੋਤਾਂ ਲਈ "ਸਿਹਤਮੰਦ" ਦਾ ਕੀ ਅਰਥ ਹੈ ਇਹ ਪਰਿਭਾਸ਼ਿਤ ਕਰਨ ਲਈ Lua ਸਕ੍ਰਿਪਟਾਂ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ArgoCD ਵਿੱਚ ਕਸਟਮ ਸਿਹਤ ਜਾਂਚਾਂ ਨੂੰ ਕੌਂਫਿਗਰ ਕਰੋ।
- ਚੇਤਾਵਨੀ - ਸਿੰਕ ਅਸਫਲਤਾਵਾਂ, ਸਿਹਤ ਦੀ ਗਿਰਾਵਟ, ਜਾਂ ਡ੍ਰਾਈਫਟ ਖੋਜ 'ਤੇ ਚੇਤਾਵਨੀ ਦੇਣ ਲਈ ਸਲੈਕ, ਪੇਜਰਡਿਊਟੀ, ਜਾਂ ਈਮੇਲ ਨਾਲ ਅਰਗੋਸੀਡੀ ਸੂਚਨਾਵਾਂ ਨੂੰ ਏਕੀਕ੍ਰਿਤ ਕਰੋ।
# ArgoCD Notification ConfigMap
apiVersion: v1
kind: ConfigMap
metadata:
name: argocd-notifications-cm
namespace: argocd
data:
trigger.on-sync-failed: |
- when: app.status.operationState.phase in ['Error', 'Failed']
send: [slack-notification]
template.slack-notification: |
message: |
Application {{.app.metadata.name}} sync {{.app.status.operationState.phase}}.
Revision: {{.app.status.sync.revision}}
service.slack: |
token: $slack-token
channel: deploymentsਮਲਟੀ-ਕਲੱਸਟਰ ਡਿਲਿਵਰੀ
ਸੰਗਠਨਾਂ ਦੇ ਸਕੇਲ ਦੇ ਰੂਪ ਵਿੱਚ, ਕਈ ਕਲੱਸਟਰਾਂ ਵਿੱਚ ਤੈਨਾਤ ਕਰਨਾ ਜ਼ਰੂਰੀ ਹੋ ਜਾਂਦਾ ਹੈ। ArgoCD ਬਾਹਰੀ ਕਲੱਸਟਰਾਂ ਨੂੰ ਰਜਿਸਟਰ ਕਰਕੇ ਮਲਟੀ-ਕਲੱਸਟਰ ਪ੍ਰਬੰਧਨ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ। ਫਲੈਕਸ ਇੱਕ ਪ੍ਰਬੰਧਨ ਕਲੱਸਟਰ ਦੁਆਰਾ ਇਸਨੂੰ ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ ਜੋ ਵਰਕਲੋਡ ਕਲੱਸਟਰਾਂ ਨੂੰ ਬੂਟਸਟਰੈਪ ਕਰਦਾ ਹੈ।
ArgoCD ਵਿੱਚ ApplicationSet ਕੰਟਰੋਲਰ ਵਿਸ਼ੇਸ਼ ਤੌਰ 'ਤੇ ਮਲਟੀ-ਕਲੱਸਟਰ ਦ੍ਰਿਸ਼ਾਂ ਲਈ ਸ਼ਕਤੀਸ਼ਾਲੀ ਹੈ। ਇਹ ਕਲੱਸਟਰ ਸੂਚੀਆਂ, ਗਿੱਟ ਡਾਇਰੈਕਟਰੀਆਂ, ਜਾਂ ਪੁੱਲ ਬੇਨਤੀ ਈਵੈਂਟਾਂ ਦੇ ਅਧਾਰ ਤੇ ਗਤੀਸ਼ੀਲ ਤੌਰ 'ਤੇ ਐਪਲੀਕੇਸ਼ਨ ਸਰੋਤ ਤਿਆਰ ਕਰ ਸਕਦਾ ਹੈ।
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
name: my-app-set
namespace: argocd
spec:
generators:
- clusters:
selector:
matchLabels:
env: production
template:
metadata:
name: 'my-app-{{name}}'
spec:
project: default
source:
repoURL: https://github.com/myorg/k8s-manifests.git
targetRevision: main
path: 'apps/my-app/overlays/{{metadata.labels.region}}'
destination:
server: '{{server}}'
namespace: my-appਸਿੱਟਾ
ArgoCD ਜਾਂ Flux CD ਦੇ ਨਾਲ GitOps Kubernetes ਨਿਰੰਤਰ ਡਿਲੀਵਰੀ ਲਈ ਇੱਕ ਮਜ਼ਬੂਤ ਬੁਨਿਆਦ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ। Git ਨੂੰ ਸੱਚਾਈ ਦੇ ਸਰੋਤ ਵਜੋਂ ਮੰਨ ਕੇ, ਸਵੈਚਾਲਤ ਸੁਲ੍ਹਾ-ਸਫਾਈ, ਅਤੇ ਪ੍ਰਗਤੀਸ਼ੀਲ ਡਿਲੀਵਰੀ ਰਣਨੀਤੀਆਂ ਦਾ ਲਾਭ ਉਠਾ ਕੇ, ਟੀਮਾਂ ਭਰੋਸੇ ਨਾਲ ਤੈਨਾਤ ਕਰ ਸਕਦੀਆਂ ਹਨ ਅਤੇ ਅਸਫਲਤਾਵਾਂ ਤੋਂ ਜਲਦੀ ਠੀਕ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਇੱਕ ਸਧਾਰਨ ਸਿੰਗਲ-ਕਲੱਸਟਰ ਸੈੱਟਅੱਪ ਨਾਲ ਸ਼ੁਰੂ ਕਰੋ, ਆਪਣੀ Git ਰਿਪੋਜ਼ਟਰੀ ਢਾਂਚੇ ਨੂੰ ਸਥਾਪਿਤ ਕਰੋ, ਅਤੇ ਹੌਲੀ-ਹੌਲੀ ਤੁਹਾਡੇ ਪਲੇਟਫਾਰਮ ਦੇ ਪਰਿਪੱਕ ਹੋਣ 'ਤੇ ਕੈਨਰੀ ਤੈਨਾਤੀਆਂ, ਮਲਟੀ-ਕਲੱਸਟਰ ਪ੍ਰਬੰਧਨ, ਅਤੇ ਸਵੈਚਲਿਤ ਰੋਲਬੈਕ ਨੀਤੀਆਂ ਵਰਗੇ ਉੱਨਤ ਪੈਟਰਨਾਂ ਨੂੰ ਅਪਣਾਓ।
GitOps ਬੁਨਿਆਦੀ ਢਾਂਚੇ ਵਿੱਚ ਨਿਵੇਸ਼ ਸੁਧਾਰੀ ਭਰੋਸੇਯੋਗਤਾ, ਤੇਜ਼ ਘਟਨਾ ਪ੍ਰਤੀਕਿਰਿਆ, ਸੰਪੂਰਨ ਆਡਿਟ ਟ੍ਰੇਲਜ਼, ਅਤੇ ਇੱਕ ਡਿਵੈਲਪਰ ਅਨੁਭਵ ਦੁਆਰਾ ਲਾਭਅੰਸ਼ ਦਾ ਭੁਗਤਾਨ ਕਰਦਾ ਹੈ ਜੋ ਇੱਕ ਪੁੱਲ ਬੇਨਤੀ ਨੂੰ ਮਿਲਾਉਣ ਵਾਂਗ ਤੈਨਾਤੀਆਂ ਨੂੰ ਸਧਾਰਨ ਬਣਾਉਂਦਾ ਹੈ।