Welcome to mirror list, hosted at ThFree Co, Russian Federation.

Helm-2to3.gitlab-ci.yml « Jobs « templates « ci « gitlab « lib - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 1ec1aa60d88644a8321f37faf0a371903a2fb2d7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
# This is a pre-release of a Helm 2to3 migration template to facilitate
# the migration of Auto DevOps releases to Helm 3.
#
# To use, set the CI variable MIGRATE_HELM_2TO3 to "true".
# For more details, go to https://docs.gitlab.com/ee/topics/autodevops/upgrading_auto_deploy_dependencies.html#helm-v3

.helm-2to3-migrate:
  image: registry.gitlab.com/gitlab-org/cluster-integration/helm-install-image/releases/helm-2to3-2.17.0-3.5.3-kube-1.16.15-alpine-3.12
  # NOTE: We use the deploy stage because:
  #   - It exists in all versions of Auto DevOps.
  #   - It is _empty_.
  #   - It precedes any Kubernetes deployments.
  # Users on older versions of GitLab can include this template without adjusting their stages.
  stage: deploy
  needs: []
  artifacts:
    when: always
    expire_in: 1 week
    paths:
      - helm-2-release-backups/
  before_script:
    - mkdir helm-2-release-backups
    - apk add jq
    - export TILLER_NAMESPACE=$KUBE_NAMESPACE
    - export HELM_HOST="localhost:44134"
    - nohup tiller -listen "${HELM_HOST}" >tiller.log 2>&1 &
    - helm2 init --client-only
  script:
    # check for releases
    - releases=$(helm2 ls --output json | jq -r '.Releases[].Name')
    # back up entire namespace if the user opts into it
    - |
      if [[ -n "$releases" && -n "$BACKUP_HELM2_RELEASES" ]]; then
        echo "Backing up releases"
        kubectl get configmap -n "$KUBE_NAMESPACE" -l "OWNER=TILLER" -o yaml > "helm-2-release-backups/$KUBE_NAMESPACE.yaml"
      fi
    # adopt manifests from each release
    - |
      for release in $releases; do
        chart=$(helm2 ls "^$release\$" --output json | jq -r '.Releases[0].Chart')
        echo "Adopting Helm v2 manifests from $release"
        # some resource kinds must be listed explicitly https://github.com/kubernetes/kubernetes/issues/42885
        for name in $(kubectl -n "$KUBE_NAMESPACE" get all,ingress,daemonset -o name -l chart="$chart"); do
          kubectl annotate -n "$KUBE_NAMESPACE" --overwrite "$name" meta.helm.sh/release-name="$release"
          kubectl annotate -n "$KUBE_NAMESPACE" --overwrite "$name" meta.helm.sh/release-namespace="$KUBE_NAMESPACE"
          kubectl label -n "$KUBE_NAMESPACE" --overwrite "$name" app.kubernetes.io/managed-by=Helm
        done
      done
    # migrate each release
    - |
      for release in $releases; do
        echo "Migrating release: $release"
        helm3 2to3 convert --ignore-already-migrated --release-storage configmaps --tiller-out-cluster --tiller-ns "$TILLER_NAMESPACE" "$release"
      done

.helm-2to3-cleanup:
  image: registry.gitlab.com/gitlab-org/cluster-integration/helm-install-image/releases/helm-2to3-2.17.0-3.5.3-kube-1.16.15-alpine-3.12
  stage: cleanup
  environment:
    action: prepare
  before_script:
    - export TILLER_NAMESPACE=$KUBE_NAMESPACE
    - export HELM_HOST="localhost:44134"
    - nohup tiller -listen "${HELM_HOST}" >tiller.log 2>&1 &
    - helm2 init --client-only
  script:
    - helm3 2to3 cleanup --skip-confirmation --release-storage configmaps --tiller-out-cluster --tiller-ns "$TILLER_NAMESPACE"

.review:
  environment:
    name: review/$CI_COMMIT_REF_NAME
  rules:
    - if: '$MIGRATE_HELM_2TO3 != "true"'
      when: never
    - if: '$CI_KUBERNETES_ACTIVE == null || $CI_KUBERNETES_ACTIVE == ""'
      when: never
    - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
      when: never
    - if: '$REVIEW_DISABLED'
      when: never
    - if: '$CI_COMMIT_TAG || $CI_COMMIT_BRANCH'
      when: manual

review:helm-2to3:migrate:
  extends: [.review, .helm-2to3-migrate]

review:helm-2to3:cleanup:
  extends: [.review, .helm-2to3-cleanup]
  rules:
    - if: '$MIGRATE_HELM_2TO3 != "true" && $CLEANUP_HELM_2TO3 == null'
      when: never
    - if: '$CI_KUBERNETES_ACTIVE == null || $CI_KUBERNETES_ACTIVE == ""'
      when: never
    - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
      when: never
    - if: '$REVIEW_DISABLED'
      when: never
    - if: '$CI_COMMIT_TAG || $CI_COMMIT_BRANCH'
      when: manual

.staging:
  environment:
    name: staging
  rules:
    - if: '$MIGRATE_HELM_2TO3 != "true"'
      when: never
    - if: '$CI_KUBERNETES_ACTIVE == null || $CI_KUBERNETES_ACTIVE == ""'
      when: never
    - if: '$CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH'
      when: never
    - if: '$STAGING_ENABLED'
      when: manual

staging:helm-2to3:migrate:
  extends: [.staging, .helm-2to3-migrate]

staging:helm-2to3:cleanup:
  extends: [.staging, .helm-2to3-cleanup]
  rules:
    - if: '$MIGRATE_HELM_2TO3 != "true" && $CLEANUP_HELM_2TO3 == null'
      when: never
    - if: '$CI_KUBERNETES_ACTIVE == null || $CI_KUBERNETES_ACTIVE == ""'
      when: never
    - if: '$CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH'
      when: never
    - if: '$STAGING_ENABLED'
      when: manual

.production:
  environment:
    name: production
  rules:
    - if: '$MIGRATE_HELM_2TO3 != "true"'
      when: never
    - if: '$CI_KUBERNETES_ACTIVE == null || $CI_KUBERNETES_ACTIVE == ""'
      when: never
    - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
      when: manual

production:helm-2to3:migrate:
  extends: [.production, .helm-2to3-migrate]

production:helm-2to3:cleanup:
  extends: [.production, .helm-2to3-cleanup]
  rules:
    - if: '$MIGRATE_HELM_2TO3 != "true" && $CLEANUP_HELM_2TO3 == null'
      when: never
    - if: '$CI_KUBERNETES_ACTIVE == null || $CI_KUBERNETES_ACTIVE == ""'
      when: never
    - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
      when: manual