76 lines
1.3 KiB
Markdown
76 lines
1.3 KiB
Markdown
# Kubernetes Workflows Advanced
|
|
|
|
## CI/CD Pipeline
|
|
```yaml
|
|
# GitHub Actions
|
|
name: Build and Deploy
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- run: docker build . -t $REGISTRY/$IMAGE:${{ github.sha }}
|
|
- run: docker push $REGISTRY/$IMAGE:${{ github.sha }}
|
|
|
|
deploy:
|
|
needs: build
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
repository: myorg/gitops-repo
|
|
token: ${{ secrets.GITOPS_TOKEN }}
|
|
- run: |
|
|
sed -i 's|image:.*|image: $REGISTRY/$IMAGE:${{ github.sha }}|' k8s/deployment.yaml
|
|
git commit -am "Update image" && git push
|
|
```
|
|
|
|
## Kustomize
|
|
|
|
```
|
|
kustomize/
|
|
├── base/
|
|
│ ├── kustomization.yaml
|
|
│ └── deployment.yaml
|
|
└── overlays/
|
|
└── prod/
|
|
└── kustomization.yaml
|
|
```
|
|
|
|
### Base
|
|
```yaml
|
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
|
kind: Kustomization
|
|
resources:
|
|
- deployment.yaml
|
|
commonLabels:
|
|
app: myapp
|
|
```
|
|
|
|
### Prod Overlay
|
|
```yaml
|
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
|
kind: Kustomization
|
|
bases:
|
|
- ../../base
|
|
replicas:
|
|
- name: myapp
|
|
count: 5
|
|
```
|
|
|
|
```bash
|
|
kubectl apply -k overlays/prod/
|
|
```
|
|
|
|
## Flux CD
|
|
```bash
|
|
flux bootstrap github \
|
|
--owner=myorg \
|
|
--repository=fleet-infra \
|
|
--branch=main \
|
|
--path=clusters/my-cluster
|
|
```
|