Skaffold ile Build Docker İmage & Kubernetes Deploy

H. Alperen Selcuk
3 min readJun 28, 2022

--

bu yazımda build ve deploy için kullanılan skaffold toolunu inceleyeceğim.

skaffold gerçekten tek bir yaml file ile size build ve deploy işlemini yapmanızı sağlar. google tarafından hayatımıza kazandırılmış bu toolun kullanımı gayet basit. bütün build ve deployment dosyalarınızı yani source code, Dockerfile ve kubernetes manifestleri bir dosya içinde tutuyorsunuz.

dev ortamı için bir deneme yapalım ne kadar basit olduğunu göreceksiniz.

skaffold install

öncelikle skaffold CLI indirmeniz gerekiyor.

kubernetes-cluster

kubernetes için KinD kullanacağım. kind ile ilgili yazıya linkedin sayfamdan ulaşabilirsiniz.

basit bir şekilde docker container üzerinde kubernetes cluster oluşturabiliyorsunuz. basit bir demo yapacağımız için ben tek bir nodelu cluster yarattım.

demo pre-req

öncelikle basit bir Dockerfile kullanacağız.

FROM nginx
COPY index.html /usr/share/nginx/html/
WORKDIR /usr/share/nginx/html
EXPOSE 8080
CMD [ "/bin/bash", "-c", "nginx -g 'daemon off;'" ]

index.html içinde de basit bir string koyalım.

Hello world - Test Page 1

kubernetes deployment ve service manifest yazalım.

apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-world
spec:
selector:
matchLabels:
app: hello-world
template:
metadata:
labels:
app: hello-world
spec:
containers:
- name: hello-world
image: nginx-skaffold
apiVersion: v1
kind: Service
metadata:
name: hello-world
spec:
selector:
app: hello-world
ports:
- port: 8080
protocol: TCP
targetPort: 8080
type: NodePort

daha sonra bütün işlemi yapacak olan basit bir skaffold dosyamız olacak. yaml formatında yazacağız ve dosyalarımızın olduğu dizinde olacak.

skaffold.yaml

apiVersion: skaffold/v1alpha2
kind: Config
build:
artifacts:
- imageName: nginx-skaffold
workspace: .
local: {}
deploy:
kubectl:
manifests:
- kubernetes-*

burada ilk build adımı imagename olarak docker build yapacak. local bir kubernetes olacağı için push işlemini atlayacak. eğer local olmasaydı image i repoya pushlayacaktı.

daha detaylı yaml file lar için sitesiniz ziyaret edebilirsiniz.

skaffold run

skaffold u çalıştırmak için basit bir komut kullanıyoruz. “skaffold run”

çok basit bir şekilde build ve deploy yaptık. tek bir yaml file ile bu şekilde bir deployment yapmak gerçekten kullanım açısından çok efektif.

image tag

skaffold build alırken size image taglemek için bazı opsiyonlar sunar.

  • the gitCommit tagger uses git commits/references.
build:
tagPolicy:
gitCommit: {}
artifacts:
- image: gcr.io/k8s-skaffold/example
  • the inputDigest tagger uses a digest of the artifact source files.
build:
tagPolicy:
inputDigest: {}
artifacts:
- image: gcr.io/k8s-skaffold/example
  • the datetime tagger uses current date and time, with a configurable pattern.
build:
tagPolicy:
dateTime: {}
artifacts:
- image: gcr.io/k8s-skaffold/example

eğer bunları kullanmazsanız latest adında bir image tag atar.

sonuç

basit bir development ci/cd si kurabilirsiniz ve basitçe karmaşık pipelinelar olmadan geliştirmelerinizi yapabilirsiniz.

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

No responses yet

Write a response