DevOps Pokročilý
Kaniko — Docker Build bez Dockeru¶
KanikoDockerKubernetesCI/CD 5 min čtení
Kaniko umožňuje buildovat Docker obrazy v Kubernetes bez Docker daemonu. Bezpečné CI/CD v kontejnerech.
Proč Kaniko¶
Docker-in-Docker vyžaduje privilegovaný režim — bezpečnostní riziko. Kaniko builduje image v userspace bez daemonu.
- Žádný Docker daemon
- Žádný privilegovaný režim
- Běží jako běžný kontejner v K8s
- Kompatibilní s většinou Dockerfile instrukcí
Kubernetes Job¶
apiVersion: batch/v1
kind: Job
metadata:
name: kaniko-build
spec:
template:
spec:
containers:
- name: kaniko
image: gcr.io/kaniko-project/executor:latest
args:
- --dockerfile=Dockerfile
- --context=git://github.com/org/app.git#refs/heads/main
- --destination=registry.example.com/app:v1.2.3
- --cache=true
- --cache-repo=registry.example.com/app/cache
volumeMounts:
- name: docker-config
mountPath: /kaniko/.docker
volumes:
- name: docker-config
secret:
secretName: regcred
items:
- key: .dockerconfigjson
path: config.json
restartPolicy: Never
GitLab CI Integrace¶
build:
stage: build
image:
name: gcr.io/kaniko-project/executor:debug
entrypoint: [""]
script:
- |
/kaniko/executor \
--context $CI_PROJECT_DIR \
--dockerfile $CI_PROJECT_DIR/Dockerfile \
--destination $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG \
--cache=true
Shrnutí¶
Kaniko je bezpečná alternativa k Docker-in-Docker pro CI/CD v Kubernetes. Žádný privilegovaný režim, žádný daemon.
Potřebujete pomoct s implementací?¶
Náš tým má zkušenosti s návrhem a implementací moderních architektur. Rádi vám pomůžeme.