This is a list of the most helpful keyboard commands I use within top.
h shows help on interactive commands. Also see the top manual page
q to quit the program.
This is a list of the most helpful keyboard commands I use within top.
h shows help on interactive commands. Also see the top manual page
q to quit the program.
With time the .kube/config file will contain a mix of dev, test and prod cluster references.
It is easy to forget switching off from a prod cluster context and make a mistake and run for example kubectl delete ns crossplane-system.
Use the following setup to avoid these kinds of errors and keep clusters separate.
| const ingress = new k8s.networking.v1.Ingress(`api-ingress-${projectEnv}`, { | |
| metadata: { | |
| namespace: appNs.metadata.name, | |
| annotations: { | |
| "kubernetes.io/ingress.class": "gce", | |
| "kubernetes.io/ingress.allow-http": "true", | |
| "kubernetes.io/ingress.global-static-ip-name": webIP.name, | |
| "cert-manager.io/issuer": "letsencrypt-dev-api", | |
| }, | |
| name: `api-ingress-${projectEnv}`, |
| const neo4jNS = new k8s.core.v1.Namespace(`neo4j-${projectEnv}`, {metadata: { name: `neo4j-${projectEnv}` }}, { provider: clusterProvider }); | |
| const core1 = new k8s.helm.v3.Chart("core-1", { | |
| chart: "neo4j-cluster-core", | |
| fetchOpts: { | |
| repo: "https://helm.neo4j.com/neo4j", | |
| }, | |
| version: "4.4.15", | |
| namespace: neo4jNS.metadata.name, | |
| values: { |
| import * as k8s from "@pulumi/kubernetes"; | |
| import * as pulumi from "@pulumi/pulumi"; | |
| import * as gcp from "@pulumi/gcp"; | |
| import * as certmanager from "@pulumi/kubernetes-cert-manager"; | |
| import { gkeClusterName, clusterNodeCount ,primaryNodeCount, secondaryNodeCount, nodeMachineType, secondaryNodeMachineType, clusterPoolIdentity, clusterLocation, clusterNetwork, clusterMasterCIDR, clusterPodIPCIDR, clusterSvcIPCIDR, clusterExtNetwork1, clusterExtNetwork2,clusterExtNetwork3, neo4jHelmChart, neo4jReleaseName, neo4jHelmRepository, neo4jChartVersion, neo4jURI, apiNodeENV, apiMemLimits, apiImage, projectEnv, datadogAPIKey, issuerName, neo4jStorage } from "./config"; | |
| import { createClusterNeo4J } from './neo4j_cluster'; | |
| import { NetworkPeering } from "@pulumi/gcp/compute"; | |
| import { local } from "@pulumi/command"; | |
| import { project } from "@pulumi/gcp/config"; | |
| import { CertManager } from "@pulumi/kubernetes-cert-manager"; |
| const neo4jNS = new k8s.core.v1.Namespace(`neo4j-${projectEnv}`, {metadata: { name: `neo4j-${projectEnv}` }}, { provider: clusterProvider }); | |
| const core1 = new k8s.helm.v3.Release("core-1", { | |
| chart: "neo4j-cluster-core", | |
| repositoryOpts: { | |
| repo: neo4jHelmRepository, | |
| }, | |
| version: "4.4.15", | |
| namespace: neo4jNS.metadata.name, | |
| name: "core-1", |
| // create a static Global IP to map to ingress | |
| const globalIP = new gcp.compute.GlobalAddress(`api-global-${projectEnv}`, { | |
| addressType: "EXTERNAL", | |
| description: `Use for Ingress/Load balancer for backend-API, project {gcp.config.project}`, | |
| } ); | |
| export const ingressGlobalIP = globalIP.address | |
| // create certificate manager | |
| const certNS = new k8s.core.v1.Namespace(`cert-manager-${projectEnv}`, {metadata: { name: `cert-manager-${projectEnv}` }}, { provider: clusterProvider }); |
| const saApiAdmin = new gcp.serviceaccount.Account(`sa-apiadmin-${projectEnv}`, { | |
| accountId: `sa-apiadmin-${projectEnv}`, | |
| displayName: `A service account used for bucket access for API`, | |
| }); | |
| const storageRWRole = new gcp.projects.IAMCustomRole(`role-api-storage-rw-${projectEnv}`, { | |
| description: "Bucket/pubsub read write role", | |
| permissions: [ | |
| "storage.objects.create", |
| loki: | |
| auth_enabled: false | |
| server: | |
| http_listen_port: 3100 | |
| grpc_listen_port: 9095 | |
| # -- Limits config | |
| limits_config: | |
| enforce_metric_name: false |