Puppet Class: kubeinstall::install::argocd

Defined in:
manifests/install/argocd.pp

Summary

Install Argo CD

Overview

Examples:

include kubeinstall::install::argocd

Parameters:

  • version (String) (defaults to: $kubeinstall::argocd_version)
  • namespace (String) (defaults to: 'argocd')
  • ha (Boolean) (defaults to: false)
  • expose (Boolean) (defaults to: false)
  • service_name (Kubeinstall::DNSName) (defaults to: 'argocd-server')
  • service_port (Kubeinstall::Port) (defaults to: 30200)


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
# File 'manifests/install/argocd.pp', line 8

class kubeinstall::install::argocd (
  String  $version      = $kubeinstall::argocd_version,
  String  $namespace    = 'argocd',
  Boolean $ha           = false,
  Boolean $expose       = false,
  Kubeinstall::DNSName
          $service_name = 'argocd-server',
  Kubeinstall::Port
          $service_port = 30200,
)
{
  # ArgoCD namespace
  kubeinstall::resource::ns { $namespace: }

  if $ha {
    # https://argoproj.github.io/argo-cd/operator-manual/high_availability/
    $install_manifest = "https://raw.githubusercontent.com/argoproj/argo-cd/${version}/manifests/ha/install.yaml"
  }
  else {
    $install_manifest = "https://raw.githubusercontent.com/argoproj/argo-cd/${version}/manifests/install.yaml"
  }

  exec { 'argocd-install':
    command     => "kubectl apply -n ${namespace} -f ${install_manifest}",
    path        => '/usr/bin:/bin:/usr/sbin:/sbin',
    environment => [
      'KUBECONFIG=/etc/kubernetes/admin.conf',
    ],
    unless      => "kubectl get -n ${namespace} service/argocd-repo-server",
    require     => Kubeinstall::Resource::Ns[$namespace],
  }

  if $expose {
    kubeinstall::resource::svc { $service_name:
      namespace => $namespace,
      metadata  => {
        labels => {
          'app.kubernetes.io/component' => 'server',
          'app.kubernetes.io/name'      => $service_name,
          'app.kubernetes.io/part-of'   => 'argocd',
        }
      },
      type      => 'NodePort',
      ports     => [
        {
          name       => 'https',
          port       => 443,
          protocol   => 'TCP',
          nodePort   => $service_port,
          targetPort => 8080
        }
      ],
      selector  => {
        'app.kubernetes.io/name' => 'argocd-server',
      },
      apply     => true,
      require   => Exec['argocd-install'],
    }
  }
}