Skip to main content

The Role of HELM and Spinnaker

Question: This is a Q&A pulled from the Spinnaker Community Slack team, which we encourage you to join here. Thank you for helping me understand the roles of Helm and Spinnaker. As you might have guessed, I am very new to Helm. Currently, we are running our services in Docker Swarm and we’re doing a POC on Kubernetes + Spinnaker + Helm. Each of our service GitHub repo has a Dockerfile which has CMDs and RUNs tasks, how can I translate those in HELM Charts ? Example: FROM nginx

COPY build /usr/share/nginx/html COPY entrypoint.sh / COPY nginx-default.conf /etc/nginx/conf.d/default.conf

RUN apt-get update && apt-get install -y curl

HEALTHCHECK --interval=30s --timeout=5s
CMD curl -fkL http://localhost:8080/health || exit 1

RUN chmod +x /entrypoint.sh ENTRYPOINT ["/entrypoint.sh"] CMD ["nginx", "-g", "daemon off;"] EXPOSE 80 EXPOSE 443 How and where can I write this in HELM Charts?

Answer: You may be getting the role of the Dockerfile and the Helm chart confused. Your Dockerfile is supposed to define the way you application runs and the environment required for it to run. When built, the Dockerfile produces a Docker image which is then run on Kubernetes. A Helm chart defines all of the Kubernetes resources needed to run your application. For example, a Deployment is used to take your Docker image, run it (w/ multiple replicas) and make sure it stays available. You would then use a Helm chart to template this Deployment so that it makes it easier to deploy the same thing across multiple environments. We made a video explaining how it all fits together