Skip to content

Commit

Permalink
Added ArgoCD kubernetes-app
Browse files Browse the repository at this point in the history
  • Loading branch information
atorrescogollo committed Oct 13, 2021
1 parent cee481f commit 80efb05
Show file tree
Hide file tree
Showing 6 changed files with 110 additions and 0 deletions.
13 changes: 13 additions & 0 deletions inventory/sample/group_vars/k8s_cluster/addons.yml
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,19 @@ metallb_speaker_enabled: true
# peer_asn: 64513
# my_asn: 4200000000


argocd_enabled: false
# argocd_version: v2.1.0
# argocd_namespace: argocd
# Default password:
# - https://argoproj.github.io/argo-cd/getting_started/#4-login-using-the-cli
# ---
# The initial password is autogenerated to be the pod name of the Argo CD API server. This can be retrieved with the command:
# kubectl get pods -n argocd -l app.kubernetes.io/name=argocd-server -o name | cut -d'/' -f 2
# ---
# Use the following var to set admin password
# argocd_admin_password: "password"

# The plugin manager for kubectl
krew_enabled: false
krew_root_dir: "/usr/local/krew"
5 changes: 5 additions & 0 deletions roles/kubernetes-apps/argocd/defaults/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
argocd_enabled: false
argocd_version: v2.1.0
argocd_namespace: argocd
# argocd_admin_password:
77 changes: 77 additions & 0 deletions roles/kubernetes-apps/argocd/tasks/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
---
- name: Kubernetes Apps | Install yq
become: yes
get_url:
url: "https://github.com/mikefarah/yq/releases/download/v4.11.2/yq_linux_amd64"
dest: "{{ bin_dir }}/yq"
mode: '0755'

- name: Kubernetes Apps | Set ArgoCD template list
set_fact:
argocd_templates:
- name: namespace
file: argocd-namespace.yml
- name: install
file: argocd-install.yml
namespace: "{{ argocd_namespace }}"
url: "https://raw.githubusercontent.com/argoproj/argo-cd/{{argocd_version}}/manifests/install.yaml"
when:
- "inventory_hostname == groups['kube_control_plane'][0]"

- name: Kubernetes Apps | Download ArgoCD remote manifests
become: yes
get_url:
url: "{{ item.url }}"
dest: "{{ kube_config_dir }}/{{ item.file }}"
with_items: "{{ argocd_templates | selectattr('url', 'defined') | list }}"
loop_control:
label: "{{ item.file }}"
when:
- "inventory_hostname == groups['kube_control_plane'][0]"

- name: Kubernetes Apps | Set ArgoCD namespace for remote manifests
become: yes
command: |
{{ bin_dir }}/yq eval-all -i '.metadata.namespace="{{argocd_namespace}}"' {{ kube_config_dir }}/{{ item.file }}
with_items: "{{ argocd_templates | selectattr('url', 'defined') | list }}"
loop_control:
label: "{{ item.file }}"
when:
- "inventory_hostname == groups['kube_control_plane'][0]"

- name: Kubernetes Apps | Create ArgoCD manifests from templates
become: yes
template:
src: "{{ item.file }}.j2"
dest: "{{ kube_config_dir }}/{{ item.file }}"
with_items: "{{ argocd_templates | selectattr('url', 'undefined') | list }}"
loop_control:
label: "{{ item.file }}"
when:
- "inventory_hostname == groups['kube_control_plane'][0]"

- name: Kubernetes Apps | Install ArgoCD
become: yes
kube:
name: ArgoCD
kubectl: "{{ bin_dir }}/kubectl"
filename: "{{ kube_config_dir }}/{{ item.file }}"
state: latest
with_items: "{{ argocd_templates }}"
when:
- "inventory_hostname == groups['kube_control_plane'][0]"

# https://github.com/argoproj/argo-cd/blob/master/docs/faq.md#i-forgot-the-admin-password-how-do-i-reset-it
- name: Kubernetes Apps | Set ArgoCD custom admin password
become: yes
shell: |
{{ bin_dir }}/kubectl --kubeconfig /etc/kubernetes/admin.conf -n {{argocd_namespace}} patch secret argocd-secret -p \
'{
"stringData": {
"admin.password": "{{argocd_admin_password|password_hash('bcrypt')}}",
"admin.passwordMtime": "'$(date +%FT%T%Z)'"
}
}'
when:
- argocd_admin_password is defined
- "inventory_hostname == groups['kube_control_plane'][0]"
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
apiVersion: v1
kind: Namespace
metadata:
name: {{argocd_namespace}}
labels:
app: argocd
7 changes: 7 additions & 0 deletions roles/kubernetes-apps/meta/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -110,3 +110,10 @@ dependencies:
- inventory_hostname == groups['kube_control_plane'][0]
tags:
- metallb

- role: kubernetes-apps/argocd
when:
- argocd_enabled
- inventory_hostname == groups['kube_control_plane'][0]
tags:
- argocd
1 change: 1 addition & 0 deletions roles/kubespray-defaults/defaults/main.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -378,6 +378,7 @@ ingress_alb_enabled: false
cert_manager_enabled: false
expand_persistent_volumes: false
metallb_enabled: false
argocd_enabled: false

# containerd official CLI tool
nerdctl_enabled: false
Expand Down

0 comments on commit 80efb05

Please sign in to comment.