<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Google Cloud on Atamel.Dev</title><link>https://atamel.dev/tags/google-cloud/</link><description>Recent content in Google Cloud on Atamel.Dev</description><generator>Hugo</generator><language>en</language><managingEditor>atamel@gmail.com (Mete Atamel)</managingEditor><webMaster>atamel@gmail.com (Mete Atamel)</webMaster><lastBuildDate>Fri, 21 Nov 2025 11:03:22 +0000</lastBuildDate><atom:link href="https://atamel.dev/tags/google-cloud/index.xml" rel="self" type="application/rss+xml"/><item><title>Google Cloud Functions on .NET</title><link>https://atamel.dev/posts/2020/07-14_dotnet_on_cloud_functions/</link><pubDate>Tue, 14 Jul 2020 00:00:00 +0000</pubDate><author>atamel@gmail.com (Mete Atamel)</author><guid>https://atamel.dev/posts/2020/07-14_dotnet_on_cloud_functions/</guid><description>&lt;h2 id="net-for-google-cloud-functions-alpha"&gt;.NET for Google Cloud Functions (Alpha)&lt;/h2&gt;
&lt;p&gt;I spoke at many .NET conferences over the last 3-4 years and one of the top
requests I always received was: When will .NET be supported on Cloud Functions?&lt;/p&gt;
&lt;p&gt;Unfortunately, I didn&amp;rsquo;t have a good answer for a while. That all changed last
month with the following tweet from &lt;a href="https://twitter.com/jonskeet"&gt;Jon Skeet&lt;/a&gt; from our C#
team:&lt;/p&gt;
&lt;blockquote class="twitter-tweet"&gt;&lt;p lang="en" dir="ltr"&gt;I&amp;#39;m thrilled that .NET support is coming to Google Cloud Functions, along with the .NET Functions Framework. Sign up for the public alpha at &lt;a href="https://t.co/nASIACFCrg"&gt;https://t.co/nASIACFCrg&lt;/a&gt;&lt;/p&gt;</description></item><item><title>.NET Core 3.1 updates in Cloud Shell and App Engine flexible environment</title><link>https://atamel.dev/posts/2020/06-29_dotnetcore31-cloudshell-appengine-flex/</link><pubDate>Mon, 29 Jun 2020 00:00:00 +0000</pubDate><author>atamel@gmail.com (Mete Atamel)</author><guid>https://atamel.dev/posts/2020/06-29_dotnetcore31-cloudshell-appengine-flex/</guid><description>&lt;h2 id="net-core-31-updates-on-google-cloud"&gt;.NET Core 3.1 updates on Google Cloud&lt;/h2&gt;
&lt;p&gt;.NET Core 3.1 was released on December 3rd, 2019 and is a LTS release, supported
for three years.&lt;/p&gt;
&lt;p&gt;In Google Cloud, you could already deploy .NET Core 3.1 containers in Cloud Run
(see &lt;a href="https://github.com/meteatamel/cloud-run-dotnetcore-31"&gt;cloud-run-dotnetcore-31&lt;/a&gt;)
and also in App Engine flexible environment with a &lt;a href="https://cloud.google.com/appengine/docs/flexible/custom-runtimes"&gt;custom
runtime&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We recently extended .NET Core 3.1 support in a couple of ways:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Cloud Shell now supports .NET Core 3.1.&lt;/li&gt;
&lt;li&gt;App Engine flexible environment runtime now supports .NET Core 3.1.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="net-core-31-in-cloud-shell"&gt;.NET Core 3.1 in Cloud Shell&lt;/h2&gt;
&lt;p&gt;Inside Cloud Shell, you can see the latest &lt;code&gt;3.1.301&lt;/code&gt; version:&lt;/p&gt;</description></item><item><title>Daily COVID-19 cases notification Pipeline with Knative Eventing, BigQuery, Matplotlib and SendGrid</title><link>https://atamel.dev/posts/2020/06-15_daily-covid19-cases-notification-pipeline/</link><pubDate>Mon, 15 Jun 2020 00:00:00 +0000</pubDate><author>atamel@gmail.com (Mete Atamel)</author><guid>https://atamel.dev/posts/2020/06-15_daily-covid19-cases-notification-pipeline/</guid><description>&lt;h2 id="motivation"&gt;Motivation&lt;/h2&gt;
&lt;p&gt;When I started working from home in mid-March, I was totally obsessed with
COVID-19 news. I was constantly checking number of cases and news from the UK
(where I currently live) and from Cyprus (where I&amp;rsquo;m originally from). It took me
a couple of weeks to realize how unproductive this was. I started limiting
myself to check for news once a day. This definitely helped me to regain sanity
and productivity but it was manual.&lt;/p&gt;</description></item><item><title>Event-Driven Image Processing Pipeline with Knative Eventing</title><link>https://atamel.dev/posts/2020/06-05_event-driven-image-processing-pipeline-knative/</link><pubDate>Fri, 05 Jun 2020 00:00:00 +0000</pubDate><author>atamel@gmail.com (Mete Atamel)</author><guid>https://atamel.dev/posts/2020/06-05_event-driven-image-processing-pipeline-knative/</guid><description>&lt;p&gt;In this post, I want to talk about an event-driven image processing pipeline
that I built recently using &lt;a href="https://knative.dev/docs/eventing/"&gt;Knative Eventing&lt;/a&gt;.
Along the way, I&amp;rsquo;ll tell you about event sources, custom events and other
components provided by Knative that simply development of event-driven
architectures.&lt;/p&gt;
&lt;h2 id="requirements"&gt;Requirements&lt;/h2&gt;
&lt;p&gt;Let&amp;rsquo;s first talk about the basic requirements I had for the image processing pipeline:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Users upload files to an input bucket and get processed images in an output
bucket.&lt;/li&gt;
&lt;li&gt;Uploaded images are filtered (eg. no adult or violent images) before sending
through the pipeline.&lt;/li&gt;
&lt;li&gt;Pipeline can contain any number of processing services that can be added or
removed as needed. For the initial pipeline, I decided to go with 3 services:
resizer, watermarker, and labeler. The resizer will resize large images. The
watermarker will add a watermark to resized images and the labeler will
extract information about images (labels) and save it.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Requirement #3 is especially important. I wanted to be able to add services to
the pipeline as I need them or create multiple pipelines with different services
chained together.&lt;/p&gt;</description></item><item><title>Workload Identity Authentication for Knative v0.14.0 on GKE</title><link>https://atamel.dev/posts/2020/05-20_workload_identity_authentication_for_knative_on_gke/</link><pubDate>Wed, 20 May 2020 00:00:00 +0000</pubDate><author>atamel@gmail.com (Mete Atamel)</author><guid>https://atamel.dev/posts/2020/05-20_workload_identity_authentication_for_knative_on_gke/</guid><description>&lt;p&gt;If you ever used Knative on Google Cloud, you must have heard of
&lt;a href="https://github.com/google/knative-gcp"&gt;Knative-GCP&lt;/a&gt; project. As the name
suggests, Knative-GCP project provides a number of sources such as
&lt;code&gt;CloudPubSubSource&lt;/code&gt;, &lt;code&gt;CloudStorageSource&lt;/code&gt;, &lt;code&gt;CloudSchedulerSource&lt;/code&gt; and more to
help reading various Google Cloud sources into your Knative cluster.&lt;/p&gt;
&lt;p&gt;I recently updated my &lt;a href="https://github.com/meteatamel/knative-tutorial"&gt;Knative
Tutorial&lt;/a&gt; to use the latest
&lt;a href="https://github.com/knative/eventing/releases/tag/v0.14.2"&gt;Knative Eventing release
v0.14.2&lt;/a&gt; and its
corresponding &lt;a href="https://github.com/google/knative-gcp/releases/tag/v0.14.0"&gt;Knative-GCP release
v0.14.0&lt;/a&gt;. I ran into
a weird authentication problem that I want to outline here.&lt;/p&gt;</description></item><item><title>Migrating from Knative Build to Tekton Pipelines</title><link>https://atamel.dev/posts/2019/08-28_migrating-from-knative-build-to-tekton-pipelines/</link><pubDate>Wed, 28 Aug 2019 10:27:47 +0000</pubDate><author>atamel@gmail.com (Mete Atamel)</author><guid>https://atamel.dev/posts/2019/08-28_migrating-from-knative-build-to-tekton-pipelines/</guid><description>&lt;p&gt;&lt;figure&gt;
 &lt;img src="https://atamel.dev/img/2019/1__O2nIYbl3W86S__PpyiuGQMw.png" alt="" /&gt;
 
&lt;/figure&gt;&lt;/p&gt;
&lt;h3 id="knative-080-and-build-deprecation"&gt;Knative 0.8.0 and Build Deprecation&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://github.com/knative/serving/releases/tag/v0.8.0"&gt;Knative 0.8.0&lt;/a&gt; came out a couple of weeks ago with a number of fixes and improvements. One of the biggest changes in 0.8.0 is that Knative Build is now deprecated according to &lt;a href="https://knative.dev/docs/build/"&gt;docs&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;
 &lt;img src="https://atamel.dev/img/2019/0__7d371__EPwjXfyvQA.jpg" alt="" /&gt;
 
&lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;Knative Installation docs also only include Knative Serving and Eventing without mentioning Build:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kubectl apply 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="se"&gt;\-&lt;/span&gt;f https://github.com/knative/serving/releases/download/v0.8.0/serving.yaml &lt;span class="se"&gt;\\&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="se"&gt;\-&lt;/span&gt;f https://github.com/knative/eventing/releases/download/v0.8.0/release.yaml &lt;span class="se"&gt;\\&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="se"&gt;\-&lt;/span&gt;f https://github.com/knative/serving/releases/download/v0.8.0/monitoring.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Good to know but there’s no explanation on why Knative Build was deprecated and any guidance on what is the replacement, if any. After a little bit of research, I have more information on deprecation and also a migration path that I’d like to share in this post.&lt;/p&gt;</description></item><item><title>Google Home meets .NET containers using Dialogflow</title><link>https://atamel.dev/posts/2018/07-13_google-home-meets-net-containers-using-dialogflow/</link><pubDate>Fri, 13 Jul 2018 00:00:00 +0000</pubDate><author>atamel@gmail.com (Mete Atamel)</author><guid>https://atamel.dev/posts/2018/07-13_google-home-meets-net-containers-using-dialogflow/</guid><description>&lt;p&gt;I use my Google Home all the time to check the weather before leaving home, set up alarms, listen to music, but I never considered writing an app for it. What does it take to write an app for the Google Home assistant? And can we make it smarter by leveraging Google Cloud? Those were the questions that my colleague Chris Bacon, and I were thinking about when we decided to build a demo for a conference talk.&lt;/p&gt;</description></item><item><title>Windows and .NET Codelabs - an overview</title><link>https://atamel.dev/posts/2017/02-07_windows-and-net-codelabs-an-overview/</link><pubDate>Tue, 07 Feb 2017 00:00:00 +0000</pubDate><author>atamel@gmail.com (Mete Atamel)</author><guid>https://atamel.dev/posts/2017/02-07_windows-and-net-codelabs-an-overview/</guid><description>&lt;p&gt;Google Developers Codelabs provide guided coding exercises to get hands-on experience with a wide range of topics such as Android Wear, Firebase and Web. Google Cloud Platform (GCP) has its own section, with codelabs for Google Compute Engine, Google App Engine, Kubernetes and many more.&lt;/p&gt;
&lt;p&gt;We’re always working to create new content, and I’m happy to announce that we now have new codelabs for running Windows and .NET apps on GCP, with their own dedicated page. Here’s an overview to help you get started.&lt;/p&gt;</description></item><item><title>How to build and launch an ASP.NET Core app from Google Cloud Shell — without ever leaving the browser</title><link>https://atamel.dev/posts/2016/11-11_how-to-build-and-launch-an-aspnet-core-app-from-google-cloud-shell/</link><pubDate>Fri, 11 Nov 2016 00:00:00 +0000</pubDate><author>atamel@gmail.com (Mete Atamel)</author><guid>https://atamel.dev/posts/2016/11-11_how-to-build-and-launch-an-aspnet-core-app-from-google-cloud-shell/</guid><description>&lt;p&gt;Google Cloud Shell, my favorite development tool for Google Cloud Platform, just got more awesome with two new features.&lt;/p&gt;
&lt;p&gt;First, we recently integrated Eclipse Orion, an online code editor, with Cloud Shell. If you&amp;rsquo;re not a Vim or Emacs fan, Orion is a welcome addition to Cloud Shell. It enables you to edit code right inside the browser with basic syntax highlighting and minimal effort.&lt;/p&gt;
&lt;p&gt;Second, we added .NET Core command line interface tools to Cloud Shell. This is a new cross-platform toolchain for developing .NET Core applications and it can be used to create, run and publish .NET Core apps from the command line.&lt;/p&gt;</description></item><item><title>Managing containerized ASP.NET Core apps with Kubernetes</title><link>https://atamel.dev/posts/2016/10-14_managing-containerized-aspnet-core-apps-with-kubernetes/</link><pubDate>Fri, 14 Oct 2016 00:00:00 +0000</pubDate><author>atamel@gmail.com (Mete Atamel)</author><guid>https://atamel.dev/posts/2016/10-14_managing-containerized-aspnet-core-apps-with-kubernetes/</guid><description>&lt;p&gt;One of our goals here on the Google Cloud Platform team is to support the broadest possible array of platforms and operating systems. That’s why we’re so excited about the ASP.NET Core, the next generation of the open source ASP.NET web framework built on .NET Core. With it, .NET developers can run their apps cross-platform on Windows, Mac and Linux.&lt;/p&gt;
&lt;p&gt;One thing that ASP.NET Core does is allow .NET applications to run in Docker containers. All of a sudden, we’ve gone from Windows-only web apps to lean cross-platform web apps running in containers. This has been great to see!&lt;/p&gt;</description></item><item><title>Scheduling Dataflow pipelines using App Engine Cron Service or Cloud Functions</title><link>https://atamel.dev/posts/2016/04-12_scheduling-dataflow-pipelines-using-app-engine-cron-service-or-cloud-functions/</link><pubDate>Tue, 12 Apr 2016 00:00:00 +0000</pubDate><author>atamel@gmail.com (Mete Atamel)</author><guid>https://atamel.dev/posts/2016/04-12_scheduling-dataflow-pipelines-using-app-engine-cron-service-or-cloud-functions/</guid><description>&lt;p&gt;Google Cloud Dataflow provides a unified programming model for batch and stream data processing along with a managed service to execute parallel data processing pipelines on Google Cloud Platform.&lt;/p&gt;
&lt;p&gt;Once a Dataflow pipeline is created, it can be tested locally using DirectPipelineRunner, and if everything looks good, it can be manually executed as a job in Dataflow Service by triggering DataflowPipelineRunner or BlockingDataflowPipelineRunner with Apache Maven or Dataflow Eclipse Plugin. You can monitor the progress of your submitted job with Dataflow Monitoring Interface from Cloud Platform Console or Dataflow Command-line Interface from gcloud.&lt;/p&gt;</description></item></channel></rss>