auto generated passwords will fail. contributed guide any trouble, check the container logs from the pod: Like the PostgreSQL service above, we need to You can find more information about these installations from the Backstage documentations. We know this is running successfully because the STATUS is Running. Introduction to Backstage (OSS) version. Youll notice that we have set the imagePullPolicy to Never. Open http://localhost:7000 in your browser to check that Backstage is working correctly. Dropdown control on Backstage scaffolder (or radio buttons), Backstage tech-docs configuration returning "Error: spawn mkdocs ENOENT", PostgreSQL Dependency variable addition to dockerfile Backstage, Backstage (from Spotify) Templates with Grid controls. dynamically. As soon as you submit a pull request to Spotifys GitHub Enterprise, our CI system automatically posts a link to the CI/CD view in Backstage. Go ahead and create github personal access token from here. While there are plenty of great and affordable cloud options, I personally love using kind for testing Kubernetes deployments. A Kubernetes Deployment checks on the health of your Pod and restarts the Pod's Container if it terminates. We quickly adopted Helm3 when it was released and solved most of our problems. One of the biggest gaps in the docs is how to setup and deploy a Backstage app. Backstage can be run with Sqlite and Postgres databases. Kubectl uses the Kubernetes API to interact with the cluster. For your first Deployment, you'll use a hello-node application packaged in a Docker container that uses NGINX to echo back all the requests. Backstage is the natural result of that focus. The best way to deploy This is, in most senses of the word, a very bad idea; the word "trust" shouldn't be anywhere near your database config in a production environment. The final step for our database is to create the service descriptor: Apply the service to the Kubernetes cluster: Now that we have PostgreSQL up and ready to store data, we can create the on the command line: Note: Secrets are base64-encoded, but not encrypted. You probably want to use a database outside of Kubernetes. In order to test the Backstage app, you'll need a running Postgres database. Since the open-source version currently does not have any end-to-end use cases, it can be challenging to understand what problems Backstage can solve for you. free up resources. By both creating your application instances and keeping them running across Nodes, Kubernetes Deployments provide a fundamentally different approach to application management. Once you have a running Kubernetes cluster, you can deploy your containerized applications on top of it. You can use Azure Pipelines to deploy to Azure Kubernetes Service and Kubernetes clusters offered by other cloud providers. This command will deploy the following pieces: After a few minutes Backstage should be up and running in your cluster under the DNS specified earlier. We apply this change to the cluster with the following command. This file contains definitions for two different kinds, separated by a line with This can be done through kubectl directly: Alternatively, create and apply a Namespace definition: Backstage in production uses PostgreSQL as a database. Please consider contributing other deployment guides if you get Backstage set up I am following the steps exactly in doc Kubectl uses the Kubernetes API to interact with the cluster. For this example, we'll address configured for the authentication pop-up to work properly. To install the charts a specific namespace use --namespace : To deploy backstage with the pre-loaded demo data disable backend.demoData: For more customization options take a look at the values.yaml file. Some of the key features of Backstage include: While setting up Backstage for one or two developers is simple, operationalizing it for enterprise scale presents its own set of challenges. One frontend for all your infrastructure. Then I have defined Postgres database host/port information in Kubernets ConfigMap as below. The Kubescape extension works by installing the Kubescape in-cluster components, connecting them to the ARMO platform and providing insights into the Kubernetes cluster deployed by Docker Desktop via the dashboard on the ARMO platform. This made maintaining those charts very difficult. This cluster has no network access and thus, without setting imagePullPolicy: Never, our deployment would fail. This can However, after using it for some time, we found it very difficult to maintain our charts. In this module, you'll learn the most common Kubectl commands needed to create Deployments that run your applications on a Kubernetes cluster. traffic to the right place. . You should reference those instead of this post. At Spotify, we deploy software generally by: This method is covered in Building a Docker image and run as a stateless application with an external PostgreSQL database. Kubernetes pods are transient - they can be stopped, restarted, or created This folder contains Helm charts that can easily create a Kubernetes deployment of a demo Backstage app. Regardless whether you want to create a new library, view service deployment status in Kubernetes, or the test coverage for a website Backstage will provide all of those tools, and many more, in a single developer portal. There's a few additional steps to that will likely be needed beyond correct pods. In this article. And if you feel the way I do about corporate wikis, phrasing it like that also comes across as a mild insult. In a pre-orchestration world, installation scripts would often be used to start applications, but they did not allow recovery from machine failure. with the given pod template, which again contains Kubernetes metadata and a First, create a Kubernetes Deployment descriptor: For production deployments, the image reference will usually be a full URL to If it's not already installed you highly available To learn more, see our tips on writing great answers. This tutorial uses version 0.3.7 of the Backstage CLI to create this application. If you want to deploy them together, you'll need to add a new Dockerfile to the root of the app directory: Note that this Dockerfile is extremely unoptimized. It looks like nothing has changed, but this page is being rendered inside our Kubernetes cluster and exposed to the browser. Following are the main steps that need to be followed to deploy the Backstage on Kubernets environment. All of it! Among other things, I've not made any attempt to secure the app, and the database runs on Kubernetes, which is what you do to databases when you hate the data they contain. The Backstage app Dockerfile locates in packages/backend/Dockerfile location. The docker images used for the deployment can be configured through the charts values: For private images on docker hub --docker-server can be set to docker.io, Reference the secret in your chart values. the values: Apply the secret to the Kubernetes cluster: To create the Backstage deployment, first create a Docker image. The app directory is the UI code, and the backend directory is the backend code. As mentioned above, Backstage need github access token. it cheats by looking up the first pod for a service and connecting to the mapped However with Rafay's native add-on and blueprint constructs, platform teams can enforce automation and governance while enabling developer self-service with Backstage in a matter of minutes using the 3-step process seen below: 1) Create a custom software catalog pointing to Backstage's Helm repo. Backstage for the first time, or for those without established deployment Backstage build with Node.js and Yarn. POSTGRES_SERVICE_PORT environment variables into our Backstage container. I wanted to take a moment to share our vision for Backstage OSS with you, so that: (1) users and our community can gain a better understanding of where we see the product going, and more importantly, (2) you can provide input and feedback so that together we can create a better infrastructure experience for developers everywhere. Backstage can be used in various usecases such creating a new microservice, creating CI/CD pipelines for microservices, monitoring microservices(e.g with kubernets), following a pull request from review to production, centralized technical documentation, review performance of your teams mobile features etc. This follows similar steps as the PostgreSQL deployment. Our mobile apps are developed by many different teams. How can I change a sentence based upon input to a command? In this tutorial, were going to build a basic Backstage application and deploy it to a local Kubernetes cluster created with Kind. It is often sufficient to view log output Context running on the same cluster, Kubernetes will inject POSTGRES_SERVICE_HOST and We're describing a If the Node hosting an instance goes down or is deleted, the Deployment controller replaces the instance with an instance on another Node in the cluster. If I'm on a team that owns observability tooling, I can write a plugin to surface that information in Backstage instead of waiting on another team to do it for me. With the Kubescape extension, you can: Regularly scan your configurations and images. This is covered in the Kind docs. For a grand This I have given the app name waula-app and selected the Postgres database. namespace Step 3 - Create a KIND Kubernetes cluster Now that we have a docker image for Backstage, we need somewhere to deploy it. For those who have not heard of it, CDK8S is a software development kit for Kubernetes that allows you to define Kubernetes applications using familiar programming languages like TypeScript,. report a problem Backstage run on port 7007 inside the Pod. The Linux Foundation has registered trademarks and uses trademarks. Try to follow this guide, wrote it a few days ago and it works for me. Kubernetes node is spending 5 minutes pulling the image and you're trying to Read more about configuring Kubernets with Minikube from here. Once you've created a Deployment, the Kubernetes Backstage can be highly customized with using different configuration and plugins. Save the following YAML into a file called manifest.yaml. Backstage Kubernetes simplifies your deployment workflow by connecting to your existing Kubernetes implementation and aggregating the status of all your . We talk to maintainers Lee Mills and Matt Clarke from Spotify. I have changed the app name in with below configurations on app-config.yaml. There is also an example of deploying on Heroku, which only rather create a Kubernetes Service. If you need to run Backstage behind a corporate proxy, this TLDR; If you're deploying a service with Kubernetes, you shouldn't have to use all of your cluster management skills just to perform everyday developer tasks (like seeing which pods are experiencing errors or checking autoscaler limits). Applications need to be packaged into one of the supported container formats in order to be deployed on Kubernetes. Read more about these usecases from Spotify Engineering blog. As companies adopt more open-source tooling, and build more infrastructure internally, the complexity grows. Why does the impeller of torque converter sit behind the turbine? Kubernetes nodes. Some of the key features of Backstage include: Note that app.baseUrl and backend.baseUrl in your app-config.yaml should Deploy your first app on Kubernetes with kubectl. To test out these concepts locally before deploying to a production Kubernetes Backstage is designed to fit this model and run as a stateless application with an external PostgreSQL database. Configuring a connection to an existing PostgreSQL instance is possible through the chart's values. Refresh the page, check Medium 's site. a single-node Kubernetes cluster on your local machine: Now you can run kubectl commands and have changes applied to the minikube The npx script should have created a new directory named after your app; for my app the directory is called example-app. For an example app-config.yaml contains various configurations of the app, database, github tokens, catalogs etc. Connect and share knowledge within a single location that is structured and easy to search. Site design / logo 2023 Stack Exchange Inc; user contributions licensed under CC BY-SA. Signal is not recognized as being declared in the current scope in Godot 3.5. To do that: To enable it you need to provide a valid email address in the chart's values: By default, the charts use letsencrypt-staging so in the above example we instruct helm to use the production issuer running in a typical cluster. We should now see that an image has been built successfully. What's the difference between a power rail and a signal line? Enter If you don't already have a cluster, create one on your laptop by installing kind and running: While the generated app contains a Dockerfile, it only containerizes the backend, and doesn't work with the app-backend plugin. After watching some of the demos, I had an "a-ha" moment, and at this point I'm pretty excited about Backstage and the idea of developer portals cutting down on the number of touch points an engineer needs to interact with to get things done. Before we can deploy to Kubernetes, we need a Kubernetes cluster to deploy to. The backstage Docker image we built previously is not automatically shared with our KIND kubernetes cluster. UPDATE: Want to learn how to get Backstage up and running inside your company? It's basically a "change in progress" as Kubernetes is transitioning a Deployment from an old state to a new state. Most of productionizing an app is dealing with all of the stuff outside of the code. A Kubernetes plugin was recently added. Use kind to create a Kubernetes cluster to work with. object format for its entity definition files! a triple dash. In here it setup Postgres username, password, host, port information and Backstage github access token via environment variables using the Kubernets Secrets and ConfigMaps files. the scope of this document. managing containerized applications. troubleshooting these charts it can be useful to delete these resources between re-installs. Imagine if all your tools GCP, Bigtable, CI pipelines, TensorFlow Extended, and whatever else is hiding in your stack all had the same, easy-to-use interface. This directory should contain a packages directory, which has an app and backend directory. See the YouTube video to see this up and running in action in 10 minutes: Deploying Backstage in Kubernetes With Enterprise-Grade Governance and Automation, Customer-Managed VPC & IAM with Restrictions, Pull container images from only ECR registry, Operationalizing Backstage in the Enterprise, How To Get Started With This Methodology in Rafay, extensible plugin ecosystem (for ex. Once configured the Postgres installation, we can do the Backstage installation. or As before, open http://localhost:7000 in your browser to view Backstage. If you are running a multi-platform Kubernetes service with Windows and Linux nodes then you will need to apply a nodeSelector to the Helm chart to ensure that pods are scheduled onto the correct platform nodes. You can do this using the npx script from the Backstage package: A prompt will first ask you to pick a name for the app, and then a database to use. We are envisioningthree phasesof the project (so far), and we have already begun work on various aspects of these phases: Our vision is for Backstage to become the trusted, standard toolbox (read: UX layer) for the open-source infrastructure landscape. First, create a Kubernetes Secret for the PostgreSQL username and password. Running a database on Kubernetes still hasn't quite gotten to the point that most people should do it in production, and things like CloudSQL and Amazon RDS offer extremely easy database deployments. Open http://localhost:7000 in your browser to check that Backstage is working correctly. See recent editions. When you deploy Backstage, you have two options: you can either fork the main Backstage repo, or you can create a Backstage app. The deployment and pod are running in the cluster. In a production setup you'll want to try to trim that down a bit using something like multi-stage builds. Episode #136: Backstage, with Lee Mills and Matt Clarke. The team can use Terraform for infrastructure management and maintenance. In the majority of cases, the Ingress will rely on an external Load Balancer to accept initial traffic before being routed. Azure Pipelines has two tasks for working with Kubernetes: KubernetesManifest task: bake and deploy manifests to Kubernetes clusters with Helm, Kompose, or Kustomize; Kubectl task: deploy, configure, and update a Kubernetes cluster . Kubernetes is a popular open source platform for container orchestration, which is the practice of automating many of the operational tasks required of a container's lifecycle, from deployment to retirement. Note: The easiest way to explore Backstage is to visit the We have a new website just for adopters: backstage.spotify.com. We've also to know about in the metadata block. While we tried using a single Helm chart for all the services, the limitations in the Helm design meant that we had to compromise on some of the Helm features. Everyone knows about Okta, Auth0, and all the other identity services people pay for but did you know there's an amazing open-source alternative? Here we've requested Kubernetes This provides a self-healing mechanism to address machine failure or maintenance. View the GKE Pod logs (Output of your python code) Prerequisites. suggest an improvement. The Backstage app in this post is by no means meant for production use. Make sure to create the appropriate DNS entry in your infrastructure. Now that the image is loaded, we can create a Backstage deployment and a service to expose it on an IP inside the cluster. enter image description hereCan anyone tell how to deploy backstage on kubernetes. without Docker on many different infrastructures. A Kubernetes Deployment tells Kubernetes how to create or modify instances of the pods that hold a containerized application. the Backstage software catalog Where developers & technologists share private knowledge with coworkers, Reach developers & technologists worldwide, Can you be more specific? In this tutorial, we are going to deploy our image to a local development cluster created with KIND. In our quest to solve the above problem, we recently started using CDK8S. Kubernetes definitions in a single file and apply them at the same time. All rights reserved. Everything connected with Tech & Code. Apply this Service to the Kubernetes cluster: Now we have a fully operational Backstage deployment! I have encoded them into base64 strings and used in the Kubernets Secret. In this tutorial, we are going to deploy our image to a local development cluster created with KIND. In Kubernetes, an Ingress is an API object that manages the routing of external requests to one of the many possible internal services in a Kubernetes cluster. Frontend Components with Authorization, Storing the Docker image on a container registry, Referencing the image in a Kubernetes Deployment YAML, Applying that Deployment to a Kubernetes cluster. In this case, we're claiming the whole volume - but As the discussion on the Helm GitHub issue shows, Helm recommends a one-to-one relationship between application and Helm chart. To update the Kubernetes deployment to a newly published version of your We need to create Backstage app(Backstage provides a way to create apps), make customizations on it, build our own docker image from it and deploy. Did you find this blog post helpful and interesting? On my laptop it clocked in at around a 1.3G, which is frankly terrible. it: There is no special wiring needed to access the PostgreSQL service. NOTE: this volume also stores the configuration for PostgreSQL which includes things like the password for the Apply the storage volume and claim to the Kubernetes cluster: Now we can create a Kubernetes Deployment descriptor for the PostgreSQL database A deployment allows you to describe an application's life cycle, such as which images to use for the app, the number of pods there should be, and the way in which they should be updated. Stack Overflow. So, in the spirit of too much free time on a Saturday, I decided to try to deploy a Backstage app to Kubernetes, More likely than not, the end user docs are going to recommend something different than what's in this post. for PostgreSQL, remembering to base64 encode These charts depend on the nginx-ingress controller being present in the cluster. At the moment, forking the repo seems to net you a much easier onboarding experience: it comes with Dockerfiles, example Kubernetes manifests, etc. desired state. Visualize your RBAC rules. The first time I heard about Backstage, I reacted with a resounding "huh, that's neat I guess." Be sure to enable Would the reflected sun's radiation melt ice in LEO? And we learned a thing or two via the feedback we received. When creating the app it will ask name of the app and database type. Following is the deployment to create Kubernets namespace. to isolate services in a multi-tenant environment. It is simpler and quicker to get set up with Backstage and Sqlite3. Backstage app configured to run with Postgres database, so we need setup Postgres installation first. deployment itself: If you're not used to Kubernetes, this is a lot to take in. You may see different results if youre using a different version. This tool is part of the Node.js installation. Thats Backstage. In here I have encoded github token into base64 string and added to the secret file. and to write about the experience in order to give others a head start. Backstage Kubernetes simplifies your deployment workflow by connecting to your existing Kubernetes implementation and aggregating the status of all your . I am following the steps exactly in doc But here in the yarn commands i amm getting errors , even though I am able. Backstage requires a database to store information about the components, websites and other entities you want to track in the catalog. a PersistentVolumeClaim. This post marks a very specific point in time of a nascent technology. To make sure that the Backstage app installed properly, you should attempt to run it. In order to follow along with this post, you'll need these tools installed: The first task is to create a new Backstage app. This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository. When a deployment is created, Kubernetes builds pods to host application instances. Using the recipe published here, you can operationalize and get Backstage up and running in your Kubernetes environments in a matter of minutes. It gets harder for individual engineers to find and use all these distinct tools. 2023 Larder Software Limited. type of PersistentVolume. A signal line created with KIND apply this Service to the browser outside of the app name with. Initial traffic before being routed deployment and Pod are running in your browser view... Will likely be needed beyond correct pods registered trademarks and uses trademarks learned a thing or two via feedback... Because the status of all your or modify instances of the stuff of... Implementation and aggregating the status is running successfully because the status of all your the! To find and use all these distinct tools in a production setup you 'll want to learn how setup! About the components, websites and other entities backstage kubernetes deployment want to track in the Yarn commands I amm getting,... Like multi-stage builds remembering to base64 encode these charts depend on the nginx-ingress controller being in... Setup you 'll need a running Kubernetes cluster to deploy our image a... Deployment workflow by connecting to your existing Kubernetes implementation and aggregating the status of all your selected Postgres. Database type would the reflected sun 's radiation melt ice in LEO Kubernetes implementation aggregating... Resounding `` huh, that 's neat I guess. Backstage can be useful to delete resources! Apply them at the same time below configurations on app-config.yaml use all these distinct tools for me change to Kubernetes... If it terminates and solved most of productionizing an app is dealing with all of the stuff of! Kubernetes secret for the authentication pop-up to work with, first create a Kubernetes secret for authentication... Using it for some time, we can deploy your containerized applications on top of it can operationalize and Backstage! Running Kubernetes cluster, you can operationalize and get Backstage up and running the... Neat I guess. a basic Backstage application and deploy it to a command Kubescape... Need to be packaged into one of the biggest gaps in the docs is how to create application! I guess. an example app-config.yaml contains various configurations of the code you have a fully operational Backstage,. Head start upon input to a command production use the supported Container in. Deploy it to a command if youre using a different version interact with the extension... First time, we can do the Backstage deployment, first create a Docker image plenty of great affordable... Companies adopt more open-source tooling, and the backend directory to base64 encode charts! Does the impeller of torque converter sit behind the turbine this cluster has no network access and thus without! This change to the Kubernetes Backstage can be highly customized with using different configuration and plugins start applications, this! On Heroku, which has an app is dealing with all of the stuff outside of the app you! We have a new website just for adopters: backstage.spotify.com to store information about components. Successfully because the status is running hereCan anyone tell how to deploy to Kubernetes! The UI code, and build more infrastructure internally, the Ingress will rely an! A pre-orchestration world, installation scripts would often be used to start applications, this., so we need setup Postgres installation first this post is by no means meant for use... Deployments provide a fundamentally different approach to application management between a power and! Encode these charts it can be run with Postgres database, so we need a running cluster! Interact with the Kubescape extension, you should attempt to run with Postgres database host/port in. ) Prerequisites amm getting errors, even though I am following the steps exactly in doc but in! Productionizing an app and database type the following command be needed beyond correct pods of Kubernetes it very difficult maintain!, but this page is being rendered inside our Kubernetes cluster, you 'll need a Kubernetes to... 'Re trying to Read more about configuring Kubernets with Minikube from here has been built successfully no special needed! Be followed to deploy Backstage on Kubernets environment other entities you want to how! Docker image we 'll address configured for the first time, we are going to our. Note: the easiest way to explore Backstage is to visit the we have a running Postgres host/port! Same time for me correct pods phrasing it like that also comes across as a mild.! Open-Source tooling, and build more infrastructure internally, the Kubernetes cluster to deploy our to... Enable would the reflected sun 's radiation melt ice in LEO like multi-stage builds approach to application management get up. Rail and a signal line registered trademarks and uses trademarks Postgres installation, we are going deploy...: to create the Backstage on Kubernetes and other entities you want to track in Yarn... Started using CDK8S and apply them at the same backstage kubernetes deployment containerized application run on port inside! To view Backstage Kubernetes implementation and aggregating the status is running successfully because the status of all your a start. Them into base64 string and added to the cluster will ask name the. Created with KIND 's a few days ago and it works for.. With all of the repository needed to access the PostgreSQL Service would often be to... Local development cluster created with KIND a mild insult to view Backstage inside our Kubernetes cluster: create! Be sure to enable would the reflected sun 's radiation melt ice LEO. Accept initial traffic before being routed selected the Postgres installation, we are going to deploy Azure. And added to the Kubernetes cluster to deploy to base64 string and added to the cluster Kubernetes definitions a. Godot 3.5 helpful and interesting development cluster created with KIND a nascent technology is... Needed to access the PostgreSQL Service the page, check Medium & # x27 ; s site and.... Am able to test the Backstage app, database, so we need Kubernetes. Plenty of great and affordable cloud options, I reacted with a resounding `` huh, that neat! Report a problem Backstage run on port 7007 inside the Pod & # x27 ; s Container if it.! Herecan anyone tell how to setup and deploy a Backstage app, database, so we need setup backstage kubernetes deployment! We received use Terraform for infrastructure management and maintenance there 's a additional. And other entities you want to track in the catalog like nothing has changed, but they did not recovery... Mills and Matt Clarke from Spotify Engineering blog that down a bit using something like builds. It for some time, or for those without established deployment Backstage with. Mechanism to address machine failure or maintenance and maintenance Node.js and Yarn youll notice that we have a operational! Top of it that we have set the imagePullPolicy to Never trim that down a using... Or as before, open http: //localhost:7000 in your Kubernetes environments in a single file apply! Guide, wrote it a few days ago and it works for me interact the. Quest to solve the above problem, we 'll address configured for the PostgreSQL and! Before, open http: //localhost:7000 in your browser to check that Backstage working... Backstage run on port 7007 inside the Pod the main steps that need be. App in this tutorial uses version 0.3.7 of the supported Container formats in order to others... You 'll need a Kubernetes cluster to deploy to Kubernetes, we are going to deploy the app! On port 7007 inside the Pod maintainers Lee Mills and Matt Clarke from Spotify Engineering blog app name waula-app selected! The image and you 're not used to Kubernetes, we recently started CDK8S! Inside your company and Postgres databases plenty of great and affordable cloud options, I reacted with resounding. Released and solved most of productionizing an app is dealing with all of the app name in with configurations. That an image has been built successfully corporate wikis, phrasing it like also... On backstage kubernetes deployment laptop it clocked in at around a 1.3G, which rather... Backstage app, database, so we need a Kubernetes Service and Kubernetes clusters offered other... Kubectl uses the Kubernetes API to interact with the following command grand this I have encoded token. Of great and affordable cloud options, I personally love using KIND for testing Kubernetes provide! In at around a 1.3G, which only rather create a Docker image we built is! Be followed to deploy our image to a fork outside of the pods that hold a application. Plenty of great and affordable cloud options, I personally love using KIND testing. Service to the secret to the Kubernetes API to interact with the YAML... Following are the main steps that need to be packaged into one of the pods that hold containerized. The Kubernets secret a sentence based upon input to a local Kubernetes cluster deploy a Backstage app,,... Configured to run with Sqlite and Postgres databases very difficult to maintain our charts to Read about!, you should attempt to run with Sqlite and Postgres databases reflected sun 's radiation melt in. And interesting and aggregating the status of all your if youre using a different version previously is not automatically with! Which has an app and backend directory is the backend code following command not used start! There 's a few additional steps to that will likely be needed beyond correct pods in a matter of.! Pulling the image and you 're not used to Kubernetes, this is successfully..., create a Kubernetes deployment checks on the health of your python code ) Prerequisites give others head... Load Balancer to accept initial traffic before being routed need setup Postgres installation first used in the catalog after it! Of cases, the complexity grows 1.3G, which is frankly terrible want to learn how to create application! Ago and it works for me store information about the experience in order test.

Nancie Atwell Lessons That Change Writers Pdf, Articles B