Giter Site home page Giter Site logo

disposab1e / argocd-operator-helm Goto Github PK

View Code? Open in Web Editor NEW
20.0 1.0 13.0 39.29 MB

[DEPRECATED] Argo CD Operator (Helm) installs Argo CD in OpenShift and Kubernetes.

Home Page: https://argocd-operator-helm.rtfd.io

License: Apache License 2.0

Dockerfile 0.88% Shell 36.88% Makefile 40.02% Mustache 22.22%
argo-cd operator openshift kubernetes crc minikube gcp minishift okd travis-ci

argocd-operator-helm's Introduction

Argo CD Latest Release Documentation Status Travis-CI Github Workflows

[DEPRECATED] Argo CD Operator (Helm)

This community maintained Argo CD Operator is based on the community maintained Argo CD Helm Chart and currently installs the non-HA version of Argo CD in OpenShift Container Platform and Kubernetes.

About Argo CD

Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes.

Operator Features

  • Easy configuration and installation
  • OpenShift OAuth integration on all supported OpenShift platforms

Shares all configuration values from the Argo CD Helm Chart.

Get started

Quickstart with OperatorHub's or try our comprehensive guides to install this opertor and Argo CD in OpenShift 3, OpenShift 4, OKD 4, Minishift, ContainerReady Containers, Google Cloud Platform or Minikube.

Tested Platforms

  • OpenShift Container Platform 3.11
  • Origin Community Distribution 3.11
  • Minishift v1.34.2
  • OpenShift Container Platform ≥ 4.2
  • OKD - The Community Distribution of Kubernetes ≥ 4.4.0 beta5
  • ContainerReady Containers 1.10.0-4.4.3
  • Google Cloud Platform (Kubernetes ≥ 1.14)
  • Minikube v1.10.1 (Kubernetes ≥ 1.14)

These are the platforms we currently test the operator with. Other platforms should work fine too!

CI/CD Environment

We use Travis CI and Github Workflows for continuous integration and deployment. Following table shows the tested combinations after pushing to an release or master branch. To verify some pull requests we only use Github Workflows.

Service Kubernetes OpenShift OLM Minikube Minishift Ubuntu
Travis CI 1.11.0 3.11.0 0.13.0 v1.3.2 18.04
1.11.0 3.11.0 0.14.1 v1.3.2 18.04
1.14.0 0.13.0 v1.9.2 18.04
1.16.3 0.14.1 v1.9.2 18.04
1.17.0 0.14.1 v1.9.2 18.04
1.18.0 0.14.1 v1.9.2 18.04
Github Workflows 1.14.0 0.13.0 v1.10.1 18.04
1.16.3 0.14.1 v1.10.1 18.04
1.17.0 0.14.1 v1.10.1 18.04
1.18.0 0.14.1 v1.10.1 18.04

Both services have less than 8GB memory available in their Ubuntu VM's, so it's not possible to use Container Ready Containers. Nevertheless we test the operator with the latest version of Container Ready Containers on Mac OS Catalina in a fully automated process.

We love CI/CD so we additionally test with CircleCI. Because build time is limited we only test with CircleCI Ubuntu 16.04 Vm's when we merge a release branch to the circle-ci branch.

All of these services are pretty cool! Thx for supporting the open source community!

License

Argo CD Operator (Helm) is released under the Apache 2.0 license. See the LICENSE file for details.

argocd-operator-helm's People

Contributors

disposab1e avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

argocd-operator-helm's Issues

Operator projects using the removed APIs in k8s 1.22 requires changes.

Problem Description

Kubernetes has been deprecating API(s), which will be removed and are no longer available in 1.22. Operators projects using these APIs versions will not work on Kubernetes 1.22 or any cluster vendor using this Kubernetes version(1.22), such as OpenShift 4.9+. Following the APIs that are most likely your projects to be affected by:

  • apiextensions.k8s.io/v1beta1: (Used for CRDs and available since v1.16)
  • rbac.authorization.k8s.io/v1beta1: (Used for RBAC/rules and available since v1.8)
  • admissionregistration.k8s.io/v1beta1 (Used for Webhooks and available since v1.16)

Therefore, looks like this project distributes solutions in the repository and does not contain any version compatible with k8s 1.22/OCP 4.9. (More info). Following some findings by checking the distributions published:

NOTE: The above findings are only about the manifests shipped inside of the distribution. It is not checking the codebase.

How to solve

It would be very nice to see new distributions of this project that are no longer using these APIs and so they can work on Kubernetes 1.22 and newer and published in the community-operators collection. OpenShift 4.9, for example, will not ship operators anymore that do still use v1beta1 extension APIs.

Due to the number of options available to build Operators, it is hard to provide direct guidance on updating your operator to support Kubernetes 1.22. Recent versions of the OperatorSDK greater than 1.0.0 and Kubebuilder greater than 3.0.0 scaffold your project with the latest versions of these APIs (all that is generated by tools only). See the guides to upgrade your projects with OperatorSDK Golang, Ansible, Helm or the Kubebuilder one. For APIs other than the ones mentioned above, you will have to check your code for usage of removed API versions and upgrade to newer APIs. The details of this depend on your codebase.

If this projects only need to migrate the API for CRDs and it was built with OperatorSDK versions lower than 1.0.0 then, you maybe able to solve it with an OperatorSDK version >= v0.18.x < 1.0.0:

$ operator-sdk generate crds --crd-version=v1
INFO[0000] Running CRD generator.
INFO[0000] CRD generation complete.

Alternatively, you can try to upgrade your manifests with controller-gen (version >= v0.4.1) :

If this project does not use Webhooks:

$ controller-gen crd:trivialVersions=true,preserveUnknownFields=false rbac:roleName=manager-role paths="./..."

If this project is using Webhooks:

  1. Add the markers sideEffects and admissionReviewVersions to your webhook (Example with sideEffects=None and admissionReviewVersions={v1,v1beta1}: memcached-operator/api/v1alpha1/memcached_webhook.go):

  2. Run the command:

$ controller-gen crd:trivialVersions=true,preserveUnknownFields=false rbac:roleName=manager-role webhook paths="./..."

For further information and tips see the comment.

Updates to images and config maps for SSO and RBAC

I installed this operator in Openshift V4. However I don't see any place where I can see all configurations for updates. Somehow I could update operator yaml to update image paths because I want to use openshift registry for images. Instead of Openshift SSO, I want to enable GitHub SSO and I don't see any section for it ….rather I should say I am not sure where in the operator I should make these changes.
Any insight and docs update will be helpful.

Remove operator-marketplace

Remove operator-marketplace from guides and sources. This is nice to have in OpenShift but not really needed in Kubernetes. Say bye bye to patches.. yeaahh!

ArgoCD Dex Server Issue

Hi there we face an issue while deploying argocd as an Helm Operator on openshift V4 below is the log message and the deployment file for dex server any support ??

log:
unknown command "rundex" for "argocd-util"
Error: unknown command "rundex" for "argocd-util"
Run 'argocd-util --help' for usage.

Deployment file
kind: Deployment
apiVersion: apps/v1
metadata:
annotations:
deployment.kubernetes.io/revision: '5'
selfLink: /apis/apps/v1/namespaces/argocd/deployments/argocd-new-dex-server
resourceVersion: '158986760'
name: argocd-new-dex-server
uid: 4151548b-0a42-48a2-8cda-fac3bc06f475
creationTimestamp: '2021-09-19T14:12:12Z'
generation: 5
managedFields:
- manager: Go-http-client
operation: Update
apiVersion: apps/v1
time: '2021-09-23T10:56:38Z'
fieldsType: FieldsV1
fieldsV1:
'f:metadata':
'f:labels':
.: {}
'f:app.kubernetes.io/component': {}
'f:app.kubernetes.io/instance': {}
'f:app.kubernetes.io/managed-by': {}
'f:app.kubernetes.io/name': {}
'f:app.kubernetes.io/part-of': {}
'f:app.kubernetes.io/version': {}
'f:helm.sh/chart': {}
'f:ownerReferences':
.: {}
'k:{"uid":"1c808f85-765e-409f-b111-ebfdce52ac5e"}':
.: {}
'f:apiVersion': {}
'f:blockOwnerDeletion': {}
'f:controller': {}
'f:kind': {}
'f:name': {}
'f:uid': {}
'f:spec':
'f:progressDeadlineSeconds': {}
'f:replicas': {}
'f:revisionHistoryLimit': {}
'f:selector': {}
'f:strategy':
'f:rollingUpdate':
.: {}
'f:maxSurge': {}
'f:maxUnavailable': {}
'f:type': {}
'f:template':
'f:metadata':
'f:labels':
.: {}
'f:app.kubernetes.io/component': {}
'f:app.kubernetes.io/instance': {}
'f:app.kubernetes.io/managed-by': {}
'f:app.kubernetes.io/name': {}
'f:app.kubernetes.io/part-of': {}
'f:app.kubernetes.io/version': {}
'f:helm.sh/chart': {}
'f:spec':
'f:volumes':
.: {}
'k:{"name":"static-files"}':
.: {}
'f:emptyDir': {}
'f:name': {}
'f:containers':
'k:{"name":"dex-server"}':
'f:image': {}
'f:volumeMounts':
.: {}
'k:{"mountPath":"/shared"}':
.: {}
'f:mountPath': {}
'f:name': {}
'f:terminationMessagePolicy': {}
.: {}
'f:resources': {}
'f:command': {}
'f:terminationMessagePath': {}
'f:imagePullPolicy': {}
'f:ports':
.: {}
'k:{"containerPort":5556,"protocol":"TCP"}':
.: {}
'f:containerPort': {}
'f:name': {}
'f:protocol': {}
'k:{"containerPort":5557,"protocol":"TCP"}':
.: {}
'f:containerPort': {}
'f:name': {}
'f:protocol': {}
'f:name': {}
'f:dnsPolicy': {}
'f:serviceAccount': {}
'f:restartPolicy': {}
'f:schedulerName': {}
'f:terminationGracePeriodSeconds': {}
'f:initContainers':
.: {}
'k:{"name":"copyutil"}':
'f:image': {}
'f:volumeMounts':
.: {}
'k:{"mountPath":"/shared"}':
.: {}
'f:mountPath': {}
'f:name': {}
'f:terminationMessagePolicy': {}
.: {}
'f:resources': {}
'f:command': {}
'f:terminationMessagePath': {}
'f:imagePullPolicy': {}
'f:name': {}
'f:serviceAccountName': {}
'f:securityContext': {}
- manager: kube-controller-manager
operation: Update
apiVersion: apps/v1
time: '2021-11-01T09:37:17Z'
fieldsType: FieldsV1
fieldsV1:
'f:metadata':
'f:annotations':
.: {}
'f:deployment.kubernetes.io/revision': {}
'f:status':
'f:conditions':
.: {}
'k:{"type":"Available"}':
.: {}
'f:lastTransitionTime': {}
'f:lastUpdateTime': {}
'f:message': {}
'f:reason': {}
'f:status': {}
'f:type': {}
'k:{"type":"Progressing"}':
.: {}
'f:lastTransitionTime': {}
'f:lastUpdateTime': {}
'f:message': {}
'f:reason': {}
'f:status': {}
'f:type': {}
'f:observedGeneration': {}
'f:replicas': {}
'f:unavailableReplicas': {}
'f:updatedReplicas': {}
namespace: argocd
ownerReferences:
- apiVersion: argoproj.io/v1alpha1
kind: ArgoCD
name: argocd-new
uid: 1c808f85-765e-409f-b111-ebfdce52ac5e
controller: true
blockOwnerDeletion: true
labels:
app.kubernetes.io/component: dex-server
app.kubernetes.io/instance: argocd-new
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: argocd-dex-server
app.kubernetes.io/part-of: argocd
app.kubernetes.io/version: v2.22.0
helm.sh/chart: argo-cd-2.5.0
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/instance: argocd-new
app.kubernetes.io/name: argocd-dex-server
template:
metadata:
creationTimestamp: null
labels:
app.kubernetes.io/component: dex-server
app.kubernetes.io/instance: argocd-new
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: argocd-dex-server
app.kubernetes.io/part-of: argocd
app.kubernetes.io/version: v2.22.0
helm.sh/chart: argo-cd-2.5.0
spec:
restartPolicy: Always
initContainers:
- name: copyutil
image: chatwork/argocd-helmfile
command:
- cp
- /usr/local/bin/argocd-util
- /usr/local/bin/argocd-dex
- /shared
resources: {}
volumeMounts:
- name: static-files
mountPath: /shared
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
imagePullPolicy: IfNotPresent
serviceAccountName: argocd-dex-server
schedulerName: default-scheduler
terminationGracePeriodSeconds: 30
securityContext: {}
containers:
- resources: {}
terminationMessagePath: /dev/termination-log
name: dex-server
command:
- /shared/argocd-util
- rundex
ports:
- name: http
containerPort: 5556
protocol: TCP
- name: grpc
containerPort: 5557
protocol: TCP
imagePullPolicy: IfNotPresent
volumeMounts:
- name: static-files
mountPath: /shared
terminationMessagePolicy: File
image: >-
quay.io/dexidp/dex@sha256:01e996b4b60edcc5cc042227c6965dd63ba68764c25d86b481b0d65f6e4da308
serviceAccount: argocd-dex-server
volumes:
- name: static-files
emptyDir: {}
dnsPolicy: ClusterFirst
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 25%
maxSurge: 25%
revisionHistoryLimit: 10
progressDeadlineSeconds: 600
status:
observedGeneration: 5
replicas: 1
updatedReplicas: 1
unavailableReplicas: 1
conditions:
- type: Progressing
status: 'True'
lastUpdateTime: '2021-09-23T12:45:09Z'
lastTransitionTime: '2021-09-23T12:45:09Z'
reason: NewReplicaSetAvailable
message: >-
ReplicaSet "argocd-new-dex-server-7b994d685c" has successfully
progressed.
- type: Available
status: 'False'
lastUpdateTime: '2021-11-01T09:37:17Z'
lastTransitionTime: '2021-11-01T09:37:17Z'
reason: MinimumReplicasUnavailable
message: Deployment does not have minimum availability.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.