I have node.js application that I need to deploy to exising kubernetes cluster.
The cluster is setup using
kops on AWS.
I have created
.gitlab-ci.yml file for building docker images.
So, whenever a change is pushed to either
develop branch. It will build the docker image.
Now, I have to deploy it to exisitng kubernetes cluster. I have already followed steps mentioned here to add existing cluster.
For now, I am using shared runner.
How can I integrate kubernetes deployment after image is built with gitlab ci/cd to deploy on aws (cluster is created with kops)?
For registry I am using gitlab's container registry not docker hub.
I have tried below
stages: - docker-build - deploy docker-build-master: image: docker:latest stage: docker-build services: - docker:dind before_script: - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY script: - docker build --pull -t "$CI_REGISTRY_IMAGE:prod" . - docker push "$CI_REGISTRY_IMAGE:prod" only: - master deploy-prod: stage: deploy image: roffe/kubectl script: - kubectl apply -f scheduler-deployment.yaml only: - master docker-build-dev: image: docker:latest stage: docker-build services: - docker:dind before_script: - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY script: - docker build --pull -t "$CI_REGISTRY_IMAGE:dev" . - docker push "$CI_REGISTRY_IMAGE:dev" only: - develop
I am getting below error.
Executing "step_script" stage of the job script 00:01 Using docker image sha256:c8d24d490701efec4c8d544978b3e4ecc4855475a221b002a8f9e5e473398805 for roffe/kubectl with digest roffe/kubectl@sha256:ba13f8ffc55c83a7ca98a6e1337689fad8a5df418cb160fa1a741c80f42979bf ... $ kubectl apply -f scheduler-deployment.yaml error: unable to recognize "scheduler-deployment.yaml": Get http://localhost:8080/api?timeout=32s: dial tcp [::1]:8080: connect: connection refused Cleaning up file based variables 00:00 ERROR: Job failed: exit code 1
scheduler-deployment.yaml is a valid yaml file and it works when I apply manually.
Below is the
apiVersion: apps/v1 kind: Deployment metadata: name: sheduler-deployment spec: replicas: 2 selector: matchLabels: app: scheduler template: metadata: labels: app: scheduler spec: containers: - name: scheduler image: registry.gitlab.com/user/schedulingapis:dev env: - name: REDIS_HOST value: "redis://redis-master " - name: RABBITMQ_HOST value: "amqp://rabbitmq" imagePullSecrets: - name: registry-credentials
If someone has any better idea to automate deployment to a k8s cluster with gitlab.
Pease do suggest. Any link or reference will also work.