CI/CD - drone k8s deploy

Drone jest fajnym i lekkim toolem do Continuous Integration i Continuous Delivery/Deployment. Jak przy jego po mocy zdeployować coś do clustra k8s?
Z pomocą przychodzi projekt dostępny na GitHub'ie.

Przygotowanie

Stwórzmy pipeline, który utworzy nam testowy deployment gotowy do dalszej pracy:

# drone 1.0 syntax
kind: pipeline
name: deploy

steps:
  - name: deploy
    image: sinlead/drone-kubectl
    settings:
      kubernetes_server:
        from_secret: k8s_server
      kubernetes_cert:
        from_secret: k8s_cert
      kubernetes_token:
        from_secret: k8s_token
    commands:
      - kubectl create namespace deploy-test

Kiedy mamy już przygotowany pipeline, to musimy dodać dla danego projektu w Drone odpowiednie secrets'y:

Secret'y możną wyciągnąć z clustra za pomocą komend:

kubectl get secret
NAME                                TYPE                                  DATA   AGE
default-token-lcknp                 kubernetes.io/service-account-token   3      10d
...

kubectl config view -o jsonpath='{range .clusters[*]}{.name}{"\t"}{.cluster.server}{"\n"}{end}'
kubectl get secret default-token-lcknp -o jsonpath='{.data.token}' | base64 --decode && echo
kubectl get secret default-token-lcknp -o jsonpath='{.data.ca\.crt}' && echo

Jeżeli wszystko poszło dobrze po odpaleniu pipelina w logach consoli powinniśmy zobaczyć nowo utworzony namespace, który jest gotowy do dalszych prac:

Działamy tutaj na uprawnieniach cluster-admin i oczywiście w celach labowych nie ma w tym nic złego. Do nadawani odpowiednich uprawnień w clustrze polecam zapoznać się z rozwiązaniem permission-manager.

Linki

Drone,
Permission-manager.

michal

Read more posts by this author.

/dev/null