Что нового
  • Что бы вступить в ряды "Принятый кодер" Вам нужно:
    Написать 10 полезных сообщений или тем и Получить 10 симпатий.
    Для того кто не хочет терять время,может пожертвовать средства для поддержки сервеса, и вступить в ряды VIP на месяц, дополнительная информация в лс.

  • Пользаватели которые будут спамить, уходят в бан без предупреждения. Спам сообщения определяется администрацией и модератором.

  • Гость, Что бы Вы хотели увидеть на нашем Форуме? Изложить свои идеи и пожелания по улучшению форума Вы можете поделиться с нами здесь. ----> Перейдите сюда
  • Все пользователи не прошедшие проверку электронной почты будут заблокированы. Все вопросы с разблокировкой обращайтесь по адресу электронной почте : info@guardianelinks.com . Не пришло сообщение о проверке или о сбросе также сообщите нам.

Deploying Kubernetes CronJobs with Helm and Google Cloud Build

Lomanu4

Команда форума
Администратор
Регистрация
1 Мар 2015
Сообщения
6,182
Баллы
155
Today we are going to learn how to deploy a kubernetes cron job with helm and Google Cloud Build. The idea could be sound complicated but really is simple.

Kubernetes cronjobs is a way to execute jobs in a specific time in a recurrent way. Imagine that for example you want to delete a bucket, get statistics, execute a script, or many other things. The idea is that Kubernetes will execute a job and with this job.

Helm as many of you know is a way to manage your Kubernetes applications defining, installing, and upgrading even the most complex Kubernetes application. Yes, I am reading the official web page. We are going to use helm to deploy our applications and in this case to deploy our cronjob

And the last one is Google Cloud Build. We have already talked about this tool in other articles and is the CI/CD solution that Google offers to be used in our pipelines. It is based on container images executed in a Virtual machine inside a work-pool.

Now to execute our exercise we need first an application. Because as you know at this point we are clever, we are not going to expend time in this point and we are going to copy a cronjob spec from kubernetes official page. Clever people.


apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: mkdevcron
spec:
schedule: "*/10 * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: mkdevcron
image: busybox
imagePullPolicy: IfNotPresent
command:
- /bin/sh
- -c
- date; echo Hello from the Kubernetes cluster
restartPolicy: OnFailure

We have our code if we execute in our Kubernetes cluster (GKE cluster)


kubectl apply -f cronjob.yaml

job is done, if we do


kubectl get cronjob

our lovely cron is there. Now let's add some variables in our yaml file to be used in our helm chart


apiVersion: batch/v1
kind: CronJob
metadata:
name: hello
spec:
schedule: {{ .Values.schedule }}
jobTemplate:
spec:
template:
spec:
containers:
- name: {{ .Chart.Name }}
image: {{ .Values.image.name }}
imagePullPolicy: IfNotPresent
command:
- /bin/sh
- -c
- date; echo Hello from the Kubernetes cluster
restartPolicy: OnFailure

And now a simple values.yaml


schedule: "*/10 * * * *"
image:
name: busybox

If install the helm chart with


helm install basiccronjob cronjob/ --values cronjob/values.yaml

we will have our cronjob installed. Again if we do


kubectl get cronjob

our cron is here. Now the last step, cloud build. To use cloud build we need a cloudbuild.yaml file.


steps:
- id: deploy.cronjob
name: 'gcr.io/mkdevyoutube/helm'
env:
- 'CLOUDSDK_COMPUTE_REGION=europe-west1'
- 'CLOUDSDK_CONTAINER_CLUSTER=mkdev'
- 'GCLOUD_PROJECT=mkdev'
args:
- 'install'
- 'basiccronjob'
- 'cronjob/'
- '--values'
- 'cronjob/values.yaml'

As you can see in this cloudbuild file there is an image called helm, but there is a problem, there is no official helm builder in google, crazy but it google, so we will need to create this builder. To do that we do


git clone

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.


cd cloud-builders-community/helm
GOOGLE_CLOUD_PROJECT=mkdev
GCR_HELM=gcr.io/$GOOGLE_CLOUD_PROJECT/helm
docker build -t $GCR_HELM .
docker push $GCR_HELM

and now the builder is there. Now next step is to create a trigger to be executed every time that we push our code. To do that we need to go to google cloud build and create a trigger.

Name, choose push to a branch as the event, we connect to our GitHub repository, choose our branch, and create. Now as soon as we push our code in our branch trigger will run and the cloud build will be executed. What we are going to have here is a step that we will install our cronjob in our cluster, but because we are clever we understand that this is only a simple example and we understand that we can do many many things here.

Here's the same article in video form for your convenience:

.


Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

 
Вверх