rollout v1

This commit is contained in:
Waylon Walker 2024-03-12 20:07:15 -05:00
parent eebe310060
commit bebfe9013d
No known key found for this signature in database
GPG key ID: 66E2BF2B4190EFE4
4 changed files with 158 additions and 1 deletions

View file

@ -1,4 +1,3 @@
apiVersion: argoproj.io/v1alpha1 apiVersion: argoproj.io/v1alpha1
kind: Application kind: Application
metadata: metadata:
@ -44,3 +43,23 @@ spec:
syncPolicy: syncPolicy:
automated: automated:
prune: true prune: true
---
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: hello-world
namespace: argocd
spec:
project: default
destination:
namespace: hello-world
server: 'https://kubernetes.default.svc'
source:
path: hello-world/deployments
repoURL: 'https://github.com/waylonwalker/learn-rollouts'
targetRevision: HEAD
syncPolicy:
automated:
prune: true

8
hello-world/Dockerfile Normal file
View file

@ -0,0 +1,8 @@
From python:3.11
RUN pip install flask
WORKDIR /app
COPY hello-world/app.py .
ENV FLASK_APP=app.py
ENV FLASK_RUN_HOST=0.0.0.0
CMD ["flask", "run"]

8
hello-world/app.py Normal file
View file

@ -0,0 +1,8 @@
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello_world():
return "Hello, V1"

View file

@ -0,0 +1,122 @@
apiVersion: v1
kind: Namespace
metadata:
creationTimestamp: null
name: hello-world
namespace: hello-world
spec: {}
status: {}
---
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
name: hello-world-bluegreen
namespace: hello-world
spec:
replicas: 2
revisionHistoryLimit: 2
selector:
matchLabels:
app: rollout-bluegreen
template:
metadata:
labels:
app: rollout-bluegreen
spec:
containers:
- name: hello-world
image: docker.io/waylonwalker/learn-rollouts:v1
ports:
- containerPort: 5000
strategy:
blueGreen:
# activeService specifies the service to update with the new template hash at time of promotion.
# This field is mandatory for the blueGreen update strategy.
activeService: hello-world-active
# previewService specifies the service to update with the new template hash before promotion.
# This allows the preview stack to be reachable without serving production traffic.
# This field is optional.
previewService: hello-world-preview
# autoPromotionEnabled disables automated promotion of the new stack by pausing the rollout
# immediately before the promotion. If omitted, the default behavior is to promote the new
# stack as soon as the ReplicaSet are completely ready/available.
# Rollouts can be resumed using: `kubectl argo rollouts promote ROLLOUT`
autoPromotionEnabled: false
---
apiVersion: v1
kind: Service
metadata:
name: hello-world-active
namespace: hello-world
spec:
ports:
- name: "5000"
port: 5000
targetPort: 5000
---
apiVersion: v1
kind: Service
metadata:
name: hello-world-preview
namespace: hello-world
spec:
# selector:
# app: hello-world
ports:
- name: "5000"
port: 5000
targetPort: 5000
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: hello-world
name: hello-world-deployment
namespace: hello-world
spec:
replicas: 1
selector:
matchLabels:
app: hello-world
template:
metadata:
labels:
app: hello-world
spec:
containers:
- image: docker.io/waylonwalker/learn-rollouts:v1
name: hello-world
ports:
- containerPort: 5000
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
labels:
service: hello-world
name: hello-world-ingress
namespace: hello-world
spec:
rules:
- host: localhost
http:
paths:
- backend:
service:
name: hello-world-active
port:
number: 5000
path: /active
pathType: Prefix
status:
loadBalancer: {}