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 |