Does FluxCD have ignoreDifferences feature similar to ArgoCD? - argocd

Does FluxCD support a feature analogous spec.ignoreDifferences in ArgoCD apps where the reconciler ignores differences in manifest during synchronization? Will FluxCD even detect changes in Helm charts at all when the Chart's version does not change?
FluxCD seems to use Helm directly to install/update apps, whereas ArgoCD uses Helm to render the manifests then perform a diff itself. It seems this would allow ArgoCD to offer features like ignoreDifferences that FluxCD can't.
I could not find any information about it in the documentation.

Related

When using ArgoCD, any modification to initContainer do not update on the pod

I have a question regarding ArgoCD. When using argocd app sync to deploy our helm charts, we have a weird issue which we have to do this manually for changes to initContainers. The scenario is like this:
We make a change to a Deployment service to remove initContainer or edit the initContainer.
If we are to use helm upgrade --install, it works as intended; however, when using argocd app sync, the modifications do not occur on the pods that were updated.
The manual process is for me to go into the Deployment and remove the change of what was to occur.
I am sure this is a simple thing on my side but I would appreciate any feedback.

Cloud Build -> Google Cloud Storage: Question about downtimes at deployment time

- name: 'google/cloud-sdk:alpine'
entrypoint: 'gsutil'
args: ['-m', 'rsync', '-r', '-d', '-p', 'dist/', 'gs://my-site-frontend']
Good morning, the snippet above is the command that, via Google Cloud Build, copies the build of my VueJS frontend to a Google Cloud Storage bucket, where the website will be hosted.
My question is simple and short: If any user is browsing at the time of this deployment (the execution of the command above), will he notice any inconsistencies, downtime or something like that when Cloud Build is copying/syncing the new files via rsync? Is this task seamless enough? Maybe the user can feel some inconsistence when accessing some file that is being copied? Should I use Cloud Run instead?
Yes, you can have inconsistency for a while (files outdated or not found). The best solution is to use a product that package in a consistent manner the sources. You can use Cloud Run, but you can also use App Engine standard for that.
The main advantage of this 2 solutions is that each version is unitary, package in the same container. Like that, you can easily perform rollback, traffic splitting, canary release, A/B testing,.... All these things are impossible with Cloud Storage.

Cloud Run deployment using image from last revision

We need to deploy labels to multiple CLoud Run services using below API method
https://cloud.google.com/run/docs/reference/rest/v1/namespaces.services/replaceService
We are looking for options where we can apply labels using API without any new image deployment from Container Registry . We understand that there will be deployment and revision change while applying labels but we want that during deployment it should not pull new image from container registry rather it should use the image from last revision . Any configuration parameter in Cloud Run to prevent new images being pulled while applying labels using API or gcloud run services update SERVICE --update-labels KEY=VALUE
The principle of Cloud Run (and Knative, because the behavior is the same) is that the revision is immutable. Thus, if you change something in it, a new revision is created. You can't fake it!
So, the solution is to not use the latest tag of your image, but the SHA of it.
# the latest
gcr.io/PROJECT_ID/myImage
gcr.io/PROJECT_ID/myImage:latest
# A specific version
gcr.io/PROJECT_ID/myImage:SHA123465465dfsqfsdf
Of course, you have to update your YAML for this.

Kubernetes: how to properly change apiserver runtime settings

I'm using kube-aws to run a Kubernetes cluster on AWS, and everything works as expected.
Now, I realize that cron jobs aren't turned on in the version I'm using (v1.7.10_coreos.0), while the documentation for Kubernetes only states the following:
For previous versions of cluster (< 1.8) you need to explicitly enable batch/v2alpha1 API by passing --runtime-config=batch/v2alpha1=true to the API server (see Turn on or off an API version for your cluster for more).
And the documentation directed to in that text only states this (it's the actual, full documentation):
Specific API versions can be turned on or off by passing --runtime-config=api/ flag while bringing up the API server. For example: to turn off v1 API, pass --runtime-config=api/v1=false. runtime-config also supports 2 special keys: api/all and api/legacy to control all and legacy APIs respectively. For example, for turning off all API versions except v1, pass --runtime-config=api/all=false,api/v1=true. For the purposes of these flags, legacy APIs are those APIs which have been explicitly deprecated (e.g. v1beta3).
I have been unsuccessful in finding information about how to change the configuration of a running cluster, and I, of course, don't want to try to re-run the command on api-server.
Note that kube-aws still use hyperkube, and not kubeadm. Also, the /etc/kubernetes/manifests-directory only contains the ssl-directory.
The setting I want to apply is this: --runtime-config=batch/v2alpha1=true
What is the proper way, preferably using kubectl, to apply this setting and have the apiservers restarted?
Thanks.
batch/v2alpha1=true is set by default in kube-aws. You can find it here

Google Container Builder - image versioning best practice

What would be the general guidance on versioning when building a docker image using Google Cloud Builder?
I am specifically interested in the situation when the build is triggered by a code commit. Should the image tag reflect the version (as recommended by Kubernetes API)? If it should, how to achieve that?
In your configuration, you can specify the image as (for example) gcr.io/$PROJECT_ID/my-image:${REVISION_ID}, and it will have a tag corresponding to the revision of the commit that triggered the build.
For documentation on the substitution syntax, see https://cloud.google.com/container-builder/docs/api/build-requests#substitutions