diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 92548c579023b71d377f0740f69fb5ec934d4caf..2afb9c980591a209194e53d776769a84143206f5 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,6 +5,7 @@ stages: variables: APP_VERSION: ${CI_COMMIT_REF_SLUG} + DOCKER_AUTH_CONFIG: "{\"auths\":{\"$DOCKER_REGISTRY\":{\"username\":\"$DOCKER_USER\",\"password\":\"$DOCKER_PASSWORD\"}}}" .test-template: image: python:3.9-buster @@ -14,7 +15,6 @@ variables: except: - tags before_script: - - echo "${DOCKER_REGISTRY}" - pip install poetry==1.1.6 - poetry config virtualenvs.create false - poetry install @@ -56,7 +56,9 @@ image-builder: - tags script: - mkdir -p /kaniko/.docker - - echo "{\"auths\":{\"$DOCKER_REGISTRY\":{\"username\":\"$DOCKER_USER\",\"password\":\"$DOCKER_PASSWORD\"}}}" > /kaniko/.docker/config.json + # Create authentication rule to publish image. + - echo "$DOCKER_AUTH_CONFIG" > /kaniko/.docker/config.json + # Build actual image. - /kaniko/executor --context . --dockerfile deploy/Dockerfile --destination "$IMAGE_NAME:$APP_VERSION" @@ -64,15 +66,26 @@ image-builder: deploy: stage: deploy - image: dtzar/helm-kubectl:3.6.3 + image: docker.le-memese.com/kubectl:1.22.0 tags: - kube only: - tags + environment: + name: production + kubernetes: + namespace: $NAMESPACE script: - - export KUBECONFIG=$KUBE_CONF + # Save all lenochka's variables in a file. - env | grep "^LENOCHKA_" > .deploy-env - - kubectl delete configmap --namespace "$NAMESPACE" "$ENVCONF" || true - - kubectl create configmap --namespace "$NAMESPACE" "$ENVCONF" --from-env-file=.deploy-env - - envsubst < "$HELM_VALUES" > deploy-values.yml - - helm upgrade lenocka deploy/charts/lenocka/ -f deploy-values.yml --namespace "$NAMESPACE" \ No newline at end of file + # Recreate envconfig for pod. + - kubectl delete configmap "$ENVCONF" || true + - kubectl create configmap "$ENVCONF" --from-env-file=.deploy-env + # Create secret for pulling images. + - echo "$DOCKER_AUTH_CONFIG" > .dockerauth.json + - kubectl delete secret "$PULL_SECRET" || true + - kubectl create secret generic "$PULL_SECRET" + --from-file=.dockerconfigjson=.dockerauth.json + --type=kubernetes.io/dockerconfigjson + # Substitute env variables and apply them in kubectl. + - find deploy/kube -name "*.yml" | xargs cat | envsubst | kubectl apply -f - diff --git a/deploy/charts/lenocka/.helmignore b/deploy/charts/lenocka/.helmignore deleted file mode 100644 index 0e8a0eb36f4ca2c939201c0d54b5d82a1ea34778..0000000000000000000000000000000000000000 --- a/deploy/charts/lenocka/.helmignore +++ /dev/null @@ -1,23 +0,0 @@ -# Patterns to ignore when building packages. -# This supports shell glob matching, relative path matching, and -# negation (prefixed with !). Only one pattern per line. -.DS_Store -# Common VCS dirs -.git/ -.gitignore -.bzr/ -.bzrignore -.hg/ -.hgignore -.svn/ -# Common backup files -*.swp -*.bak -*.tmp -*.orig -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ diff --git a/deploy/charts/lenocka/Chart.yaml b/deploy/charts/lenocka/Chart.yaml deleted file mode 100644 index e27ae98902dfc96a9a537dc27026d2af45faf99a..0000000000000000000000000000000000000000 --- a/deploy/charts/lenocka/Chart.yaml +++ /dev/null @@ -1,8 +0,0 @@ -apiVersion: v2 -name: lenocka -description: A Helm chart for Kubernetes - -type: application - -version: "0.1.0" -appVersion: "0.1.0" \ No newline at end of file diff --git a/deploy/charts/lenocka/templates/NOTES.txt b/deploy/charts/lenocka/templates/NOTES.txt deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/deploy/charts/lenocka/templates/_helpers.tpl b/deploy/charts/lenocka/templates/_helpers.tpl deleted file mode 100644 index ca3747e6bd289812e9774474c437aadf6af8b18f..0000000000000000000000000000000000000000 --- a/deploy/charts/lenocka/templates/_helpers.tpl +++ /dev/null @@ -1,62 +0,0 @@ -{{/* -Expand the name of the chart. -*/}} -{{- define "lenocka.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "lenocka.fullname" -}} -{{- if .Values.fullnameOverride }} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} -{{- else }} -{{- $name := default .Chart.Name .Values.nameOverride }} -{{- if contains $name .Release.Name }} -{{- .Release.Name | trunc 63 | trimSuffix "-" }} -{{- else }} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} -{{- end }} -{{- end }} -{{- end }} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "lenocka.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Common labels -*/}} -{{- define "lenocka.labels" -}} -helm.sh/chart: {{ include "lenocka.chart" . }} -{{ include "lenocka.selectorLabels" . }} -{{- if .Chart.AppVersion }} -app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end }} - -{{/* -Selector labels -*/}} -{{- define "lenocka.selectorLabels" -}} -app.kubernetes.io/name: {{ include "lenocka.name" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- end }} - -{{/* -Create the name of the service account to use -*/}} -{{- define "lenocka.serviceAccountName" -}} -{{- if .Values.serviceAccount.create }} -{{- default (include "lenocka.fullname" .) .Values.serviceAccount.name }} -{{- else }} -{{- default "default" .Values.serviceAccount.name }} -{{- end }} -{{- end }} diff --git a/deploy/charts/lenocka/templates/deployment.yaml b/deploy/charts/lenocka/templates/deployment.yaml deleted file mode 100644 index ab42ffd2af1a294ef7ed6c4bffadb5783618a834..0000000000000000000000000000000000000000 --- a/deploy/charts/lenocka/templates/deployment.yaml +++ /dev/null @@ -1,47 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "lenocka.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "lenocka.labels" . | nindent 4 }} -spec: - replicas: {{ .Values.replicaCount }} - selector: - matchLabels: - {{- include "lenocka.selectorLabels" . | nindent 6 }} - template: - metadata: - namespace: {{ .Release.Namespace }} - {{- with .Values.podAnnotations }} - annotations: - {{- toYaml . | nindent 8 }} - {{- end }} - labels: - {{- include "lenocka.selectorLabels" . | nindent 8 }} - spec: - {{- with .Values.imagePullSecrets }} - imagePullSecrets: - {{- toYaml . | nindent 8 }} - {{- end }} - containers: - - name: {{ .Chart.Name }} - image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" - imagePullPolicy: Always - envFrom: - - configMapRef: - name: {{ .Values.image.envConfig }} - resources: - {{- toYaml .Values.resources | nindent 12 }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.tolerations }} - tolerations: - {{- toYaml . | nindent 8 }} - {{- end }} diff --git a/deploy/charts/lenocka/values.yaml b/deploy/charts/lenocka/values.yaml deleted file mode 100644 index 4557ea839ea0dcab8da3d842f8972d1e8e511c58..0000000000000000000000000000000000000000 --- a/deploy/charts/lenocka/values.yaml +++ /dev/null @@ -1,11 +0,0 @@ -replicaCount: 1 - -image: - repository: repo - tag: tag - envConfig: config - -resources: - limits: - cpu: 100m - memory: 100Mi diff --git a/deploy/kube/deployment.yml b/deploy/kube/deployment.yml new file mode 100644 index 0000000000000000000000000000000000000000..bf6ed131c2332dcc70bc98241cd85802301a170d --- /dev/null +++ b/deploy/kube/deployment.yml @@ -0,0 +1,31 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: lenochka + annotations: + app.gitlab.com/env: $CI_ENVIRONMENT_SLUG + app.gitlab.com/app: $CI_PROJECT_PATH_SLUG +spec: + selector: + matchLabels: + app: lenochka-bot + template: + metadata: + annotations: + app.gitlab.com/env: $CI_ENVIRONMENT_SLUG + app.gitlab.com/app: $CI_PROJECT_PATH_SLUG + labels: + app: lenochka-bot + spec: + imagePullSecrets: + - name: "$PULL_SECRET" + containers: + - name: lenochka-bot + image: docker.le-memese.com/bots/lenochka-bot:$APP_VERSION + resources: + limits: + cpu: 10m + memory: 60Mi + envFrom: + - configMapRef: + name: "$ENVCONF"