├── README.md ├── original ├── configmap.yaml ├── deployment.yaml └── service.yaml └── solution ├── base ├── config.properties ├── deployment.yaml ├── kustomization.yaml └── service.yaml └── overlays ├── dev ├── config.properties ├── kustomization.yaml └── replicas.yaml └── prod ├── config.properties ├── kustomization.yaml └── replicas.yaml /README.md: -------------------------------------------------------------------------------- 1 | ## Check your version of kubectl 2 | ``` 3 | kubectl version 4 | ``` 5 | *If you have 1.21 or above of kubectl you will have access to kubectl kustomize which is the recommended method. If you aren't on version 1.21 or above, upgrade kubectl. 6 | 7 | *You could also download/use the 'kutomize' binary seperatly but the cmds are different. 8 | 9 | 10 | ## Viewing Kustomize Configs - (Using kubectl kustomize integration) 11 | ``` 12 | kubectl kustomize . 13 | kubectl kustomize overlays/dev/ 14 | kubectl kustomize overlays/prod/ 15 | ``` 16 | 17 | ## Applying Kustomize Configs - (Using kubectl kustomize integration) 18 | ``` 19 | kubectl apply -k . 20 | kubectl apply -k overlays/dev/ 21 | kubectl apply -k overlays/prod/ 22 | ``` 23 | Note: if you get field is immutable error, check your configuration and try deleting the resources then applying again. 24 | 25 | 26 | ## Creating Namespaces if you dont have them already 27 | ``` 28 | kubectl create namespace dev; kubectl create namespace prod; 29 | ``` 30 | 31 | 32 | ## Accessing the application 33 | ``` 34 | minikube service kustom-mywebapp-v1 35 | minikube service kustom-mywebapp-v1 -n dev 36 | minikube service kustom-mywebapp-v1 -n prod 37 | ``` 38 | 39 | ## References: 40 | https://github.com/kubernetes-sigs/kustomize/blob/master/README.md 41 | https://kubectl.docs.kubernetes.io/guides/config_management/offtheshelf/ 42 | -------------------------------------------------------------------------------- /original/configmap.yaml: -------------------------------------------------------------------------------- 1 | kind: ConfigMap 2 | apiVersion: v1 3 | metadata: 4 | name: mywebapp-configmapv1.0 5 | namespace: default 6 | data: 7 | BG_COLOR: '#12181b' 8 | FONT_COLOR: '#FFFFFF' 9 | CUSTOM_HEADER: My Custom Message -------------------------------------------------------------------------------- /original/deployment.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: mywebapp 5 | namespace: default 6 | labels: 7 | app: mywebapp 8 | spec: 9 | replicas: 1 10 | selector: 11 | matchLabels: 12 | app: mywebapp 13 | template: 14 | metadata: 15 | labels: 16 | app: mywebapp 17 | spec: # Pod spec 18 | containers: 19 | - name: mycontainer 20 | image: "devopsjourney1/mywebapp:latest" 21 | ports: 22 | - containerPort: 80 23 | envFrom: 24 | - configMapRef: 25 | name: mywebapp-configmapv1.0 26 | resources: 27 | requests: 28 | memory: "16Mi" 29 | cpu: "50m" # 500milliCPUs (1/2 CPU) 30 | limits: 31 | memory: "128Mi" 32 | cpu: "100m" -------------------------------------------------------------------------------- /original/service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: mywebapp 5 | namespace: default 6 | labels: 7 | app: mywebapp 8 | spec: 9 | ports: 10 | - port: 80 11 | protocol: TCP 12 | name: flask 13 | selector: 14 | app: mywebapp 15 | tier: frontend 16 | type: LoadBalancer -------------------------------------------------------------------------------- /solution/base/config.properties: -------------------------------------------------------------------------------- 1 | BG_COLOR=#12181b 2 | FONT_COLOR=#FFFFFF 3 | CUSTOM_HEADER=welcome to the prod environment -------------------------------------------------------------------------------- /solution/base/deployment.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: mywebapp 5 | namespace: default 6 | spec: 7 | replicas: 1 8 | template: 9 | spec: # Pod spec 10 | containers: 11 | - name: mycontainer 12 | image: "devopsjourney1/mywebapp:latest" 13 | ports: 14 | - containerPort: 80 15 | envFrom: 16 | - configMapRef: 17 | name: mykustom-map 18 | resources: 19 | requests: 20 | memory: "16Mi" 21 | cpu: "50m" # 500milliCPUs (1/2 CPU) 22 | limits: 23 | memory: "128Mi" 24 | cpu: "100m" -------------------------------------------------------------------------------- /solution/base/kustomization.yaml: -------------------------------------------------------------------------------- 1 | 2 | resources: 3 | - deployment.yaml 4 | - service.yaml 5 | 6 | commonLabels: 7 | app: mykustomapp 8 | 9 | commonAnnotations: 10 | app: mykustom-annontations 11 | 12 | namePrefix: 13 | kustom- 14 | 15 | nameSuffix: 16 | -v1 17 | 18 | configMapGenerator: 19 | - name: mykustom-map 20 | env: config.properties -------------------------------------------------------------------------------- /solution/base/service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: mywebapp 5 | namespace: default 6 | spec: 7 | ports: 8 | - port: 80 9 | protocol: TCP 10 | name: flask 11 | type: LoadBalancer -------------------------------------------------------------------------------- /solution/overlays/dev/config.properties: -------------------------------------------------------------------------------- 1 | BG_COLOR=#12181b 2 | FONT_COLOR=#FFFFFF 3 | CUSTOM_HEADER=welcome to the dev environment -------------------------------------------------------------------------------- /solution/overlays/dev/kustomization.yaml: -------------------------------------------------------------------------------- 1 | bases: 2 | - ../../base 3 | 4 | namespace: dev 5 | 6 | patches: 7 | - replicas.yaml 8 | 9 | configMapGenerator: 10 | - name: mykustom-map 11 | env: config.properties -------------------------------------------------------------------------------- /solution/overlays/dev/replicas.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: mywebapp 5 | spec: 6 | replicas: 2 -------------------------------------------------------------------------------- /solution/overlays/prod/config.properties: -------------------------------------------------------------------------------- 1 | BG_COLOR=#12181b 2 | FONT_COLOR=#FFFFFF 3 | CUSTOM_HEADER=welcome to the prod environment -------------------------------------------------------------------------------- /solution/overlays/prod/kustomization.yaml: -------------------------------------------------------------------------------- 1 | bases: 2 | - ../../base 3 | 4 | namespace: prod 5 | 6 | patches: 7 | - replicas.yaml 8 | 9 | configMapGenerator: 10 | - name: mykustom-map 11 | env: config.properties -------------------------------------------------------------------------------- /solution/overlays/prod/replicas.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: mywebapp 5 | spec: 6 | replicas: 5 --------------------------------------------------------------------------------