3 changed files with 284 additions and 0 deletions
			
			
		| @ -0,0 +1,9 @@ | |||||
|  | #################################################################################################### | ||||
|  | # may-cmp-server | ||||
|  | #################################################################################################### | ||||
|  | FROM busybox | ||||
|  | COPY plugin-withFilename-config.yaml /home/argocd/cmp-server/config/plugin-withFilename-config.yaml | ||||
|  | 
 | ||||
|  | RUN mkdir -p /home/argocd/cmp-server/plugins | ||||
|  | 
 | ||||
|  | USER 999 | ||||
| @ -0,0 +1,208 @@ | |||||
|  | apiVersion: apps/v1 | ||||
|  | kind: Deployment | ||||
|  | metadata: | ||||
|  |   labels: | ||||
|  |     app.kubernetes.io/component: repo-server | ||||
|  |     app.kubernetes.io/name: argocd-repo-server | ||||
|  |     app.kubernetes.io/part-of: argocd | ||||
|  |   name: argocd-repo-server | ||||
|  | spec: | ||||
|  |   selector: | ||||
|  |     matchLabels: | ||||
|  |       app.kubernetes.io/name: argocd-repo-server | ||||
|  |   template: | ||||
|  |     metadata: | ||||
|  |       labels: | ||||
|  |         app.kubernetes.io/name: argocd-repo-server | ||||
|  |     spec: | ||||
|  |       affinity: | ||||
|  |         podAntiAffinity: | ||||
|  |           preferredDuringSchedulingIgnoredDuringExecution: | ||||
|  |             - podAffinityTerm: | ||||
|  |                 labelSelector: | ||||
|  |                   matchLabels: | ||||
|  |                     app.kubernetes.io/name: argocd-repo-server | ||||
|  |                 topologyKey: kubernetes.io/hostname | ||||
|  |               weight: 100 | ||||
|  |             - podAffinityTerm: | ||||
|  |                 labelSelector: | ||||
|  |                   matchLabels: | ||||
|  |                     app.kubernetes.io/part-of: argocd | ||||
|  |                 topologyKey: kubernetes.io/hostname | ||||
|  |               weight: 5 | ||||
|  |       automountServiceAccountToken: false | ||||
|  |       containers: | ||||
|  |         - name: may | ||||
|  |           command: [/var/run/argocd/argocd-cmp-server] | ||||
|  |           image: <your docker path>/maycmpserver:cmp | ||||
|  |           volumeMounts: | ||||
|  |             - mountPath: /var/run/argocd | ||||
|  |               name: var-files | ||||
|  |             - mountPath: /home/argocd/cmp-server/plugins | ||||
|  |               name: plugins | ||||
|  |             - mountPath: /tmp | ||||
|  |               name: tmp-dir | ||||
|  |         - command: | ||||
|  |             - uid_entrypoint.sh | ||||
|  |             - argocd-repo-server | ||||
|  |             - --redis | ||||
|  |             - argocd-redis:6379 | ||||
|  |           env: | ||||
|  |             - name: ARGOCD_RECONCILIATION_TIMEOUT | ||||
|  |               valueFrom: | ||||
|  |                 configMapKeyRef: | ||||
|  |                   key: timeout.reconciliation | ||||
|  |                   name: argocd-cm | ||||
|  |                   optional: true | ||||
|  |             - name: ARGOCD_REPO_SERVER_LOGFORMAT | ||||
|  |               valueFrom: | ||||
|  |                 configMapKeyRef: | ||||
|  |                   key: reposerver.log.format | ||||
|  |                   name: argocd-cmd-params-cm | ||||
|  |                   optional: true | ||||
|  |             - name: ARGOCD_REPO_SERVER_LOGLEVEL | ||||
|  |               valueFrom: | ||||
|  |                 configMapKeyRef: | ||||
|  |                   key: reposerver.log.level | ||||
|  |                   name: argocd-cmd-params-cm | ||||
|  |                   optional: true | ||||
|  |             - name: ARGOCD_REPO_SERVER_PARALLELISM_LIMIT | ||||
|  |               valueFrom: | ||||
|  |                 configMapKeyRef: | ||||
|  |                   key: reposerver.parallelism.limit | ||||
|  |                   name: argocd-cmd-params-cm | ||||
|  |                   optional: true | ||||
|  |             - name: ARGOCD_REPO_SERVER_DISABLE_TLS | ||||
|  |               valueFrom: | ||||
|  |                 configMapKeyRef: | ||||
|  |                   key: reposerver.disable.tls | ||||
|  |                   name: argocd-cmd-params-cm | ||||
|  |                   optional: true | ||||
|  |             - name: ARGOCD_TLS_MIN_VERSION | ||||
|  |               valueFrom: | ||||
|  |                 configMapKeyRef: | ||||
|  |                   key: reposerver.tls.minversion | ||||
|  |                   name: argocd-cmd-params-cm | ||||
|  |                   optional: true | ||||
|  |             - name: ARGOCD_TLS_MAX_VERSION | ||||
|  |               valueFrom: | ||||
|  |                 configMapKeyRef: | ||||
|  |                   key: reposerver.tls.maxversion | ||||
|  |                   name: argocd-cmd-params-cm | ||||
|  |                   optional: true | ||||
|  |             - name: ARGOCD_TLS_CIPHERS | ||||
|  |               valueFrom: | ||||
|  |                 configMapKeyRef: | ||||
|  |                   key: reposerver.tls.ciphers | ||||
|  |                   name: argocd-cmd-params-cm | ||||
|  |                   optional: true | ||||
|  |             - name: ARGOCD_REPO_CACHE_EXPIRATION | ||||
|  |               valueFrom: | ||||
|  |                 configMapKeyRef: | ||||
|  |                   key: reposerver.repo.cache.expiration | ||||
|  |                   name: argocd-cmd-params-cm | ||||
|  |                   optional: true | ||||
|  |             - name: REDIS_SERVER | ||||
|  |               valueFrom: | ||||
|  |                 configMapKeyRef: | ||||
|  |                   key: redis.server | ||||
|  |                   name: argocd-cmd-params-cm | ||||
|  |                   optional: true | ||||
|  |             - name: REDISDB | ||||
|  |               valueFrom: | ||||
|  |                 configMapKeyRef: | ||||
|  |                   key: redis.db | ||||
|  |                   name: argocd-cmd-params-cm | ||||
|  |                   optional: true | ||||
|  |             - name: ARGOCD_DEFAULT_CACHE_EXPIRATION | ||||
|  |               valueFrom: | ||||
|  |                 configMapKeyRef: | ||||
|  |                   key: reposerver.default.cache.expiration | ||||
|  |                   name: argocd-cmd-params-cm | ||||
|  |                   optional: true | ||||
|  |           image: <your docker path>/may:cmp4 | ||||
|  |           imagePullPolicy: Always | ||||
|  |           livenessProbe: | ||||
|  |             failureThreshold: 3 | ||||
|  |             httpGet: | ||||
|  |               path: /healthz?full=true | ||||
|  |               port: 8084 | ||||
|  |             initialDelaySeconds: 30 | ||||
|  |             periodSeconds: 5 | ||||
|  |           name: argocd-repo-server | ||||
|  |           ports: | ||||
|  |             - containerPort: 8081 | ||||
|  |             - containerPort: 8084 | ||||
|  |           readinessProbe: | ||||
|  |             httpGet: | ||||
|  |               path: /healthz | ||||
|  |               port: 8084 | ||||
|  |             initialDelaySeconds: 5 | ||||
|  |             periodSeconds: 10 | ||||
|  |           securityContext: | ||||
|  |             allowPrivilegeEscalation: false | ||||
|  |             capabilities: | ||||
|  |               drop: | ||||
|  |                 - all | ||||
|  |             readOnlyRootFilesystem: true | ||||
|  |             runAsNonRoot: true | ||||
|  |           volumeMounts: | ||||
|  |             - mountPath: /app/config/ssh | ||||
|  |               name: ssh-known-hosts | ||||
|  |             - mountPath: /app/config/tls | ||||
|  |               name: tls-certs | ||||
|  |             - mountPath: /app/config/gpg/source | ||||
|  |               name: gpg-keys | ||||
|  |             - mountPath: /app/config/gpg/keys | ||||
|  |               name: gpg-keyring | ||||
|  |             - mountPath: /app/config/reposerver/tls | ||||
|  |               name: argocd-repo-server-tls | ||||
|  |             - mountPath: /home/argocd/cmp-server/plugins | ||||
|  |               name: plugins | ||||
|  |             - mountPath: /tmp | ||||
|  |               name: tmp-dir | ||||
|  |       initContainers: | ||||
|  |         - command: | ||||
|  |             - cp | ||||
|  |             - -n | ||||
|  |             - /usr/local/bin/argocd | ||||
|  |             - /var/run/argocd/argocd-cmp-server | ||||
|  |           image: <your docker path>/may:cmp4 | ||||
|  |           name: copyutil | ||||
|  |           volumeMounts: | ||||
|  |             - mountPath: /var/run/argocd | ||||
|  |               name: var-files | ||||
|  |       volumes: | ||||
|  |         - configMap: | ||||
|  |             name: argocd-ssh-known-hosts-cm | ||||
|  |           name: ssh-known-hosts | ||||
|  |         - configMap: | ||||
|  |             name: argocd-tls-certs-cm | ||||
|  |           name: tls-certs | ||||
|  |         - configMap: | ||||
|  |             name: argocd-gpg-keys-cm | ||||
|  |           name: gpg-keys | ||||
|  |         - emptyDir: {} | ||||
|  |           name: gpg-keyring | ||||
|  |         - emptyDir: {} | ||||
|  |           name: tmp | ||||
|  |         - name: argocd-repo-server-tls | ||||
|  |           secret: | ||||
|  |             items: | ||||
|  |               - key: tls.crt | ||||
|  |                 path: tls.crt | ||||
|  |               - key: tls.key | ||||
|  |                 path: tls.key | ||||
|  |               - key: ca.crt | ||||
|  |                 path: ca.crt | ||||
|  |             optional: true | ||||
|  |             secretName: argocd-repo-server-tls | ||||
|  |         - emptyDir: {} | ||||
|  |           name: var-files | ||||
|  |         - emptyDir: {} | ||||
|  |           name: plugins | ||||
|  |         - emptyDir: {} | ||||
|  |           name: tmp-dir | ||||
|  |         - configMap: | ||||
|  |             name: argocd-cmp-cm | ||||
|  |           name: config-files | ||||
| @ -0,0 +1,67 @@ | |||||
|  | This is an example of using cmp. | ||||
|  | 
 | ||||
|  | ### create a docker image for your cmp server | ||||
|  | ``` | ||||
|  | docker build -f Dockerfile.maycmp -t <your doccker path>/maycmpserver:cmp . | ||||
|  | ``` | ||||
|  | 
 | ||||
|  | ### plugin-withFilename-config | ||||
|  | This is the plugin configuration file. It uses discover.fileName by matching with this pattern. | ||||
|  | 
 | ||||
|  | ### Changes in argocd-repo-server.yaml. | ||||
|  | argocd repo server deployment file. The following are added. | ||||
|  | added the following to volumes. | ||||
|  | ``` | ||||
|  |       volumes: | ||||
|  |         - emptyDir: {} | ||||
|  |           name: var-files | ||||
|  |         - emptyDir: {} | ||||
|  |           name: plugins | ||||
|  |         - emptyDir: {} | ||||
|  |           name: tmp-dir | ||||
|  |         - configMap: | ||||
|  |             name: argocd-cmp-cm | ||||
|  |           name: config-files | ||||
|  | ``` | ||||
|  | added the following to initContainers | ||||
|  | ``` | ||||
|  |       initContainers: | ||||
|  |       - command: | ||||
|  |         - cp | ||||
|  |         - -n | ||||
|  |         - /usr/local/bin/argocd | ||||
|  |         - /var/run/argocd/argocd-cmp-server | ||||
|  |         image: quay.io/argoproj/argocd:latest | ||||
|  |         name: copyutil | ||||
|  |         volumeMounts: | ||||
|  |         - mountPath: /var/run/argocd | ||||
|  |           name: var-files | ||||
|  | ``` | ||||
|  | added the following to argocd-repo-server container | ||||
|  | ``` | ||||
|  | - mountPath: /home/argocd/cmp-server/plugins | ||||
|  |               name: plugins | ||||
|  | ``` | ||||
|  | added a new side car which uses the docker image built above. | ||||
|  | ``` | ||||
|  |       containers: | ||||
|  |       - name: may | ||||
|  |         command: [/var/run/argocd/argocd-cmp-server] | ||||
|  |         image: docker.intuit.com/dev/deploy/argo-cd-tools/service/maycmpserver:cmp | ||||
|  |         volumeMounts: | ||||
|  |           - mountPath: /var/run/argocd | ||||
|  |             name: var-files | ||||
|  |           - mountPath: /home/argocd/cmp-server/plugins | ||||
|  |             name: plugins | ||||
|  |           - mountPath: /tmp | ||||
|  |             name: tmp-dir | ||||
|  | ``` | ||||
|  | 
 | ||||
|  | ### Create an app using this plugin | ||||
|  | ``` | ||||
|  | argocd app create maycmp2 --repo https://github.com/mayzhang2000/argocd-example-apps.git --path cmp-fileName --dest-server https://kubernetes.default.svc --dest-namespace default --config-management-plugin cmp-fileName | ||||
|  | ``` | ||||
|  | ### Trouble shooting | ||||
|  | ```	 | ||||
|  | k exec -it argocd-repo-server-88dc68b5c-rmkmx -c argocd-repo-server sh | ||||
|  | ``` | ||||
					Loading…
					
					
				
		Reference in new issue