83 changed files with 32 additions and 2058 deletions
			
			
		| @ -1,23 +0,0 @@ | |||
| apiVersion: v2 | |||
| name: applications | |||
| description: Applications | |||
| 
 | |||
| # A chart can be either an 'application' or a 'library' chart. | |||
| # | |||
| # Application charts are a collection of templates that can be packaged into versioned archives | |||
| # to be deployed. | |||
| # | |||
| # Library charts provide useful utilities or functions for the chart developer. They're included as | |||
| # a dependency of application charts to inject those utilities and functions into the rendering | |||
| # pipeline. Library charts do not define any templates and therefore cannot be deployed. | |||
| type: application | |||
| 
 | |||
| # This is the chart version. This version number should be incremented each time you make changes | |||
| # to the chart and its templates, including the app version. | |||
| # Versions are expected to follow Semantic Versioning (https://semver.org/) | |||
| version: 0.1.0 | |||
| 
 | |||
| # This is the version number of the application being deployed. This version number should be | |||
| # incremented each time you make changes to the application. Versions are not expected to | |||
| # follow Semantic Versioning. They should reflect the version the application is using. | |||
| appVersion: "1.0" | |||
| @ -1,16 +0,0 @@ | |||
| apiVersion: argoproj.io/v1alpha1 | |||
| kind: Application | |||
| metadata: | |||
|   name: helm-guestbook | |||
|   namespace: argocd | |||
|   finalizers: | |||
|   - resources-finalizer.argocd.argoproj.io | |||
| spec: | |||
|   destination: | |||
|     namespace: helm-guestbook | |||
|     server: {{ .Values.spec.destination.server }} | |||
|   project: default | |||
|   source: | |||
|     path: helm-guestbook | |||
|     repoURL: {{ .Values.spec.source.repoURL }} | |||
|     targetRevision: {{ .Values.spec.source.targetRevision }} | |||
| @ -1,17 +0,0 @@ | |||
| apiVersion: argoproj.io/v1alpha1 | |||
| kind: Application | |||
| metadata: | |||
|   name: helm-hooks | |||
|   namespace: argocd | |||
|   finalizers: | |||
|   - resources-finalizer.argocd.argoproj.io | |||
| spec: | |||
|   destination: | |||
|     namespace: helm-hooks | |||
|     server: {{ .Values.spec.destination.server }} | |||
|   project: default | |||
|   source: | |||
|     path: helm-hooks | |||
|     repoURL: {{ .Values.spec.source.repoURL }} | |||
|     targetRevision: {{ .Values.spec.source.targetRevision }} | |||
| 
 | |||
| @ -1,16 +0,0 @@ | |||
| apiVersion: argoproj.io/v1alpha1 | |||
| kind: Application | |||
| metadata: | |||
|   name: kustomize-guestbook | |||
|   namespace: argocd | |||
|   finalizers: | |||
|   - resources-finalizer.argocd.argoproj.io | |||
| spec: | |||
|   destination: | |||
|     namespace: kustomize-guestbook | |||
|     server: {{ .Values.spec.destination.server }} | |||
|   project: default | |||
|   source: | |||
|     path: kustomize-guestbook | |||
|     repoURL: {{ .Values.spec.source.repoURL }} | |||
|     targetRevision: {{ .Values.spec.source.targetRevision }} | |||
| @ -1,27 +0,0 @@ | |||
| apiVersion: v1 | |||
| kind: Namespace | |||
| metadata: | |||
|   name: helm-guestbook | |||
|   annotations: | |||
|     argocd.argoproj.io/sync-wave: "-1" | |||
| --- | |||
| apiVersion: v1 | |||
| kind: Namespace | |||
| metadata: | |||
|   name: helm-hooks | |||
|   annotations: | |||
|     argocd.argoproj.io/sync-wave: "-1" | |||
| --- | |||
| apiVersion: v1 | |||
| kind: Namespace | |||
| metadata: | |||
|   name: kustomize-guestbook | |||
|   annotations: | |||
|     argocd.argoproj.io/sync-wave: "-1" | |||
| --- | |||
| apiVersion: v1 | |||
| kind: Namespace | |||
| metadata: | |||
|   name: sync-waves | |||
|   annotations: | |||
|     argocd.argoproj.io/sync-wave: "-1" | |||
| @ -1,16 +0,0 @@ | |||
| apiVersion: argoproj.io/v1alpha1 | |||
| kind: Application | |||
| metadata: | |||
|   name: sync-waves | |||
|   namespace: argocd | |||
|   finalizers: | |||
|   - resources-finalizer.argocd.argoproj.io | |||
| spec: | |||
|   destination: | |||
|     namespace: sync-waves | |||
|     server: {{ .Values.spec.destination.server }} | |||
|   project: default | |||
|   source: | |||
|     path: sync-waves | |||
|     repoURL: {{ .Values.spec.source.repoURL }} | |||
|     targetRevision: {{ .Values.spec.source.targetRevision }} | |||
| @ -1,6 +0,0 @@ | |||
| spec: | |||
|   destination: | |||
|     server: https://kubernetes.default.svc | |||
|   source: | |||
|     repoURL: https://github.com/argoproj/argocd-example-apps | |||
|     targetRevision: HEAD | |||
| @ -1,21 +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 | |||
| *~ | |||
| # Various IDEs | |||
| .project | |||
| .idea/ | |||
| *.tmproj | |||
| @ -1,23 +0,0 @@ | |||
| apiVersion: v2 | |||
| name: helm-guestbook | |||
| description: A Helm chart for Kubernetes | |||
| 
 | |||
| # A chart can be either an 'application' or a 'library' chart. | |||
| # | |||
| # Application charts are a collection of templates that can be packaged into versioned archives | |||
| # to be deployed. | |||
| # | |||
| # Library charts provide useful utilities or functions for the chart developer. They're included as | |||
| # a dependency of application charts to inject those utilities and functions into the rendering | |||
| # pipeline. Library charts do not define any templates and therefore cannot be deployed. | |||
| type: application | |||
| 
 | |||
| # This is the chart version. This version number should be incremented each time you make changes | |||
| # to the chart and its templates, including the app version. | |||
| # Versions are expected to follow Semantic Versioning (https://semver.org/) | |||
| version: 0.1.0 | |||
| 
 | |||
| # This is the version number of the application being deployed. This version number should be | |||
| # incremented each time you make changes to the application. Versions are not expected to | |||
| # follow Semantic Versioning. They should reflect the version the application is using. | |||
| appVersion: "1.0" | |||
| @ -1,30 +0,0 @@ | |||
| # Blue Green | |||
| 
 | |||
| The blue green strategy is not supported by built-in Kubernetes Deployment but available via third-party Kubernetes controller. | |||
| This example demonstrates how to implement blue-green deployment via [Argo Rollouts](https://github.com/argoproj/argo-rollouts): | |||
| 
 | |||
| 1. Install Argo Rollouts controller: https://github.com/argoproj/argo-rollouts#installation | |||
| 2. Create a sample application and sync it. | |||
| 
 | |||
| ``` | |||
| argocd app create --name blue-green --repo https://github.com/argoproj/argocd-example-apps --dest-server https://kubernetes.default.svc --dest-namespace default --path blue-green && argocd app sync blue-green | |||
| ``` | |||
| 
 | |||
| Once the application is synced you can access it using `blue-green-helm-guestbook` service. | |||
| 
 | |||
| 3. Change image version parameter to trigger blue-green deployment process: | |||
| 
 | |||
| ``` | |||
| argocd app set blue-green -p image.tag=0.2 && argocd app sync blue-green | |||
| ``` | |||
| 
 | |||
| Now application runs `ks-guestbook-demo:0.1` and `ks-guestbook-demo:0.2` images simultaneously. | |||
| The `ks-guestbook-demo:0.2` is still considered `blue` available only via preview service `blue-green-helm-guestbook-preview`. | |||
| 
 | |||
| 4. Promote `ks-guestbook-demo:0.2` to `green` by patching `Rollout` resource: | |||
| 
 | |||
| ``` | |||
| argocd app patch-resource blue-green --kind Rollout --resource-name blue-green-helm-guestbook --patch '{ "status": { "verifyingPreview": false } }' --patch-type 'application/merge-patch+json' | |||
| ``` | |||
| 
 | |||
| This promotes `ks-guestbook-demo:0.2` to `green` status and `Rollout` deletes old replica which runs `ks-guestbook-demo:0.1`. | |||
| @ -1,19 +0,0 @@ | |||
| 1. Get the application URL by running these commands: | |||
| {{- if .Values.ingress.enabled }} | |||
| {{- range .Values.ingress.hosts }} | |||
|   http{{ if $.Values.ingress.tls }}s{{ end }}://{{ . }}{{ $.Values.ingress.path }} | |||
| {{- end }} | |||
| {{- else if contains "NodePort" .Values.service.type }} | |||
|   export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ template "helm-guestbook.fullname" . }}) | |||
|   export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") | |||
|   echo http://$NODE_IP:$NODE_PORT | |||
| {{- else if contains "LoadBalancer" .Values.service.type }} | |||
|      NOTE: It may take a few minutes for the LoadBalancer IP to be available. | |||
|            You can watch the status of by running 'kubectl get svc -w {{ template "helm-guestbook.fullname" . }}' | |||
|   export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "helm-guestbook.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}') | |||
|   echo http://$SERVICE_IP:{{ .Values.service.port }} | |||
| {{- else if contains "ClusterIP" .Values.service.type }} | |||
|   export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app={{ template "helm-guestbook.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") | |||
|   echo "Visit http://127.0.0.1:8080 to use your application" | |||
|   kubectl port-forward $POD_NAME 8080:80 | |||
| {{- end }} | |||
| @ -1,32 +0,0 @@ | |||
| {{/* vim: set filetype=mustache: */}} | |||
| {{/* | |||
| Expand the name of the chart. | |||
| */}} | |||
| {{- define "helm-guestbook.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 "helm-guestbook.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 "helm-guestbook.chart" -}} | |||
| {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} | |||
| {{- end -}} | |||
| @ -1,56 +0,0 @@ | |||
| apiVersion: argoproj.io/v1alpha1 | |||
| kind: Rollout | |||
| metadata: | |||
|   name: {{ template "helm-guestbook.fullname" . }} | |||
|   labels: | |||
|     app: {{ template "helm-guestbook.name" . }} | |||
|     chart: {{ template "helm-guestbook.chart" . }} | |||
|     release: {{ .Release.Name }} | |||
|     heritage: {{ .Release.Service }} | |||
| spec: | |||
|   replicas: {{ .Values.replicaCount }} | |||
|   revisionHistoryLimit: 3 | |||
|   selector: | |||
|     matchLabels: | |||
|       app: {{ template "helm-guestbook.name" . }} | |||
|       release: {{ .Release.Name }} | |||
|   strategy: | |||
|     blueGreen: | |||
|       activeService: {{ template "helm-guestbook.fullname" . }} | |||
|       previewService: {{ template "helm-guestbook.fullname" . }}-preview | |||
|   template: | |||
|     metadata: | |||
|       labels: | |||
|         app: {{ template "helm-guestbook.name" . }} | |||
|         release: {{ .Release.Name }} | |||
|     spec: | |||
|       containers: | |||
|         - name: {{ .Chart.Name }} | |||
|           image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" | |||
|           imagePullPolicy: {{ .Values.image.pullPolicy }} | |||
|           ports: | |||
|             - name: http | |||
|               containerPort: 80 | |||
|               protocol: TCP | |||
|           livenessProbe: | |||
|             httpGet: | |||
|               path: / | |||
|               port: http | |||
|           readinessProbe: | |||
|             httpGet: | |||
|               path: / | |||
|               port: http | |||
|           resources: | |||
| {{ toYaml .Values.resources | indent 12 }} | |||
|     {{- with .Values.nodeSelector }} | |||
|       nodeSelector: | |||
| {{ toYaml . | indent 8 }} | |||
|     {{- end }} | |||
|     {{- with .Values.affinity }} | |||
|       affinity: | |||
| {{ toYaml . | indent 8 }} | |||
|     {{- end }} | |||
|     {{- with .Values.tolerations }} | |||
|       tolerations: | |||
| {{ toYaml . | indent 8 }} | |||
|     {{- end }} | |||
| @ -1,40 +0,0 @@ | |||
| --- | |||
| apiVersion: v1 | |||
| kind: Service | |||
| metadata: | |||
|   name: {{ template "helm-guestbook.fullname" . }} | |||
|   labels: | |||
|     app: {{ template "helm-guestbook.name" . }} | |||
|     chart: {{ template "helm-guestbook.chart" . }} | |||
|     release: {{ .Release.Name }} | |||
|     heritage: {{ .Release.Service }} | |||
| spec: | |||
|   type: {{ .Values.service.type }} | |||
|   ports: | |||
|     - port: {{ .Values.service.port }} | |||
|       targetPort: http | |||
|       protocol: TCP | |||
|       name: http | |||
|   selector: | |||
|     app: {{ template "helm-guestbook.name" . }} | |||
|     release: {{ .Release.Name }} | |||
| --- | |||
| apiVersion: v1 | |||
| kind: Service | |||
| metadata: | |||
|   name: {{ template "helm-guestbook.fullname" . }}-preview | |||
|   labels: | |||
|     app: {{ template "helm-guestbook.name" . }} | |||
|     chart: {{ template "helm-guestbook.chart" . }} | |||
|     release: {{ .Release.Name }} | |||
|     heritage: {{ .Release.Service }} | |||
| spec: | |||
|   type: {{ .Values.service.type }} | |||
|   ports: | |||
|     - port: {{ .Values.service.port }} | |||
|       targetPort: http | |||
|       protocol: TCP | |||
|       name: http | |||
|   selector: | |||
|     app: {{ template "helm-guestbook.name" . }} | |||
|     release: {{ .Release.Name }} | |||
| @ -1,45 +0,0 @@ | |||
| # Default values for helm-guestbook. | |||
| # This is a YAML-formatted file. | |||
| # Declare variables to be passed into your templates. | |||
| 
 | |||
| replicaCount: 1 | |||
| 
 | |||
| image: | |||
|   repository: gcr.io/heptio-images/ks-guestbook-demo | |||
|   tag: 0.1 | |||
|   pullPolicy: IfNotPresent | |||
| 
 | |||
| service: | |||
|   type: ClusterIP | |||
|   port: 80 | |||
| 
 | |||
| ingress: | |||
|   enabled: false | |||
|   annotations: {} | |||
|     # kubernetes.io/ingress.class: nginx | |||
|     # kubernetes.io/tls-acme: "true" | |||
|   path: / | |||
|   hosts: | |||
|     - chart-example.local | |||
|   tls: [] | |||
|   #  - secretName: chart-example-tls | |||
|   #    hosts: | |||
|   #      - chart-example.local | |||
| 
 | |||
| resources: {} | |||
|   # We usually recommend not to specify default resources and to leave this as a conscious | |||
|   # choice for the user. This also increases chances charts run on environments with little | |||
|   # resources, such as Minikube. If you do want to specify resources, uncomment the following | |||
|   # lines, adjust them as necessary, and remove the curly braces after 'resources:'. | |||
|   # limits: | |||
|   #  cpu: 100m | |||
|   #  memory: 128Mi | |||
|   # requests: | |||
|   #  cpu: 100m | |||
|   #  memory: 128Mi | |||
| 
 | |||
| nodeSelector: {} | |||
| 
 | |||
| tolerations: [] | |||
| 
 | |||
| affinity: {} | |||
| @ -1,20 +0,0 @@ | |||
| apiVersion: apps/v1 | |||
| kind: Deployment | |||
| metadata: | |||
|   name: guestbook-ui | |||
| spec: | |||
|   replicas: 1 | |||
|   revisionHistoryLimit: 3 | |||
|   selector: | |||
|     matchLabels: | |||
|       app: guestbook-ui | |||
|   template: | |||
|     metadata: | |||
|       labels: | |||
|         app: guestbook-ui | |||
|     spec: | |||
|       containers: | |||
|       - image: gcr.io/heptio-images/ks-guestbook-demo:0.2 | |||
|         name: guestbook-ui | |||
|         ports: | |||
|         - containerPort: 80 | |||
| @ -1,10 +0,0 @@ | |||
| apiVersion: v1 | |||
| kind: Service | |||
| metadata: | |||
|   name: guestbook-ui | |||
| spec: | |||
|   ports: | |||
|   - port: 80 | |||
|     targetPort: 80 | |||
|   selector: | |||
|     app: guestbook-ui | |||
| @ -1,82 +0,0 @@ | |||
| --- | |||
| apiVersion: batch/v1 | |||
| kind: Job | |||
| metadata: | |||
|   generateName: upgrade-sql-schema | |||
|   annotations: | |||
|     helm.sh/hook: pre-install | |||
|     helm.sh/hook-weight: "-2" | |||
| spec: | |||
|   template: | |||
|     spec: | |||
|       containers: | |||
|         - name: upgrade-sql-schema | |||
|           image: alpine:latest | |||
|           command: ["sleep", "5"] | |||
|       restartPolicy: Never | |||
| --- | |||
| apiVersion: batch/v1 | |||
| kind: Job | |||
| metadata: | |||
|   name: maint-page-up | |||
|   annotations: | |||
|     helm.sh/hook: pre-install | |||
|     helm.sh/hook-delete-policy: before-hook-creation | |||
|     helm.sh/hook-weight: "-1" | |||
| spec: | |||
|   template: | |||
|     spec: | |||
|       containers: | |||
|         - name: page-up | |||
|           image: alpine:latest | |||
|           command: ["sleep", "2"] | |||
|       restartPolicy: Never | |||
|   backoffLimit: 0 | |||
| --- | |||
| apiVersion: apps/v1 | |||
| kind: ReplicaSet | |||
| metadata: | |||
|   name: frontend | |||
| spec: | |||
|   replicas: 1 | |||
|   selector: | |||
|     matchLabels: | |||
|       tier: frontend | |||
|   template: | |||
|     metadata: | |||
|       labels: | |||
|         tier: frontend | |||
|     spec: | |||
|       containers: | |||
|         - name: main | |||
|           image: nginx:latest | |||
| --- | |||
| apiVersion: v1 | |||
| kind: Service | |||
| metadata: | |||
|   name: frontend | |||
|   annotations: | |||
|     helm.sh/hook-weight: "2" | |||
| spec: | |||
|   selector: | |||
|     tier: frontend | |||
|   ports: | |||
|     - protocol: TCP | |||
|       port: 80 | |||
|       targetPort: 80 | |||
| --- | |||
| apiVersion: batch/v1 | |||
| kind: Job | |||
| metadata: | |||
|   name: maint-page-down | |||
|   annotations: | |||
|     helm.sh/hook: post-install | |||
|     helm.sh/hook-delete-policy: before-hook-creation | |||
| spec: | |||
|   template: | |||
|     spec: | |||
|       containers: | |||
|         - name: page-down | |||
|           image: alpine:latest | |||
|           command: ["sleep", "2"] | |||
|       restartPolicy: Never | |||
| @ -1,65 +0,0 @@ | |||
| function ( | |||
|     containerPort=80,  | |||
|     image="gcr.io/heptio-images/ks-guestbook-demo:0.2",  | |||
|     name="jsonnet-guestbook-ui", | |||
|     replicas=1, | |||
|     servicePort=80,  | |||
|     type="LoadBalancer" | |||
| ) | |||
|     [ | |||
|     { | |||
|         "apiVersion": "v1", | |||
|         "kind": "Service", | |||
|         "metadata": { | |||
|             "name": name | |||
|         }, | |||
|         "spec": { | |||
|             "ports": [ | |||
|                 { | |||
|                 "port": servicePort, | |||
|                 "targetPort": containerPort | |||
|                 } | |||
|             ], | |||
|             "selector": { | |||
|                 "app": name | |||
|             }, | |||
|             "type": type | |||
|         } | |||
|     }, | |||
|     { | |||
|         "apiVersion": "apps/v1", | |||
|         "kind": "Deployment", | |||
|         "metadata": { | |||
|             "name": name | |||
|         }, | |||
|         "spec": { | |||
|             "replicas": replicas, | |||
|             "revisionHistoryLimit": 3, | |||
|             "selector": { | |||
|                 "matchLabels": { | |||
|                 "app": name | |||
|                 }, | |||
|             }, | |||
|             "template": { | |||
|                 "metadata": { | |||
|                 "labels": { | |||
|                     "app": name | |||
|                 } | |||
|                 }, | |||
|                 "spec": { | |||
|                 "containers": [ | |||
|                     { | |||
|                         "image": image, | |||
|                         "name": name, | |||
|                         "ports": [ | |||
|                         { | |||
|                             "containerPort": containerPort | |||
|                         } | |||
|                         ] | |||
|                     } | |||
|                 ] | |||
|                 } | |||
|             } | |||
|         } | |||
|     } | |||
|     ] | |||
| @ -1,59 +0,0 @@ | |||
| local params = import 'params.libsonnet'; | |||
| 
 | |||
| [ | |||
|    { | |||
|       "apiVersion": "v1", | |||
|       "kind": "Service", | |||
|       "metadata": { | |||
|          "name": params.name | |||
|       }, | |||
|       "spec": { | |||
|          "ports": [ | |||
|             { | |||
|                "port": params.servicePort, | |||
|                "targetPort": params.containerPort | |||
|             } | |||
|          ], | |||
|          "selector": { | |||
|             "app": params.name | |||
|          }, | |||
|          "type": params.type | |||
|       } | |||
|    }, | |||
|    { | |||
|       "apiVersion": "apps/v1", | |||
|       "kind": "Deployment", | |||
|       "metadata": { | |||
|          "name": params.name | |||
|       }, | |||
|       "spec": { | |||
|          "replicas": params.replicas, | |||
|          "revisionHistoryLimit": 3, | |||
|          "selector": { | |||
|             "matchLabels": { | |||
|                "app": params.name | |||
|             }, | |||
|          }, | |||
|          "template": { | |||
|             "metadata": { | |||
|                "labels": { | |||
|                   "app": params.name | |||
|                } | |||
|             }, | |||
|             "spec": { | |||
|                "containers": [ | |||
|                   { | |||
|                      "image": params.image, | |||
|                      "name": params.name, | |||
|                      "ports": [ | |||
|                      { | |||
|                         "containerPort": params.containerPort | |||
|                      } | |||
|                      ] | |||
|                   } | |||
|                ] | |||
|             } | |||
|          } | |||
|       } | |||
|    } | |||
| ] | |||
| @ -1,8 +0,0 @@ | |||
| { | |||
|   containerPort: 80, | |||
|   image: "gcr.io/heptio-images/ks-guestbook-demo:0.2", | |||
|   name: "jsonnet-guestbook-ui", | |||
|   replicas: 1, | |||
|   servicePort: 80, | |||
|   type: "LoadBalancer", | |||
| } | |||
| @ -1,4 +0,0 @@ | |||
| /lib | |||
| /.ksonnet/registries | |||
| /app.override.yaml | |||
| /.ks_environment | |||
| @ -1,23 +0,0 @@ | |||
| apiVersion: 0.1.0 | |||
| environments: | |||
|   default: | |||
|     destination: | |||
|       namespace: default | |||
|       server: https://kubernetes.default.svc | |||
|     k8sVersion: v1.10.0 | |||
|     path: default | |||
|   dev: | |||
|     destination: | |||
|       namespace: dev | |||
|       server: https://kubernetes.default.svc | |||
|     k8sVersion: v1.10.0 | |||
|     path: dev | |||
|   prod: | |||
|     destination: | |||
|       namespace: prod | |||
|       server: https://kubernetes.default.svc | |||
|     k8sVersion: v1.10.0 | |||
|     path: prod | |||
| kind: ksonnet.io/app | |||
| name: guestbook | |||
| version: 0.0.1 | |||
| @ -1,59 +0,0 @@ | |||
| local env = std.extVar("__ksonnet/environments"); | |||
| local params = std.extVar("__ksonnet/params").components["guestbook-ui"]; | |||
| [ | |||
|    { | |||
|       "apiVersion": "v1", | |||
|       "kind": "Service", | |||
|       "metadata": { | |||
|          "name": params.name | |||
|       }, | |||
|       "spec": { | |||
|          "ports": [ | |||
|             { | |||
|                "port": params.servicePort, | |||
|                "targetPort": params.containerPort | |||
|             } | |||
|          ], | |||
|          "selector": { | |||
|             "app": params.name | |||
|          }, | |||
|          "type": params.type | |||
|       } | |||
|    }, | |||
|    { | |||
|       "apiVersion": "apps/v1", | |||
|       "kind": "Deployment", | |||
|       "metadata": { | |||
|          "name": params.name | |||
|       }, | |||
|       "spec": { | |||
|          "replicas": params.replicas, | |||
|          "revisionHistoryLimit": 3, | |||
|          "selector": { | |||
|             "matchLabels": { | |||
|                "app": params.name | |||
|             }, | |||
|          }, | |||
|          "template": { | |||
|             "metadata": { | |||
|                "labels": { | |||
|                   "app": params.name | |||
|                } | |||
|             }, | |||
|             "spec": { | |||
|                "containers": [ | |||
|                   { | |||
|                      "image": params.image, | |||
|                      "name": params.name, | |||
|                      "ports": [ | |||
|                      { | |||
|                         "containerPort": params.containerPort | |||
|                      } | |||
|                      ] | |||
|                   } | |||
|                ] | |||
|             } | |||
|          } | |||
|       } | |||
|    } | |||
| ] | |||
| @ -1,18 +0,0 @@ | |||
| { | |||
|   global: { | |||
|     // User-defined global parameters; accessible to all component and environments, Ex: | |||
|     // replicas: 4, | |||
|   }, | |||
|   components: { | |||
|     // Component-level parameters, defined initially from 'ks prototype use ...' | |||
|     // Each object below should correspond to a component in the components/ directory | |||
|     "guestbook-ui": { | |||
|       containerPort: 80, | |||
|       image: "gcr.io/heptio-images/ks-guestbook-demo:0.2", | |||
|       name: "ks-guestbook-ui", | |||
|       replicas: 1, | |||
|       servicePort: 80, | |||
|       type: "LoadBalancer", | |||
|     }, | |||
|   }, | |||
| } | |||
| @ -1,4 +0,0 @@ | |||
| local components = std.extVar("__ksonnet/components"); | |||
| components + { | |||
|   // Insert user-specified overrides here. | |||
| } | |||
| @ -1,2 +0,0 @@ | |||
| { | |||
| } | |||
| @ -1,8 +0,0 @@ | |||
| local base = import "base.libsonnet"; | |||
| // uncomment if you reference ksonnet-lib | |||
| // local k = import "k.libsonnet"; | |||
| 
 | |||
| base + { | |||
|   // Insert user-specified overrides here. For example if a component is named \"nginx-deployment\", you might have something like:\n") | |||
|   // "nginx-deployment"+: k.deployment.mixin.metadata.labels({foo: "bar"}) | |||
| } | |||
| @ -1,17 +0,0 @@ | |||
| local params = std.extVar("__ksonnet/params"); | |||
| local globals = import "globals.libsonnet"; | |||
| local envParams = params + { | |||
|   components +: { | |||
|     // Insert component parameter overrides here. Ex: | |||
|     // guestbook +: { | |||
|     //   name: "guestbook-dev", | |||
|     //   replicas: params.global.replicas, | |||
|     // }, | |||
|   }, | |||
| }; | |||
| 
 | |||
| { | |||
|   components: { | |||
|     [x]: envParams.components[x] + globals, for x in std.objectFields(envParams.components) | |||
|   }, | |||
| } | |||
| @ -1,2 +0,0 @@ | |||
| { | |||
| } | |||
| @ -1,8 +0,0 @@ | |||
| local base = import "base.libsonnet"; | |||
| // uncomment if you reference ksonnet-lib | |||
| // local k = import "k.libsonnet"; | |||
| 
 | |||
| base + { | |||
|   // Insert user-specified overrides here. For example if a component is named \"nginx-deployment\", you might have something like:\n") | |||
|   // "nginx-deployment"+: k.deployment.mixin.metadata.labels({foo: "bar"}) | |||
| } | |||
| @ -1,17 +0,0 @@ | |||
| local params = std.extVar("__ksonnet/params"); | |||
| local globals = import "globals.libsonnet"; | |||
| local envParams = params + { | |||
|   components +: { | |||
|     // Insert component parameter overrides here. Ex: | |||
|     // guestbook +: { | |||
|     //   name: "guestbook-dev", | |||
|     //   replicas: params.global.replicas, | |||
|     // }, | |||
|   }, | |||
| }; | |||
| 
 | |||
| { | |||
|   components: { | |||
|     [x]: envParams.components[x] + globals, for x in std.objectFields(envParams.components) | |||
|   }, | |||
| } | |||
| @ -1,2 +0,0 @@ | |||
| { | |||
| } | |||
| @ -1,8 +0,0 @@ | |||
| local base = import "base.libsonnet"; | |||
| // uncomment if you reference ksonnet-lib | |||
| // local k = import "k.libsonnet"; | |||
| 
 | |||
| base + { | |||
|   // Insert user-specified overrides here. For example if a component is named \"nginx-deployment\", you might have something like:\n") | |||
|   // "nginx-deployment"+: k.deployment.mixin.metadata.labels({foo: "bar"}) | |||
| } | |||
| @ -1,17 +0,0 @@ | |||
| local params = std.extVar("__ksonnet/params"); | |||
| local globals = import "globals.libsonnet"; | |||
| local envParams = params + { | |||
|   components +: { | |||
|     // Insert component parameter overrides here. Ex: | |||
|     // guestbook +: { | |||
|     //   name: "guestbook-dev", | |||
|     //   replicas: params.global.replicas, | |||
|     // }, | |||
|   }, | |||
| }; | |||
| 
 | |||
| { | |||
|   components: { | |||
|     [x]: envParams.components[x] + globals, for x in std.objectFields(envParams.components) | |||
|   }, | |||
| } | |||
| @ -1,20 +0,0 @@ | |||
| apiVersion: apps/v1 | |||
| kind: Deployment | |||
| metadata: | |||
|   name: guestbook-ui | |||
| spec: | |||
|   replicas: 1 | |||
|   revisionHistoryLimit: 3 | |||
|   selector: | |||
|     matchLabels: | |||
|       app: guestbook-ui | |||
|   template: | |||
|     metadata: | |||
|       labels: | |||
|         app: guestbook-ui | |||
|     spec: | |||
|       containers: | |||
|       - image: gcr.io/heptio-images/ks-guestbook-demo:0.1 | |||
|         name: guestbook-ui | |||
|         ports: | |||
|         - containerPort: 80 | |||
| @ -1,10 +0,0 @@ | |||
| apiVersion: v1	 | |||
| kind: Service	 | |||
| metadata:	 | |||
|   name: guestbook-ui	 | |||
| spec:	 | |||
|   ports:	 | |||
|   - port: 80	 | |||
|     targetPort: 80	 | |||
|   selector:	 | |||
|     app: guestbook-ui | |||
| @ -1,7 +0,0 @@ | |||
| namePrefix: kustomize- | |||
| 
 | |||
| resources: | |||
| - guestbook-ui-deployment.yaml | |||
| - guestbook-ui-svc.yaml | |||
| apiVersion: kustomize.config.k8s.io/v1beta1 | |||
| kind: Kustomization | |||
| @ -1,6 +0,0 @@ | |||
| # Config Management Plugins Examples | |||
| 
 | |||
| | Application | Description | | |||
| |-------------|-------------| | |||
| | [kasane](kasane/) | The guestbook application as a `kasane` package. | | |||
| | [kustomized-helm](kustomized-helm/) | Application comprised of a `helm` chart and customized using `kustomize` | | |||
| @ -1,2 +0,0 @@ | |||
| vendor | |||
| Kasanefile.lock | |||
| @ -1,5 +0,0 @@ | |||
| layers: | |||
| - ../../guestbook/guestbook-ui-deployment.yaml | |||
| - patch.jsonnet | |||
| - ../../guestbook/guestbook-ui-svc.yaml | |||
| 
 | |||
| @ -1,29 +0,0 @@ | |||
| # Kasane | |||
| 
 | |||
| [Kasane](https://github.com/google/kasane) is a layering tool for Kubernetes which utilises Jsonnet for deep object modification and patching. | |||
| 
 | |||
| Use following steps to try the application: | |||
| 
 | |||
| * Follow instructions from [custom_tools.md](https://github.com/argoproj/argo-cd/blob/master/docs/operator-manual/custom_tools.md) to make sure `kasane` binary is available in `argocd-repo-server` pod. | |||
| * Register `kasane` plugin `argocd-cm` ConfigMap: | |||
| 
 | |||
| ```yaml | |||
| apiVersion: v1 | |||
| data: | |||
|   configManagementPlugins: | | |||
|     - name: kasane | |||
|       init: | |||
|         command: [kasane, update] | |||
|       generate: | |||
|         command: [kasane, show] | |||
| ``` | |||
| * Create application using `kasane` as a config management plugin name. | |||
| 
 | |||
| ``` | |||
| argocd app create kasane \ | |||
|     --config-management-plugin kasane \ | |||
|     --repo https://github.com/argoproj/argocd-example-apps \ | |||
|     --path plugins/kasane \ | |||
|     --dest-server https://kubernetes.default.svc \ | |||
|     --dest-namespace default | |||
| ``` | |||
| @ -1,9 +0,0 @@ | |||
| function (layers) | |||
| 
 | |||
| [ | |||
|   layers[0] { | |||
|     spec+: { | |||
|       replicas: 2, | |||
|     }, | |||
|   } | |||
| ] | |||
| @ -1,3 +0,0 @@ | |||
| all.yaml | |||
| charts | |||
| requirements.lock | |||
| @ -1,28 +0,0 @@ | |||
| apiVersion: v2 | |||
| name: guestbook | |||
| description: A Helm chart for Kubernetes | |||
| 
 | |||
| # A chart can be either an 'application' or a 'library' chart. | |||
| # | |||
| # Application charts are a collection of templates that can be packaged into versioned archives | |||
| # to be deployed. | |||
| # | |||
| # Library charts provide useful utilities or functions for the chart developer. They're included as | |||
| # a dependency of application charts to inject those utilities and functions into the rendering | |||
| # pipeline. Library charts do not define any templates and therefore cannot be deployed. | |||
| type: application | |||
| 
 | |||
| # This is the chart version. This version number should be incremented each time you make changes | |||
| # to the chart and its templates, including the app version. | |||
| # Versions are expected to follow Semantic Versioning (https://semver.org/) | |||
| version: 0.1.0 | |||
| 
 | |||
| # This is the version number of the application being deployed. This version number should be | |||
| # incremented each time you make changes to the application. Versions are not expected to | |||
| # follow Semantic Versioning. They should reflect the version the application is using. | |||
| appVersion: "1.0" | |||
| 
 | |||
| dependencies: | |||
| - name: helm-guestbook | |||
|   version: 0.1.0 | |||
|   repository: file://../../helm-guestbook | |||
| @ -1,31 +0,0 @@ | |||
| # Helm + Kustomize | |||
| 
 | |||
| Sometimes Helm chart don't have all required parameters and additional customization is required. This example application demonstrates how to combine Helm and Kustomize and use it | |||
| as a config management plugin in Argo CD. | |||
| 
 | |||
| Use following steps to try the application: | |||
| 
 | |||
| * configure `kustomized-helm` tool in `argocd-cm` ConfigMap: | |||
| 
 | |||
| ```yaml | |||
|   configManagementPlugins: | | |||
|     - name: kustomized-helm | |||
|       init: | |||
|         command: ["/bin/sh", "-c"] | |||
|         args: ["helm dependency build"] | |||
|       generate: | |||
|         command: [sh, -c] | |||
|         args: ["helm template --release-name release-name . > all.yaml && kustomize build"] | |||
| ``` | |||
| 
 | |||
| * create application using `kustomized-helm` as a config management plugin name: | |||
| 
 | |||
| 
 | |||
| ``` | |||
| argocd app create kustomized-helm \ | |||
|     --config-management-plugin kustomized-helm \ | |||
|     --repo https://github.com/argoproj/argocd-example-apps \ | |||
|     --path plugins/kustomized-helm \ | |||
|     --dest-server https://kubernetes.default.svc \ | |||
|     --dest-namespace default | |||
| ``` | |||
| @ -1,7 +0,0 @@ | |||
| namePrefix: kustomize- | |||
| 
 | |||
| resources: | |||
| - ./all.yaml | |||
| 
 | |||
| patches: | |||
| - overlays/guestbook-deployment.yaml | |||
| @ -1,10 +0,0 @@ | |||
| apiVersion: apps/v1 | |||
| kind: Deployment | |||
| metadata: | |||
|   name: release-name-helm-guestbook | |||
| spec: | |||
|   template: | |||
|     spec: | |||
|       containers: | |||
|         - name: helm-guestbook | |||
|           image: "gcr.io/heptio-images/ks-guestbook-demo:0.2" | |||
| @ -1,8 +0,0 @@ | |||
| namePrefix: pre-post-sync- | |||
| 
 | |||
| bases: | |||
| - ../kustomize-guestbook | |||
| 
 | |||
| resources: | |||
| - pre-sync-job.yaml | |||
| - post-sync-job.yaml | |||
| @ -1,16 +0,0 @@ | |||
| apiVersion: batch/v1 | |||
| kind: Job | |||
| metadata: | |||
|   name: after | |||
|   annotations: | |||
|     argocd.argoproj.io/hook: PostSync | |||
|     argocd.argoproj.io/hook-delete-policy: HookSucceeded | |||
| spec: | |||
|   template: | |||
|     spec: | |||
|       containers: | |||
|       - name: sleep | |||
|         image: alpine:latest | |||
|         command: ["sleep", "10"] | |||
|       restartPolicy: Never | |||
|   backoffLimit: 0 | |||
| @ -1,16 +0,0 @@ | |||
| apiVersion: batch/v1 | |||
| kind: Job | |||
| metadata: | |||
|   name: before | |||
|   annotations: | |||
|     argocd.argoproj.io/hook: PreSync | |||
|     argocd.argoproj.io/hook-delete-policy: HookSucceeded | |||
| spec: | |||
|   template: | |||
|     spec: | |||
|       containers: | |||
|       - name: sleep | |||
|         image: alpine:latest | |||
|         command: ["sleep", "10"] | |||
|       restartPolicy: Never | |||
|   backoffLimit: 0 | |||
| @ -0,0 +1,16 @@ | |||
| apiVersion: argoproj.io/v1alpha1 | |||
| kind: Application | |||
| metadata: | |||
|   name: test-100 | |||
|   namespace: default | |||
| spec: | |||
|   project: default | |||
|   source: | |||
|     repoURL: git@github.com:dgadavin/argocd-example-apps.git | |||
|     targetRevision: HEAD | |||
|     path: helm-dependency | |||
|   destination: | |||
|     server: https://kubernetes.default.svc | |||
|     namespace: test-100 | |||
|   syncPolicy: | |||
|     automated: {} | |||
| @ -0,0 +1,16 @@ | |||
| apiVersion: argoproj.io/v1alpha1 | |||
| kind: Application | |||
| metadata: | |||
|   name: test-200 | |||
|   namespace: default | |||
| spec: | |||
|   project: default | |||
|   source: | |||
|     repoURL: git@github.com:dgadavin/argocd-example-apps.git | |||
|     targetRevision: HEAD | |||
|     path: helm-guestbook | |||
|   destination: | |||
|     server: https://kubernetes.default.svc | |||
|     namespace: test-200 | |||
|   syncPolicy: | |||
|     automated: {} | |||
| @ -1,41 +0,0 @@ | |||
| --- | |||
| apiVersion: apps/v1 | |||
| kind: Deployment | |||
| metadata: | |||
|   name: carts-db | |||
|   labels: | |||
|     name: carts-db | |||
| spec: | |||
|   replicas: 1 | |||
|   selector: | |||
|     matchLabels: | |||
|       name: carts-db | |||
|   template: | |||
|     metadata: | |||
|       labels: | |||
|         name: carts-db | |||
|     spec: | |||
|       containers: | |||
|       - name: carts-db | |||
|         image: mongo | |||
|         ports: | |||
|         - name: mongo | |||
|           containerPort: 27017 | |||
|         securityContext: | |||
|           capabilities: | |||
|             drop: | |||
|               - all | |||
|             add: | |||
|               - CHOWN | |||
|               - SETGID | |||
|               - SETUID | |||
|           readOnlyRootFilesystem: true | |||
|         volumeMounts: | |||
|         - mountPath: /tmp | |||
|           name: tmp-volume | |||
|       volumes: | |||
|         - name: tmp-volume | |||
|           emptyDir: | |||
|             medium: Memory | |||
|       nodeSelector: | |||
|         beta.kubernetes.io/os: linux | |||
| @ -1,14 +0,0 @@ | |||
| --- | |||
| apiVersion: v1 | |||
| kind: Service | |||
| metadata: | |||
|   name: carts-db | |||
|   labels: | |||
|     name: carts-db | |||
| spec: | |||
|   ports: | |||
|     # the port that this service should serve on | |||
|   - port: 27017 | |||
|     targetPort: 27017 | |||
|   selector: | |||
|     name: carts-db | |||
| @ -1,64 +0,0 @@ | |||
| --- | |||
| apiVersion: apps/v1 | |||
| kind: Deployment | |||
| metadata: | |||
|   name: carts | |||
|   labels: | |||
|     name: carts | |||
| spec: | |||
|   replicas: 1 | |||
|   selector: | |||
|     matchLabels: | |||
|       name: carts | |||
|   template: | |||
|     metadata: | |||
|       labels: | |||
|         name: carts | |||
|     spec: | |||
|       containers: | |||
|       - name: carts | |||
|         image: weaveworksdemos/carts:0.4.8 | |||
|         env: | |||
|          - name: ZIPKIN | |||
|            value: zipkin.jaeger.svc.cluster.local | |||
|          - name: JAVA_OPTS | |||
|            value: -Xms64m -Xmx128m -XX:PermSize=32m -XX:MaxPermSize=64m -XX:+UseG1GC -Djava.security.egd=file:/dev/urandom | |||
|         resources: | |||
|           limits: | |||
|             cpu: 300m | |||
|             memory: 500Mi | |||
|           requests: | |||
|             cpu: 300m | |||
|             memory: 500Mi | |||
|         ports: | |||
|         - containerPort: 80 | |||
|         securityContext: | |||
|           runAsNonRoot: true | |||
|           runAsUser: 10001 | |||
|           capabilities: | |||
|             drop: | |||
|               - all | |||
|             add: | |||
|               - NET_BIND_SERVICE | |||
|           readOnlyRootFilesystem: true | |||
|         volumeMounts: | |||
|         - mountPath: /tmp | |||
|           name: tmp-volume | |||
|         livenessProbe: | |||
|           httpGet: | |||
|             path: /health | |||
|             port: 80 | |||
|           initialDelaySeconds: 300 | |||
|           periodSeconds: 3 | |||
|         readinessProbe: | |||
|           httpGet: | |||
|             path: /health | |||
|             port: 80 | |||
|           initialDelaySeconds: 180 | |||
|           periodSeconds: 3 | |||
|       volumes: | |||
|         - name: tmp-volume | |||
|           emptyDir: | |||
|             medium: Memory | |||
|       nodeSelector: | |||
|         beta.kubernetes.io/os: linux | |||
| @ -1,30 +0,0 @@ | |||
| --- | |||
| apiVersion: apps/v1 | |||
| kind: Deployment | |||
| metadata: | |||
|   name: catalogue-db | |||
|   labels: | |||
|     name: catalogue-db | |||
| spec: | |||
|   replicas: 1 | |||
|   selector: | |||
|     matchLabels: | |||
|       name: catalogue-db | |||
|   template: | |||
|     metadata: | |||
|       labels: | |||
|         name: catalogue-db | |||
|     spec: | |||
|       containers: | |||
|       - name: catalogue-db | |||
|         image: weaveworksdemos/catalogue-db:0.3.0 | |||
|         env: | |||
|           - name: MYSQL_ROOT_PASSWORD | |||
|             value: fake_password | |||
|           - name: MYSQL_DATABASE | |||
|             value: socksdb | |||
|         ports: | |||
|         - name: mysql | |||
|           containerPort: 3306 | |||
|       nodeSelector: | |||
|         beta.kubernetes.io/os: linux | |||
| @ -1,14 +0,0 @@ | |||
| --- | |||
| apiVersion: v1 | |||
| kind: Service | |||
| metadata: | |||
|   name: catalogue-db | |||
|   labels: | |||
|     name: catalogue-db | |||
| spec: | |||
|   ports: | |||
|     # the port that this service should serve on | |||
|   - port: 3306 | |||
|     targetPort: 3306 | |||
|   selector: | |||
|     name: catalogue-db | |||
| @ -1,52 +0,0 @@ | |||
| --- | |||
| apiVersion: apps/v1 | |||
| kind: Deployment | |||
| metadata: | |||
|   name: catalogue | |||
|   labels: | |||
|     name: catalogue | |||
| spec: | |||
|   replicas: 1 | |||
|   selector: | |||
|     matchLabels: | |||
|       name: catalogue | |||
|   template: | |||
|     metadata: | |||
|       labels: | |||
|         name: catalogue | |||
|     spec: | |||
|       containers: | |||
|       - name: catalogue | |||
|         image: weaveworksdemos/catalogue:0.3.5 | |||
|         resources: | |||
|           limits: | |||
|             cpu: 100m | |||
|             memory: 100Mi | |||
|           requests: | |||
|             cpu: 100m | |||
|             memory: 100Mi | |||
|         ports: | |||
|         - containerPort: 80 | |||
|         securityContext: | |||
|           runAsNonRoot: true | |||
|           runAsUser: 10001 | |||
|           capabilities: | |||
|             drop: | |||
|               - all | |||
|             add: | |||
|               - NET_BIND_SERVICE | |||
|           readOnlyRootFilesystem: true | |||
|         livenessProbe: | |||
|           httpGet: | |||
|             path: /health | |||
|             port: 80 | |||
|           initialDelaySeconds: 300 | |||
|           periodSeconds: 3 | |||
|         readinessProbe: | |||
|           httpGet: | |||
|             path: /health | |||
|             port: 80 | |||
|           initialDelaySeconds: 180 | |||
|           periodSeconds: 3 | |||
|       nodeSelector: | |||
|         beta.kubernetes.io/os: linux | |||
| @ -1,14 +0,0 @@ | |||
| --- | |||
| apiVersion: v1 | |||
| kind: Service | |||
| metadata: | |||
|   name: catalogue | |||
|   labels: | |||
|     name: catalogue | |||
| spec: | |||
|   ports: | |||
|     # the port that this service should serve on | |||
|   - port: 80 | |||
|     targetPort: 80 | |||
|   selector: | |||
|     name: catalogue | |||
| @ -1,51 +0,0 @@ | |||
| --- | |||
| apiVersion: apps/v1 | |||
| kind: Deployment | |||
| metadata: | |||
|   name: front-end | |||
| spec: | |||
|   replicas: 1 | |||
|   selector: | |||
|     matchLabels: | |||
|       name: front-end | |||
|   template: | |||
|     metadata: | |||
|       labels: | |||
|         name: front-end | |||
|     spec: | |||
|       containers: | |||
|       - name: front-end | |||
|         image: weaveworksdemos/front-end:0.3.12 | |||
|         resources: | |||
|           limits: | |||
|             cpu: 300m | |||
|             memory: 1000Mi | |||
|           requests: | |||
|             cpu: 100m | |||
|             memory: 300Mi | |||
|         ports: | |||
|         - containerPort: 8079 | |||
|         env: | |||
|         - name: SESSION_REDIS | |||
|           value: "true" | |||
|         securityContext: | |||
|           runAsNonRoot: true | |||
|           runAsUser: 10001 | |||
|           capabilities: | |||
|             drop: | |||
|               - all | |||
|           readOnlyRootFilesystem: true | |||
|         livenessProbe: | |||
|           httpGet: | |||
|             path: / | |||
|             port: 8079 | |||
|           initialDelaySeconds: 300 | |||
|           periodSeconds: 3 | |||
|         readinessProbe: | |||
|           httpGet: | |||
|             path: / | |||
|             port: 8079 | |||
|           initialDelaySeconds: 30 | |||
|           periodSeconds: 3 | |||
|       nodeSelector: | |||
|         beta.kubernetes.io/os: linux | |||
| @ -1,15 +0,0 @@ | |||
| --- | |||
| apiVersion: v1 | |||
| kind: Service | |||
| metadata: | |||
|   name: front-end | |||
|   labels: | |||
|     name: front-end | |||
| spec: | |||
|   type: LoadBalancer | |||
|   ports: | |||
|   - port: 80 | |||
|     targetPort: 8079 | |||
|     nodePort: 30001 | |||
|   selector: | |||
|     name: front-end | |||
| @ -1,41 +0,0 @@ | |||
| --- | |||
| apiVersion: apps/v1 | |||
| kind: Deployment | |||
| metadata: | |||
|   name: orders-db | |||
|   labels: | |||
|     name: orders-db | |||
| spec: | |||
|   replicas: 1 | |||
|   selector: | |||
|     matchLabels: | |||
|       name: orders-db | |||
|   template: | |||
|     metadata: | |||
|       labels: | |||
|         name: orders-db | |||
|     spec: | |||
|       containers: | |||
|       - name: orders-db | |||
|         image: mongo | |||
|         ports: | |||
|         - name: mongo | |||
|           containerPort: 27017 | |||
|         securityContext: | |||
|           capabilities: | |||
|             drop: | |||
|               - all | |||
|             add: | |||
|               - CHOWN | |||
|               - SETGID | |||
|               - SETUID | |||
|           readOnlyRootFilesystem: true | |||
|         volumeMounts: | |||
|         - mountPath: /tmp | |||
|           name: tmp-volume | |||
|       volumes: | |||
|         - name: tmp-volume | |||
|           emptyDir: | |||
|             medium: Memory | |||
|       nodeSelector: | |||
|         beta.kubernetes.io/os: linux | |||
| @ -1,14 +0,0 @@ | |||
| --- | |||
| apiVersion: v1 | |||
| kind: Service | |||
| metadata: | |||
|   name: orders-db | |||
|   labels: | |||
|     name: orders-db | |||
| spec: | |||
|   ports: | |||
|     # the port that this service should serve on | |||
|   - port: 27017 | |||
|     targetPort: 27017 | |||
|   selector: | |||
|     name: orders-db | |||
| @ -1,64 +0,0 @@ | |||
| --- | |||
| apiVersion: apps/v1 | |||
| kind: Deployment | |||
| metadata: | |||
|   name: orders | |||
|   labels: | |||
|     name: orders | |||
| spec: | |||
|   replicas: 1 | |||
|   selector: | |||
|     matchLabels: | |||
|       name: orders | |||
|   template: | |||
|     metadata: | |||
|       labels: | |||
|         name: orders | |||
|     spec: | |||
|       containers: | |||
|       - name: orders | |||
|         image: weaveworksdemos/orders:0.4.7 | |||
|         env: | |||
|          - name: ZIPKIN | |||
|            value: zipkin.jaeger.svc.cluster.local | |||
|          - name: JAVA_OPTS | |||
|            value: -Xms64m -Xmx128m -XX:PermSize=32m -XX:MaxPermSize=64m -XX:+UseG1GC -Djava.security.egd=file:/dev/urandom | |||
|         resources: | |||
|           limits: | |||
|             cpu: 500m | |||
|             memory: 500Mi | |||
|           requests: | |||
|             cpu: 200m | |||
|             memory: 500Mi | |||
|         ports: | |||
|         - containerPort: 80 | |||
|         securityContext: | |||
|           runAsNonRoot: true | |||
|           runAsUser: 10001 | |||
|           capabilities: | |||
|             drop: | |||
|               - all | |||
|             add: | |||
|               - NET_BIND_SERVICE | |||
|           readOnlyRootFilesystem: true | |||
|         volumeMounts: | |||
|         - mountPath: /tmp | |||
|           name: tmp-volume | |||
|         livenessProbe: | |||
|           httpGet: | |||
|             path: /health | |||
|             port: 80 | |||
|           initialDelaySeconds: 300 | |||
|           periodSeconds: 3 | |||
|         readinessProbe: | |||
|           httpGet: | |||
|             path: /health | |||
|             port: 80 | |||
|           initialDelaySeconds: 180 | |||
|           periodSeconds: 3 | |||
|       volumes: | |||
|         - name: tmp-volume | |||
|           emptyDir: | |||
|             medium: Memory | |||
|       nodeSelector: | |||
|         beta.kubernetes.io/os: linux | |||
| @ -1,14 +0,0 @@ | |||
| --- | |||
| apiVersion: v1 | |||
| kind: Service | |||
| metadata: | |||
|   name: orders | |||
|   labels: | |||
|     name: orders | |||
| spec: | |||
|   ports: | |||
|     # the port that this service should serve on | |||
|   - port: 80 | |||
|     targetPort: 80 | |||
|   selector: | |||
|     name: orders | |||
| @ -1,52 +0,0 @@ | |||
| --- | |||
| apiVersion: apps/v1 | |||
| kind: Deployment | |||
| metadata: | |||
|   name: payment | |||
|   labels: | |||
|     name: payment | |||
| spec: | |||
|   replicas: 1 | |||
|   selector: | |||
|     matchLabels: | |||
|       name: payment | |||
|   template: | |||
|     metadata: | |||
|       labels: | |||
|         name: payment | |||
|     spec: | |||
|       containers: | |||
|       - name: payment | |||
|         image: weaveworksdemos/payment:0.4.3 | |||
|         resources: | |||
|           limits: | |||
|             cpu: 100m | |||
|             memory: 100Mi | |||
|           requests: | |||
|             cpu: 99m | |||
|             memory: 100Mi | |||
|         ports: | |||
|         - containerPort: 80 | |||
|         securityContext: | |||
|           runAsNonRoot: true | |||
|           runAsUser: 10001 | |||
|           capabilities: | |||
|             drop: | |||
|               - all | |||
|             add: | |||
|               - NET_BIND_SERVICE | |||
|           readOnlyRootFilesystem: true | |||
|         livenessProbe: | |||
|           httpGet: | |||
|             path: /health | |||
|             port: 80 | |||
|           initialDelaySeconds: 300 | |||
|           periodSeconds: 3 | |||
|         readinessProbe: | |||
|           httpGet: | |||
|             path: /health | |||
|             port: 80 | |||
|           initialDelaySeconds: 180 | |||
|           periodSeconds: 3 | |||
|       nodeSelector: | |||
|         beta.kubernetes.io/os: linux | |||
| @ -1,14 +0,0 @@ | |||
| --- | |||
| apiVersion: v1 | |||
| kind: Service | |||
| metadata: | |||
|   name: payment | |||
|   labels: | |||
|     name: payment | |||
| spec: | |||
|   ports: | |||
|     # the port that this service should serve on | |||
|   - port: 80 | |||
|     targetPort: 80 | |||
|   selector: | |||
|     name: payment | |||
| @ -1,48 +0,0 @@ | |||
| --- | |||
| apiVersion: apps/v1 | |||
| kind: Deployment | |||
| metadata: | |||
|   name: queue-master | |||
|   labels: | |||
|     name: queue-master | |||
| spec: | |||
|   replicas: 1 | |||
|   selector: | |||
|     matchLabels: | |||
|       name: queue-master | |||
|   template: | |||
|     metadata: | |||
|       labels: | |||
|         name: queue-master | |||
|     spec: | |||
|       containers: | |||
|       - name: queue-master | |||
|         image: weaveworksdemos/queue-master:0.3.1 | |||
|         env: | |||
|          - name: ZIPKIN | |||
|            value: zipkin.jaeger.svc.cluster.local | |||
|          - name: JAVA_OPTS | |||
|            value: -Xms64m -Xmx128m -XX:PermSize=32m -XX:MaxPermSize=64m -XX:+UseG1GC -Djava.security.egd=file:/dev/urandom | |||
|         resources: | |||
|           limits: | |||
|             cpu: 300m | |||
|             memory: 500Mi | |||
|           requests: | |||
|             cpu: 300m | |||
|             memory: 500Mi | |||
|         ports: | |||
|         - containerPort: 80 | |||
|         livenessProbe: | |||
|           httpGet: | |||
|             path: /health | |||
|             port: 80 | |||
|           initialDelaySeconds: 300 | |||
|           periodSeconds: 3 | |||
|         readinessProbe: | |||
|           httpGet: | |||
|             path: /health | |||
|             port: 80 | |||
|           initialDelaySeconds: 180 | |||
|           periodSeconds: 3 | |||
|       nodeSelector: | |||
|         beta.kubernetes.io/os: linux | |||
| @ -1,16 +0,0 @@ | |||
| --- | |||
| apiVersion: v1 | |||
| kind: Service | |||
| metadata: | |||
|   name: queue-master | |||
|   labels: | |||
|     name: queue-master | |||
|   annotations: | |||
|     prometheus.io/path: "/prometheus" | |||
| spec: | |||
|   ports: | |||
|     # the port that this service should serve on | |||
|   - port: 80 | |||
|     targetPort: 80 | |||
|   selector: | |||
|     name: queue-master | |||
| @ -1,44 +0,0 @@ | |||
| --- | |||
| apiVersion: apps/v1 | |||
| kind: Deployment | |||
| metadata: | |||
|   name: rabbitmq | |||
|   labels: | |||
|     name: rabbitmq | |||
| spec: | |||
|   replicas: 1 | |||
|   selector: | |||
|     matchLabels: | |||
|       name: rabbitmq | |||
|   template: | |||
|     metadata: | |||
|       labels: | |||
|         name: rabbitmq | |||
|       annotations: | |||
|         prometheus.io/scrape: "false" | |||
|     spec: | |||
|       containers: | |||
|       - name: rabbitmq | |||
|         image: rabbitmq:3.6.8-management | |||
|         ports: | |||
|         - containerPort: 15672 | |||
|           name: management | |||
|         - containerPort: 5672 | |||
|           name: rabbitmq | |||
|         securityContext: | |||
|           capabilities: | |||
|             drop: | |||
|               - all | |||
|             add: | |||
|               - CHOWN | |||
|               - SETGID | |||
|               - SETUID | |||
|               - DAC_OVERRIDE | |||
|           readOnlyRootFilesystem: true | |||
|       - name: rabbitmq-exporter | |||
|         image: kbudde/rabbitmq-exporter | |||
|         ports: | |||
|         - containerPort: 9090 | |||
|           name: exporter | |||
|       nodeSelector: | |||
|         beta.kubernetes.io/os: linux | |||
| @ -1,19 +0,0 @@ | |||
| --- | |||
| apiVersion: v1 | |||
| kind: Service | |||
| metadata: | |||
|   name: rabbitmq | |||
|   labels: | |||
|     name: rabbitmq | |||
| spec: | |||
|   ports: | |||
|     # the port that this service should serve on | |||
|   - port: 5672 | |||
|     name: rabbitmq | |||
|     targetPort: 5672 | |||
|   - port: 9090 | |||
|     name: exporter | |||
|     targetPort: exporter | |||
|     protocol: TCP | |||
|   selector: | |||
|     name: rabbitmq | |||
| @ -1,36 +0,0 @@ | |||
| --- | |||
| apiVersion: apps/v1 | |||
| kind: Deployment | |||
| metadata: | |||
|   name: session-db | |||
|   labels: | |||
|     name: session-db | |||
| spec: | |||
|   replicas: 1 | |||
|   selector: | |||
|     matchLabels: | |||
|       name: session-db | |||
|   template: | |||
|     metadata: | |||
|       labels: | |||
|         name: session-db | |||
|       annotations: | |||
|         prometheus.io.scrape: "false" | |||
|     spec: | |||
|       containers: | |||
|       - name: session-db | |||
|         image: redis:alpine | |||
|         ports: | |||
|         - name: redis | |||
|           containerPort: 6379 | |||
|         securityContext: | |||
|           capabilities: | |||
|             drop: | |||
|               - all | |||
|             add: | |||
|               - CHOWN | |||
|               - SETGID | |||
|               - SETUID | |||
|           readOnlyRootFilesystem: true | |||
|       nodeSelector: | |||
|         beta.kubernetes.io/os: linux | |||
| @ -1,14 +0,0 @@ | |||
| --- | |||
| apiVersion: v1 | |||
| kind: Service | |||
| metadata: | |||
|   name: session-db | |||
|   labels: | |||
|     name: session-db | |||
| spec: | |||
|   ports: | |||
|     # the port that this service should serve on | |||
|   - port: 6379 | |||
|     targetPort: 6379 | |||
|   selector: | |||
|     name: session-db | |||
| @ -1,64 +0,0 @@ | |||
| --- | |||
| apiVersion: apps/v1 | |||
| kind: Deployment | |||
| metadata: | |||
|   name: shipping | |||
|   labels: | |||
|     name: shipping | |||
| spec: | |||
|   replicas: 1 | |||
|   selector: | |||
|     matchLabels: | |||
|       name: shipping | |||
|   template: | |||
|     metadata: | |||
|       labels: | |||
|         name: shipping | |||
|     spec: | |||
|       containers: | |||
|       - name: shipping | |||
|         image: weaveworksdemos/shipping:0.4.8 | |||
|         env: | |||
|          - name: ZIPKIN | |||
|            value: zipkin.jaeger.svc.cluster.local | |||
|          - name: JAVA_OPTS | |||
|            value: -Xms64m -Xmx128m -XX:PermSize=32m -XX:MaxPermSize=64m -XX:+UseG1GC -Djava.security.egd=file:/dev/urandom | |||
|         resources: | |||
|           limits: | |||
|             cpu: 300m | |||
|             memory: 500Mi | |||
|           requests: | |||
|             cpu: 300m | |||
|             memory: 500Mi | |||
|         ports: | |||
|         - containerPort: 80 | |||
|         securityContext: | |||
|           runAsNonRoot: true | |||
|           runAsUser: 10001 | |||
|           capabilities: | |||
|             drop: | |||
|               - all | |||
|             add: | |||
|               - NET_BIND_SERVICE | |||
|           readOnlyRootFilesystem: true | |||
|         volumeMounts: | |||
|         - mountPath: /tmp | |||
|           name: tmp-volume | |||
|         livenessProbe: | |||
|           httpGet: | |||
|             path: /health | |||
|             port: 80 | |||
|           initialDelaySeconds: 300 | |||
|           periodSeconds: 3 | |||
|         readinessProbe: | |||
|           httpGet: | |||
|             path: /health | |||
|             port: 80 | |||
|           initialDelaySeconds: 180 | |||
|           periodSeconds: 3 | |||
|       volumes: | |||
|         - name: tmp-volume | |||
|           emptyDir: | |||
|             medium: Memory | |||
|       nodeSelector: | |||
|         beta.kubernetes.io/os: linux | |||
| @ -1,15 +0,0 @@ | |||
| --- | |||
| apiVersion: v1 | |||
| kind: Service | |||
| metadata: | |||
|   name: shipping | |||
|   labels: | |||
|     name: shipping | |||
| spec: | |||
|   ports: | |||
|     # the port that this service should serve on | |||
|   - port: 80 | |||
|     targetPort: 80 | |||
|   selector: | |||
|     name: shipping | |||
| 
 | |||
| @ -1,42 +0,0 @@ | |||
| --- | |||
| apiVersion: apps/v1 | |||
| kind: Deployment | |||
| metadata: | |||
|   name: user-db | |||
|   labels: | |||
|     name: user-db | |||
| spec: | |||
|   replicas: 1 | |||
|   selector: | |||
|     matchLabels: | |||
|       name: user-db | |||
|   template: | |||
|     metadata: | |||
|       labels: | |||
|         name: user-db | |||
|     spec: | |||
|       containers: | |||
|       - name: user-db | |||
|         image: weaveworksdemos/user-db:0.3.0 | |||
| 
 | |||
|         ports: | |||
|         - name: mongo | |||
|           containerPort: 27017 | |||
|         securityContext: | |||
|           capabilities: | |||
|             drop: | |||
|               - all | |||
|             add: | |||
|               - CHOWN | |||
|               - SETGID | |||
|               - SETUID | |||
|           readOnlyRootFilesystem: true | |||
|         volumeMounts: | |||
|         - mountPath: /tmp | |||
|           name: tmp-volume | |||
|       volumes: | |||
|         - name: tmp-volume | |||
|           emptyDir: | |||
|             medium: Memory | |||
|       nodeSelector: | |||
|         beta.kubernetes.io/os: linux | |||
| @ -1,15 +0,0 @@ | |||
| --- | |||
| apiVersion: v1 | |||
| kind: Service | |||
| metadata: | |||
|   name: user-db | |||
|   labels: | |||
|     name: user-db | |||
| spec: | |||
|   ports: | |||
|     # the port that this service should serve on | |||
|   - port: 27017 | |||
|     targetPort: 27017 | |||
|   selector: | |||
|     name: user-db | |||
| 
 | |||
| @ -1,55 +0,0 @@ | |||
| --- | |||
| apiVersion: apps/v1 | |||
| kind: Deployment | |||
| metadata: | |||
|   name: user | |||
|   labels: | |||
|     name: user | |||
| spec: | |||
|   replicas: 1 | |||
|   selector: | |||
|     matchLabels: | |||
|       name: user | |||
|   template: | |||
|     metadata: | |||
|       labels: | |||
|         name: user | |||
|     spec: | |||
|       containers: | |||
|       - name: user | |||
|         image: weaveworksdemos/user:0.4.7 | |||
|         resources: | |||
|           limits: | |||
|             cpu: 300m | |||
|             memory: 100Mi | |||
|           requests: | |||
|             cpu: 100m | |||
|             memory: 100Mi | |||
|         ports: | |||
|         - containerPort: 80 | |||
|         env: | |||
|         - name: MONGO_HOST | |||
|           value: user-db:27017 | |||
|         securityContext: | |||
|           runAsNonRoot: true | |||
|           runAsUser: 10001 | |||
|           capabilities: | |||
|             drop: | |||
|               - all | |||
|             add: | |||
|               - NET_BIND_SERVICE | |||
|           readOnlyRootFilesystem: true | |||
|         livenessProbe: | |||
|           httpGet: | |||
|             path: /health | |||
|             port: 80 | |||
|           initialDelaySeconds: 300 | |||
|           periodSeconds: 3 | |||
|         readinessProbe: | |||
|           httpGet: | |||
|             path: /health | |||
|             port: 80 | |||
|           initialDelaySeconds: 180 | |||
|           periodSeconds: 3 | |||
|       nodeSelector: | |||
|         beta.kubernetes.io/os: linux | |||
| @ -1,15 +0,0 @@ | |||
| --- | |||
| apiVersion: v1 | |||
| kind: Service | |||
| metadata: | |||
|   name: user | |||
|   labels: | |||
|     name: user | |||
| spec: | |||
|   ports: | |||
|     # the port that this service should serve on | |||
|   - port: 80 | |||
|     targetPort: 80 | |||
|   selector: | |||
|     name: user | |||
| 
 | |||
| @ -1,28 +0,0 @@ | |||
| resources: | |||
| - base/carts-db-dep.yaml | |||
| - base/carts-db-svc.yaml | |||
| - base/carts-dep.yaml | |||
| - base/catalogue-db-dep.yaml | |||
| - base/catalogue-db-svc.yaml | |||
| - base/catalogue-dep.yaml | |||
| - base/catalogue-svc.yaml | |||
| - base/front-end-dep.yaml | |||
| - base/front-end-svc.yaml | |||
| - base/orders-db-dep.yaml | |||
| - base/orders-db-svc.yaml | |||
| - base/orders-dep.yaml | |||
| - base/orders-svc.yaml | |||
| - base/payment-dep.yaml | |||
| - base/payment-svc.yaml | |||
| - base/queue-master-dep.yaml | |||
| - base/queue-master-svc.yaml | |||
| - base/rabbitmq-dep.yaml | |||
| - base/rabbitmq-svc.yaml | |||
| - base/session-db-dep.yaml | |||
| - base/session-db-svc.yaml | |||
| - base/shipping-dep.yaml | |||
| - base/shipping-svc.yaml | |||
| - base/user-db-dep.yaml | |||
| - base/user-db-svc.yaml | |||
| - base/user-dep.yaml | |||
| - base/user-svc.yaml | |||
| @ -1,114 +0,0 @@ | |||
| --- | |||
| apiVersion: batch/v1 | |||
| kind: Job | |||
| metadata: | |||
|   generateName: upgrade-sql-schema | |||
|   annotations: | |||
|     argocd.argoproj.io/hook: PreSync | |||
| spec: | |||
|   template: | |||
|     spec: | |||
|       containers: | |||
|         - name: upgrade-sql-schema | |||
|           image: alpine:latest | |||
|           command: ["sleep", "5"] | |||
|       restartPolicy: Never | |||
| --- | |||
| apiVersion: apps/v1 | |||
| kind: ReplicaSet | |||
| metadata: | |||
|   name: backend | |||
| spec: | |||
|   replicas: 1 | |||
|   selector: | |||
|     matchLabels: | |||
|       tier: backend | |||
|   template: | |||
|     metadata: | |||
|       labels: | |||
|         tier: backend | |||
|     spec: | |||
|       containers: | |||
|         - name: main | |||
|           image: nginx:latest | |||
| --- | |||
| apiVersion: v1 | |||
| kind: Service | |||
| metadata: | |||
|   name: backend | |||
| spec: | |||
|   selector: | |||
|     tier: backend | |||
|   ports: | |||
|     - protocol: TCP | |||
|       port: 8080 | |||
|       targetPort: 8080 | |||
| --- | |||
| apiVersion: batch/v1 | |||
| kind: Job | |||
| metadata: | |||
|   name: maint-page-up | |||
|   annotations: | |||
|     argocd.argoproj.io/hook: Sync | |||
|     argocd.argoproj.io/hook-delete-policy: BeforeHookCreation | |||
|     argocd.argoproj.io/sync-wave: "1" | |||
| spec: | |||
|   template: | |||
|     spec: | |||
|       containers: | |||
|         - name: page-up | |||
|           image: alpine:latest | |||
|           command: ["sleep", "2"] | |||
|       restartPolicy: Never | |||
|   backoffLimit: 0 | |||
| --- | |||
| apiVersion: apps/v1 | |||
| kind: ReplicaSet | |||
| metadata: | |||
|   name: frontend | |||
|   annotations: | |||
|     argocd.argoproj.io/sync-wave: "2" | |||
| spec: | |||
|   replicas: 1 | |||
|   selector: | |||
|     matchLabels: | |||
|       tier: frontend | |||
|   template: | |||
|     metadata: | |||
|       labels: | |||
|         tier: frontend | |||
|     spec: | |||
|       containers: | |||
|         - name: main | |||
|           image: nginx:latest | |||
| --- | |||
| apiVersion: v1 | |||
| kind: Service | |||
| metadata: | |||
|   name: frontend | |||
|   annotations: | |||
|     argocd.argoproj.io/sync-wave: "2" | |||
| spec: | |||
|   selector: | |||
|     tier: frontend | |||
|   ports: | |||
|     - protocol: TCP | |||
|       port: 80 | |||
|       targetPort: 80 | |||
| --- | |||
| apiVersion: batch/v1 | |||
| kind: Job | |||
| metadata: | |||
|   name: maint-page-down | |||
|   annotations: | |||
|     argocd.argoproj.io/hook: Sync | |||
|     argocd.argoproj.io/hook-delete-policy: BeforeHookCreation | |||
|     argocd.argoproj.io/sync-wave: "3" | |||
| spec: | |||
|   template: | |||
|     spec: | |||
|       containers: | |||
|         - name: page-down | |||
|           image: alpine:latest | |||
|           command: ["sleep", "2"] | |||
|       restartPolicy: Never | |||
					Loading…
					
					
				
		Reference in new issue